首先,什么是XPM?可能很多人沒聽過也沒用過,它的全稱是Xilinx Parameterized Macros,也就是Xilinx的參數化的宏,跟原語的例化和使用方式一樣。可以在Vivado中的Tools- > Language Templates中查看都有哪些XPM可以例化。


從上圖中可以看出,目前可以例化的XPM主要有三種:跨時鐘域處理、FIFO和MEMORY。
我們以MEMORY為例,在Vivado中可以通過下面四種方式調用FPGA中的存儲單元,均可以選擇是Block RAM還是Distributed RAM.
1. RTL代碼
我們在定義一個memory變量后,可以在前面指定其資源類型:
(* ram_style = "block" *)reg [3:0] mem_bram [15:0] ; (* ram_style = "distributed" *)reg [3:0] mem_dram [15:0] ;
使用RTL代碼的方式非常靈活,但由于少了很多的控制項,綜合后的結果可能不是最優的。
2. 原語(Primitive)
使用原語也可以例化MEMORY,但沒見幾個工程師這么用過,因為接口實在太多了,所以實用性不高。

3. IP Core
這種方式應該是使用最多的,但缺點也很明顯:
當修改參數時需要重新打開IP,然后Generate;
不同版本的Vivado之間還需要進行Update;
有時沒注意到IP中的參數,導致結果并不是自己想要的;
最近在調試中就碰到這樣一個問題,FIFO中的默認輸出延遲是1,即輸出數據比讀使能晚一拍,而且Output Registers默認是不勾選的。但這個選項不知道什么時候被改了,導致程序最終的輸出結果一直有問題,在debug時一直檢查的是RTL代碼,直到定位到FIFO模塊時才發現了這個問題。如果此時我們使用的是XPM,那從代碼中很容易就能看出來
錯誤。
4. XPM_MEMORY
相對而言,XPM的缺點就不是很明顯,純代碼例化的方式更加靈活、簡單。

編輯:hfy
-
FPGA
+關注
關注
1660文章
22412瀏覽量
636306 -
Xilinx
+關注
關注
73文章
2200瀏覽量
131137 -
XPM
+關注
關注
0文章
12瀏覽量
8914
發布評論請先 登錄
光伏四可裝置軟件系統架構:微服務化設計與容器化部署方案
登臨科技基于納適系列國產化GPU推出文檔PDF解析行業解決方案
MD662H高速DAC替代方案全解析:采樣率、復用與性能權衡
北斗定位天線產品方案選型指南與應用方案解析
深度解析國產電機驅動IC,一顆可替代DRV8813的雙通道集成電機驅動器
BOSCH PM6功率模塊平臺化方案深度解析
“四可”標準體系解析:國標與電網接入規范的合規性指南
E203外設的例化與編譯配置
Xilinx BRAM IP核配置及其例化
智慧水務物聯網監測解決方案設計 ——以數據驅動全流程水務管理,實現智能化、精細化、可持續化運營
基于開源鴻蒙的AVPlayer視頻播控開發樣例
構建智慧能源神經末梢:智能化配電站解決方案全解析
EtherCAT與Profinet協議轉換在工業自動化中的應用:以匯川伺服驅動器為例
可例化的XPM方案解析
評論