泉州企業(yè)免費(fèi)建站雞西seo
目錄
- 1、前言
- 免責(zé)聲明
- 2、SODIMM內(nèi)存條簡(jiǎn)介
- 3、設(shè)計(jì)思路框架
- 視頻輸入
- 視頻緩存
- MIG配置調(diào)用SODIMM內(nèi)存條
- VGA時(shí)序
- 視頻輸出
- 4、vivado工程詳解
- 5、上板調(diào)試驗(yàn)證
- 6、福利:工程代碼的獲取
1、前言
FPGA應(yīng)用中,數(shù)據(jù)緩存是一大重點(diǎn),不管是圖像處理還是AD采集亦或是PCIE等等,都需要緩存數(shù)據(jù)以作后續(xù)處理,一般的FPGA可以掛載SDRAM、DDR3、DDR4等內(nèi)存顆粒作為緩存介質(zhì),但有時(shí)限于IO口、FPGA型號(hào)等原因,還需要設(shè)計(jì)SODIMM適配額外的內(nèi)存條才能滿足數(shù)據(jù)緩存的需求,這種需求一般用于高端項(xiàng)目;
本文使用Xilinx的V7 FPGA開(kāi)發(fā)板NetFPGA-SUME平臺(tái)作為實(shí)驗(yàn)板,該開(kāi)發(fā)板板載2路SODIMM接口,可插入2個(gè)內(nèi)存條作為緩存,該FPGA開(kāi)發(fā)板可以在網(wǎng)上公開(kāi)渠道買到;本例程使用HDMI輸入視頻或者內(nèi)部生成的彩條視頻作為視頻源,將視頻緩存到SODIMM內(nèi)存條中做圖像三幀緩存后再讀出送HDMI顯示,以驗(yàn)證FPGA對(duì)SODIMM內(nèi)存條的讀寫是否成功,如果輸出圖像混亂或者質(zhì)量不高,則證明讀寫有誤,反之則成功;本博客詳細(xì)描述了FPGA使用SODIMM內(nèi)存條接口的設(shè)計(jì)方案,工程代碼可綜合編譯上板調(diào)試,可直接項(xiàng)目移植,適用于在校學(xué)生、研究生項(xiàng)目開(kāi)發(fā),也適用于在職工程師做學(xué)習(xí)提升,可應(yīng)用于醫(yī)療、軍工等行業(yè)的高速接口或圖像處理領(lǐng)域;
提供完整的、跑通的工程源碼和技術(shù)支持;
工程源碼和技術(shù)支持的獲取方式放在了文章末尾,請(qǐng)耐心看到最后;
免責(zé)聲明
本工程及其源碼即有自己寫的一部分,也有網(wǎng)絡(luò)公開(kāi)渠道獲取的一部分(包括CSDN、Xilinx官網(wǎng)、Altera官網(wǎng)等等),若大佬們覺(jué)得有所冒犯,請(qǐng)私信批評(píng)教育;基于此,本工程及其源碼僅限于讀者或粉絲個(gè)人學(xué)習(xí)和研究,禁止用于商業(yè)用途,若由于讀者或粉絲自身原因用于商業(yè)用途所導(dǎo)致的法律問(wèn)題,與本博客及博主無(wú)關(guān),請(qǐng)謹(jǐn)慎使用。。。
2、SODIMM內(nèi)存條簡(jiǎn)介
SODIMM接口是比較老式的內(nèi)存條接口,說(shuō)他老式是對(duì)電腦主板特別是精巧型筆記本主板而言,因?yàn)镾ODIMM接口的體積較大,現(xiàn)在已經(jīng)流行到了M.2接口,但對(duì)于FPGA而言,SODIMM接口并不落伍,畢竟一般而言FPGA的內(nèi)存需求沒(méi)有電腦那么大,加裝SODIMM接口內(nèi)存條已經(jīng)是頂配了,關(guān)于SODIMM內(nèi)存條網(wǎng)上有專門的講解,我在這里就不羅嗦了,推薦一篇文章,鏈接如下:
點(diǎn)擊直接前往
3、設(shè)計(jì)思路框架
設(shè)計(jì)思路框架如下:
視頻輸入
我的開(kāi)發(fā)板板載一個(gè)FMC接口,我手里正好有一個(gè)HDMI輸入輸出的FMC轉(zhuǎn)接板,其中HDMI輸入接口連接了一塊silcom9011芯片作為HDMI解碼器,將輸入的HDMI視頻TMDS差分視頻解碼為24bit的GRB視頻供FPGA使用;silcom9011芯片需要i2c配置才能使用,本例程提供verilog源碼實(shí)現(xiàn)的i2c控制器配置silcom9011,關(guān)于silcom9011詳細(xì)的配置使用,請(qǐng)看我往期的專門博客,地址如下:
點(diǎn)擊直接前往
HDMI輸出接口連接了一塊silcom9134芯片作為HDMI編碼器,將輸入的24bit的GRB視頻編碼為TMDS差分HDMI視頻輸出;所以視頻輸入可以使用輸入HDMI接口;但有的兄弟板子上也許沒(méi)有HDMI輸入接口,所以我專門設(shè)計(jì)了一個(gè)FPGA內(nèi)部生成的動(dòng)態(tài)彩條視頻,用來(lái)模擬輸入視頻,也可以作為視頻源參與測(cè)試,輸入依然可以觀測(cè)彩條的動(dòng)態(tài)變化來(lái)驗(yàn)證;二者的選擇通過(guò)工程源碼頂層的`define COLOR_TEST來(lái)選擇,選擇切換邏輯如下:
`ifdef COLOR_TESTassign ud_w_0_ud_wclk =vout_clk ;assign ud_w_0_ud_wde =video_de_color ;assign ud_w_0_ud_wvs =video_vs_color ;assign ud_w_0_ud_wdata=video_rgb_color;
`elseassign ud_w_0_ud_wclk =vin_clk ;assign ud_w_0_ud_wde =vin_de ;assign ud_w_0_ud_wvs =vin_vs ;assign ud_w_0_ud_wdata=vin_data;
`endif
如果在頂層把`define COLOR_TEST注釋掉,則輸入視頻源為HDMI輸入接口;
如果在頂層不把`define COLOR_TEST注釋掉,則輸入視頻源為動(dòng)態(tài)彩條;
動(dòng)態(tài)彩條頂層模塊接口如下:
視頻緩存
使用我的經(jīng)典套路FDMA完成,FDMA是專門用于各種類型數(shù)據(jù)讀寫DDR的控制器,用它來(lái)緩存視頻也很方便,關(guān)于FDMA的專題講解,請(qǐng)看我往期的專門博客,地址如下:
點(diǎn)擊直接前往
MIG配置調(diào)用SODIMM內(nèi)存條
SODIMM內(nèi)存條本質(zhì)上還是DDR3顆粒,Xilinx提供專門的MIG IP核作為PHY與之交互,但MIG配置調(diào)用SODIMM內(nèi)存條與傳統(tǒng)不太一樣;其中的關(guān)鍵點(diǎn)如下:
其他配置則根據(jù)自己的內(nèi)存條型號(hào)選擇即可;
我的板子內(nèi)存條如下:
VGA時(shí)序
由于輸出視頻分辨率為1920x1080@60Hz;所以需要提供標(biāo)準(zhǔn)的VGA時(shí)序驅(qū)動(dòng)才能形成視頻流,例程提供verilog源碼的VGA時(shí)序模塊,改模塊支持常用的7種分辨率,通過(guò)定成的宏定義修改,如下:
本設(shè)計(jì)使用了1080P時(shí)序;
視頻輸出
我的開(kāi)發(fā)板板載一個(gè)FMC接口,我手里正好有一個(gè)HDMI輸入輸出的FMC轉(zhuǎn)接板,其中HDMI輸入接口連接了一塊silcom9011芯片作為HDMI解碼器,將輸入的HDMI視頻TMDS差分視頻解碼為24bit的GRB視頻供FPGA使用;HDMI輸出接口連接了一塊silcom9134芯片作為HDMI編碼器,將輸入的24bit的GRB視頻編碼為TMDS差分HDMI視頻輸出;silcom9134芯片需要i2c配置才能使用,本例程提供verilog源碼實(shí)現(xiàn)的i2c控制器配置silcom9134,關(guān)于silcom9134詳細(xì)的配置使用,請(qǐng)看我往期的專門博客,地址如下:
點(diǎn)擊直接前往
4、vivado工程詳解
開(kāi)發(fā)板FPGA型號(hào):Xilinx–V7–xc7vx690tffg1761-3;
開(kāi)發(fā)環(huán)境:Vivado2019.1;
輸入:HDMI視頻或動(dòng)態(tài)彩條,分辨率1920x1080@60Hz;
輸出:HDMI視頻,分辨率1920x1080@60Hz;
應(yīng)用:FPGA使用SODIMM內(nèi)存條;
工程Block Design如下:
工程代碼架構(gòu)如下:
綜合編譯完成后的FPGA資源消耗和功耗預(yù)估如下:
5、上板調(diào)試驗(yàn)證
板子如下:
HDMI接口輸出如下:
動(dòng)態(tài)彩條輸出如下:
以動(dòng)態(tài)彩條輸出為例,看看輸出演示視頻:
FPGA MIG配置SOMIDD內(nèi)存條
6、福利:工程代碼的獲取
福利:工程代碼的獲取
代碼太大,無(wú)法郵箱發(fā)送,以某度網(wǎng)盤鏈接方式發(fā)送,
資料獲取方式:私,或者文章末尾的V名片。
網(wǎng)盤資料如下: