跳轉到

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。
  • 按鈕沒有彈跳。
  • 板子的圖是示意圖。