先動手,
再理解公式。
四間可操作的電機實驗室。改變電阻與電容就能看波形,切換邏輯輸入、按時脈進行狀態轉移,或自行編輯測試向量做 Verilog 參考驗證。
RC 充電/放電模擬
理想一階串聯 RC,電容初始電壓設定為 0(充電)或 Vₛ(放電)。
電容兩端電壓 VC(t)
推導
τ=R·C。充電時 VC(t)=Vₛ(1−e−t/τ);放電時 VC(t)=Vₛe−t/τ。在 1τ 時充電約63.2%,放電剩約36.8%。
驗證重點
參數需換算 SI 單位:kΩ 乘 1000,µF 乘 10−6。改 R 或 C 會改變秒數,但以 τ 為單位的曲線形狀不變。
邏輯閘與加法器
改變 A、B、Cin,立刻觀察布林輸出與完整真值表。
真值表 Truth Table
先想,再看結果
AND 兩者都1才1;OR 任一1即1;XOR 輸入不同才1。半加器:S=A⊕B、C=A·B;全加器另外加入 Cin。
延伸練習
先完成單一 AND 的四組真值表,再改為半加器、全加器,確認 carry 與 sum 必須分開設計。練同科 318 題題庫 ↗
Moore 交通號誌狀態機
時脈一步一步推進:RED → GREEN,收到行人請求才會 GREEN → YELLOW → RED。
目前狀態:RED
事件與轉移紀錄
- t=0 · reset→RED
為什麼是 Moore
輸出 STOP/GO/CAUTION 只由目前 state 決定;輸入 req 只影響下一次時脈的轉移,不會讓交通燈立即跳變。
避免的錯誤
不能把組合輸入變化直接當作時脈正緣。RESET 是刻意設計的非同步重設,在此參考模型中會立即回到 RED。
Verilog Testbench 設計器
編輯測試向量並檢查預期輸出;可下載 DUT + testbench,用 Icarus Verilog 在本機真正編譯。
逐筆比對與波形資料
瀏覽器內只執行固定規格的 JavaScript 參考模型,不會編譯或執行任意 Verilog 程式。實際 HDL 編譯請下載檔案後在本機執行。
| 向量 | 輸入 | 期望 | 實際 | 斷言 |
|---|---|---|---|---|
| 按左側「執行參考驗證」 | ||||
儲存為 `dut_tb.v` 後執行:
iverilog -g2012 -s tb -o sim dut_tb.v vvp sim
如何驗收
把每個測試向量的 expected 與參考模型 actual 逐列比對。故障注入只修改瀏覽器參考模型的輸出,不會更改所下載的 Verilog 程式。
限制與安全
這不是完整 Verilog 編譯器。僅支援 2-input AND、Half Adder、DFF 的教學模型;不執行使用者貼上的程式碼,防止不受信任的程式佔用資源。