新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 牛人業(yè)話 > 零基礎(chǔ)學FPGA(十三)先來說說VGA

零基礎(chǔ)學FPGA(十三)先來說說VGA

—— 零基礎(chǔ)學FPGA(十五)先來說說VGA
作者: 時間:2015-02-06 來源:網(wǎng)絡(luò) 收藏

  這個實驗其實已經(jīng)做好久了,但是一直沒有做筆記,今天就把這部分的內(nèi)容補一下,有興趣的朋友可以看一下,或許對你有什么幫助,對初學者來說還是一個不錯的實驗。

本文引用地址:http://www.butianyuan.cn/article/269613.htm

  先來了解一下

  我們家里用的臺式電腦就是一個顯示器,小墨同學為做這方面的實驗還特意買了一塊7寸的液晶顯示器

  

qq圖片20140922155421.jpg

 

  記得當初自己也是傻得不得了,把寫好的代碼,燒到板子里就直接連到筆記本電腦上的VGA接口上,結(jié)果什么反應(yīng)也沒有,還調(diào)了一下午的程序...結(jié)果還是沒反應(yīng),到群里一問才知道,原來筆記本電腦上的VGA接口只能做輸出而不能輸入的這跟臺式機還是不同的,后來才買的這塊液晶顯示器。

  標準的VGA接口有15個接口,但是真正用到的只有5個接口,分別是三個色彩信號,R,G,B,場同步信號VSYNC,行同步信號HSYNC,時序部分要通過控制行同步信號和場同步信號,色彩部分要控制RGB,先來看時序部分。

  

360桌面截圖20140922224942.jpg

 

  對于一個分辨率為800*600的顯示器,簡單的說像素的刷新是從左到右,從上到下一行一行的刷新的,每一行要刷新的點成為行同步信號的幀長,有多少行稱為場同步信號的幀長,從上到下刷新完一遍稱為一幀,我們電腦上說的屏幕刷新頻率就是說屏幕一秒鐘能夠刷新多少幀,當達到一定的幀數(shù),我們的肉眼也就分辨不出來了,這樣我們就看到我們的電腦屏幕,我們在操作的時候是連續(xù)的了。下面是時序表:

  

360桌面截圖20140922225820.jpg

 

  先來解釋一下這個表

  第一行表示行同步信號的時序表,前187個計數(shù)點表示的在消影區(qū),即還沒開始進入顯示區(qū),從188開始進入顯示區(qū),到987結(jié)束,后面的52個計數(shù)點又在消影區(qū)

  第二行表示場同步信號。同理。前31個計數(shù)點和后56個計數(shù)點表示在消影區(qū),是不顯示的,下面是我畫的一個圖幫大家理解

  

360桌面截圖20140922231140.jpg

 

  知道了這一點我們就可以開始寫時序部分的程序了

  

360桌面截圖20140922232008.jpg

 

  當行計數(shù)器計滿一行1039個點時清零,場計數(shù)器加1,當場計數(shù)器計滿687行時,一幀結(jié)束,場計數(shù)器清零

  

360桌面截圖20140922232238.jpg

 

  當計滿一行時,行同步信號會拉低一個120個時鐘周期的低脈沖,通俗的理解就是計滿一行有一個低脈沖出現(xiàn),這個脈沖的長度是120個時鐘周期,同理,計滿一個場之后會有6個場周期的低脈沖出現(xiàn),這個低脈沖就不是時鐘周期了,是相當于場計數(shù)器計6行的時間

  時序?qū)懞昧酥缶鸵_定顯示區(qū)域,根據(jù)上面那個我畫的圖,即只有在行計數(shù)器計到187到987,場計數(shù)器計到31到631時才是有效區(qū)域

  

360桌面截圖20140922232950.jpg

 

  為了好確定坐標,我們可以將坐標轉(zhuǎn)換一下,換成我們習慣的樣子,避免消影區(qū)坐標的干擾

  

360桌面截圖20140922233257.jpg

 

  這樣一切準備工作就做好了,剩下的就是我們自己設(shè)計想要顯示的畫面了,例如,我要在屏幕中間顯示一個矩形框,在這個矩形里面顯示一個小矩形

  

360桌面截圖20140922233457.jpg

 

  這個地方我剛開始看的時候沒看懂,我再畫一個圖幫大家理解

  

360桌面截圖20140922234117.jpg

 

  下面顯示小矩形

  

360桌面截圖20140922234230.jpg

 

  畫完圖形最后顯示顏色

  

360桌面截圖20140923124816.jpg

 

  最后按照硬件原理圖分配好管腳,下載就可以了

  

qq圖片20140923125201.jpg

 

  下面來說說顯示字符

  時序部分是一樣的就不多說,直接說字符顯示部分

  顯示字符當然要用到取模軟件,相信大家都用過

  

360桌面截圖20140923231933.jpg

 

  然后將字模進行拼接,因為我們刷新是從左向右,從上到下刷新的,所以要把每一個字模的同一行拼接在一起,這樣每刷新一行,同時刷新三個字模的一行,從上到下刷新一邊,三個字模也就刷新出來了

  

360桌面截圖20140923232447.jpg

 

  這里要定義一個減法計數(shù)器,當像素點從某個位置從左到右開始刷新時開始計數(shù),知道計數(shù)到要顯示的字模結(jié)束為止。這里我用到了32個像素點表示一個字模的一行,4個字模就需要128個像素點來表示一行,共有32列

  

360桌面截圖20140923232532.jpg

 

  下面是當計數(shù)到需要顯示的字模時,給字加上顏色,x_dis,y_dis用來確定在哪顯示字符

  

360桌面截圖20140923233026.jpg

 

  下面是演示結(jié)果

  

qq圖片20140923233853.jpg

fpga相關(guān)文章:fpga是什么


塵埃粒子計數(shù)器相關(guān)文章:塵埃粒子計數(shù)器原理


關(guān)鍵詞: FPGA VGA

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉