版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
..電子線路測試與實驗報告基于FPGA的VGA顯示實驗__專業(yè)__光電1208__U2012一、實驗要求功能要求:利用Basys2實驗板實現(xiàn)圖片在VGA接口顯示器上的顯示?;疽螅?實現(xiàn)240*160以上像素的圖片在VGA接口顯示器上的顯示;2利用算法實現(xiàn)特定圖片在VGA接口顯示器上的放大、縮小旋轉(zhuǎn)及其他動作的自動變換。二、實驗具體目標(biāo)1.首先實現(xiàn)特定圖片在顯示器上的顯示;2.圖片自動旋轉(zhuǎn)90度;3.實現(xiàn)圖片的放大與縮小,同樣通過一個按鍵實現(xiàn);4.添加復(fù)位鍵,按下復(fù)位鍵后圖片返回最初的狀態(tài)。三、實驗原理1.VGA的顯示原理在基于FPGA的VGA控制中,只需考慮行同步信號〔HS,場同步信號〔VS,以及紅綠藍(lán)三基色〔R、G、B>這五個信號,即可實現(xiàn)對VGA顯示的控制。2.對圖片的旋轉(zhuǎn)與縮放操作對圖片的旋轉(zhuǎn)操作在本質(zhì)上是對IP核ROM的輸入地址addr進(jìn)行變換的過程。在這里,假定顯示的坐標(biāo)分別為x_vdn以及y_vdn,由于圖片是160*40的,在正常的顯示時,addr與x_vdn以及y_vdn的對應(yīng)關(guān)系應(yīng)該為:addr=x_vdn+y_vdn*160即依次取像素點,圖片正常顯示。要把圖片順時針旋轉(zhuǎn)90度,那么相當(dāng)于顯示的圖片是40*160的,重新考慮addr與兩個坐標(biāo)之間映射關(guān)系。容易得到,此時:addr=<39-x_vdn>*160+y_vd 對圖片的縮放操作 對圖片的縮放操作則只考慮以下兩種變化,即放大一倍,此時圖片的大小為320*80;縮小一倍,此時圖片的大小為80*20。 對于圖片的放大一倍,則要考慮不同的像素點對顯示信號的共用〔在這里即為m信號。由通常的規(guī)則,按照順序,構(gòu)成一個正方形的每四個相鄰的像素點共用一個m信號。同時,在這里對x_vdn以及y_vdn的最后一位判斷,并且形成不同的映射規(guī)則。具體的映射規(guī)則在源代碼中給出。 對于圖片的縮小,則相對簡單的多。此時的映射關(guān)系為:addr=y_vdn*320+x_vdn*2;3.工程結(jié)構(gòu)與解讀如圖,下圖為系統(tǒng)的結(jié)構(gòu)框圖。各模塊之間的關(guān)系為:__________top.v工程頂層模塊
|
|______clkdiv.v時鐘分頻
|
|______my_vga.v同步信號模塊
|
|______rom.xco像素數(shù)據(jù)
|
|______vga_stripes.vvga顯示 說明:頂層模塊只是對各模塊的調(diào)用;時鐘分頻是用于產(chǎn)生25MHz的掃描信號;同步信號用來產(chǎn)生相應(yīng)的VGA顯示控制信號;rom.xco是IP核,用來存放、輸出要顯示圖片的數(shù)據(jù)信息。最后一個模塊則是顯示模塊,同時包括對圖片的相關(guān)變換。各模塊的詳細(xì)說明會在下文中給出。四、源碼清單1.頂層模塊〔top.vmoduletop<zoom,turn,clk,clr,hs,vs,red,green,blue>;inputzoom;//縮放信號inputturn;//模式改變信號inputclk;//時鐘信號inputclr;//復(fù)位信號outpuths,vs;//水平和垂直輸出output[2:0]red,green;//紅綠藍(lán)三色輸出output[1:0]blue;wireclk25;wire[9:0]hc,vc;wirevidon;wire[27:0]cntdyn;wire[7:0]m;wire[12:0]addr;clkdivu1<.mclk<clk>,.clr<clr>,.clk25<clk25>>;//u1為2分頻程序,使時鐘信號為25MHzmy_vgau2<.clk<clk25>,.clr<clr>,.hs<hs>,.vs<vs>,.hc<hc>,.vc<vc>,.vidon<vidon>, tdyn<cntdyn>>;//u2為160*40VGA圖像顯示程序//----160*40-----xilinx------romu3< .clka<clk25>,//inputclka .addra<addr>,//input[12:0]addra .douta<m>//output[7:0]douta >;//----160*40-----xilinx------u3為ROM的IP核,功能為存儲、輸出圖片vga_stripesu4<.clr<clr>,.zoom<zoom>,.turn<turn>,.vidon<vidon>,.m<m>,.hc<hc>,.vc<vc>,.red<red>,.green<green>,.blue<blue>,tdyn<cntdyn>,.addr<addr>>;//u4對圖像的顯示進(jìn)行各種操作endmodule說明:頂層模塊比較簡單,只是對各分模塊的調(diào)用。2.時鐘分頻模塊〔clkdiv.v信號模式描述mclkInput主時鐘輸入clrInput復(fù)位鍵clk25output輸出25MHz時鐘moduleclkdiv<mclk,clr,clk25>;//對時鐘信號進(jìn)行二分頻 inputmclk,clr; outputclk25; reg[1:0] q; assignclk25=q[0]; //25Mhz always<posedgemclkorposedgeclr> if<clr> q<=0; else q<=q+1;endmodule//實現(xiàn)25MHz的頻率3.控制信號模塊〔my_vga.v信號模式描述clrInput復(fù)位clkInput主時鐘25MHzhc[9:0]Output行計數(shù)vc[9:0]Output場計數(shù)cntdyn[27:0]Outputvga控制計數(shù)vidonOutputvidon可見信號modulemy_vga<clk,clr,hs,vs,hc,vc,vidon,cntdyn>;inputclk,clr;outputreghs,vs;outputreg[9:0]hc,vc;outputregvidon;outputreg[27:0]cntdyn;parameterhpixels=10'b1100100000;//800parametervlines=10'b1000001001;//521parameterhbp=10'b0010010000;//144parameterhfp=10'b1100010000;//784parametervbp=10'b0000011111;//31parametervfp=10'b0111111111;//511regvsenable;always<posedgeclkorposedgeclr> begin if<clr> cntdyn<=0; else cntdyn<=cntdyn+1; endalways<posedgeclkorposedgeclr> begin if<clr> hc<=0; elsebegin if<hc==hpixels-1> begin hc<=0; vsenable<=1; end else begin hc<=hc+1; vsenable<=0; end end endalways<*> begin if<hc<96> hs=0; else hs=1; end always<posedgeclkorposedgeclr> begin if<clr> vc<=0; else if<vsenable==1> begin if<vc==vlines-1> vc<=0; else vc<=vc+1; endendalways<*> begin if<vc<2> vs=0; else vs=1; endalways<*> begin if<<hc<hfp>&&<hc>hbp>&&<vc<vfp>&&<vc>vbp>> vidon=1; else vidon=0; endendmodule4.IP核rom〔rom.xco 這是一個調(diào)用IP核的模塊,該模塊有兩個輸入,除了clka為時鐘信號外,addra是一個地址信號,通過addra的控制來輸出不同的m信號。 rom模塊示意圖:5.vga顯示模塊〔vga_stripes.v信號模式描述m[7:0]Input像素數(shù)據(jù)zoomInput縮放信號turnInput翻轉(zhuǎn)信號vidonInputvidon像素可見hcInput行同步vcInput場同步redOutput紅色greenOutput綠色blueOutput藍(lán)色cntdynOutputvga控制addr[10:0]Output地址modulevga_stripes<clr,zom,turn,vidon,m,hc,vc,red,green,blue,cntdyn,addr>; inputclr; inputzoom;inputturn; input[7:0]m; inputvidon; input[9:0]hc,vc; input[27:0]cntdyn; output[2:0]red,green; output[1:0]blue; output[12:0]addr;//6400160*40 reg[7:0]red_r; reg[7:0]green_r,blue_r;regaddr; reg[1:0]mode; reg[1:0]set; parameterhbp=10'b0010010000;//144 parametervbp=10'b0000011111;//31 reg[10:0]y_vdn,x_vdn; assignred=red_r[7:5]; assigngreen=green_r[7:5]; assignblue=blue_r[7:6]; always<*> begin y_vdn=vc-vbp;x_vdn=hc-hbp; end always<posedgeturnorposedgeclr>//選擇模式 begin if<clr>mode=0;//若復(fù)位,則選擇模式0 elseif<turn>//若無復(fù)位,按鍵則模式加一 mode=mode+1; end always<posedgezoomorposedgeclr>//當(dāng)放大或復(fù)位信號處于上升沿時 beginif<clr>set=0;//若復(fù)位,大小設(shè)定選擇0 elseif<zoom>//如果有放大信號 begin if<set==2'b10>set=0;//若大小設(shè)定為2,則改為設(shè)定0,否則設(shè)定加一 elseset=set+1; end end always<*>//當(dāng)有涉及到的變量改變時 if<vidon==1>beginif<set==2'b01>//設(shè)定1,顯示320*80beginif<<<x_vdn>=0>&&<x_vdn<=319>&&<y_vdn>=0>&&<y_vdn<=79>>>//如果0<=x_vdn<=319且0<=y_vdn<=79 if<<x_vdn[0]==0>&&<y_vdn[0]==0>>addr=x_vdn/2+y_vdn*80;//起點為〔0,0時elseif<<x_vdn[0]==0>&&<y_vdn[0]==1>>addr=x_vdn/2+<y_vdn-1>*80;//起點為〔0,1時elseif<<x_vdn[0]==1>&&<y_vdn[0]==0>>addr=<x_vdn-1>/2+y_vdn*80;//起點為〔1,0時elseaddr=<x_vdn-1>/2+<y_vdn-1>*80;//起點為〔1,1時 red_r<={m[7:5],5'b00000};//顯示 green_r<={m[4:2],5'b00000}; blue_r<={m[1:0],6'h00};endelsebegin//否則不顯示 red_r<=0; green_r<=0; blue_r<=0; end endelseif<set==2'b10>//設(shè)定2,顯示80*20begin if<<x_vdn>=0>&&<x_vdn<=79>&&<y_vdn>=0>&&<y_vdn<=19>>//如果0<=x_vdn<=79且0<=y_vdn<=19,則顯示 begin addr=y_vdn*320+x_vdn*2; red_r<={m[7:5],5'b00000}; green_r<={m[4:2],5'b00000}; blue_r<={m[1:0],6'h00}; end elsebegin red_r<=0; green_r<=0; blue_r<=0; endend elsebegin case<mode[0]>//模式選擇 1'b0://為模式0時 if<<x_vdn>=0>&&<x_vdn<=159>&&<y_vdn>=0>&&<y_vdn<=39>>//顯示160*40 begin//160*40200=144+55+1 addr=y_vdn*160+x_vdn; red_r<={m[7:5],5'b00000}; green_r<={m[4:2],5'b00000}; blue_r<={m[1:0],6'h00}; end elsebegin//其他地方不顯示 red_r<=0; green_r<=0; blue_r<=0; end 1'b1://為模式1時 if<<<x_vdn>=0>&&<x_vdn<=39>&&<y_vdn>=0>&&<y_vdn<=159>>>//顯示40*160 begin//160*40200=144+55+1 addr=<39-x_vdn>*160+y_vdn; red_r<={m[7:5],5'b00000}; green_r<={m[4:2],5'b00000}; blue_r<={m[1:0],6'h00}; end elsebegin//其他地方不顯示 red_r<=0; green_r<=0; blue_r<=0; endendcase end endelse//不顯示 begin red_r<=0; green_r<=0; blue_r<=0;endendmodule 說明:相應(yīng)的變量說明在表格中已經(jīng)給出,有一點需要注意的是,在這里是先對zoom進(jìn)行判斷的,假如zoom為1,那就要對圖片進(jìn)行縮放處理。只有在zoom為0的情況下,才會進(jìn)行翻轉(zhuǎn)的變換。也就是說,這兩個過程是有優(yōu)先級的。若要去掉這個優(yōu)先級,代碼會復(fù)雜一些。同時,圖片的放大只能對原圖放大縮小,已經(jīng)旋轉(zhuǎn)的圖片則不能。6.引腳約束文件〔top.ucfNET"clk"LOC=B8;NET"clr"LOC=G12;#Bank=2,Pinname=IO/D5,Type=DUAL,Schname=RED0NET"red[0]"LOC=C14;#Bank=2,Pinname=IO_L10N_2,Type=I/O,Schname=RED1NET"red[1]"LOC=D13;#Bank=2,Pinname=IO_L10P_2,Type=I/O,Schname=RED2NET"red[2]"LOC=F13;#Bank=2,Pinname=IO_L09N_2,Type=I/O,Schname=GRN0NET"green[0]"LOC=F14;#Bank=2,Pinname=IO_L09P_2,Type=I/O,Schname=GRN1NET"green[1]"LOC=G13;#Bank=2,Pinname=IO_L05N_2,Type=I/O,Schname=GRN2NET"green[2]"LOC=G14;#Bank=2,Pinname=IO/VREF_2,Type=VREF,Schname=BLU1NET"blue[0]"LOC=H13;#Bank=2,Pinname=IO_L03P_2/DOUT/BUSY,Type=DUAL,Schname=BLU2NET"blue[1]"LOC=J13;#Bank=2,Pinname=IO_L03N_2/MOSI/CSI_B,Type=DUAL,Schname=HSYNCNET"hs"LOC=J14;#Bank=2,Pinname=IO_L01P_2/CSO_B,Type=DUAL,Schname=VSYNCNET"vs"LOC=K13;NET"turn"LOC=A7;#PlanAheadGeneratedphysicalconstraintsNET"
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度汽車維修與租賃業(yè)務(wù)管理服務(wù)合同2篇
- 四年級下學(xué)期教學(xué)計劃集錦五篇
- 小學(xué)三年級上冊英語教案
- 元旦晚會主持稿集合15篇
- 寫給老師的道歉信模板集合八篇
- 秋天的校園作文400字范文(10篇)
- 幼兒園春季學(xué)期工作總結(jié)5篇
- 我的愿望小學(xué)作文15篇
- 畢業(yè)實習(xí)總結(jié)(集合15篇)
- 工程居間協(xié)議協(xié)議書3篇
- 豪華酒店翻新工程協(xié)議
- 經(jīng)濟(jì)學(xué)原理模擬題含參考答案
- 科技強國建設(shè)視域下拔尖創(chuàng)新人才價值觀引導(dǎo)研究
- 馬鞍山酒柜定制合同范例
- 《電梯曳引系統(tǒng)設(shè)計技術(shù)要求》
- 【MOOC】中國天氣-南京信息工程大學(xué) 中國大學(xué)慕課MOOC答案
- 2025年攻讀博士學(xué)位期間擬開展的研究計劃
- 職業(yè)道德試題及答案
- 機(jī)器人機(jī)構(gòu)學(xué)基礎(chǔ) 部分習(xí)題及答案(于靖軍 )
- GB/T 44770-2024智能火電廠技術(shù)要求
- 電梯安裝安全教育試卷(答案)
評論
0/150
提交評論