摘要: 本文介紹一種利用可編程邏輯器件實現VGA圖像顯示控制的方法,設計中采用了Verilog HDL語言對賽靈思Basys開發板進行編程設計。首先通過Image2Lcd軟件分別提取兩幅圖片的色彩信息數據,將得到的數據存儲到開發板的FPGA內嵌塊ROM中,然后讀取塊ROM中的圖片信息送到LCD顯示器顯示。利用FPGA完成VGA顯示控制,可以使圖像的顯示脫離PC機的控制。
如今隨著液晶顯示器的出現,越來越多的數字產品開始使用液晶作為顯示終端。基于VGA標準的顯示器仍是目前普遍使用的顯示器。若驅動此類顯示器,需要很高的掃面頻率,以及極短的處理時間。正是由于這些特點,所以可以用FPGA來實現對VGA顯示器的驅動。
雖然VGA專用芯片具有更穩定的VGA時序和更多的顯示模式可供選擇,但設計和使用VGA顯示控制更具有以下優勢:
① 使用芯片更少,節省板上資源,減小布線難度;
② 當進行高速數據傳輸時,具有更小的高頻噪聲干擾;
③ FPGA(現場可編程門陣列)設計VGA接口可以將要顯示的數據直接送到顯示器,節省了計算機的處理過程,加快了數據的處理速度,節約了硬件成本。
1 系統整體設計框架
VGA顯示控制整體設計方案框圖如圖1所示,將其劃分為電源模塊、時鐘電路模塊、VGA接口模塊、字庫/圖庫模塊、顯示器等。再利用Verilog語言對FPGA的各個子模塊進行編程設計,同時對各個子模塊的功能分別進行調試,最后將所有調試成功的子模塊并在一個頂層模塊下,最終實現VGA顯示控制設計。
?
圖1 VGA顯示控制整體設計方案框圖
2 VGA顯示控制的FPGA實現
2.1 存儲功能模塊
存儲功能模塊的主要功能是存儲圖片色彩信息, 其存儲媒介為FPGA內部的硬核塊RAM, 塊RAM 是以硬核的方式內嵌到FPGA 芯片中的, 不占用芯片的邏輯資源, 是FPGA 芯片內部的一種寶貴資源。FPGA 內嵌的塊RAM 組件可配置為單口RAM、雙口RAM、分布式ROM、塊ROM和先進先出存儲器FIFO等存儲結構。
本文只進行圖片的顯示,所以使用單口的塊ROM存儲圖片信息,如果想實現更復雜的設計,如文字的滾動顯示、圖片的動畫顯示等,可以使用雙口RAM 進行設計。由于圖片信息比較大,而BASYS板子上的資源又有限,這就要求圖片不易過大。搜集的各種資料和不斷的實驗結果表明,大小在8 192字節內的圖片是可以顯示的。這里第一幅圖選用自己的名字徐彬。圖片信息大小為:63×32×8=16 128位。第二幅選用江西科技師范大學。圖片信息大小為120×50×8=48 000位。尋找到圖片后,利用Xilinx ISE中的IP核生成工具Core Generator生成單口ROM,如圖2所示。
?
圖2 單口ROM圖
將要顯示的圖片信息存儲到塊ROM中。第一幅圖片選擇數據寬度為8,深度為2 016的ROM。第二幅圖片選擇的ROM數據寬度為8,深度為6 000。在工程里使用IP核生成工具生成單口ROM,在生成過程中處理好ROM的數據寬度和深度。塊存儲的時候,需要加載的是一個.coe文件來初始化存儲器的內容,這時候需要用到Image2Lcd軟件,取圖片的色彩信息保存為.coe文件初始化到ROM中。
2.2 VGA控制模塊
時序的驅動是設計VGA顯示控制的一個重要問題,關系到設計是否成功。時序若不正確,則不能夠正確地顯示,有時候甚至還會損害顯示設備。因此, 時序的設計必須嚴格遵循VGA的標準, 在此設計中使用的分辨率為800×600,要求像素時鐘為50 MHz。
?
圖3 VGA時序圖
根據VGA 時序的標準行、場同步信號有4種狀態,時序圖如圖3所示,具有同步脈沖信號(Sync)、顯示后沿信號( Back porch)、I顯示的時間間隔(Display interval) 、顯示前沿( Front porch),這4種狀態具有很清晰的時序規律。設置兩個計數器,模為1056 的行計數器和模628的列計數器,系統時鐘為50 MHz用來控制行計數器,通過計數器的值來控制行信號HSYNC,然后在通過行信號HSYNC來控制列計數器,通過計數器的值來控制列信號VSYNC。
ROM讀取控制模塊e#
2.3 ROM讀取控制模塊
ROM讀取控制模塊是VGA顯示設備和存儲數據信息ROM之間的通道, 為了使VGA顯示設備能夠準確地顯示圖片信息,必須嚴格遵循顯示設備的掃描規律,產生相應的顯示信息。
首先,在程序中通過兩次例化分別調用存儲在FPGA內嵌ROM中的兩幅圖,然后在程序中通過坐標定位將圖片顯示到想要顯示的區域。本文的兩幅圖片分別將顯示區域定在從屏幕的(500, 350)坐標到( 563, 382)坐標區域內從屏幕的(400,350)坐標到(520,400)坐標區域內。
因為設計實現的功能是利用鍵盤上的按鍵對兩幅圖進行切換,所以不必擔心顯示區域有重疊而產生覆蓋現象。在圖片的顯示過程中,每當坐標計數器刷新到圖片顯示指定區域內時,就要判斷相應掃描點所包含的圖片信息,將其賦給RGB進行色彩的顯示。
3 PS2顯示控制器的FPGA實現
3.1 PS/2傳輸協議
PS/2鍵盤到主機單向通信的原理如下:PS/2主從設備之間采用雙向同步串行的機制進行數據傳輸,從設備的晶振時鐘信號作為通信過程中的同步時鐘信號,鍵盤發送到主機的每一幀數據包含11位二進制代碼,每位數據在鍵盤時鐘的下降沿被主機從數據線上讀走。PS/2傳輸協議如圖4所示。
圖4 PS/2傳輸協議
這11位數據的含義分別是:START為起始位,總是為0,以作設備同步之用;8個數據位DATA0~DATA7低位在前;PARTTY為奇校驗位;STOP為停止位,總是為1。正如鍵按下就會有掃描碼(通碼)發往主機一樣,只要鍵一釋放,就會有掃描碼(斷碼)發往主機。
每個按鍵都被分配了唯一的通碼和斷碼。PS/2鍵盤第二套掃描碼中,大多數按鍵的通碼只有一個字節,一幀就可以發完,這些按鍵的斷碼一般是在通碼前面加個F0h,所以這些兩個字節的斷碼就需要兩幀來發送。比如G鍵的通碼34h、G鍵的斷碼F0h 34h,按下G鍵后,然后松開G鍵,鍵盤就會依次向主機發送34h、F0h 34h。但此次設計所用到的輸入按鍵是通碼有兩個字節,斷碼有三個字節的特殊按鍵。
3.2 鍵盤按鍵控制實現
設計中只用到了兩個按鍵——左鍵和右鍵,而且實驗只需用左鍵控制第一幅圖片的顯示,右鍵控制第二幅圖片的顯示。因此,只需要在程序中檢測到這兩個按鍵的通碼即可,即檢測到左鍵的通碼到來即顯示徐彬二字的圖片,當松開按鍵時,不需要考慮其斷碼需要帶來某種操作,繼續保持第一幅圖片的顯示。
當檢測到右鍵的通碼到來即顯示江西科技師范大學的圖片,當松開按鍵時,也不需要考慮其斷碼需要帶來的某種操作,繼續保持住第二幅圖片的顯示。而對其余的按鍵在本次設計中暫不需要考慮。
4 數碼管動態顯示控制
4.1 數碼管點亮控制
數碼管按其段數分可七段數碼管和八段數碼管,它們的區別在于八段數碼管比七段數碼管多一個發光的二極管單元,即多一個小數點顯示段。按照顯示“8”的個數,又可分為1位、2位、4位等數碼管。
數碼管按發光二極管的連接方式可分為共陽極數碼管和共陰極數碼管。共陽數碼管指將所有發光二極管的陽極連接到一起形成一個公共陽極數碼管。共陽數碼管應用時,應將公共陽極接到+5 V或+3.3 V,若某一段的發光二極管的陰極為低電平,則相應段就點亮,若為高電平,則相應段就不被點亮。共陰數碼管指將所有發光二極管的陰極接到一起形成一個公共陰極的數碼管。共陰數碼管應用時應將公共陰極接地,若某一段發光二極管的陽極為高電平,則相應段就被點亮,若某段的陽極為低電平時,則相應段就不被點亮。
可以看出數碼管是共陽極的4位數管碼,即給低電平時數碼管點亮,如圖5所示。
?
圖5 數碼管點亮
4.2 數碼管數字顯示控制:
由于所有數碼管共用一個段選,為了能夠獨立顯示每位數碼管,只能用位選來區分不同的數碼管。即每次只將某一位數碼管的位選置為有效,其他的數碼管位選都無效。此時的段選決定了該位數碼管的顯示內容,然后在下一時刻,置下一位數碼管的位選有效,而其他的數碼管位選都無效。依此類推,不斷循環往復。
每次位選刷新速度比較快,同時由于數碼管自身的余輝特性,使每位數碼管在其變暗之前就又會被重新刷新,因此人眼則無法感覺到數碼管變暗。如果刷新頻率低于一定值,則人眼會感覺到數碼管在閃爍。所以,一般刷新頻率會在60 Hz~1 kHz之間,這樣多位數碼管顯示比較理想。
該設計是在開發板Basys上進行實驗,其是共陽極的4位數碼管,而在此項目工程中只需使用到1個數碼管,所以在動態顯示中將其他的3位數碼管置1屏蔽不亮。程序如下:
case(cnt[16:15])//大約每1 ms刷新一次
2’d0:wei xuan<=4’b1110;//第一個數碼管點亮
2’d1:wei xuan<=4’b1111;
2’d2:wei xuan<=4’b1111;
2’d3:wei xuan<=4’b1111;//其他三個數碼管不亮
default:wei xuan<=wei xuan;
endcase
這樣即實現了實驗所想達到的要求。
以上是對位選的一個介紹,而對于段選,數碼管可以顯示從0到f這16個字符,只需要分別對0到f進行編碼顯示。本次設計不需要如此復雜,由于只用到1和2兩個數字,因此,對1和2進行段選編碼即可。程序如下:
case(image)//image是用來控制要選擇的圖片
2’d0:duan xuan<=8’hf9;//數碼管顯示1時的編碼
2’d1:duan xuan<=8’ha4;//數碼管顯示2時的編碼
default:duan xuan<=duan xuan;//數碼管保持狀態
endcase
這樣即實現了實驗所想達到的要求。
5 實驗結果
5.1 實驗的環境
實驗的環境包括:
① 開發工具:Xilinx ISE 9.1。
② 開發語言:硬件描述語言verilog HDL。
③ 目標板:Xilinx公司Basys開發板。
5.2 實驗結果
如圖6、圖7所示,屏幕上顯示兩幅圖片,利用鍵盤,通過控制鍵盤的左右鍵實現對兩幅圖片的切換,并使用數碼管顯示。當按下左鍵的時候屏幕出現第一幅圖片(徐彬)并且數碼管顯示為1,當按下右鍵的時候屏幕出現第二幅圖片(江西科技師范大學)并且數碼管顯示為2。
?
圖6 實驗圖一
?
?
圖7 實驗圖二
實驗結果已經達到了預想的效果。如果增加塊ROM的容量,則可以顯示更大的圖片,更改方便,也可以調整圖片的顯示位置。
結語
利用FPGA完成VGA顯示控制,可以使圖像的顯示脫離PC機的控制,形成體積小、功耗低的格式嵌入式系統(便攜式設備或手持設備),應用于地面勘測、性能檢測等方面,具有重要的現實意義。該技術方案已經在工業現場中有多種實際應用。
參考文獻
[1] 張亞平, 賀占莊. 基于FPGA的VGA顯示模式設計[J].計算機技術與發展, 2007,17(6).
[2] 劉福奇.FPGA嵌入式項目開發實踐[M].北京:電子工業出版社,2009.
[3] 張明. Verilog HDL實用教程[M].成都: 電子科技大學出版社, 1999.
[4] 潘松,黃繼業. EDA 技術實用教程[M].北京:科學出版社,1999:262265.
[5] 基于IP Core的Block RAM 設計[EB/OL].[201308].
[6] 夏宇聞.Verilog 數字系統設計教程[M].北京:北京航空航天大學出版社,2006.
[7] 夏宇聞.復雜數字電路與系統的Verilog HDL設計技術[M].北京:北京航空航天大學出版社,1998.
[8] 王志輝,林水生.基于FPGA的鍵盤掃描模塊的設計實現[J].集成電路應用,2006,67(5).
[9] 吳蓬勃,張啟民,王朝陽,等.基于FPGA 的VGA 圖像控制器設計[J].東北電力大學學報,2006,26(4).
[10] XILINX ROM 使用教程[EB/OL].[201308].
詹華群(教授),研究方向為現代信號與信息處理;徐彬(碩士研究生), 研究方向為運動控制及數控系統。
評論
查看更多