一 Block Design設(shè)計(jì)方法
早期的FPGA,資源是比較有限的,設(shè)計(jì)規(guī)模相對(duì)也比較小,之前的設(shè)計(jì)流程中工程師常用的設(shè)計(jì)以HDL+Xilinx IP為結(jié)構(gòu),設(shè)計(jì)中也會(huì)顧慮到FPGA資源的節(jié)省。
隨著FPGA的資源越來越大,設(shè)計(jì)的快速構(gòu)建、易修改、隨著版本可迭代的要求越來越高。好比在早期單片機(jī)時(shí)代,C語言是主流的工具;而處理器越來越強(qiáng),腳本類語言能更快構(gòu)建最終應(yīng)用。
Xilinx越來越多的例程,給出的參考設(shè)計(jì)是基于Block Design設(shè)計(jì)方法的,block design設(shè)計(jì)方法具備如下優(yōu)勢(shì):
A. 框圖形式,直觀易懂
Block Design基于框圖的形式,搭積木+連線的方式; B. 節(jié)省大量的Coding時(shí)間
互聯(lián)總線連線,可以鼠標(biāo)單一連線。Block Design的一個(gè)IP往往可以獨(dú)立運(yùn)行,比代碼的方式只是一個(gè)wrapper包含的內(nèi)容更多;
C. 可以隨著Vivado升級(jí),快速更新IP,保持設(shè)計(jì)更新
傳統(tǒng)HDL+IP的方式,IP升級(jí)后還需要檢查對(duì)應(yīng)HDL的適配。Block Design一般來說,IP作為一個(gè)模塊升級(jí),基本上Block Design直接升級(jí),內(nèi)部不用再干預(yù); D. 包括大量的通用IP,可以靈活構(gòu)建設(shè)計(jì)
尤其是基于AMBA的IP,可以幫助用戶快速靈活構(gòu)建設(shè)計(jì);
二 Block Design設(shè)計(jì)實(shí)例
如何理解Block Design設(shè)計(jì)方法、工具如何使用等問題Xilinx有詳細(xì)的文檔手冊(cè)來介紹,本文中不做介紹,本文簡單以一個(gè)實(shí)際的案例,介紹使用Block Design加速設(shè)計(jì)。
本文描述的這個(gè)設(shè)計(jì),需要4路光纖,運(yùn)行Aurora協(xié)議,各路Aurora線速率不同。最終Aurora協(xié)議的數(shù)據(jù)部分,還需要通過PCIe上傳到上位機(jī)。反過程是上位機(jī)的數(shù)據(jù),通過PCIe最終分發(fā)到4路Aurora光纖,向外傳輸。
本文描述的這個(gè)設(shè)計(jì)中的兩個(gè)要點(diǎn):
1. 利用DDR做大容量緩存
有很多應(yīng)用需要用DDR做緩存,例如常見的PCIe+Aurora收發(fā),或者ADC/DAC,圖像采集卡等,兩邊速率不匹配并且累計(jì)需要的容量超過FPGA內(nèi)部FIFO的時(shí)候,需要外部的DDR做緩沖。
早期Xilinx DDR IP的用戶接口,只提供了類似于FIFO那樣的接口,并且只有一個(gè)用戶接口。
在傳統(tǒng)的RTL設(shè)計(jì)方法中,需要將DDR作為緩存,需要自己做如下設(shè)計(jì):
A. 多數(shù)據(jù)輸入輸出的接口,將app_接口擴(kuò)展多個(gè)獨(dú)立的接口,供不同的端口使用
B. 總線仲裁,多個(gè)獨(dú)立接口仲裁,按照round-robin,或者搶占式的方式提供仲裁
C. 地址管理,不同的端口深度要求不同的情況下,對(duì)應(yīng)管理不同的地址空間。
實(shí)現(xiàn)這些功能,大概需要寫這么多代碼,對(duì)一個(gè)工程師來說,這些代碼可能需要2-4周的代碼和仿真時(shí)間:
如果使用Block Design實(shí)現(xiàn),1個(gè)小時(shí)差不多就可以實(shí)現(xiàn)上面的這些內(nèi)容,在Block Design中:
A. 最右側(cè)的DDR IP 直接出AXI接口;
B. 使用AXI Smart Connect實(shí)現(xiàn)多端口擴(kuò)展,自帶仲裁功能;
C. 使用DATAMOVER完成外圍FIFO數(shù)據(jù)到DDR的數(shù)據(jù)讀寫;
搭建這個(gè)Block只需要10分鐘,到這一步為止,剩下的工作只需要控制DATAMOVER的命令接口即可。
2. 使用XDMA直接和DDR交互
過去Xilinx 平臺(tái)設(shè)計(jì)DMA,從最早的XAPP1052,到后來一些付費(fèi)的PLDA和NWlogicIP,設(shè)計(jì)復(fù)雜度不用說,哪怕購買了IP也需要一些時(shí)間融入到自己的產(chǎn)品中。
Xilinx有一個(gè)XDMA IP,這個(gè)IP的介紹和使用參考PG195。這里使用Block Design,添加XDMA。
XDMA對(duì)外有2個(gè)接口:
A. 一個(gè)是AXI_LITE接口,這里接AXI_BRAM IP,對(duì)外是一個(gè)bram接口,用作寄存器接口,控制PCIe卡內(nèi)部的寄存器;
B. 一個(gè)是AXI Memory Full接口,可以直接對(duì)接DDR空間,訪問所有的DDR部分;
通過地址空間來看,DDR被PCIe XDMA和4路DATAMOVER共享,DATAMOVER外部接收的數(shù)據(jù)緩存在DDR空間,上位機(jī)可以直接讀走這片緩存的數(shù)據(jù),從而實(shí)現(xiàn)外部數(shù)據(jù)到上位機(jī)的過程。
一個(gè)實(shí)際的PCIe Aurora光纖收發(fā)的工程,在Block Design中搭建這些框圖,外圍的代碼非常簡單。下面是一個(gè)實(shí)際的工程,4光口的Aurora收發(fā)卡,使用DDR緩存,并且使用PCIe和上位機(jī)交互。
Block Design中包含了PCIe部分,以及上面的DDR緩沖的部分,外部只需要1個(gè)DATAMOVER寫控制、1個(gè)DATAMOVER讀控制、1個(gè)寄存器接口,即完成整個(gè)設(shè)計(jì)。
三 結(jié)語
使用Block Design設(shè)計(jì)方法,主體部分都可以快速拖拽和連線完成,使得外圍所需要的的代碼大大簡化,只需要區(qū)區(qū)3個(gè)模塊代碼,完成從數(shù)據(jù)流到DDR的緩沖以及通過XDMA讀取DDR的過程,從而完成外圍接口和上位機(jī)的通訊。
這個(gè)設(shè)計(jì)可以適配很多種Stream形式的設(shè)計(jì):
A. Aurora光纖收發(fā)卡;
B. Camera Link圖像采集卡;
C. AD/DA數(shù)據(jù)采集回放卡;
審核編輯 :李倩
-
FPGA
+關(guān)注
關(guān)注
1630文章
21801瀏覽量
606320 -
代碼
+關(guān)注
關(guān)注
30文章
4834瀏覽量
69114 -
Block
+關(guān)注
關(guān)注
0文章
26瀏覽量
14730
原文標(biāo)題:利用Block Design加速設(shè)計(jì)
文章出處:【微信號(hào):Comtech FPGA,微信公眾號(hào):Comtech FPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
利用NVIDIA DPF引領(lǐng)DPU加速云計(jì)算的未來
![<b class='flag-5'>利用</b>NVIDIA DPF引領(lǐng)DPU<b class='flag-5'>加速</b>云計(jì)算的未來](https://file1.elecfans.com/web3/M00/07/0B/wKgZPGeS7aKAGUIAAAAbxIpaJKw881.png)
ADS1191的RLD block是怎樣組合電極生成病人驅(qū)動(dòng)信號(hào)的?
Design House與Fab的關(guān)系
![](https://file1.elecfans.com/web2/M00/0D/4B/wKgaomdFX46AbOHfAAWTPwQ3Wl0193.jpg)
U50的AMD Vivado Design Tool flow設(shè)置
![U50的AMD Vivado <b class='flag-5'>Design</b> Tool flow設(shè)置](https://file1.elecfans.com/web2/M00/0B/81/wKgZomc0DAWAbhUKAAAh3hxm8jo577.png)
GPU加速計(jì)算平臺(tái)是什么
FPGA加速深度學(xué)習(xí)模型的案例
請(qǐng)問TLV320AIC3204中Processing Block是做什么用的啊?
AMD Vivado Design Suite 2024.1全新推出
利用NVIDIA RAPIDS加速DolphinDB Shark平臺(tái)提升計(jì)算性能
![<b class='flag-5'>利用</b>NVIDIA RAPIDS<b class='flag-5'>加速</b>DolphinDB Shark平臺(tái)提升計(jì)算性能](https://file1.elecfans.com/web2/M00/05/B7/wKgZombeVimARpyWAACzFhWhHm0129.png)
利用邊沿速率加速器和自動(dòng)感應(yīng)電平轉(zhuǎn)換器
![<b class='flag-5'>利用</b>邊沿速率<b class='flag-5'>加速</b>器和自動(dòng)感應(yīng)電平轉(zhuǎn)換器](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
淺談Pango_Design_Suite工具的安裝
請(qǐng)問STM8L052R8的EEPROM到底是幾個(gè)block?
![](https://file1.elecfans.com/web2/M00/C6/42/wKgZomYGfW2AWEWCAA1w5YOWQRM392.jpg)
評(píng)論