nandbench logosunandbench

İleri Konular — Dersler

İleri Konular ünitesindeki 3 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.

9.1 Statik ve dinamik tehlikeler

Kombinasyonel çıkışın giriş değişiminde neden titrediği.

  1. Statik tehlike: giriş değişirken çıkışın stabil kalması gerekirken anlık olarak yanlış değere düşmesi.
  2. Eşitsiz kapı gecikmelerinden kaynaklanır — iki yol farklı zamanlarda sonuçlanır, aradaki fark glitch'tir.
  3. Çözüm: geçişte çıkışı stabilize eden "consensus" / artıklı terim ekle. K-haritalarında bunlar üst üste binen gruplar olarak görünür.
  4. Senkron tasarım çoğunlukla glitch'i yutar — çıkış yalnız saat kenarında örneklendiği için anlık glitch'ler etkilemez.

9.2 Pipeline temelleri

Komutları üst üste bindir; saat hızını artırmadan throughput'u yükselt.

  1. Tek-çevrim veri yolunu aşamalara böl (IF, ID, EX, MEM, WB) ve aralara yazmaç koy. Her çevrimde her aşama farklı bir komutla uğraşır.
  2. Komut başına gecikme aynı, ama eş zamanlı beş komut sırada olduğu için throughput ~5× yükselir.
  3. Yeni sorunlar: veri tehlikeleri (sonraki komut, önceki henüz yazmadığı bir yazmacı okur), kontrol tehlikeleri (branch yönü fetch'te bilinmiyor).
  4. Çözümler: forwarding, branch tahmin, pipeline stall. Bu dersin kapsamı dışı ama FSM/datapath temeli üstüne kurulur.

9.3 Buradan sonra nereye?

Yosys, Icarus, FPGA — nandbench basamak taşıdır.

  1. nandbench yapısal Verilog netlist'i ve self-checking testbench üretir (Toolbar → menü → Export). Herhangi bir Verilog simülatörüne yükle.
  2. Icarus Verilog (iverilog) testbench'i komut satırından derleyip çalıştırır. Yosys aynı Verilog'u FPGA'ya hazır netlist'e sentezler.
  3. Gerçek FPGA akışı için Lattice iCE40 + açık kaynak Yosys → nextpnr → icestorm zincirini dene. Ücretsiz, uçtan uca.
  4. Büyük resim: sayısal mantık mikromimarinin, sonra işletim sistemlerinin, sonra her gün kullandığın her şeyin temelidir. İşte zemin burada.

← Tüm üniteler

nandbench'i ücretsiz aç →