CDPGA_BX 爲 Lattice 之 iCE40 UL 系列 FPGA (ICE40UL1K-CM36A) 最小系統板(爲 CDCTL_BX 匯流排控製器未燒寫版本),板上資源含有:
- 引出 12 個 IO 埠(其中 4 個與配置埠復用);
- 16 M 時鐘,可經內部 PLL 輸出更高頻率;
- 只需外部供電 3.3 V 即可使用。
Lattice 器件使用較爲便捷:
- 價格便宜,體積小,封裝選擇多;
- 可內部配置,防止破解;
- 無需私有燒錄工具,使用任意 FT232H 系列 USB 轉 SPI 工具即可;
- 開發軟體和燒錄工具免費且相對小巧,支援 Linux 和 Windows 平臺(Linux 版本開發軟體不足 400 MByte)。
模組支持 3 種配置方式:
- 由外部 MCU 或燒錄工具寫入 SRAM, 官方提供 SPI 寫入時序和示例代碼,FPGA 做從,這種方式不限制寫入次數,還可以隨時切換韌體,但掉電韌體會丟失;
- 由外部 SPI FLASH 配置晶片提供,FPGA 做主,上電自動讀取韌體(FLASH 數據可由燒錄工具直接寫入);
- 燒寫 FPGA 內部 NVCM OTP 存儲器,只可燒寫一次,燒錄後上電可默認由內部 NVCM 配置;而且依然可以通過 MCU 配置,但無法再使用外部 SPI FLASH 配置方式。
示範代碼在 ./code/ 檔案夾下。
下載安裝 Lattice iCEcube2 軟體,然後 File -> New Project 以新建項目:
填寫項目名和路徑後,然後點擊 Next 會彈出添加檔案的視窗, 需要添加 HDL 代碼、SDC 時序約束、PCF 管腳定義,完成後點擊 Finish 即可,檔案也可在項目建立完畢之後再添加。
然後點擊 Run Synplify Pro Synthesis 進行綜合:
最後檢查時序是否滿足: 對於 FPGA 開發,只要 RTL 模擬通過,時序約束亦滿足,那麼就基本不會出問題,(譬如 Altera 公司較新版 Quartus 對很多器件都不再支援 post-route simulation)。
通過 FT232H 系列的 USB 轉 SPI 工具連接電路:
(人頭是一個免銲接的轉接板,引出核心板所有引腳,鼻子晶片是 MAX3485, 默認未接入電路)
具體接線方式請參考器件相關資料,譬如:iCE40 Ultra Breakout Board Users Guide
.
Linux 用家需要把 ftdi_sio driver 屏蔽,否則會把 FT232H 默認識別爲串口:
$ cd /lib/modules/`uname -r`/kernel/drivers/usb/serial/
$ sudo mv ftdi_sio.ko ftdi_sio.ko.bk
$ sudo rmmod ftdi_sio
The version of previous screenshots was programmer_3_10_x64-111-2-x86_64-linux
, but the last version diamond-programmer_3_12-240-2-x86_64-linux
don't support FT232H anymore, we could solve this problem by modify two binary so
file, change the USB pid string from 6010
to 6014
:
(The last version programmer support FT2232H by default, corresponding to the pid 6010
.)
The last version diamond-programmer_3_12-240-2-x86_64-linux
has issue for NVCM programming, after processing NVCM Program, Verigy, Secure
, then check back by NVCM Read Device Properties
, the Device Secured
always reported as OFF
, and the chip will not work at all.
Please use old version programmer_3_10_x64-111-2-x86_64-linux
for NVCM programming so far. (2021.04.07)
按下圖接好線,打開燒錄工具,會提示掃描失敗,因爲工具不支持自動識別 FLASH 芯片,所以要分別手動點擊 "Device Family" 和 "Device" 選擇 FPGA 型號, 然後雙擊 "Operation" 在彈出菜單中選擇 SPI Flash Programming, 並選擇 Hex 文件和 Flash 芯片型號,確認返回主界面即可進行燒錄。
iCE40 UL 支持市面上大多數 spi nor flash,如果 flash 型號沒有被此燒錄工具收錄,則需要使用第三方工具進行燒錄。
你可以使用自己習慣的模擬方式和工具,譬如你可以直接使用 ModelSim, 或者通過 Quartus, ISE 等 IDE 來測試代碼之功能。 這裡僅給出我偏好的方式和官方提供的方式。
安裝軟體 iverilog
(>= v10) 和下載 cocotb
, 進入 test_python/
目錄,通過以下命令即可完成模擬執行:
$ make
最後通過 GTKWave 查看輸出的波形檔案: 修改代碼再次模擬執行後,只需點擊 GTKWave 的 Reload 按鈕即可更新視窗。
關於 cocotb 具體用法請自行前往其項目專頁查閱相關文檔。
iCEcube2 中包含的 Active-HDL 模擬工具僅存在於 Windows 版本,具體使用方式在新的頁面中查看:iCEcube2 Simulation.
更新:最新版本的 iCEcube2 2020.12 默認改用 ModelSim 仿真,此章節日後再更新。
除了上面人头板的 CDBITE 免焊接咬合方式:https://github.com/dukelec/cdbus_doc/tree/master/cdbite
还可以直接焊接排针,做成可以插拔的方式:https://blog.d-l.io/solder-half-holes-pcb-with-pin-headers