基于FPGA的VGA顯示控制器設(shè)計(jì)_第1頁
基于FPGA的VGA顯示控制器設(shè)計(jì)_第2頁
基于FPGA的VGA顯示控制器設(shè)計(jì)_第3頁
基于FPGA的VGA顯示控制器設(shè)計(jì)_第4頁
基于FPGA的VGA顯示控制器設(shè)計(jì)_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、課程設(shè)計(jì)開課學(xué)期: 第六學(xué)期 課程名稱: FPGA課程設(shè)計(jì) 學(xué) 院: 專 業(yè): 班 級(jí): 學(xué) 號(hào): 姓 名: 任課教師: 2015 年 7 月 20 日 基于FPGA的VGA顯示控制器設(shè)計(jì)一、設(shè)計(jì)方案1. 設(shè)計(jì)的主要內(nèi)容此設(shè)計(jì)要求實(shí)現(xiàn)某一分辨率下(如640*48060Hz)的VGA顯示驅(qū)動(dòng),能簡(jiǎn)單顯示彩條和圖像等。能夠熟悉VGA接口協(xié)議、工作時(shí)序及VGA工作原理,并計(jì)算出合適的時(shí)序,對(duì)原始時(shí)鐘進(jìn)行分頻處理以獲取符合時(shí)序要求的各率,此外須要顯示的圖像等可存儲(chǔ)于外部存儲(chǔ)器,運(yùn)行時(shí),從外部存儲(chǔ)器讀取顯示數(shù)據(jù)。將圖像控制模塊分為這樣幾部分;二分頻電路、地址發(fā)生器、VGA時(shí)序控制模塊、圖像數(shù)據(jù)存儲(chǔ)器讀出

2、模塊.如圖1-1所示:圖1-1 VGA顯示控制系統(tǒng)框圖2. 設(shè)計(jì)原理顯示控制器是一個(gè)較大的數(shù)字系統(tǒng),采用模塊化設(shè)計(jì)原則、借鑒自頂向下的程序設(shè)計(jì)思想,進(jìn)行功能分離并按層次設(shè)計(jì)。利用VHDL硬件描述語言對(duì)每個(gè)功能模塊進(jìn)行描述,并逐一對(duì)每個(gè)功能模塊進(jìn)行編譯仿真,使頂層VGA顯示控制器的模塊實(shí)體仿真綜合得以順利通過。其中二分頻把50MHZ實(shí)在頻率分成25Mhz并提供給其它模塊作為時(shí)鐘;VGA時(shí)序控制模塊用于產(chǎn)生640X480顯示范圍,并控制顯示范圍和消隱范圍以及產(chǎn)生水平同步時(shí)序信號(hào)HS和垂直同步時(shí)序信號(hào)VS的值;存儲(chǔ)器讀出模塊提供給SRAM地址并按地址讀出八位數(shù)據(jù)(灰度值Y),然后得到R、G、B的值(

3、若Y>中間值,則R=G=B=1;否則R=G=B=0),并把R、G、B 的值通過VGA接口傳送給VRT顯示器9。地址發(fā)生器接收所要顯示的數(shù)據(jù)讀取控制信號(hào),產(chǎn)生與圖像數(shù)據(jù)ROM模塊對(duì)應(yīng)得地址,根據(jù)VGA顯示的像素分布,確定讀取對(duì)應(yīng)數(shù)據(jù)的地址,由于所顯示的圖形每行需256個(gè)像素,而ROM中每個(gè)地址存儲(chǔ)的數(shù)據(jù)時(shí)64位,故每4個(gè)地址取出的數(shù)據(jù)用于一行的顯示。VGA顯示控制模塊:主要分為時(shí)序信號(hào)和數(shù)據(jù)顏色的控制,imgrom模塊即圖像數(shù)據(jù)ROM模塊,在這一模塊中需要解決的是圖像數(shù)據(jù)BMP位圖文件的來源及轉(zhuǎn)換成HEX文件,利用Image2lcd對(duì)本次設(shè)計(jì)圖片處理得到BMP文件,最終在Quartus I

4、I得到HEX文件,在已設(shè)置LPM_ROM進(jìn)行加載圖像數(shù)據(jù)。注意其數(shù)據(jù)線寬為3,恰好可以放置RGB三信號(hào)數(shù)據(jù),因此此設(shè)計(jì)圖像僅能顯示8種顏色。此外注意各模塊對(duì)圖像顯示的區(qū)域控制。二、系統(tǒng)實(shí)現(xiàn) 此系統(tǒng)設(shè)計(jì)分主要由,二分頻模塊,地址譯碼器模塊,VGA顯示控制模塊及圖像數(shù)據(jù)ROM來實(shí)現(xiàn)對(duì)圖像的顯示。計(jì)數(shù)器模塊設(shè)計(jì)簡(jiǎn)單,用計(jì)數(shù)器計(jì)數(shù)來控制,以實(shí)現(xiàn)某一個(gè)區(qū)域顯示相應(yīng)的顏色。具體以VGA顯示模塊和圖像數(shù)據(jù)ROM為例進(jìn)行詳細(xì)分析與操作。1. VGA顯示控制模塊VGA顯示控制模塊主要通過VGA時(shí)序產(chǎn)生640*480顯示范圍,并控制和消隱范圍以及產(chǎn)生水平同步時(shí)序信號(hào)hs和垂直同步時(shí)序信號(hào)vs的值。一個(gè)獨(dú)立的計(jì)數(shù)器

5、產(chǎn)生垂直時(shí)序信號(hào)。垂直同步計(jì)數(shù)器在每個(gè)HS脈沖信號(hào)來臨時(shí)自動(dòng)加1,譯碼值產(chǎn)生VS信號(hào)。計(jì)數(shù)器產(chǎn)生當(dāng)前顯示行。這兩個(gè)計(jì)數(shù)器從地址到顯示緩沖器連續(xù)計(jì)數(shù)。首先啟動(dòng)QUARTUS 軟件,新建vga640480顯示掃描模塊工程文件,如下圖2-1所示:圖2-1 創(chuàng)建工程vga640480 單擊完成按鈕,創(chuàng)建好了設(shè)計(jì)工程,選擇【FILE】>【NEW】菜單,出現(xiàn)如圖2-2所示的新建設(shè)計(jì)文件類型窗口。圖2-2 選擇編程VHDL文本文件在上圖2-2中選擇【VHDL File】,單擊【OK】建立一個(gè)新的文本設(shè)計(jì)文件,命名為vga640480.vhd。隨即進(jìn)行程序代碼的輸入。圖2-3 保存設(shè)計(jì)文件在圖2-3中的

6、【File】菜單中點(diǎn)選【Save as】存盤并保證該文件添加到了工程中,文件名為默認(rèn)的即可。至此,vga640480顯示掃描模塊文件建立完成。2. rom載入當(dāng)VGA顯示器要顯示一幀圖像,需要較多的數(shù)據(jù)量,F(xiàn)PGA芯片內(nèi)置的ROM存儲(chǔ)器很難符合如此大的數(shù)據(jù)存儲(chǔ)要求,所以必須借助于外部的存儲(chǔ)器存入圖像數(shù)據(jù)。讀取控制模塊的數(shù)據(jù)讀取方式?jīng)Q定于采用何種存儲(chǔ)器。然而外部存儲(chǔ)器有多種選擇,如ROM,、雙口RAM、甚至SDRAM等,例如ROM可用直接產(chǎn)生地址信號(hào)的方式對(duì)芯片進(jìn)行訪問,而SDRAM則是利用DMA控制方式配合CPU進(jìn)行讀寫操作6。 圖2-4 載入rom接下來將詳細(xì)介紹如何將已有的rom_r、ro

7、m_g和rom_b文件載入開發(fā)板的rom中。首先,以“rom”作為關(guān)鍵詞在IP目錄中進(jìn)行搜索,選擇并雙擊“ROM:1-PORT”: 在對(duì)話框中選擇“Verilog”,在默認(rèn)目錄下選擇合適的“*.v”文件。圖2-5 選擇文件 選擇ROM控制線,地址線和數(shù)據(jù)線。在圖2-6所示的對(duì)話框中選擇地址線位寬和ROM數(shù)據(jù)線分別為8和65536,選擇的地址鎖存控制信號(hào)Single clock。圖2-6 選擇rom模塊數(shù)據(jù)線和地址線寬度選擇已有的“*.mif”文件,載入rom。圖2-7 載入rom3. 二分頻模塊在系統(tǒng)進(jìn)行設(shè)計(jì)中二分頻把50MHz時(shí)鐘頻率分成25MHz并提供給其它模塊作為時(shí)鐘。顯示器的像素分辨率

8、是640×480,像素時(shí)鐘25Mhz,刷新頻率60Hz±1。開發(fā)板提供的系統(tǒng)時(shí)鐘50MHz,所以要對(duì)板載時(shí)鐘進(jìn)行分頻后才能使用。由于50M分頻難以仿真,故將輸入時(shí)鐘clk50m設(shè)置為50kHz,分頻得到clk25m實(shí)際為25kHz。它的模塊設(shè)計(jì)相比VGA顯示模塊更為簡(jiǎn)單,在項(xiàng)目中創(chuàng)建新的文件,編寫二分頻模塊代碼,保存編譯。4. 頂層設(shè)計(jì)在以上模塊設(shè)計(jì)完成后,整體編譯并無錯(cuò)誤后,建原理圖文件,調(diào)用VGA顯示模塊、圖像數(shù)據(jù)rom、二分頻模塊,用軟件自帶的RTL Viewer自動(dòng)生成他們連線組成系統(tǒng)的原理圖,如圖2-8所示:圖2-8 RTL Viewer自動(dòng)生成的原理圖 圖2-9

9、 FPGA開發(fā)板管腳分配按照開發(fā)板手冊(cè)進(jìn)行管腳分配,如下圖所示:15圖2-10 仿真波形圖5. 仿真波形6. 設(shè)計(jì)結(jié)果通過上述的步驟之后,將系統(tǒng)頂層文件燒寫進(jìn)開發(fā)板,將CRT顯示器連接到開發(fā)板的VGA接口上。給系統(tǒng)上電,在顯示器就可以看見本次設(shè)計(jì)所選用的圖片,如圖1-11所示:三、 結(jié)束語用FPGA來控制VGA,充分利用了FPGA可重構(gòu)這一優(yōu)勢(shì),克服了以前通用處理器體積較大體系結(jié)構(gòu)不易修改、體系結(jié)構(gòu)不易修改等弊端。通過rom 來存儲(chǔ)圖片的信息,實(shí)現(xiàn)了基于FPGA的圖形顯示,方便圖片信息的輸入,更新顯示的內(nèi)容以及修改??梢允箞D片的顯示脫離計(jì)算機(jī)的控制,而且使控制器的體積減小很多,對(duì)各種便攜式設(shè)備

10、和小型嵌入式系統(tǒng)的實(shí)現(xiàn)具有工程價(jià)值現(xiàn)實(shí)意義和現(xiàn)實(shí)意義。使用可編程邏輯器件可以很方便地實(shí)現(xiàn)數(shù)字系統(tǒng)設(shè)計(jì),為此基于FPGA器件的VGA控制器可以實(shí)現(xiàn)顯示器的實(shí)時(shí)顯示。系統(tǒng)設(shè)計(jì)方案、硬件描述語言設(shè)計(jì)以及開發(fā)工具的性能決定了該系統(tǒng)性能高低。隨著VGA接口的普遍使用,這種結(jié)合FPGA的系統(tǒng)級(jí)設(shè)計(jì)方法已經(jīng)展現(xiàn)優(yōu)勢(shì)。從整個(gè)設(shè)計(jì)流程來看,系統(tǒng)的可靠性高,靈活性強(qiáng),設(shè)計(jì)周期大大縮減,成本降低,且系統(tǒng)的可擴(kuò)展性強(qiáng)。不久的將來,VGA接口的圖像與視頻監(jiān)控系統(tǒng)應(yīng)用定會(huì)很有廣闊的市場(chǎng)。經(jīng)過此次課程設(shè)計(jì),我不僅更加學(xué)會(huì)知識(shí)之間的融會(huì)貫通,而且豐富了大腦,同時(shí)在查找資料的過程中也了解了許多課外知識(shí),開拓了視野,認(rèn)識(shí)了未來電

11、子的發(fā)展方向,專業(yè)基礎(chǔ)知識(shí)方面和動(dòng)手能力方面有了質(zhì)的飛躍。做課程設(shè)計(jì)的同時(shí)也是對(duì)自己能力的一種提高。通過此課程設(shè)計(jì),我明白了自己原來所掌握的知識(shí)太理論化了,面對(duì)單獨(dú)的課題產(chǎn)生著很茫然的感覺,自己要學(xué)習(xí)的東西還很多。也讓我明白學(xué)習(xí)是一個(gè)長(zhǎng)期的過程,需要不斷的積累,在以后的工作和生活中都需堅(jiān)持學(xué)習(xí),努力提高自己的知識(shí)和綜合素質(zhì)??傊还苷莆盏牧说倪€是不懂得,困難確實(shí)比較多,凡是難開頭,不知道從哪入手。也得到一個(gè)結(jié)論:知識(shí)也只能通過應(yīng)用和實(shí)踐方能實(shí)現(xiàn)它應(yīng)具有的價(jià)值!有些東西自認(rèn)為會(huì)了,然而當(dāng)?shù)接脮r(shí)才發(fā)現(xiàn)其實(shí)真的是兩回事,為此知識(shí)真正能用時(shí)才是真的學(xué)會(huì)了。感謝三位指導(dǎo)老師們所給予過的幫助。在設(shè)計(jì)過程

12、中,我通過查閱大量有關(guān)資料,自學(xué)和與同學(xué)之間經(jīng)驗(yàn)的交流,并向老師請(qǐng)教等方式。使自己學(xué)到了不少知識(shí),也經(jīng)歷了不少艱辛,因而得以有巨大的收獲。在整個(gè)設(shè)計(jì),使我懂得了許多東西,不僅培養(yǎng)了我獨(dú)立工作的能力,而且更加樹立了對(duì)自己工作能力的信心,定會(huì)對(duì)今后的學(xué)習(xí)工作生活有非常重要的影響。在動(dòng)手的能力大大提高之余,充分體會(huì)在創(chuàng)造過程中探索的艱難和成功時(shí)的喜悅。也許這個(gè)設(shè)計(jì)做的并不是很好,但在設(shè)計(jì)過程中所學(xué)到的東西才是這次課程設(shè)計(jì)的最大收獲和財(cái)富,為之受益終身。完成之后更深體會(huì)到課程設(shè)計(jì)是對(duì)前面所學(xué)知識(shí)的一種總結(jié)與檢驗(yàn)。附 錄 顯示控制模塊代碼moduleVGA_Ctrl(/Host SideiRed,iGr

13、een,iBlue,oCurrent_X,oCurrent_Y,oAddress,oRequest,/VGA SideoVGA_R,oVGA_G,oVGA_B,oVGA_HS,oVGA_VS,oVGA_SYNC,oVGA_BLANK,oVGA_CLOCK,/Control SignaliCLK,iRST_N);/Host Sideinput7:0iRed;input7:0iGreen;input7:0iBlue;output16:0oAddress;output10:0oCurrent_X;output10:0oCurrent_Y;outputoRequest;/VGA Sideoutput7

14、:0oVGA_R;output7:0oVGA_G;output7:0oVGA_B;outputregoVGA_HS;outputregoVGA_VS;outputoVGA_SYNC;outputoVGA_BLANK;outputoVGA_CLOCK;/Control SignalinputiCLK;inputiRST_N;/Internal Registersreg10:0H_Cont;reg10:0V_Cont;wire10:0picture_x;wire10:0picture_y;/HorizontalParameterparameterH_FRONT=16;parameterH_SYNC

15、=96;parameterH_BACK=48;parameterH_ACT=640;parameterH_BLANK=H_FRONT+H_SYNC+H_BACK;parameterH_TOTAL=H_FRONT+H_SYNC+H_BACK+H_ACT;/Vertical ParameterparameterV_FRONT=11;parameterV_SYNC=2;parameterV_BACK=31;parameterV_ACT=480;parameterV_BLANK=V_FRONT+V_SYNC+V_BACK+32;parameterV_TOTAL=V_FRONT+V_SYNC+V_BAC

16、K+V_ACT;/assignoVGA_SYNC=1'b1;/This pin is assignoVGA_BLANK=(H_Cont<H_BLANK)|(V_Cont<V_BLANK);assignoVGA_CLOCK=iCLK;assignoVGA_R=iRed;assignoVGA_G=iGreen;assignoVGA_B=iBlue;wire 10:0x,y;assign x=oCurrent_X/3;assign y=oCurrent_Y/3;assignoAddress=x*150+y;/assign oAddress = 1;assignoRequest=(

17、H_Cont>=H_BLANK && H_Cont<H_TOTAL) && (V_Cont>=V_BLANK && V_Cont<V_TOTAL);assignoCurrent_X=(H_Cont>=H_BLANK)?H_Cont-H_BLANK:8'h0;assignoCurrent_Y=(V_Cont>=V_BLANK)?V_Cont-V_BLANK:8'h0;/assignpicture_x = oCurrent_X < 150 ? oCurrent_X : 155;/assignp

18、icture_y = oCurrent_Y < 200 ? oCurrent_Y : 155;/Horizontal Generator: Refer to the pixel clockalways(posedge iCLK or negedge iRST_N)beginif(!iRST_N)beginH_Cont<=0;oVGA_HS<=1;endelsebeginif(H_Cont<H_TOTAL)H_Cont<=H_Cont+1'b1;elseH_Cont<=0;/Horizontal Syncif(H_Cont=H_FRONT-1)/Fro

19、nt porch oVGA_HS<=1'b0;if(H_Cont=H_FRONT+H_SYNC-1)/Sync pulse endoVGA_HS<=1'b1;endend/Vertical Generator: Refer to the horizontal syncalways(posedge oVGA_HS or negedge iRST_N)beginif(!iRST_N)beginV_Cont<=0;oVGA_VS<=1;endelsebeginif(V_Cont<V_TOTAL)V_Cont<=V_Cont+1'b1;els

20、eV_Cont<=0;/Vertical Syncif(V_Cont=V_FRONT-1)/Front porch oVGA_VS<=1'b0;if(V_Cont=V_FRONT+V_SYNC-1)/Sync pulse endoVGA_VS<=1'b1;endendendmodule 二分頻器模塊代碼module clock(clkin,clkout);input clkin;output clkout;reg clkout;always(posedge clkin)beginclkout = clkout;endendmodule 頂層文件代碼module VGA_TOP(/VGA SideoVGA_R,oVGA_G,oVGA_B,oVGA_HS,oVGA_VS,oVGA_SYNC,oVGA_BLANK,oVGA_CLOCK,/Control Signalclkin,rst_n);/Host Sidewire7:0iRed;wire7:0iGreen;wire7:0iBlue;/VGA Sideoutput7:0oVGA_R;output7:0oVGA_G;output7:0oVGA_B;outputoVGA_HS;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論