長(zhǎng)江大學(xué)電子信息學(xué)院 盛象飛
基于FPGA的液晶顯示控制器的設(shè)計(jì)與實(shí)現(xiàn)
長(zhǎng)江大學(xué)電子信息學(xué)院 盛象飛
介紹一種基于FPGA的液晶顯示控制器的設(shè)計(jì)與實(shí)現(xiàn)。該設(shè)計(jì)采用Verilog HDL硬件描述語(yǔ)言,以Alter公司的Cyclone 系列的EP1C6Q240C8芯片為載體,實(shí)現(xiàn)了對(duì)1602字符型液晶顯示器的控制。該方法可靠性高,移植性好,便于調(diào)試與升級(jí)。文章給出了FPGA對(duì)1602字符型液晶顯示器的測(cè)試結(jié)果,表明了該設(shè)計(jì)的可實(shí)現(xiàn)性和可靠性。
FPGA;1602字符型液晶顯示器;Verilog HDL;Cyclone EP1C6Q240C8
在小型智能化電子產(chǎn)品中,普通的7段LED數(shù)碼管只能用來(lái)顯示數(shù)字。若遇到要顯示英文字母、圖像或漢字時(shí),則必須選擇使用液晶顯示器(簡(jiǎn)稱LCD)。LCD顯示器的應(yīng)用很廣,如復(fù)印機(jī)和傳真機(jī),以及一些娛樂器材、醫(yī)療儀器上,常??煽匆奓CD的足跡[1]。隨著人機(jī)界面(GUI)在醫(yī)療、工業(yè)以及消費(fèi)電子各應(yīng)用領(lǐng)域需求的日益增長(zhǎng),高集成度、高性能的TFT液晶顯示方案成為電子產(chǎn)品設(shè)計(jì)開發(fā)的重要組成部分[2]。為此本文提出了一種基于FPGA對(duì)字符型液晶顯示器的控制方案。該方案不僅操作簡(jiǎn)單方便,而且占用資源少。
本設(shè)計(jì)中的液晶顯示控制器以EP1C6Q240C8芯片作為控制芯片,用Verilog HDL硬件描述語(yǔ)言編程,通過JTAG下載器下載,并利用Quartus II軟件進(jìn)行調(diào)試,實(shí)現(xiàn)了FPGA對(duì)1602字符型液晶顯示模塊的控制。
圖1為總體結(jié)構(gòu)。本設(shè)計(jì)是基于FPGA的LCD顯示模塊的控制。LCD顯示模塊接收來(lái)自于FPGA的控制信號(hào)和數(shù)據(jù),FPGA同時(shí)讀取LCD顯示模塊中的相關(guān)信息,這樣才能實(shí)現(xiàn)對(duì)LCD顯示模塊的控制。FPGA的最小系統(tǒng)包括電源、復(fù)位、時(shí)鐘、SDRAM、JTAG。FPGA一般先通過PC機(jī)使用JTAG下載器把程序燒寫到FPGA芯片上,不過這種方式在斷電以后程序會(huì)丟失,但是充分利用了FPGA的無(wú)限擦寫性。而通過AS(Active Serial Programming)模式下載,這樣便不會(huì)斷電丟失。所不同的是用AS模式下載時(shí),需先編程配置芯片(如EPCS1),然后再配置FPGA,這種模式適合于待產(chǎn)品開發(fā)成熟時(shí)選用[3]。
2.1 FPGA選型
FPGA(Field—Programmable Gate Array),即現(xiàn)場(chǎng)可編程門陣列,它是在可編程陣列邏輯PAL(Programmable Array Logic)、通用陣列邏輯GAL(Generic Array Logic)、復(fù)雜可編程邏輯器件CPLD(Complex Programmable Logic Device)等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。
本設(shè)計(jì)采用的是Altera公司的Cyclone低成本系列FPGA——EP1C6Q240C8,其工作電壓為3.3V,內(nèi)核電壓1.5V,內(nèi)部有2個(gè)鎖相環(huán),20個(gè)內(nèi)嵌乘法器,5980個(gè)邏輯單元(LEs),185個(gè)用戶I/O口,8個(gè)全局時(shí)鐘,資源豐富,可很好地滿足設(shè)計(jì)需要。
2.2 LCD顯示模塊
以深圳市創(chuàng)顯達(dá)電子有限公司的5V 1602字符型液晶顯示器作為本設(shè)計(jì)中的LCD顯示模塊。1602 LCD顯示模塊是指可以顯示兩行,每行16個(gè)字符的液晶顯示模塊。模塊內(nèi)置有顯示數(shù)據(jù)的DDRAM、字符發(fā)生存儲(chǔ)器CGROM和CGRAM。CGROM已經(jīng)存儲(chǔ)了160個(gè)不同的點(diǎn)陣字符圖,每一個(gè)字符都有一個(gè)固定的代碼。只需要向DDRAM輸入相應(yīng)字符的地址,就能從CGROM中讀取數(shù)據(jù),液晶屏就會(huì)輸出顯示相應(yīng)的字符[4]。
2.3 軟件設(shè)計(jì)
本設(shè)計(jì)是PC機(jī)通過JTAG下載器向FPGA發(fā)送指令來(lái)控制LCD顯示模塊。該設(shè)計(jì)的軟件部分采用Verilog HDL硬件描述語(yǔ)言。與之前較為熟悉的C語(yǔ)言相比,該語(yǔ)言的最大優(yōu)點(diǎn)是:它是一種非常容易掌握的硬件描述語(yǔ)言,語(yǔ)法與C語(yǔ)言類似。用Verilog HDL建模的最大優(yōu)點(diǎn)就是與工藝沒有關(guān)系,便于設(shè)計(jì)人員的修改設(shè)計(jì),極大地提高了設(shè)計(jì)效率。
1602字符型液晶顯示器是低頻顯示器件。一般51單片機(jī)控制該顯示器沒有問題,因?yàn)閱纹瑱C(jī)的時(shí)鐘頻率較低。該板卡用的晶振是50MHz,假如用它控制1602字符型液晶顯示器的話,那晶振頻率過高,由于液晶顯示器控制時(shí)序由于需要較長(zhǎng)的建立時(shí)間,假如不進(jìn)行分頻的話,顯示器則不能正常顯示。該軟件設(shè)計(jì)把FPGA系統(tǒng)50MHz分頻為500Hz作為L(zhǎng)CD顯示模塊的控制時(shí)鐘。
本軟件設(shè)計(jì)主要分為兩大模塊:時(shí)鐘分頻模塊CLK50M_500、顯示驅(qū)動(dòng)模塊LCD_show。其中時(shí)鐘分頻模塊CLK50M_500解決了FPGA驅(qū)動(dòng)LCD顯示模塊的時(shí)鐘頻率匹配問題。顯示驅(qū)動(dòng)模塊LCD_show解決的是LCD顯示模塊第一行、第二行字符以及漢字的顯示問題,為L(zhǎng)CD顯示模塊的正常顯示提供了核心軟件支持。
本文采用有限狀態(tài)機(jī)來(lái)實(shí)現(xiàn)顯示驅(qū)動(dòng)的核心邏輯[5]。有限狀態(tài)機(jī)是建立系統(tǒng)模型最為有效的手段,有著廣泛的應(yīng)用。綜合工具可以非常有效地將HDL語(yǔ)言描述的狀態(tài)機(jī)行為轉(zhuǎn)換成門級(jí)電路[6]。
狀態(tài)轉(zhuǎn)換如圖2所示。各狀態(tài)分別是:空閑模式、清屏、顯示開關(guān)設(shè)置、輸入方式設(shè)置、功能設(shè)置、寫數(shù)據(jù)模式狀態(tài)。初始狀態(tài)為空閑模式,開始寫數(shù)據(jù)時(shí)首先對(duì)LCD清屏,然后設(shè)置LCD的顯示開關(guān)以及輸入方式設(shè)置,再然后進(jìn)行功能設(shè)置,最后再寫入數(shù)據(jù)。在寫數(shù)據(jù)的同時(shí)檢測(cè)數(shù)據(jù)是否已寫完,若未寫完繼續(xù)寫數(shù)據(jù),若數(shù)據(jù)已寫完則進(jìn)入顯示開關(guān)設(shè)置狀態(tài),等待下一輪的數(shù)據(jù)讀寫。
圖2 狀態(tài)轉(zhuǎn)換圖
在該實(shí)驗(yàn)板上功能和時(shí)序驗(yàn)證成功之后,需要把編程之后的文件通過專用JTAG下載器燒寫至FPGA板卡。本設(shè)計(jì)在該實(shí)驗(yàn)板上輸出了“To my friend 田木”其中第一行是“To my friend”,第二行是“田木”,包括了英文字母和中文,達(dá)到了預(yù)期理論目標(biāo)。實(shí)際效果如圖3所示。
通過修改該Verilog程序可以改變LCD顯示模塊的顯示效果,效果如圖4所示。
當(dāng)然,還可以做些其他效果變化,例如光標(biāo)閃爍、文字更改、左移或者右移等等變化。如有興趣的可以自己做下,在此就不一一做演示。
圖3 顯示效果
圖4 顯示效果
本文利用Cyclone系列FPGA器件,實(shí)現(xiàn)液晶控制功能模塊的設(shè)計(jì)。采用Verilog HDL語(yǔ)言,運(yùn)用FPGA技術(shù),經(jīng)過一系列的模塊設(shè)計(jì),從行為級(jí)和RTL級(jí)上進(jìn)行綜合描述,并經(jīng)過Quartus II的編譯、綜合、驗(yàn)證、下載等過程,實(shí)現(xiàn)了核心設(shè)計(jì)方案的所有功能,最終在一片F(xiàn)PGA芯片上完成了對(duì)1602字符型液晶顯示模塊的控制。實(shí)際測(cè)試結(jié)果表明,本系統(tǒng)滿足對(duì)液晶顯示模塊的控制要求,達(dá)到了設(shè)想的效果。該接口控制器設(shè)計(jì)簡(jiǎn)潔可靠,在一些低速和低端的液晶顯示應(yīng)用中具有一定的使用價(jià)值。
[1]周興華.手把手教你學(xué)單片機(jī)C程序設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,2008.
[2]邵青.基于STM32F4x9的LCD顯示設(shè)計(jì)方案[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2014,14(6):82-83.
[3]華清遠(yuǎn)見嵌入式培訓(xùn)中心.FPGA應(yīng)用開發(fā)入門與典型實(shí)例[M].北京:人民郵電出版社,2008.
[4]陳立克,許存祿,辛遙,等.基于FPGA技術(shù)的液晶顯示控制器設(shè)計(jì)[J].微電子學(xué),2011,41(6):852-855.
[5]曹勇,沈斌,熊偉.SOPC中NiosII的LCD顯示驅(qū)動(dòng)IP設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2010,10(6):16-18.
[6]杜慧敏,李宥謀,趙全良.基于Verilog的FPGA設(shè)計(jì)基礎(chǔ)[M].西安:西安電子科技大學(xué)出版社,2006.
盛象飛(1991—),男,河南駐馬店人,碩士研究生,主要研究方向:fpga、單片機(jī)、硬件電路。