nandbench logosunandbench

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.

  1. Bir FSM'in sonlu durumları, girişlerle tetiklenen geçişleri ve duruma (belki girişe) bağlı çıkışları vardır.
  2. Donanım olarak: mevcut durumu saklayan bir yazmaç, (durum, girişler)'den (sonraki-durum, çıkış) hesaplayan kombinasyonel mantık.
  3. Yönlü graf olarak çizilir: düğümler durumlar, kenarlar koşul etiketli geçişler.
  4. Sayısal tasarımda hemen her denetleyici FSM'dir: trafik ışığı, otomat, UART alıcısı, CPU kontrol birimi.
  5. 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.

  1. Moore: çıkışlar yalnız mevcut duruma bağlıdır. Basit, glitch-free, bir ekstra saat çevrimi gecikmesi.
  2. 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.
  3. Çizimde fark: Moore çıkışları durumların üzerinde, Mealy geçiş oklarının üzerindedir.
  4. 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.
  5. "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. 1. Gözlenebilir davranışları listele (giriş dizileri ve eşleşen çıkışlar).
  2. 2. Durumları tespit et — sistemin bulunabileceği her "durum" bir state'tir. İsimlendir, diyagramı çiz, geçişleri etiketle.
  3. 3. Durum tablosunu kur: satırlar (durum, giriş), sütunlar (sonraki durum, çıkış).
  4. 4. Durumları bit kalıplarıyla kodla (ikilik, gray, one-hot — boyut ve zamanlamaya göre seç).
  5. 5. Kodlanmış tablodan sonraki-durum ve çıkış mantığını çıkar — küçük tablolar için K-haritası, büyükler için sentezleyici.
  6. 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ç.

  1. İkilik kodlama: N durum için log₂(N) bit. En kompakt ama sonraki-durum mantığı karışabilir.
  2. 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.
  3. Gray kodlama: komşu durumlar bir bit fark eder. Durum yazmacı asenkron mantıkça okunduğunda glitch'i azaltır.
  4. 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.

← Tüm üniteler

nandbench'i ücretsiz aç →