1、前言
PCIE(PCI Express)采用了目前業(yè)內(nèi)流行的點對點串行連接,比起 PCI 以及更早期的計算機總線的共享并行架構(gòu),每個設備都有自己的專用連接,不需要向整個總線請求帶寬,而且可以把數(shù)據(jù)傳輸率提高到一個很高的頻率,達到 PCI 所不能提供的高帶寬,是目前各行業(yè)高速接口的優(yōu)先選擇方向,具有很高的實用價值和學習價值;
本設計使用Xilinx官方的XDMA方案搭建基于Xilinx系列FPGA的PCIE通信平臺,該方案只適用于Xilinx系列FPGA,一并提供了XDMA的安裝驅(qū)動和QT上位機源代碼,省去了使用XDMA繁瑣的驅(qū)動尋找和上位機軟件開發(fā)的不知所措,并以搭建好vivado工程,省去了不知道如何使用XDMA的尷尬,使得PCIE的使用變得簡單易上手,而不用關心其復雜的PCIE協(xié)議;由于我的開發(fā)板只支持PCIE X4,所以提供的代碼是PCIE X4架構(gòu),若需要PCIE X1、 X2、 X8、 X16、 X32的朋友,可自行修改本工程,也可關注我,我會實時發(fā)布新的工程。
本工程實現(xiàn)基礎的PCIE的HDMI視頻采集上進行了反向修改,利用開發(fā)板自帶的HDMI輸出接口,實時利用QT上位機抓取當前電腦的桌面圖片,然后發(fā)送PCIE,PCIE再發(fā)送給FPGA,F(xiàn)PGA將收到的圖像進行緩存,然后通過HDMI輸出視頻;
本文詳細描述了基于XDMA搭建PCIE的HDMI視頻輸出設計方案,工程代碼可綜合編譯上板調(diào)試,可直接項目移植,適用于在校學生、研究生項目開發(fā),也適用于在職工程師做項目開發(fā),可應用于醫(yī)療、軍工等行業(yè)的高速接口和圖像傳輸領域;
提供完整的、跑通的工程源碼和技術(shù)支持;
工程源碼和技術(shù)支持的獲取方式放在了文章末尾,請耐心看到最后;
免責聲明
本工程及其源碼即有自己寫的一部分,也有網(wǎng)絡公開渠道獲取的一部分(包括CSDN、Xilinx官網(wǎng)、Altera官網(wǎng)等等),若大佬們覺得有所冒犯,請私信批評教育;基于此,本工程及其源碼僅限于讀者或粉絲個人學習和研究,禁止用于商業(yè)用途,若由于讀者或粉絲自身原因用于商業(yè)用途所導致的法律問題,與本博客及博主無關,請謹慎使用。。。
2、我已有的PCIE方案
我的主頁有PCIE通信專欄,既有基于RIFFA實現(xiàn)的PCIE方案,也有基于XDMA實現(xiàn)的PCIE方案;既有簡單的數(shù)據(jù)交互、測速,也有應用級別的圖像采集傳輸,以下是專欄地址:
點擊直接前往
3、PCIE理論
這部分可自行百度或csdn或知乎學習理論知識,其實用了XDMA,已經(jīng)不太需要直到PCIE復雜的協(xié)議和理論了。。。
4、總體設計思路和方案
總體設計思路和方案如下:
PCIe 通信例程由三部分組成:FPGA 端程序、PCIe 卡驅(qū)動、PCIe 上位機測試程序:
FPGA 端工程:負責建立與 PCIe 通信需具備的 FPGA 框架,PCIe 通信協(xié)議的構(gòu)建;
PCIe 驅(qū)動:負責上位機測試程序與 PCIe 卡的數(shù)據(jù)交換;
PCIe 上位機測試程序:此處時PCIe 采集;
視頻輸入:電腦主機模擬HDMI視頻輸入源,由QT上位機采集視頻;
HDMI輸出,使用silicon9134芯片完成HDMI編碼,silicon9011需要i2c配置才能使用,關于silicon9011的i2c配置使用,請參考我之前寫的文章:點擊直接前往
圖像緩存:使用AXI4總線實現(xiàn)了圖像讀寫DDR3,此處做了3幀緩存;
輸出:PCIE X4;
QT測速上位機:提供源代碼和可執(zhí)行程序,發(fā)開版本為QT5.6.2;
5、vivado工程詳解
開發(fā)板FPGA型號:Xilinx xc7a100tfgg484-2;
開發(fā)環(huán)境:Vivado2019.1;
輸入:PCIE X4;
輸出:HDMI;
應用:QT上位機采集試驗;
工程BD如下:
綜合后的工程代碼架構(gòu)如下:
綜合編譯完成后的FPGA資源消耗和功耗預估如下:
6、驅(qū)動安裝
提供提供Win系統(tǒng)驅(qū)動,目錄如下:
驅(qū)動安裝參考前面的測速試驗:點擊直接前往
7、QT上位機軟件
QT采集上位機:提供源代碼和可執(zhí)行程序,發(fā)開版本為QT5.6.2;位置如下:
部分源碼截圖如下:
8、工程移植說明
vivado版本不一致處理
1:如果你的vivado版本與本工程vivado版本一致,則直接打開工程;
2:如果你的vivado版本低于本工程vivado版本,則需要打開工程后,點擊文件–>另存為;但此方法并不保險,最保險的方法是將你的vivado版本升級到本工程vivado的版本或者更高版本;
3:如果你的vivado版本高于本工程vivado版本,解決如下:
打開工程后會發(fā)現(xiàn)IP都被鎖住了,如下:
此時需要升級IP,操作如下:
FPGA型號不一致處理
如果你的FPGA型號與我的不一致,則需要更改FPGA型號,操作如下:
更改FPGA型號后還需要升級IP,升級IP的方法前面已經(jīng)講述了;
其他注意事項
1:由于每個板子的DDR不一定完全一樣,所以MIG IP需要根據(jù)你自己的原理圖進行配置,甚至可以直接刪掉我這里原工程的MIG并重新添加IP,重新配置;
2:根據(jù)你自己的原理圖修改引腳約束,在xdc文件中修改即可;
3:純FPGA移植到Zynq需要在工程中添加zynq軟核;
9、上板調(diào)試驗證
開啟上位機測程序進行 PCIe 采集測試,打開下圖的采集軟件 screen2pcie,軟件在如下位置,實驗結(jié)果如下:
打開上位機以后點擊開始屏幕映射,會把當前電腦屏幕抓取,然后通過 PCIe 傳輸?shù)?DDR3 中,通過連續(xù)不斷的抓取,可以形成連續(xù)的視頻:
HDMI輸出的PCIE采集的電腦主機桌面圖像;文章來源:http://www.zghlxwxcb.cn/news/detail-430736.html
10、福利:工程代碼的獲取
福利:工程代碼的獲取
代碼太大,無法郵箱發(fā)送,以某度網(wǎng)盤鏈接方式發(fā)送,
資料獲取方式:私,或者文章末尾的V名片。
網(wǎng)盤資料如下:文章來源地址http://www.zghlxwxcb.cn/news/detail-430736.html
到了這里,關于FPGA基于XDMA實現(xiàn)PCIE X4視頻采集HDMI輸出 提供工程源碼和QT上位機程序和技術(shù)支持的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!