




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、電子線(xiàn)路測(cè)試與實(shí)驗(yàn)報(bào)告基于FPGA的VGA顯示實(shí)驗(yàn)姓名:專(zhuān)業(yè)班級(jí):光電1208學(xué)號(hào):U2012一、實(shí)驗(yàn)要求功能要求:利用Basys2實(shí)驗(yàn)板實(shí)現(xiàn)圖片在VGA接口顯示器上的顯示?;疽螅?)實(shí)現(xiàn)240*160以上像素的圖片在VGA接口顯示器上的顯示;2)利用算法實(shí)現(xiàn)特定圖片在VGA接口顯示器上的放大、縮小旋轉(zhuǎn)及其他動(dòng)作的自動(dòng)變換。二、實(shí)驗(yàn)具體目標(biāo)1.首先實(shí)現(xiàn)特定圖片在顯示器上的顯示;2.圖片自動(dòng)旋轉(zhuǎn)90度;3.實(shí)現(xiàn)圖片的放大與縮小,同樣通過(guò)一個(gè)按鍵實(shí)現(xiàn);4.添加復(fù)位鍵,按下復(fù)位鍵后圖片返回最初的狀態(tài)。三、實(shí)驗(yàn)原理 1.VGA的顯示原理 在基于FPGA的VGA控制中,只需考慮行同步信號(hào)(HS),場(chǎng)
2、同步信號(hào)(VS),以及紅綠藍(lán)三基色(R、G、B)這五個(gè)信號(hào),即可實(shí)現(xiàn)對(duì)VGA顯示的控制。 2.對(duì)圖片的旋轉(zhuǎn)與縮放操作 對(duì)圖片的旋轉(zhuǎn)操作在本質(zhì)上是對(duì)IP核ROM的輸入地址addr進(jìn)行變換的過(guò)程。在這里,假定顯示的坐標(biāo)分別為x_vdn以及y_vdn,由于圖片是160*40的,在正常的顯示時(shí),addr與x_vdn以及y_vdn的對(duì)應(yīng)關(guān)系應(yīng)該為:addr=x_vdn+y_vdn*160即依次取像素點(diǎn),圖片正常顯示。要把圖片順時(shí)針旋轉(zhuǎn)90度,那么相當(dāng)于顯示的圖片是40*160的,重新考慮addr與兩個(gè)坐標(biāo)之間映射關(guān)系。容易得到,此時(shí):addr=(39-x_vdn)*160+y_vd對(duì)圖片的縮放操作對(duì)圖片
3、的縮放操作則只考慮以下兩種變化,即放大一倍,此時(shí)圖片的大小為320*80;縮小一倍,此時(shí)圖片的大小為80*20。對(duì)于圖片的放大一倍,則要考慮不同的像素點(diǎn)對(duì)顯示信號(hào)的共用(在這里即為m信號(hào))。由通常的規(guī)則,按照順序,構(gòu)成一個(gè)正方形的每四個(gè)相鄰的像素點(diǎn)共用一個(gè)m信號(hào)。同時(shí),在這里對(duì)x_vdn以及y_vdn的最后一位判斷,并且形成不同的映射規(guī)則。具體的映射規(guī)則在源代碼中給出。對(duì)于圖片的縮小,則相對(duì)簡(jiǎn)單的多。此時(shí)的映射關(guān)系為:addr=y_vdn*320+x_vdn*2; 3工程結(jié)構(gòu)與解讀 如圖,下圖為系統(tǒng)的結(jié)構(gòu)框圖。各模塊之間的關(guān)系為:_top.v 工程頂層模塊|_clkdiv.v 時(shí)鐘分頻|_my
4、_vga.v 同步信號(hào)模塊|_rom.xco 像素?cái)?shù)據(jù)|_ vga_stripes.v vga 顯示說(shuō)明:頂層模塊只是對(duì)各模塊的調(diào)用;時(shí)鐘分頻是用于產(chǎn)生25MHz的掃描信號(hào);同步信號(hào)用來(lái)產(chǎn)生相應(yīng)的VGA顯示控制信號(hào);rom.xco是IP核,用來(lái)存放、輸出要顯示圖片的數(shù)據(jù)信息。最后一個(gè)模塊則是顯示模塊,同時(shí)包括對(duì)圖片的相關(guān)變換。各模塊的詳細(xì)說(shuō)明會(huì)在下文中給出。四、源碼清單1.頂層模塊(top.v)module top(zoom,turn,clk, clr, hs, vs, red, green, blue );input zoom;/縮放信號(hào)input turn;/模式改變信號(hào)input clk
5、;/時(shí)鐘信號(hào)input clr;/復(fù)位信號(hào)output hs, vs;/水平和垂直輸出output 2:0 red, green;/紅綠藍(lán)三色輸出output 1:0 blue;wire clk25;wire 9:0 hc, vc;wire vidon;wire 27:0 cntdyn;wire 7:0 m;wire 12:0 addr;clkdiv u1( .mclk(clk), .clr(clr), .clk25(clk25) );/u1為2分頻程序,使時(shí)鐘信號(hào)為25MHzmy_vga u2( .clk(clk25), .clr(clr), .hs(hs), .vs(vs), .hc(hc
6、), .vc(vc), .vidon(vidon), .cntdyn(cntdyn) );/u2為160*40VGA圖像顯示程序/-160*40-xilinx-rom u3( .clka(clk25), / input clka .addra(addr), / input 12 : 0 addra .douta(m) / output 7 : 0 douta);/-160*40-xilinx-u3為ROM的IP核,功能為存儲(chǔ)、輸出圖片vga_stripes u4 ( .clr(clr), .zoom(zoom), .turn(turn), .vidon(vidon), .m(m), .hc(h
7、c), .vc(vc), .red(red), .green(green), .blue(blue), .cntdyn(cntdyn), .addr(addr) );/u4對(duì)圖像的顯示進(jìn)行各種操作endmodule說(shuō)明:頂層模塊比較簡(jiǎn)單,只是對(duì)各分模塊的調(diào)用。2. 時(shí)鐘分頻模塊(clkdiv.v)信號(hào)模式描述mclkInput主時(shí)鐘輸入clrInput復(fù)位鍵clk25output輸出25MHz時(shí)鐘module clkdiv(mclk,clr,clk25);/對(duì)時(shí)鐘信號(hào)進(jìn)行二分頻input mclk, clr;output clk25;reg 1:0 q;assign clk25 = q0; /
8、25Mhzalways (posedge mclk or posedge clr)if(clr)q <= 0;elseq <= q + 1;endmodule /實(shí)現(xiàn)25MHz的頻率3.控制信號(hào)模塊(my_vga.v)信號(hào)模式描述clrInput復(fù)位clkInput主時(shí)鐘25MHzhc9:0Output行計(jì)數(shù)vc9:0Output場(chǎng)計(jì)數(shù)cntdyn27:0Outputvga控制計(jì)數(shù)vidonOutputvidon可見(jiàn)信號(hào)module my_vga(clk,clr,hs,vs,hc,vc,vidon,cntdyn );input clk,clr;output reg hs,vs;ou
9、tput reg 9:0 hc,vc;output reg vidon;output reg 27:0 cntdyn;parameter hpixels = 10'b1100100000; /800parameter vlines = 10'b1000001001; /521parameter hbp = 10'b0010010000; /144parameter hfp = 10'b1100010000; /784parameter vbp = 10'b0000011111;/31parameter vfp = 10'b0111111111;/
10、511reg vsenable;always (posedge clk or posedge clr) beginif(clr)cntdyn <= 0;elsecntdyn <= cntdyn + 1;endalways(posedge clk or posedge clr)beginif(clr)hc<=0;else beginif(hc = hpixels - 1)beginhc <= 0;vsenable <= 1;endelse beginhc <= hc + 1;vsenable <= 0;endendendalways(*)beginif
11、(hc < 96)hs = 0;elsehs = 1;endalways (posedge clk or posedge clr)beginif(clr)vc <= 0;else if (vsenable = 1)beginif (vc = vlines - 1)vc <= 0;elsevc <= vc + 1;endendalways (*)beginif (vc < 2)vs = 0;else vs = 1;endalways (*)beginif (hc < hfp)&&(hc>hbp)&&(vc<vfp)&
12、amp;&(vc>vbp)vidon = 1;elsevidon = 0;endendmodule4.IP核rom(rom.xco)這是一個(gè)調(diào)用IP核的模塊,該模塊有兩個(gè)輸入,除了clka為時(shí)鐘信號(hào)外,addra是一個(gè)地址信號(hào),通過(guò)addra的控制來(lái)輸出不同的m信號(hào)。rom模塊示意圖:5.vga顯示模塊(vga_stripes.v)信號(hào)模式描述m7:0Input像素?cái)?shù)據(jù)zoomInput縮放信號(hào)turnInput翻轉(zhuǎn)信號(hào)vidonInputvidon像素可見(jiàn)hcInput行同步vcInput場(chǎng)同步redOutput紅色greenOutput綠色blueOutput藍(lán)色cntdyn
13、Outputvga 控制addr10:0Output地址module vga_stripes(clr,zom,turn,vidon,m,hc,vc,red,green,blue,cntdyn,addr );input clr;input zoom; input turn;input 7:0 m;input vidon;input 9:0 hc,vc;input 27:0 cntdyn;output 2:0 red,green;output 1:0 blue;output 12:0 addr; /6400 160*40reg 7:0 red_r;reg 7:0 green_r, blue_r;
14、reg addr;reg 1:0 mode;reg 1:0 set;parameter hbp = 10'b0010010000;/144parameter vbp = 10'b0000011111;/31reg 10:0 y_vdn, x_vdn;assign red = red_r7:5;assign green = green_r7:5;assign blue = blue_r7:6;always(*)beginy_vdn = vc - vbp ; x_vdn = hc - hbp ;endalways(posedge turn or posedge clr)/選擇模式b
15、eginif(clr) mode=0;/若復(fù)位,則選擇模式0else if(turn)/若無(wú)復(fù)位,按鍵則模式加一mode=mode+1;endalways(posedge zoom or posedge clr) /當(dāng)放大或復(fù)位信號(hào)處于上升沿時(shí)begin if (clr) set=0;/若復(fù)位,大小設(shè)定選擇0else if(zoom)/如果有放大信號(hào) begin if(set=2'b10) set=0;/若大小設(shè)定為2,則改為設(shè)定0,否則設(shè)定加一 else set=set+1; endendalways (*)/當(dāng)有涉及到的變量改變時(shí)if(vidon = 1) begin if(set
16、=2'b01)/設(shè)定1,顯示320*80 begin if(x_vdn>=0)&&(x_vdn<=319)&&(y_vdn>=0)&&(y_vdn<=79)/如果0<=x_vdn<=319且0<=y_vdn<=79if(x_vdn0=0)&&(y_vdn0=0) addr=x_vdn/2+y_vdn*80;/起點(diǎn)為(0,0)時(shí) else if(x_vdn0=0)&&(y_vdn0=1) addr=x_vdn/2+(y_vdn-1)*80;/起點(diǎn)為(0,1)時(shí)
17、else if(x_vdn0=1)&&(y_vdn0=0) addr=(x_vdn-1)/2+y_vdn*80;/起點(diǎn)為(1,0)時(shí) else addr=(x_vdn-1)/2+(y_vdn-1)*80;/起點(diǎn)為(1,1)時(shí)red_r <= m7:5,5'b00000 ;/顯示green_r <= m4:2,5'b00000 ;blue_r <= m1:0, 6'h00; end else begin/否則不顯示red_r <= 0;green_r <= 0;blue_r <= 0; endendelse if (se
18、t=2'b10)/設(shè)定2,顯示80*20 beginif(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 <= m7:5,5'b00000 ;green_r <= m4:2,5'b00000 ;blue_r <= m1:0, 6'h00;endelse begin re
19、d_r <= 0; green_r <= 0; blue_r <= 0; end endelse begincase (mode0)/模式選擇1'b0: /為模式0時(shí)if(x_vdn>=0)&&(x_vdn<=159)&&(y_vdn>=0)&&(y_vdn<=39) /顯示160*40 begin /160 * 40 200 = 144+55+1 addr=y_vdn*160+x_vdn;red_r <= m7:5,5'b00000 ;green_r <= m4:2,5
20、9;b00000 ;blue_r <= m1:0, 6'h00;endelse begin /其他地方不顯示 red_r <= 0; green_r <= 0; blue_r <= 0; end1'b1: /為模式1時(shí)if(x_vdn>=0)&&(x_vdn<=39)&&(y_vdn>=0)&&(y_vdn<=159)/顯示40*160begin /160 * 40 200 = 144+55+1addr=(39-x_vdn)*160+y_vdn;red_r <= m7:5,5&
21、#39;b00000 ;green_r <= m4:2,5'b00000 ;blue_r <= m1:0, 6'h00;endelse begin /其他地方不顯示red_r <= 0;green_r <= 0;blue_r <= 0;end endcase end endelse /不顯示beginred_r <= 0;green_r <= 0;blue_r <= 0;endendmodule說(shuō)明:相應(yīng)的變量說(shuō)明在表格中已經(jīng)給出,有一點(diǎn)需要注意的是,在這里是先對(duì)zoom進(jìn)行判斷的,假如zoom為1,那就要對(duì)圖片進(jìn)行縮放處理。只有
22、在zoom為0的情況下,才會(huì)進(jìn)行翻轉(zhuǎn)的變換。也就是說(shuō),這兩個(gè)過(guò)程是有優(yōu)先級(jí)的。若要去掉這個(gè)優(yōu)先級(jí),代碼會(huì)復(fù)雜一些。同時(shí),圖片的放大只能對(duì)原圖放大縮小,已經(jīng)旋轉(zhuǎn)的圖片則不能。6.引腳約束文件(top.ucf)NET "clk" LOC = B8;NET "clr" LOC = G12;# Bank = 2, Pin name = IO/D5, Type = DUAL, Sch name = RED0NET "red0" LOC = C14;# Bank = 2, Pin name = IO_L10N_2, Type = I/O, Sch
23、 name = RED1NET "red1" LOC = D13;# Bank = 2, Pin name = IO_L10P_2, Type = I/O, Sch name = RED2NET "red2" LOC = F13;# Bank = 2, Pin name = IO_L09N_2, Type = I/O, Sch name = GRN0NET "green0" LOC = F14;# Bank = 2, Pin name = IO_L09P_2, Type = I/O, Sch name = GRN1NET "
24、green1" LOC = G13;# Bank = 2, Pin name = IO_L05N_2, Type = I/O, Sch name = GRN2NET "green2" LOC = G14;# Bank = 2, Pin name = IO/VREF_2, Type = VREF, Sch name = BLU1NET "blue0" LOC = H13;# Bank = 2, Pin name = IO_L03P_2/DOUT/BUSY, Type = DUAL, Sch name = BLU2NET "blue1&q
25、uot; LOC = J13;# Bank = 2, Pin name = IO_L03N_2/MOSI/CSI_B, Type = DUAL, Sch name = HSYNCNET "hs" LOC = J14;# Bank = 2, Pin name = IO_L01P_2/CSO_B, Type = DUAL, Sch name = VSYNCNET "vs" LOC = K13;NET "turn" LOC = A7;# PlanAhead Generated physical constraints NET "zoom" LOC = M4;說(shuō)明:處理相關(guān)的信號(hào)、顏色引腳按照手冊(cè)來(lái)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 委托協(xié)議與托管協(xié)議
- 聲光報(bào)警器的安裝施工方案
- 湖北小體量裝配式施工方案
- 家長(zhǎng)會(huì)課代表發(fā)言稿
- 小學(xué)家長(zhǎng)會(huì)數(shù)學(xué)發(fā)言稿
- 發(fā)言稿講季節(jié)
- 工程觀摩會(huì)發(fā)言稿
- 生日?qǐng)A鎖發(fā)言稿
- 愛(ài)國(guó)的發(fā)言稿
- 銀行服務(wù)年終報(bào)告
- 病歷終末質(zhì)控(質(zhì)控或醫(yī)務(wù)科病歷質(zhì)控)
- 2024屆高考安徽省江南十校聯(lián)考物理試卷(含答案)
- 施工電梯基礎(chǔ)驗(yàn)算
- 校園共享雨傘 (修改)
- 湖北省煙草專(zhuān)賣(mài)局系統(tǒng)考試真題2023
- 2024年北京順義區(qū)招錄鄉(xiāng)村振興協(xié)理員招聘筆試沖刺題(帶答案解析)
- PEP小學(xué)英語(yǔ)三年級(jí)上冊(cè)Unit3Look-at-me說(shuō)課比賽課件
- 中建“百項(xiàng)新技術(shù)”更新推廣應(yīng)用清單附表
- 做有智慧的幼兒教師讀書(shū)分享
- 建筑模板施工工藝及質(zhì)量控制措施(圖解)
- 貸款用款計(jì)劃書(shū)
評(píng)論
0/150
提交評(píng)論