目錄
概要
整體架構(gòu)流程
技術(shù)名詞解釋
技術(shù)細(xì)節(jié)
?編輯
小結(jié)
概要
提示:這里可以添加技術(shù)概要
本文主要基于DDR的圖像緩存設(shè)計(jì)。
整體架構(gòu)流程
提示:這里可以添加技術(shù)整體架構(gòu)
先用圖像產(chǎn)生模塊產(chǎn)生一個(gè)1080P60Hz的測(cè)試圖像,然后經(jīng)過FDMA進(jìn)入ddr3,緩存3幀后在讀出來。然后在經(jīng)過HDMI顯示。
技術(shù)名詞解釋
FDMA:這是米聯(lián)科開發(fā)一款DMA控制器,本文也是本著學(xué)習(xí)及分享兩種意圖寫下了此文。
技術(shù)細(xì)節(jié)
在這里我們引入了AXi_interconnect IP,因?yàn)閟mc不能滿足FDMA和MIG的最大帶寬,導(dǎo)致1080P視頻不能正常傳輸,并且在interconnected IP中要使能寄存器輸出,并在使能fifo深度。
這樣就能完美傳輸1080P@60fps的視頻。
always@(posedge clk) begin
if(hcounter < hMax - 12'd1) ? ? ? ?//line over
?? ?hcounter <= hcounter + 12'd1;
else
?? ?hcounter <= 12'd0;?
end
?
always@(posedge clk) begin
if(hcounter == hMax - 12'd1) begin
?? ?if(vcounter < vMax - 12'd1) ?//frame over
?? ??? ?vcounter <= vcounter + 12'd1;
?? ?else
?? ??? ?vcounter <= 12'd0;
?? ?end
end
assign hsync = ((hcounter >= (hStartSync - 2'd2))&&(hcounter < (hEndSync - 2'd2)))? 1'b0:1'b1; ?//Generate the hSync Pulses
assign vsync = ((vcounter >= (vStartSync - 1'b1))&&(vcounter < (vEndSync - 1'b1)))? 1'b0:1'b1; //Generate the vSync Pulses
??
? ? ? ??
? assign de = (vcounter >= vVisible || hcounter >= hVisible) ? 1'b0 : 1'b1;
? assign r_o = r_i;?
? assign g_o = g_i;?
? assign b_o = b_i; ?
endmodule
?
其實(shí)這里我們弄清楚一個(gè)問題:
為什么需要緩存,而不是為了設(shè)計(jì)緩存而去設(shè)計(jì)緩存。所以我的思想也比較天馬行空,本文主要說明為什么,做什么,下節(jié)在去說明怎么做。
其實(shí)到目前為止,我也不知道他這個(gè)例程為什么要使用緩存。
文件上有這么一句,可能我理解能力比較差,沒和案例結(jié)合在一起,發(fā)現(xiàn)問題。
(為了進(jìn)行圖像的多緩存,一般非同步信號(hào)至少要滿足3緩存才能最大減小圖片的延遲/撕裂/丟幀問題)
這個(gè)地方啊有兩個(gè)重點(diǎn),第一個(gè)非同步信號(hào)。(這個(gè)例程中,圖片產(chǎn)生信號(hào)和HDMI輸出信號(hào)同源,同步信號(hào))那我其實(shí)可以這么理解,同步信號(hào)就不需要了。
第二個(gè)至少緩存三幀;
以上結(jié)論怎么來的呢。
在看下面一個(gè)結(jié)論:
由于攝像頭產(chǎn)生的數(shù)據(jù)時(shí)鐘速率和顯示屏的時(shí)鐘不匹配,而且當(dāng)攝像頭傳來數(shù)據(jù)時(shí),顯示屏驅(qū)動(dòng)模塊不一定在此時(shí)需要數(shù)據(jù),況且同一時(shí)刻攝像頭傳進(jìn)的像素的位置不一定就是顯示屏正刷新到的位置。故不能將攝像頭的數(shù)據(jù)直接直接傳輸?shù)斤@示屏驅(qū)動(dòng)模塊。
總結(jié)一些常見的認(rèn)知,一般可以總結(jié)為以下幾個(gè)方面:
1.時(shí)鐘不同步,為導(dǎo)致一些異常情況
2.圖像顯示更加順暢。
下面對(duì)整個(gè)流程做個(gè)初步設(shè)計(jì),
關(guān)于FDMA:
?
fdma_wready設(shè)置為1,當(dāng)fdma_wbusy=0的時(shí)候代表FDMA的總線非忙,可以進(jìn)行一次新的FDMA傳輸,這個(gè)時(shí)候可以設(shè)置fdma_wreq=1,同時(shí)設(shè)置fdma burst的起始地址和fdma_wsize本次需要傳輸?shù)臄?shù)據(jù)大小(以bytes為單位)。當(dāng)fdma_wvalid=1的時(shí)候需要給出有效的數(shù)據(jù),寫入AXI總線。當(dāng)最后一個(gè)數(shù)寫完后,fdma_wvalid和fdma_wbusy變?yōu)?。
fdma_rready設(shè)置為1,當(dāng)fdma_rbusy=0的時(shí)候代表FDMA的總線非忙,可以進(jìn)行一次新的FDMA傳輸,這個(gè)時(shí)候可以設(shè)置fdma_rreq=1,同時(shí)設(shè)置fdma burst的起始地址和fdma_rsize本次需要傳輸?shù)臄?shù)據(jù)大小(以bytes為單位)。當(dāng)fdma_rvalid=1的時(shí)候需要給出有效的數(shù)據(jù),寫入AXI總線。當(dāng)最后一個(gè)數(shù)寫完后,fdma_rvalid和fdma_rbusy變?yōu)??
小結(jié)
提示:這里可以添加總結(jié)
例如:文章來源:http://www.zghlxwxcb.cn/news/detail-479822.html
本文主要對(duì)圖像緩存的應(yīng)用場(chǎng)景,做了天馬行空的介紹,下篇文章主要講實(shí)際代碼的實(shí)現(xiàn)過程文章來源地址http://www.zghlxwxcb.cn/news/detail-479822.html
到了這里,關(guān)于FPGA實(shí)戰(zhàn)開發(fā)-基于的ddr圖像緩存設(shè)計(jì)(上)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!