FPGA pcie板卡工程代码

所属分类:源码/资料
开发工具:C/C++
文件大小:10462KB
下载次数:1
上传日期:2022-09-26 11:20:00
上 传 者iceskull
说明:  一套fpga mini pcie接口的工程包含原理图

文件列表:
cdpga_a (0, 2021-09-09)
cdpga_a\files (0, 2021-09-09)
cdpga_a\files\cdctl_a_component.png (67745, 2021-09-09)
cdpga_a\files\cdctl_a_sch.pdf (30199, 2021-09-09)
cdpga_b (0, 2021-09-09)
cdpga_b\code (0, 2021-09-09)
cdpga_b\code\cdpga_bx (0, 2021-09-09)
cdpga_b\code\cdpga_bx\cdpga.sdc (556, 2021-09-09)
cdpga_b\code\cdpga_bx\cdpga_bx.pcf (806, 2021-09-09)
cdpga_b\code\cdpga_bx\cdpga_bx.v (748, 2021-09-09)
cdpga_b\code\cdpga_bx\cdpga_bx (0, 2021-09-09)
cdpga_b\code\cdpga_bx\cdpga_bx\cdpga_bx_sbt.project (2078, 2021-09-09)
cdpga_b\code\cdpga_bx\cdpga_bx\cdpga_bx_syn.prj (1504, 2021-09-09)
cdpga_b\code\cdpga_bx\cdpga_bx\synlog.tcl (31, 2021-09-09)
cdpga_b\code\cdpga_bx\pll (0, 2021-09-09)
cdpga_b\code\cdpga_bx\pll\cdpga_pll.v (1541, 2021-09-09)
cdpga_b\code\cdpga_bx\pll\cdpga_pll_inst.v (194, 2021-09-09)
cdpga_b\code\cdpga_bx\pll\cdpga_pll_v.lpc (73, 2021-09-09)
cdpga_b\code\cdpga_bx\test_python (0, 2021-09-09)
cdpga_b\code\cdpga_bx\test_python\Makefile (596, 2021-09-09)
cdpga_b\code\cdpga_bx\test_python\cdpga_bx_wrapper.v (656, 2021-09-09)
cdpga_b\code\cdpga_bx\test_python\cdpga_pll_sim.v (746, 2021-09-09)
cdpga_b\code\cdpga_bx\test_python\test_cdpga_bx.py (1207, 2021-09-09)
cdpga_b\code\cdpga_bx\test_verilog (0, 2021-09-09)
cdpga_b\code\cdpga_bx\test_verilog\cdpga_pll_sim.v (746, 2021-09-09)
cdpga_b\code\cdpga_bx\test_verilog\cdpga_tb.v (1051, 2021-09-09)
cdpga_b\files (0, 2021-09-09)
cdpga_b\files\cdctl_b1_dimension.svg (572160, 2021-09-09)
cdpga_b\files\cdctl_bx_component.png (98953, 2021-09-09)
cdpga_b\files\cdctl_bx_sch.pdf (35225, 2021-09-09)
cdpga_b\files\cdctl_bx_socket_gerber_v2.0 (0, 2021-09-09)
cdpga_b\files\cdctl_bx_socket_gerber_v2.0\cdctl_test-B.Cu.gbr (104647, 2021-09-09)
cdpga_b\files\cdctl_bx_socket_gerber_v2.0\cdctl_test-B.Mask.gbr (3196, 2021-09-09)
cdpga_b\files\cdctl_bx_socket_gerber_v2.0\cdctl_test-B.SilkS.gbr (7231, 2021-09-09)
cdpga_b\files\cdctl_bx_socket_gerber_v2.0\cdctl_test-Dwgs.User.gbr (381, 2021-09-09)
cdpga_b\files\cdctl_bx_socket_gerber_v2.0\cdctl_test-Edge.Cuts.gbr (3941, 2021-09-09)
... ...

FPGA ICE40UL1K-CM36A 最小系統板 ======================================= 1. [介紹](#介紹) 2. [操作示範](#操作示範) 6. [相關資料](#相關資料) ## 介紹 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/](./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 默認識別爲串口: ```sh $ 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_x***-111-2-x86_***-linux`, but the last version `diamond-programmer_3_12-240-2-x86_***-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_***-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_x***-111-2-x86_***-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/` 目錄,通過以下命令即可完成模擬執行: ```sh $ make ``` 最後通過 GTKWave 查看輸出的波形檔案: 修改代碼再次模擬執行後,只需點擊 GTKWave 的 Reload 按鈕即可更新視窗。 關於 cocotb 具體用法請自行前往其項目專頁查閱相關文檔。 #### iCEcube2 模擬測試 iCEcube2 中包含的 Active-HDL 模擬工具僅存在於 Windows 版本,具體使用方式在新的頁面中查看:[iCEcube2 Simulation](icecube2_sim.md). 更新:最新版本的 iCEcube2 2020.12 默認改用 ModelSim 仿真,此章節日後再更新。 ## 相關資料 - [原理圖](files/cdctl_bx_sch.pdf) - [位置圖](files/cdctl_bx_component.png) - [KiCad library](files/kicad_lib/) ### 尺寸圖 ### 焊接方法 除了上面人头板的 CDBITE 免焊接咬合方式:https://github.com/dukelec/cdbus_doc/tree/master/cdbite 还可以直接焊接排针,做成可以插拔的方式:https://blog.d-l.io/solder-half-holes-pcb-with-pin-headers

近期下载者

相关文件


收藏者