SystemVerilog常用可綜合IP模塊庫
想擁有自己的SystemVerilog IP庫嗎?設計時一個快捷鍵就能集成到自己的設計,酷炫的設計你也可以擁有!
每個公司應該都會維護屬于自己公司風格的IP庫,作為個人學習或者持續使用的方式,這種方法很有用。今天肯定不是分享我司的IP庫,而是一個開源庫,每個人都可以使用、維護或者修改,當然作為學習(多人維護)也是不可多得的資料。把該庫集成到自己常用的文本編輯器(SublimeVScodeVim等等)可以很快完成代碼設計。
簡介
這是verilog/systemverilog 可綜合模塊的集合。
所有代碼在典型的 FPGA 和主流 FPGA 供應商中都具有高度可重用性。
本項目是幾個常用可綜合模塊集合的集合,下面分別介紹這些項目。
工程鏈接
?https://github.com/suisuisi/basic_systemverilog
詳細介紹
basic_verilog

文件夾外的文件根據文件名很容易判斷其用途,下面著重介紹文件夾內部文件:
目錄 | 描述 |
---|---|
Advanced Synthesis Cookbook/ | Altera cookbook中的有用代碼 |
KCPSM6_Release9_30Sept14/ | Xilinx 的 Picoblaze 軟處理器 |
pacoblaze-2.2/ | 適用于 Altera 器件的 Picoblaze 版本 |
example_projects/ | FPGA 項目示例 |
benchmark_projects/ | 多種 FPGA 類型的編譯時間基準 |
scripts/ | 有用的 TCL 腳本 |
注1:cookbook:類似技巧大全的意思
這里還有一個TCL腳本文件,再簡單介紹一下:
腳本 | 描述 |
---|---|
scripts/allow_undefined_ports.tcl | 允許為 Vivado IDE 生成帶有未定義引腳的測試項目 |
scripts/compile_quartus.tcl | Quartus IDE 中用于命令行項目編譯的樣板腳本 |
scripts/convert_sof_to_jam.bat | Altera/Intel FPGA 配置文件轉換器 |
scripts/convert_sof_to_rbf.bat | 另一個 Altera/Intel FPGA 配置文件轉換器 |
scripts/iverilog_compile.tcl | 使用 iverilog 工具編譯 Verilog 源代碼并在 gtkwave 工具中運行模擬的完整腳本 |
scripts/modelsim_compile.tclModelsim | 無項目模式編譯腳本 |
scripts/post_flow_quartus.tcl | 英特爾 Quartus IDE 的自定義報告或報告分析 |
scripts/post_flow_vivado.tcl | Xilinx Vivado IDE 的自定義報告或報告分析 |
scripts/program_all.bat | Altera/Intel FPGA 的命令行編程器示例 |
scripts/project_version_auto_increment.tcl | Quartus IDE 的項目版本自動增量腳本 |
scripts/quartus_system_console_init.tcl | 通過 JTAG-to-Avalon-MM 橋 IP 讀/寫 Avalon-MM 的初始化腳本 |
scripts/set_project_directory.tcl | 更改當前目錄以匹配 Vivado IDE 中的項目目錄 |
scripts/write_avalon_mm_from_file.tcl | 通過 JTAG-to-Avalon-MM 橋 IP 將二進制文件中的批量二進制數據寫入 Avalon-MM |
注2:Avalon:ALTERA公司FPGA內部使用的總線,下圖是典型Altera FPGA系統

其他模塊說明
腳本 | 描述 |
---|---|
ActionBurst.v | 多通道一次性觸發模塊 |
ActionBurst2.v | 可變步長的多通道一次性觸發 |
adder_tree.sv | 將多個值并行相加 |
bin2gray.sv | 格雷碼到二進制轉換器 |
bin2pos.sv | 將二進制編碼值轉換為one-hot代碼 |
clk_divider.sv | 寬參考時鐘分頻器 |
debounce.v | 輸入按鈕的兩周期去抖動 |
delay.sv | 用于產生靜態延遲或跨時鐘域同步的有用模塊 |
dynamic_delay.sv | 任意輸入信號的動態延遲 |
edge_detect.sv | 組合邊沿檢測器,在每個信號邊沿上提供一個滴答脈沖 |
lifo.sv | 單時鐘 LIFO 緩沖器(堆棧)實現 |
NDivide.v | 原始整數除法器 |
prbs_gen_chk.sv | PRBS 模式生成器或檢查器 |
pulse_gen.sv | 產生具有給定寬度和延遲的脈沖 |
spi_master.sv | 通用spi主模塊 |
UartRx.v | 簡單明了的 UART 接收器 |
UARTTX.v | 簡單明了的 UART 發送器 |
uart_rx_shifter.sv | 類似 UART 的接收器移位器,用于 FPGA 內部或 FPGA 之間的簡單同步消息傳遞 |
uart_rx_shifter.sv | 類似 UART 的接收器移位器,用于 FPGA 內部或 FPGA 之間的簡單同步消息傳遞 |
UartRxExtreme.v | 極小的 UART 接收器實現 |
UartTxExtreme.v | 極小的 UART 發送器實現 |
... | ... |
generic_systemverilog_designs_library
- binary_counter
SystemVerilog 中具有異步復位的 n 位二進制計數器。
- binary_to_gray
SystemVerilog中的n位二進制到格雷碼組合轉換器電路。
- demultiplexer
具有寬度和輸出端口數量參數化的解復用器。
- full_adder
SystemVerilog 中的 n 位全加器
- full_subtractor
SystemVerilog 中的 n 位全減法器
- gray_counter
使用 SystemVerilog 中的二進制計數器和二進制到格雷碼組合轉換器電路實現的具有異步復位的 n 位格雷碼計數器。
- multiplexer
具有寬度和輸入端口數量參數化的多路復用器。
SvLibDR
包括串口和SPI接口的可綜合IP模塊
SystemVerilog-Bitmap-Library-AXI-Image-VIP
描述
要驗證視頻或圖像處理 IP,可能需要將真實圖像讀取到設計中,并通過接口發送其數據。然后,從界面獲取輸出,并將其轉換為新圖像,保存或比較。
為了解決這個復雜的問題,設計了這個庫,它可以幫助您簡化設計流程。使用一些簡單的 API 可以輕松地在測試臺中讀取和寫入標準位圖文件 (.BMP)。并且,使用 AXI-Stream Video Image VIP,可以輕松地將圖像發送到與 Xilinx 用戶指南 UG934 兼容的標準 AXI-Stream 視頻接口,從輸出接口接收圖像并保存。
位圖處理庫可以通過 System Verilog 將 Windows 位圖文件 (.BMP) 讀取和寫入位數組(虛擬內存),以進行 IP 驗證。該庫支持 24 位和 32 位位圖讀入和 32 位位圖寫出。
使用位圖處理庫的 AXI-Stream Video Image VIP?!癮xi_stream_video_image_in_vip”IP 可以將位圖文件讀入內存,并通過 AXI-Stream 視頻接口(在 Xilinx 用戶指南 UG934 中定義)發送。而“axi_stream_video_image_out_vip”IP可以監控一個AXI-Stream接口,獲取在接口上傳輸的幀并保存到位圖文件中。
一般信息
支持的位圖:
輸入:24-bpp/32-bpp RGB/RGBA 位圖輸出:32-bpp RGBA 位圖
這個庫的優勢
- 簡單的 API
- 開源
- 與流行的 EDA 工具兼容(在 Modelsim 和 Qustasim 上測試)
包中的文件
文件 | 描述 |
---|---|
bitmap_processing.sv | 位圖處理庫。 |
axi_stream_video_image.sv | AXI 流視頻圖像庫(用于回調類)。 |
axi_stream_video_image_in_vip.sv | VIP 用于讀取位圖并將其發送到接口。 |
axi_stream_video_image_out_vip.sv | VIP 用于監控界面并將圖像保存為位圖。 |
axi_stream_video_image_example.sv | 如何使用 VIP 和庫的簡單示例。 |
關于包使用等詳細信息,請查看項目介紹。
總結
今天只介紹了一個項目,這個項目可以給大家提供一個思路尤其對于沒有工作或者剛入門不久的同行,自己在編寫代碼時要想著可繼承性,這樣在以后做類似項目時可以借用,并且長期維護一個代碼對于這個模塊的理解有很大幫助。
最后,還是感謝各個大佬開源的項目,讓我們受益匪淺。后面有什么感興趣方面的項目,大家可以在后臺留言或者加微信留言,今天就到這,我是爆肝的碎碎思,期待下期文章與你相見。
審核編輯 :李倩
-
System
+關注
關注
0文章
166瀏覽量
37603 -
編輯器
+關注
關注
1文章
818瀏覽量
31819 -
模塊庫
+關注
關注
0文章
2瀏覽量
5107
原文標題:優秀的 Verilog/FPGA開源項目介紹(二十二)- SystemVerilog常用可綜合IP模塊庫
文章出處:【微信號:Open_FPGA,微信公眾號:OpenFPGA】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
海外住宅IP代理優勢綜合分析
Linux ip命令常用操作
IP定位離線庫的特點以及作用
HAL庫和標準庫的區別 HAL庫與CMSIS的關系
IP地址歸屬地離線庫——網絡安全行業的基石
S7-200指令庫
Modbus轉Ethernet IP網關模塊與匯川PLC通訊案例

評論