12. 虛擬開發板#
沒有 iCEBreaker 也能「燒錄」:IDE 的 ⚡ 虛擬板畫出一塊 iCEBreaker(含 PMOD2 擴充板:5 顆 LED、3 個按鈕), 把你的設計放上去跑,按鈕可以按、LED 會亮,還能接序列埠終端機、外接模組與麵包板。 它在自己的背景執行緒裡執行,不會卡住編輯器。
三種模式#
| 模式 | 跑的是什麼 | 速度 | 何時用 |
|---|---|---|---|
| 位元流(真實)(預設) | 合成 → 自己的佈局繞線 → .bin,再把位元流解碼回電路逐週期模擬 | 小設計可達即時,大設計較慢 | 確認燒進真晶片會怎樣(連佈局繞線都包含在內) |
| 網表(快速) | iCE40 對應後的網表,不佈局繞線 | 快很多 | 改設計、看行為 |
| CPU(C 程式,即時) | 專案的 .c 在指令集模擬器上跑,周邊、記憶體映射、每個指令的時脈數與 RvSoc 相同 | 即時 12 MHz | C 程式(「C 程式」範例的預設) |
- 燒錄後狀態列顯示虛擬時間與「真實的幾倍」;速度選單可選「不超過即時」或「最快」,也可以暫停。
- ⟲ 重新上電:從頭開始(所有暫存器回到 0,和真晶片一樣)。
- 📂
.bin(或直接拖放到板子上):載入任何 iCE40UP5K 的位元流,例如v2c fpga --bin或 nextpnr + icepack 做的。 - ⬇ .bin 下載目前的位元流,
iceprog就能燒進真的板子。
從命令列做出來、拿到虛擬板上跑:
v2c fpga --pnr veryl --pcf counter.pcf --bin counter.bin counter.veryl
然後把 counter.bin 拖到虛擬板上。
操作#
| 動作 | 怎麼做 |
|---|---|
| 按按鈕 | 用滑鼠按住;或鍵盤 0 = BTN_N(板上按鈕)、1–3 = BTN1–BTN3 |
| 鎖住按鈕 | Shift+點擊(再點一次放開) |
| 看腳位 | 滑鼠移到腳上:設計的哪個埠、目前的電位;「設計沒有用到」的腳也會標出 |
LED 的亮度依「亮的時間比例」顯示,所以 PWM 調光、多工掃描的七段顯示器看起來和真的一樣。
腳位:📌#
設計的每個埠接到哪支腳由專案的 pins.pcf 決定(格式見第 7 章)。📌 腳位對話框列出每個埠,下拉選腳位, 「套用並燒錄」會寫回 pins.pcf 再燒一次。也可以直接在編輯器改 pins.pcf。
USB 終端機 🖥#
接到 FPGA 的腳 6(RX,電腦 → FPGA)與 9(TX,FPGA → 電腦)。
- 打字,按 Enter 送出;程式送回的字顯示在上方。
- 鮑率選單:每位元時脈數 = 12 MHz ÷ 鮑率。另有「每位元 8 拍」給測試用的設計(例如
UartLoop)。 - 出現「格式錯誤」通常是鮑率和設計不一致。
PMOD 外接模組#
PMOD1A、PMOD1B 各可插一個模組:
| 模組 | 接法 |
|---|---|
| 8 顆 LED | 腳 1–4、7–10 → LED 0–7(高電位亮) |
| 8 個開關 | 點一下切換;腳 1–4、7–10 = 開關 0–7 |
| 七段顯示器(2 位) | 腳 1–4、7–9 = 段 a–g,腳 10 = 選位(多工掃描) |
| VGA 螢幕 | PmodVGA 的接法,佔 1A + 1B;顯示 640×480 畫面 |
| 蜂鳴器 | 腳 1 的方波;勾 🔊 聲音才會發聲 |
PMOD1A 的腳:1–4 = 4、2、47、45,7–10 = 3、48、46、44;PMOD1B:1–4 = 43、38、34、31,7–10 = 42、36、32、28。
麵包板 🧪#
勾選 🧪 麵包板,板子旁邊出現一塊麵包板,可以拿 PMOD 的腳接自己的電路。
- 零件:導線、電阻、LED、按鈕、開關。
- 放置:選工具,點兩個孔放零件(LED 先點正極)。
- 刪除:選取後按 Delete,或按右鍵。
- 操作:按住按鈕、點一下開關。
它是一個簡化的電路模型:
- 銅條、電源軌、導線、按下的按鈕、閉合的開關把孔連成同一個節點。
- 電阻提供「弱」的電位(上拉 / 下拉)。
- LED 正極比負極高就亮。
下列情況會顯示警告:
- 短路(例如 FPGA 輸出直接接到 GND);
- LED 沒有串聯限流電阻;
- 輸入腳浮接(要加上拉或下拉電阻)。
已經插了 PMOD 模組的腳不能再接麵包板。
分享實驗#
一個實驗包含檔案、pins.pcf、模組、麵包板。分享方式有兩種:
- 🔗 分享實驗(產生連結):整個實驗壓縮進網址(
index.html#lab=…),對方打開就匯入成新專案,不需要任何伺服器。 - 匯出實驗檔
.lab.json:用 ⇪ 匯入打開。
tutorial/labs.tw.md 是用虛擬板上課的 8 個實驗講義,每個實驗都是一個 #ex=…&board=1 連結。
和真的板子差在哪#
- 位元流模式模擬的是位元流裡的邏輯與繞線,沒有類比效應:沒有延遲造成的毛刺,沒有亞穩態。
- 不模擬時序違規:Fmax 低於 12 MHz 的設計在這裡照樣正常,在真晶片上不會。請看
v2c fpga印出的 Fmax。 - 按鈕沒有彈跳。
- 板子的圖是示意圖。