VGA(視頻圖形陣列)作為一種標(biāo)準(zhǔn)的顯示接口得到廣泛的應(yīng)用。依據(jù)VGA顯示原理,介紹了利用FPGA實現(xiàn)對VGA圖形控制器的Verilog設(shè)計方法。詳細(xì)描述了各硬件模塊的工作原理及實現(xiàn)途徑,并給出了軟件設(shè)計思路。
隨著可編程邏輯器件的不斷發(fā)展及其價格的不斷下降,EDA開發(fā)軟件的不斷完善,可編程邏輯設(shè)計的應(yīng)用優(yōu)勢逐漸顯示出來,特別是大規(guī)??删幊唐骷?。而FPGA具有功能強大,開發(fā)過程投資小、周期短等特點,成為當(dāng)今硬件設(shè)計的首選方式之一。VGA(視頻圖形陣列)作為一種標(biāo)準(zhǔn)的顯示接口得到廣泛地應(yīng)用。利用FPGA芯片和EDA設(shè)計方法,可以靈活地根據(jù)用戶需求,設(shè)計出針對性強的VGA顯示控制器,不僅降低了生產(chǎn)成本也可以方便快速地對產(chǎn)品進行升級換代。設(shè)計采用 Quartus II 軟件工具,并以 Altera公司的Cyclone系列FPGA的器件為主實現(xiàn)硬件平臺的設(shè)計。
1. 硬件系統(tǒng)框圖采用模塊化設(shè)計方法。
本設(shè)計的VGA控制器主要由以下模塊組成:VGA 時序控制模塊、內(nèi)部時鐘產(chǎn)生模塊、SDRAM控制模塊、串行Flash讀取模塊等,如圖1所示。
圖1 系統(tǒng)框圖
2. 主要模塊設(shè)計
2.1 VGA 時序控制模塊
VGA時序控制模塊是整個顯示控制器的關(guān)鍵部分,其實質(zhì)就是完成VGA顯示卡的功能。主要作用就是在一定的工作頻率下,產(chǎn)生準(zhǔn)確的時序關(guān)系(VS-垂直同步信號,HS-水平同步信號,消隱信號之間的關(guān)系)。及其在準(zhǔn)確的時序下對數(shù)據(jù)緩存區(qū)對數(shù)據(jù)進行讀取,讀完數(shù)據(jù)后使 SDRAM 控制器及時的刷新緩存區(qū)的數(shù)據(jù)。其中產(chǎn)生準(zhǔn)確的時序關(guān)系為此模塊重點,在VGA顯示過程中,完成一行掃描所需要的時間稱為水平掃描時間,完成一幀掃描所需要的時間稱為垂直掃描時間。每掃描完一行用行同步信號進行同步;掃描完所有行后用場同步信號進行同步。本設(shè)計采用的是800Hz x 600Hz x 60Hz模式。依據(jù)時序標(biāo)準(zhǔn),每顯示行包含1056點,其中800點為有效顯示區(qū),256點為消隱區(qū),每行的行同步脈沖低電平寬度為128個像素點;同理每場有628行,有效行為600行,其中場同步脈沖低電平寬度為4行。其行、場時序如表 1 。
表 1 行掃描、場掃描時序
圖2 HS時序
圖3 VS時序
其中圖2,td=800,tg=1056,ta=80,te+tf=80,tb+tc=128,單位為一個像素時鐘周期。
其中圖3,td=600,tg=628,ta=1,te+tf=23,tb+tc=4,單位為一個line時間。
依據(jù)這個標(biāo)準(zhǔn),外部50MHz時鐘經(jīng)過FPGA內(nèi)部PLL得到所需要的40MHz像素時鐘,并進行對應(yīng)的像素點數(shù)和掃描行數(shù)進行分頻處理,可以得到符合要求的行頻率、場頻率和消隱信號。
2.2 SDRAM控制模塊及動態(tài)數(shù)字顯示方法
在基于FPGA的圖像顯示系統(tǒng)中,常常需要用到大容量、高速度的存儲器。而在各種隨機存儲器件中,SDRAM的價格低、速度快、容量大是比較理想的器件。但SDRAM控制邏輯較為復(fù)雜,要采用狀態(tài)機的設(shè)計方法來實現(xiàn) SDRAM 的控制模塊(也可以使用SDRAM IP核實現(xiàn))。其 SDRAM控制狀態(tài)機如圖 4 。
圖4 SDRAM狀態(tài)機
其中包含了9個狀態(tài),其中從Precharge到ModeSet為SDRAM上電后的初始化過程,其余狀態(tài)為SDRAM的正常讀寫及刷新操作過程。對于SDRAM自身的操作本文不做詳細(xì)介紹,下面具體介紹動態(tài)顯示數(shù)字的方法。
系統(tǒng)上電后,SDRAM上電后的初始化完成后。先通過Flash讀寫控制模塊,把Flash中的靜態(tài)圖片讀取出來,然后寫入SDRAM中直到Flash中的圖片完全存入SDRAM。此時啟動VGA時序控制模塊進行圖片的顯示。
對于動態(tài)顯示數(shù)字方法,可以先利用字模提取軟件把字模信息提取出來。而 Altera公司的FPGA器件內(nèi)均內(nèi)置了嵌入式陣列塊,通過調(diào)用其中的LPM_ROM模塊??梢匀我庠O(shè)置參數(shù),構(gòu)成內(nèi)置的ROM存儲器,存儲所摘要的字模信息。本系統(tǒng)的字模為16pixels長 x 16pixels寬 x 16位色(R5G6B5),所以利用LPM_ROM模塊,占用了將近10個 M4K(FPGA內(nèi)置 塊ram)。
本系統(tǒng)通過接受外部 MCU 發(fā)來的命令來確定顯示數(shù)字的區(qū)域及要顯示的數(shù)字。因為VGA時序中存在較長的消隱期間,其期間是沒有顯示數(shù)據(jù)傳遞的。所以可以通過消隱期間實行對SDRAM的寫操作,對圖片固定地址寫入字模信息。其具體步驟:
(1)、確定要顯示數(shù)字的圖像區(qū)域首地址;
(2)、確定要顯示數(shù)字信息位于ROM中的地址;
(3)、啟動 SDRAM 寫操作;
(4)、SDRAM 寫操作地址增加16后,地址繼續(xù)增加800(即一行),而 ROM地址每次增加 1;
(5)、如此循環(huán)16 次(字模為 16 x16)后,如果還有要寫的數(shù)字則繼續(xù)(1)步驟,否則停止寫操作。
因為只是動態(tài)的改變數(shù)字,所以對原圖像改動的數(shù)據(jù)量不是很大,所以不會造成圖像閃爍現(xiàn)象。此方法缺點就是字模占用的 塊RAM 資源較多,如果字模只是固定顏色的情況,則 塊RAM 資源只用到 1 個 M4K,所以在資源緊張的情況下還得需要各方面比較,得到最合適的顏色分配。
2.3 Flash 的讀寫模塊
現(xiàn)在數(shù)字電路設(shè)計中,經(jīng)常需要保存大量數(shù)據(jù),F(xiàn)lash Memory 以其集成度高、低成本、使用方便等優(yōu)點,因此也成為設(shè)計人員的首選。
Flash可以分兩類:并行和串行。并行存儲量大,速度快;而串行存儲量相對較小,但體積小連線簡單,可減少電路面積,節(jié)約成本,二者各有優(yōu)缺點,根據(jù)實際需要選取。本系統(tǒng)對速度要求不是很高,所以選用了串行 Flash,為意法半導(dǎo)體推出的 M25P32。M25P32為SPI 接口,具有 4MB 容量,對與本設(shè)計每幅圖片接近 1MB,則可以存儲 4 副圖片,可以進行 4 個界面的切換顯示。
其模塊設(shè)計必須嚴(yán)格按照 Flash 的時序控制信號。對于首次使用 Flash,先需要進行擦除操作,編程指令可以將 1 變成 0。往 Flash 寫入圖片數(shù)據(jù)時,還是需要調(diào)用 FPGA 中的宏模塊制作一個 ROM,但是由于 Flash 容量較大,一般FPGA沒有這么大的存儲空間,所以數(shù)據(jù)需要分多次寫入。FPGA的ROM數(shù)據(jù)保存在.mif文中,.mif 由 Matlab 直接生成.mif文件,也可以在 Quartus II 中生成。
在對 M25P32 的操作中,需要注意的是一些指令在操作完成后,需要留出一段時間 Flash進行數(shù)據(jù)處理,比如寫寄存器為 5ms~15ms等,如果沒有等待這段處理過程,則會出現(xiàn)一些誤操作。
FLASH操作步驟:
(1)、FLASH擦除,一般通過SPI發(fā)FLASH擦除命令,等待結(jié)束。
(2)、FLASH寫,發(fā)送寫命令,寫地址,數(shù)據(jù)。一般FLASH保存一些參數(shù),或者數(shù)據(jù)存儲用,如果FLASH內(nèi)已經(jīng)有可用的數(shù)據(jù),可以根據(jù)實際情況,也可以先讀FLASH。
(3)、FLASH讀,發(fā)送讀命令,讀地址。
3、驗證
利用可編程邏輯器件(FPGA)可以很方便地實現(xiàn)數(shù)字系統(tǒng)設(shè)計,而在Altera的QuartusII軟件平臺下,F(xiàn)PGA 設(shè)計的各個階段都得到了很好的支持,兩者有效結(jié)合使得數(shù)字系統(tǒng)的設(shè)計更加方便快捷。
通過硬件平臺的驗證,基于 FPGA 的VGA圖形顯示器已達到設(shè)計要求,可以穩(wěn)定地實現(xiàn)界面的顯示,并可以在界面上根據(jù)需要進行數(shù)字的動態(tài)改變顯示,對于一些工業(yè)監(jiān)控場合的應(yīng)用,尤其數(shù)據(jù)量不是很大的場合尤為適合,不僅可以及時顯示當(dāng)前狀態(tài),還可以保存關(guān)機時狀態(tài)。
-
FPGA
+關(guān)注
關(guān)注
1644文章
21993瀏覽量
615366 -
圖形控制器
+關(guān)注
關(guān)注
0文章
8瀏覽量
11342
原文標(biāo)題:基于FPGA的VGA圖形控制器的設(shè)計
文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
PIC32MZDA圖形控制器問題
如何使用Verilog實現(xiàn)基于FPGA的SDRAM控制器?
基于FPGA的圖形式AMLCD控制器該如何去設(shè)計?
基于FPGA的LCD&VGA控制器設(shè)計

VGA圖形控制器的FPGA實現(xiàn)

基于FPGA的VGA圖形控制器設(shè)計

基于FPGA的圖形式AMLCD控制器的設(shè)計

評論