Sonlu Durum Makineleri — Dersler
Sonlu Durum Makineleri ünitesindeki 4 ders. Her ders kısa bir anlatım ve adım adım bir yürüyüştür; çoğu nandbench'te açıp denemek için bir şablonla gelir.
7.1 Sonlu durum makineleri
Sıralayıcılar, denetleyiciler, protokoller — hepsi alttan FSM.
- Bir FSM'in sonlu durumları, girişlerle tetiklenen geçişleri ve duruma (belki girişe) bağlı çıkışları vardır.
- Donanım olarak: mevcut durumu saklayan bir yazmaç, (durum, girişler)'den (sonraki-durum, çıkış) hesaplayan kombinasyonel mantık.
- Yönlü graf olarak çizilir: düğümler durumlar, kenarlar koşul etiketli geçişler.
- Sayısal tasarımda hemen her denetleyici FSM'dir: trafik ışığı, otomat, UART alıcısı, CPU kontrol birimi.
- FSM-toy şablonunu aç. Bir giriş, bir çıkış ve durum yazmacı olan 3-durumlu makine görürsün.
7.2 Moore vs Mealy
Çıkışları durum makinesine bağlamanın iki yolu.
- Moore: çıkışlar yalnız mevcut duruma bağlıdır. Basit, glitch-free, bir ekstra saat çevrimi gecikmesi.
- Mealy: çıkışlar mevcut durum VE mevcut girişe bağlıdır. Daha az durum, ama çıkışlar giriş değişimiyle glitch yapabilir.
- Çizimde fark: Moore çıkışları durumların üzerinde, Mealy geçiş oklarının üzerindedir.
- Pratikte sık karıştırılır — tahmin edilebilirlik için Moore taban, tek bir pipeline kazandıracak geçiş için Mealy override.
- "101" arayan bir dizi tespit edicisi için ikisini de çiz. Moore ekstra durum ister; Mealy son geçişte çıkışı ateşler.
7.3 Bir spec'ten FSM tasarımı
Tekrar edilebilir tarif — spec → durumlar → kablolar.
- 1. Gözlenebilir davranışları listele (giriş dizileri ve eşleşen çıkışlar).
- 2. Durumları tespit et — sistemin bulunabileceği her "durum" bir state'tir. İsimlendir, diyagramı çiz, geçişleri etiketle.
- 3. Durum tablosunu kur: satırlar (durum, giriş), sütunlar (sonraki durum, çıkış).
- 4. Durumları bit kalıplarıyla kodla (ikilik, gray, one-hot — boyut ve zamanlamaya göre seç).
- 5. Kodlanmış tablodan sonraki-durum ve çıkış mantığını çıkar — küçük tablolar için K-haritası, büyükler için sentezleyici.
- 6. Kur: bir durum yazmacı + adım 5'teki kombinasyonel bloklar. Her zaman bilinen bir başlangıç durumuna giden reset yolu ekle.
7.4 Durum kodlaması
Durumlarının silikona giydiği bit kalıbını seç.
- İkilik kodlama: N durum için log₂(N) bit. En kompakt ama sonraki-durum mantığı karışabilir.
- One-hot kodlama: N durum için N bit, daima bir tanesi yüksek. Daha çok flop, ama sonraki-durum ve çıkış denklemleri çok sadeleşir.
- Gray kodlama: komşu durumlar bir bit fark eder. Durum yazmacı asenkron mantıkça okunduğunda glitch'i azaltır.
- FPGA'ler flip-flop zengindir, bu yüzden orta durum sayısında (≤32) one-hot varsayılandır. ASIC'ler alanı kısmak için yoğun ikiliğe yatkın.
nandbench