Aşağıda projenin birbirini izleyen tüm adımlarını anlattık. Ancak, bu projenin IC tasarım dosyasına buradan erişebilirsiniz . Tasarım, ücretsiz GUI tabanlı GreenPAK ™ Designer yazılımında oluşturuldu .
Döner kodlayıcılar, şaftların ve makine parçalarının yönünü algılamak için ve kullanıcı arabirimi giriş cihazları olarak yaygın şekilde kullanılır. Çoğu döner kodlayıcı, şaft hareketini bir dizi darbe olarak kodlayan bir çift kareleme sinyali verir.
Enkoder konumunu takip etmek için her darbenin sayılması gerekir. Genellikle, yazılımda uygulanan sayımla bu amaç için kesme pimleri kullanılır. Çoğu mikro denetleyici, kareleme sinyallerini okumak için özel çevre birimleri içerir. Bununla birlikte, kesintiye dayalı sayma, maksimum nabız oranını sınırlar ve CPU süresini alırken, özel çevre birimleri tek bir mikro denetleyiciye bağlanabilen kodlayıcıların sayısını sınırlar. Ayrıca, PC'ler gibi gerçek zamanlı olmayan platformlarda hiçbir seçenek mevcut değildir.
Bu makale, düşük maliyetli bir SLG46140V GreenPAK cihazının, 16 bitlik yukarı / aşağı sayıcı ve SPI veriyolu arayüzü ile bir dört evreli kodlayıcı arayüzünü nasıl uygulayabileceğini göstermektedir. Yardımcı cihaz her giriş darbesini takip ederken, kodlayıcının mevcut konumu istenen aralıkta ana uygulama tarafından okunabilir. Ayrıca, SPI veriyolu, esnek sayıda kodlayıcıyı tek bir işlemciye bağlamak için birden fazla cihazın zincirlenmesine izin verir.
Bu makale tasarımında kodlayıcıdan üç giriş sinyali vardır: A, B ve Z. Sinyal A ve B, 00, 10, 11, 01 gri kod dizisinde dönüşümlü olarak durum değiştiren kareleme sinyalleridir. Sinyal Z, sayacı sıfır konumuna sıfırlayan isteğe bağlı bir kodlayıcı sıfır indeksi girişidir.
Açıklanan SPI arabirimi, nCS yonga seçme sinyali, bir SCK seri saati ve MISO (ana giriş bağımlı çıkış) seri çıkışından oluşur. Çip seçimi aktif düşüktür ve veri yolu, nCS yüksek olduğunda diğer SPI cihazları tarafından kullanılabilir. Bu makalede kullanılan SPI aktarım formatı CPOL = 0, CPHA = 1'dir, bu da SCK'nin boşta kaldığında düşük durumda olduğu ve verilerin düşen kenarda örneklendiği anlamına gelir.
16 SCK saat döngüsü için verileri dahili olarak geciktiren Chain_IN ve Chain_OUT sinyalleri kullanılarak aynı veri yolunda birden fazla cihaz zincirlenebilir. Bu nedenle, ana bilgisayar tarafından alınan ilk 16 bit, birinci kodlayıcıdan, sonraki 16 bit ikinci kodlayıcıdan vb. Olacaktır. Tüm kodlayıcılar aynı anda ilk SCK saat kenarında örneklenecektir.
GreenPAK cihazının içindeki uygulama üç bölümden oluşmaktadır:
Kodlayıcıdan gelen sinyaller başlangıçta bir çift gecikme bloğuna gider. Bunlar, hem arıza filtreleri hem de eşzamanlayıcılar olarak çalışır ve çıkış sinyallerinin yalnızca saatin yükselen kenarında değişmesini sağlar. Gecikme değeri, 2 saatlik bir döngü gecikmesi vererek minimuma ayarlanır. İsteğe bağlı olarak, gürültülü sinyaller için, girişlerden herhangi bir arıza darbesini filtrelemek için gecikme artırılabilir, ancak bu filtreleme aynı zamanda maksimum darbe oranını da sınırlayacaktır.
Gecikme bloklarından gelen çıktı, önceki saat döngüsünden gelen sinyal durumunu koruyan bir çift D-iki duraklısına geçirilir. Mevcut durum ve önceki durum daha sonra 4 girişli bir XNOR geçidi ile karşılaştırılır. Sinyallerden herhangi biri değiştiyse, XNOR geçidi KEEP sinyali için 0 değeri çıkararak sayaç bloğunun sayılmasına neden olur.
Kodlayıcı yönü, Tablo 1'de gösterildiği gibi At ve Bt mevcut durumları önceki durum Bt-1 ile karşılaştırılarak tespit edilir. Algılama mantığı, sayaçlara bir YUKARI sinyali veren 3 bit LUT0 bileşenine programlanmıştır.
Bazı kodlayıcılar, yeniden başlatmanın ardından sistemin mutlak konumunu bulmak için kullanılabilen ek bir sıfır konum sensörüne sahiptir. Bu Z sinyalindeki yüksek seviye, sayacı sıfırlayacaktır. Bu işlevsellik gerekli değilse, giriş pini bir çekme direnci ile yapılandırıldığı için sinyal bağlantısız bırakılabilir.
SLG46140V cihazı, SPI bloğuna paralel veri bağlantısı olan iki sayaç / sonlu durum makine bloğu içerir. Bunların her biri 8 bitlik bir sayı verebilir ve iki sayacı zincirleyerek 16 bitlik bir sayaç yapılabilir. Sayaç, her iki yönde de 0x0000 ile 0xFFFF arasında kaydırılır.
Varsayılan olarak, CNT3 bloğu, yapılandırılabilir başlangıç değerinden aşağıya doğru 0'a veya yukarı doğru 255'e kadar sayar ve ardından yapılandırılan değerde yeniden başlar. Aşağı doğru sayma için etrafı sarmak, başlangıç değerini 255 olarak ayarlayarak kullanılabilir, ancak aynı anda yukarı doğru sayma için özet elde etmek için ekstra mantık gereklidir.
Sayacın OUT sinyali, sayaç aşırı değerinde olduğunda etkinleşir. KEEP = 0 ve OUT = 1 olduğunda, LUT0, sayısını artırmak için sonraki sayaca bir taşıma darbesi çıkarır. UP = 1 ise aynı anda LUT1 sıfırlama sinyalini etkinleştirir. DFF2, sıfırlama sinyalini örnekler, böylece sayaç, saatin yükselen kenarında eşzamanlı olarak sıfırlanır.
Enkoder Z girişinden gelen CLEAR sinyali, sayacın anında sıfırlanmasına neden olan DFF2'nin asenkron set girişine bağlanır. Sayaç, bir sonraki yükselen saat kenarında saymaya devam eder.
İkinci sayaç aşaması benzer şekilde bağlanır, çünkü bu aşamadan ayrı bir yürütme sinyaline gerek yoktur; üç sinyalin tümü tek bir LUT bileşenine bağlıdır. UP = 1, KEEP = 0 ve OUT = 1 olduğunda sayacı sıfırlar.
Paralelden seriye dönüştürücü arabirimi, SLG46140 ve SLG46620'de hazır işlevsel blok olarak mevcuttur. Blok, nCS düştükten sonra ilk SCK kenarındaki iki sayaçtan gelen paralel verileri kilitler ve ardından veriyi yavaş yavaş kaydırır.
Harici olarak üretilen SCK sinyali, sayaçlar tarafından kullanılan dahili saat ile eşzamanlı değildir, bu nedenle, aralarında güvenilir bir şekilde veri aktarımı için iki bloğun bir şekilde senkronize edilmesi gerekir. SPI bloğu, veri aktarımı gerçekleştiğinde iki saat döngüsü için FSM saatini geçitlemek için yerleşik bir seçim sunar. Bu uygulamada FSM saatinin geçitlenmesi istenmeyen bir durumdur, çünkü saat devre dışı bırakılırken darbelerin kaybolmasına neden olabilir. Bunun yerine, harici SCK sinyalini dahili halka osilatör saatine senkronize etmek için DFF5 kullanılır. Bu, FSM verileri kararlı olduğunda, SPI bloğu tarafından görüldüğü gibi SCK saat kenarının halka osilatör saat kenarında oluşmasını sağlar.
Bu makalede, temel SPI arabirimi veri zinciri mantığı ile genişletilmiştir. Bu, birden fazla kodlayıcının aynı SPI veriyoluna kolayca bağlanmasına ve hepsinin sayaç değerinin aynı anda örneklenmesine olanak tanır.
Zincirleme işlevi, Boru Gecikmesi işlevsel bloğuna dayanır. Bu blok, saat sinyalinin her yükselen kenarında bir bit içeri ve dışarı kayan 16 flip-flopluk bir zincire sahiptir. Zincirdeki önceki cihazdan gelen MISO sinyali girişe bağlanır ve çıkış sonraki cihaza gider.
MISO sinyali doğrudan donanımdaki pin 12'ye bağlı olduğundan, Chain_OUT'un buna paralel olarak harici olarak bağlanması gerekecektir. Çıkış etkinleştirme mantığı, bir seferde pinlerden yalnızca birinin aktif olmasını sağlar.
NCS düştükten sonraki ilk 16 saat döngüsü için, her cihaz MISO'yu etkin tutar ve sayaç değerini dışarı verir. Aynı anda, Boru Gecikme bloğu, zincirdeki N-1'inci cihazdan alınan sinyali depolar.
16 saat döngüsünden sonra, SPI INTR çıkışı iletimin sonunu belirtmek için yükseğe çıkar. LUT2 OR-geçidi daha sonra DFF4 iki duraklısının yükselmesine neden olarak PIN12'yi devre dışı bırakır ve PIN13'ü etkinleştirir. Boru Gecikme bloğu, N-1'inci değeri kaydırırken aynı anda N-2'nci değeri kaydırır. Bu, tüm değerler okunana kadar devam eder ve ana bilgisayar, DFF4'ü ilk durumuna sıfırlayan bir nCS sinyali yükseltir.
Şekil 8, ilk cihazın kendi 16 bitlik veri değerini gönderdiği ve daha sonra zincirdeki bir sonraki cihazdan 16 bitlik değeri ilettiği bir SPI iletişim örneğini göstermektedir.
Gecikme ve sayaç blokları, yaklaşık 27 MHz frekansta çalışan ve 1, 4, 8 veya 16 seçilebilir bölücüye sahip olan dahili halka osilatöründen alınır. Maksimum saat hızı, mantık elemanlarının gecikmesine bağlıdır ve besleme gerilimi.
Tasarımdaki en uzun mantık zinciri, giriş DLY0 / 1 bloklarından 4-bit LUT0 değişim dedektörüne, 2-bit LUT0 yürütme mantığına ve 3-bit LUT1 sarmalama mantığına FSM bloklarına gider. Bu bloklar için gecikme değerleri SLG46140 veri sayfasında tanımlanmıştır ve Tablo 2'de özetlenmiştir. Yönlendirme gecikmeleri ve parça varyansı nedeniyle teorik olarak mümkün olan 6,8 MHz frekansı, GreenPAK'ın giriş voltaj aralığının en düşük ucunda çalışmadı (VDD = 1,8 V ) ve bunun yerine 3.4 MHz saat kullanılır.
Çalışma frekansı, kareleme girişlerindeki minimum darbe genişliğini sınırlayacaktır. Giriş hatası filtresi, en az üç saat döngüsü uzunluğundaki darbelerden geçer ve iki saat döngüsünün altındaki her şeyi filtreler.
İşlevsellik iki şekilde test edildi. Her iki yönde saymanın beklendiği gibi çalıştığını ve kodlayıcı hareketini izlediğini doğrulamak için AMT203 döner kodlayıcıdan gelen kareleme çıkışı ile manuel test gerçekleştirildi.
Maksimum darbe hızları ve sayma güvenilirliği, kareleme sinyallerini taklit eden mikro denetleyici tarafından üretilen bir sinyal kaynağıyla doğrulandı. Mikrodenetleyici, verilen adım frekanslarında 8000 adım çıktı verecek şekilde yapılandırıldı. Dört evreli sinyallerdeki darbe genişliği, bir seferde yalnızca bir sinyalin durumunu değiştirdiğinden, adım aralığının iki katıdır. Veriler SPI veriyolu üzerinden okunurken adım serisi birkaç kez tekrarlandı. Bir test durumu, yalnızca tüm adımlar her seferinde doğru şekilde sayılırsa başarılı olarak işaretlendi.
Test sonuçları Tablo 3'te özetlenmiştir. Beklendiği gibi, iki saat periyodundan daha kısa olan darbeler hata filtresi tarafından reddedilir ve sıfır sayımıyla sonuçlanır. Her voltajda minimum darbe genişliğine yakın çalışırken, bazı kayıp adımlar vardır. Bunun nedeni asimetrik yükselme / düşme gecikmeleri olabilir, bu da mantık içinde ilerlerken bazı darbeleri biraz kısaltabilir.
Dört evreli kodlayıcıları bir SPI veri yoluna bağlamak için bir tasarım sunulmuştur. Tasarım olduğu gibi kullanılabilir veya ayrı bileşenler farklı uygulamalar için yeniden kullanılabilir. Kareleme giriş bölümü, kademeli sürücüler gibi farklı cihazlara doğrudan uygun çıkış sinyalleri verecek şekilde değiştirilebilir. 16 bitlik yukarı / aşağı sayaç bloğu, birçok çeşit darbe kaynağını ölçmek için kullanışlı bir araç sağlar. Zincirlenebilir SPI arayüzü, birden fazla GreenPAK cihazından eşzamanlı olarak numune almak ve okumak için kullanılabilir ve veri kaynağı bir sayaçtan veya bir ADC'den gelebilir.
Müşterilerden gelen en iyi tonalite dileklerini oluşturacak olsaydım, şöyle görünürdü: - Metni dostça yapalım. - Sohbet gibi olsun.
'Her zaman hatırla - kendin için tasarım yapmıyorsun!' UX ve arayüz tasarımı dünyasında çokça duyduğunuz bir mantradır. Buna katılmadığımı itiraf etmeliyim.
Mars, Uranüs ve Kuzey Düğümü, 1 Ağustos 2022'de 18 derecede Boğa burcunda kavuşuyor. Yataklarımız yanarken nasıl uyuruz?-Gece yarısı yağı Yılın en önemli astrolojik yönlerinden biri olan Mars ve Uranüs'ün kaderin Kuzey Düğümü ile kavuşumu, gerçek bir aciliyet hissinin eşlik ettiği büyük bir uyandırma çağrısıdır.
Kedi Felix'in 9. doğum gününde, yetişkin hayatımın en büyük kayıplarından birini hatırlıyorum - 2013'teki Sophie'm. Bu makaleyi yazdım ve 2013'te bu platformda kısaca paylaştım.
Bu gönderi, DFINITY ekibinin merkezi olmayan bulut vizyonunu ve bunun geleneksel blok zinciri ve Amazon Web Servisleri gibi mevcut bulut sağlayıcılarıyla ilişkisini araştırıyor. Büyük ölçekli bir ağ tarafından uygulanan DFINITY teknolojisinin gösterimleri 2017 sonbaharında yapılacak ve bunu, 2018 yazının başlarında piyasaya sürülmesi beklenen “açık bulut” ağıyla kâr amacı gütmeyen vakıf için bir Ana bağış toplama izleyecektir. .
Yaz sonu ve sonbahar nostaljik mevsimlerdir. Sokak lambaları ışıklarını yağmurlu sokaklara saçıyor ve ayakların altındaki yapraklar - alacakaranlığın gölgelerinde soluk kırmızı-turuncu - geçmiş günlerin bir hatırlatıcısı.