Skip to content

Latest commit

 

History

History
133 lines (90 loc) · 6.09 KB

readme_zh.md

File metadata and controls

133 lines (90 loc) · 6.09 KB

FPGA ICE40UL1K-CM36A 最小系統板

  1. 介紹
  2. 操作示範
  3. 相關資料

介紹

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 進行綜合:

然後點擊 Run P & R 佈線並生成燒錄檔案:

最後檢查時序是否滿足: 對於 FPGA 開發,只要 RTL 模擬通過,時序約束亦滿足,那麼就基本不會出問題,(譬如 Altera 公司較新版 Quartus 對很多器件都不再支援 post-route simulation)。

查看電路

下載韌體

通過 FT232H 系列的 USB 轉 SPI 工具連接電路:
(人頭是一個免銲接的轉接板,引出核心板所有引腳,鼻子晶片是 MAX3485, 默認未接入電路)
具體接線方式請參考器件相關資料,譬如:iCE40 Ultra Breakout Board Users Guide.

Notes:

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

按下圖接好線,打開燒錄工具,會提示掃描失敗,因爲工具不支持自動識別 FLASH 芯片,所以要分別手動點擊 "Device Family" 和 "Device" 選擇 FPGA 型號, 然後雙擊 "Operation" 在彈出菜單中選擇 SPI Flash Programming, 並選擇 Hex 文件和 Flash 芯片型號,確認返回主界面即可進行燒錄。

iCE40 UL 支持市面上大多數 spi nor flash,如果 flash 型號沒有被此燒錄工具收錄,則需要使用第三方工具進行燒錄。

模擬測試

你可以使用自己習慣的模擬方式和工具,譬如你可以直接使用 ModelSim, 或者通過 Quartus, ISE 等 IDE 來測試代碼之功能。 這裡僅給出我偏好的方式和官方提供的方式。

通過 python 模擬測試

安裝軟體 iverilog (>= v10) 和下載 cocotb, 進入 test_python/ 目錄,通過以下命令即可完成模擬執行:

$ make

最後通過 GTKWave 查看輸出的波形檔案: 修改代碼再次模擬執行後,只需點擊 GTKWave 的 Reload 按鈕即可更新視窗。

關於 cocotb 具體用法請自行前往其項目專頁查閱相關文檔。

iCEcube2 模擬測試

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