長江大學電子信息學院 盛象飛
基于FPGA的液晶顯示控制器的設計與實現
長江大學電子信息學院 盛象飛
介紹一種基于FPGA的液晶顯示控制器的設計與實現。該設計采用Verilog HDL硬件描述語言,以Alter公司的Cyclone 系列的EP1C6Q240C8芯片為載體,實現了對1602字符型液晶顯示器的控制。該方法可靠性高,移植性好,便于調試與升級。文章給出了FPGA對1602字符型液晶顯示器的測試結果,表明了該設計的可實現性和可靠性。
FPGA;1602字符型液晶顯示器;Verilog HDL;Cyclone EP1C6Q240C8
在小型智能化電子產品中,普通的7段LED數碼管只能用來顯示數字。若遇到要顯示英文字母、圖像或漢字時,則必須選擇使用液晶顯示器(簡稱LCD)。LCD顯示器的應用很廣,如復印機和傳真機,以及一些娛樂器材、醫療儀器上,常常可看見LCD的足跡[1]。隨著人機界面(GUI)在醫療、工業以及消費電子各應用領域需求的日益增長,高集成度、高性能的TFT液晶顯示方案成為電子產品設計開發的重要組成部分[2]。為此本文提出了一種基于FPGA對字符型液晶顯示器的控制方案。該方案不僅操作簡單方便,而且占用資源少。
本設計中的液晶顯示控制器以EP1C6Q240C8芯片作為控制芯片,用Verilog HDL硬件描述語言編程,通過JTAG下載器下載,并利用Quartus II軟件進行調試,實現了FPGA對1602字符型液晶顯示模塊的控制。
圖1為總體結構。本設計是基于FPGA的LCD顯示模塊的控制。LCD顯示模塊接收來自于FPGA的控制信號和數據,FPGA同時讀取LCD顯示模塊中的相關信息,這樣才能實現對LCD顯示模塊的控制。FPGA的最小系統包括電源、復位、時鐘、SDRAM、JTAG。FPGA一般先通過PC機使用JTAG下載器把程序燒寫到FPGA芯片上,不過這種方式在斷電以后程序會丟失,但是充分利用了FPGA的無限擦寫性。而通過AS(Active Serial Programming)模式下載,這樣便不會斷電丟失。所不同的是用AS模式下載時,需先編程配置芯片(如EPCS1),然后再配置FPGA,這種模式適合于待產品開發成熟時選用[3]。
2.1 FPGA選型
FPGA(Field—Programmable Gate Array),即現場可編程門陣列,它是在可編程陣列邏輯PAL(Programmable Array Logic)、通用陣列邏輯GAL(Generic Array Logic)、復雜可編程邏輯器件CPLD(Complex Programmable Logic Device)等可編程器件的基礎上進一步發展的產物。
本設計采用的是Altera公司的Cyclone低成本系列FPGA——EP1C6Q240C8,其工作電壓為3.3V,內核電壓1.5V,內部有2個鎖相環,20個內嵌乘法器,5980個邏輯單元(LEs),185個用戶I/O口,8個全局時鐘,資源豐富,可很好地滿足設計需要。
2.2 LCD顯示模塊
以深圳市創顯達電子有限公司的5V 1602字符型液晶顯示器作為本設計中的LCD顯示模塊。1602 LCD顯示模塊是指可以顯示兩行,每行16個字符的液晶顯示模塊。模塊內置有顯示數據的DDRAM、字符發生存儲器CGROM和CGRAM。CGROM已經存儲了160個不同的點陣字符圖,每一個字符都有一個固定的代碼。只需要向DDRAM輸入相應字符的地址,就能從CGROM中讀取數據,液晶屏就會輸出顯示相應的字符[4]。
2.3 軟件設計
本設計是PC機通過JTAG下載器向FPGA發送指令來控制LCD顯示模塊。該設計的軟件部分采用Verilog HDL硬件描述語言。與之前較為熟悉的C語言相比,該語言的最大優點是:它是一種非常容易掌握的硬件描述語言,語法與C語言類似。用Verilog HDL建模的最大優點就是與工藝沒有關系,便于設計人員的修改設計,極大地提高了設計效率。
1602字符型液晶顯示器是低頻顯示器件。一般51單片機控制該顯示器沒有問題,因為單片機的時鐘頻率較低。該板卡用的晶振是50MHz,假如用它控制1602字符型液晶顯示器的話,那晶振頻率過高,由于液晶顯示器控制時序由于需要較長的建立時間,假如不進行分頻的話,顯示器則不能正常顯示。該軟件設計把FPGA系統50MHz分頻為500Hz作為LCD顯示模塊的控制時鐘。
本軟件設計主要分為兩大模塊:時鐘分頻模塊CLK50M_500、顯示驅動模塊LCD_show。其中時鐘分頻模塊CLK50M_500解決了FPGA驅動LCD顯示模塊的時鐘頻率匹配問題。顯示驅動模塊LCD_show解決的是LCD顯示模塊第一行、第二行字符以及漢字的顯示問題,為LCD顯示模塊的正常顯示提供了核心軟件支持。
本文采用有限狀態機來實現顯示驅動的核心邏輯[5]。有限狀態機是建立系統模型最為有效的手段,有著廣泛的應用。綜合工具可以非常有效地將HDL語言描述的狀態機行為轉換成門級電路[6]。
狀態轉換如圖2所示。各狀態分別是:空閑模式、清屏、顯示開關設置、輸入方式設置、功能設置、寫數據模式狀態。初始狀態為空閑模式,開始寫數據時首先對LCD清屏,然后設置LCD的顯示開關以及輸入方式設置,再然后進行功能設置,最后再寫入數據。在寫數據的同時檢測數據是否已寫完,若未寫完繼續寫數據,若數據已寫完則進入顯示開關設置狀態,等待下一輪的數據讀寫。

圖2 狀態轉換圖
在該實驗板上功能和時序驗證成功之后,需要把編程之后的文件通過專用JTAG下載器燒寫至FPGA板卡。本設計在該實驗板上輸出了“To my friend 田木”其中第一行是“To my friend”,第二行是“田木”,包括了英文字母和中文,達到了預期理論目標。實際效果如圖3所示。
通過修改該Verilog程序可以改變LCD顯示模塊的顯示效果,效果如圖4所示。
當然,還可以做些其他效果變化,例如光標閃爍、文字更改、左移或者右移等等變化。如有興趣的可以自己做下,在此就不一一做演示。

圖3 顯示效果

圖4 顯示效果
本文利用Cyclone系列FPGA器件,實現液晶控制功能模塊的設計。采用Verilog HDL語言,運用FPGA技術,經過一系列的模塊設計,從行為級和RTL級上進行綜合描述,并經過Quartus II的編譯、綜合、驗證、下載等過程,實現了核心設計方案的所有功能,最終在一片FPGA芯片上完成了對1602字符型液晶顯示模塊的控制。實際測試結果表明,本系統滿足對液晶顯示模塊的控制要求,達到了設想的效果。該接口控制器設計簡潔可靠,在一些低速和低端的液晶顯示應用中具有一定的使用價值。
[1]周興華.手把手教你學單片機C程序設計[M].北京:北京航空航天大學出版社,2008.
[2]邵青.基于STM32F4x9的LCD顯示設計方案[J].單片機與嵌入式系統應用,2014,14(6):82-83.
[3]華清遠見嵌入式培訓中心.FPGA應用開發入門與典型實例[M].北京:人民郵電出版社,2008.
[4]陳立克,許存祿,辛遙,等.基于FPGA技術的液晶顯示控制器設計[J].微電子學,2011,41(6):852-855.
[5]曹勇,沈斌,熊偉.SOPC中NiosII的LCD顯示驅動IP設計[J].單片機與嵌入式系統應用,2010,10(6):16-18.
[6]杜慧敏,李宥謀,趙全良.基于Verilog的FPGA設計基礎[M].西安:西安電子科技大學出版社,2006.
盛象飛(1991—),男,河南駐馬店人,碩士研究生,主要研究方向:fpga、單片機、硬件電路。