




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、摘要:隨著人們生活水平的提高,對顯示器的要求也隨之提高了。液晶作為一種新興的顯示器,以其節(jié)電、低輻射、體積小、散熱小等優(yōu)點,迅速成為最受歡迎的顯示器之一。并且它不僅能把想要知道的數(shù)據(jù)以數(shù)字形式表示出來,它甚至可以很直觀方便的以漢字與圖表的形式表示出來,后者的功能是一般的七段LED數(shù)碼管所不能實現(xiàn)的。而且液晶顯示器是純數(shù)字設備因此與此連接的設備也是數(shù)字的,從而可以減少在數(shù)模轉換過程中的信號損失和干擾,其次不需要進行時鐘頻率、向量的調(diào)整。而基于FPGA控制的液晶顯示器以其快速性和穩(wěn)定性的優(yōu)勢受到了越來越多的研究。本設計我們采用的液晶的型號是GDM12864,在理解其顯示原理和引腳結構的基礎上,把該
2、液晶分為8頁,這樣可以只用其中的一部分來進行顯示。我們主要設計的是顯示模塊部分的編程,為了簡化設計,把該部分分為控制顯示程序和字庫的調(diào)用模塊。字庫對于編寫控制模塊的程序,我們要用到Quartus II軟件來編譯和仿真程序。Quartus II軟件自帶的仿真器支持波形文件作為激勵。 關鍵字:液晶 FPGA Quartus II 控制一引言1.1課題的來源、意義近年來越來越多的設備上都是用液晶進行顯示的,它與傳統(tǒng)的CRT顯示器相比最大的優(yōu)點就是耗電更量低并且體積更小。一般說來,液晶的耗電量還不到CRT顯示器的一半,而體積還不到后者的1/4。而相比較于LED數(shù)碼管,它可以顯示的信息要更豐富。我們都知
3、道,LED數(shù)碼管只能顯示數(shù)字,這對于普通設備上的簡單顯示也就足夠了,但對于稍微復雜的字母漢字以及圖像的顯示,就完全不能和液晶顯示器相比了。所以單從人機交互的方面考慮,液晶無疑是最理想的,從而液晶顯示器成為了現(xiàn)在工業(yè)儀表和工業(yè)控制等領域的主流顯示器。由于用普通的原理圖方式來設計和管理包含上萬甚至幾十萬、上百萬個晶體管的集成電路是十分復雜甚至不可能實現(xiàn)的,而這正是FPGA芯片的優(yōu)點所在。而且近幾年用綜合工具把可綜合風格的HDL模塊轉換成具體電路發(fā)展非常迅速,大大提高了復雜數(shù)字系統(tǒng)的設計生產(chǎn)率。所以 FPGA產(chǎn)品已經(jīng)從最初的通信行業(yè)擴展到消費電子、軍事航天、汽車電子等行業(yè)。而傳統(tǒng)的用于控制液晶顯示的
4、單片機或由于運算速度方面不是令人滿意,顯示顯示效果并不理想。研究人員因而把目標轉移到芯片上來。1.2課題的研究意義和發(fā)展現(xiàn)狀1.2.1課題的研究意義現(xiàn)代計算機與通信系統(tǒng)的電子設備中廣泛使用了數(shù)字信號處理的專用集成電路。它們主要用于數(shù)字信號的傳輸所必須的濾波、變換、編碼、解碼、加密、解密、校驗、壓縮、解壓等,對于處理這些以大量的數(shù)學運算為基礎的處理,傳統(tǒng)的C、Pascal、Fortran、Basic語言或匯編語言這幾種常用的編程語言都可以。如果只研究算法,只在通用的計算機上運行程序或利用通用的CPU來設計專用的微處理器嵌入系統(tǒng),掌握上述語言就足夠了。如果需要設計和制造能進行快速計算的硬件邏輯專用
5、電路,必須學習數(shù)字電路的基本知識和硬件描述語言。因為現(xiàn)代復雜數(shù)字邏輯系統(tǒng)的設計都是借助于EDA工具完成的,無論電路系統(tǒng)的仿真和綜合都需要掌握硬件描述語言。近年來數(shù)字信號處理(DSP)系統(tǒng)的研究人員一直在致力于研究出更快的算法來實現(xiàn)對信號的即時處理。當產(chǎn)生比較可靠的算法后,就通過各種編程語言及仿真軟件來仿真實現(xiàn)。但隨著信息技術的快速發(fā)展以及人們對設備的智能化、微型化、低功耗方面的要求的提高,很多工程項目都要求系統(tǒng)的實時響應。所以我們的處理系統(tǒng)在接受到信號后必須在毫秒甚至微秒級的時間內(nèi)處理完成并送到的相應的輸出模塊中。這時通用的微處理器或專用與信號處理的微處理器顯然是無法實現(xiàn)的。對于這些復雜的運算
6、,只能用專用的高速硬線邏輯電路即FPGA器件來實現(xiàn)。在FPGA的高速大規(guī)模集成電路的基礎上實現(xiàn)對數(shù)字信號的實時處理。而現(xiàn)代專用集成電路的設計是通過電子設計自動化(EDA)工具實現(xiàn)的。1.2.2課題的發(fā)展前景FPGA可以用硬件描述語言(HDL)的程序設計硬件,其好處主要體現(xiàn)在:理解容易,電路的調(diào)試速度快,維護簡單,有很多易于掌握的仿真、綜合和布局布線工具,還有可以用C語言配合HDL來做邏輯設計的布線前后的仿真并驗證功能是否正確。CPLD能完成任何數(shù)字器件的功能。上至高性能CPU,下至簡單的74系列電路,都可用CPLD實現(xiàn)。這些器件如同一張白紙或是一堆積木,可以通過原理圖或硬件描述語言自由設計一個
7、數(shù)字系統(tǒng)。再通過QuartusII等軟件仿真,還可以事先驗證設計的正確性。在完成PCB以后,還可以利用在線修改能力,隨時修改設計而不必改動硬件電路。 使用CPLD器件,可以大大縮短設計時間,支持可重復擦寫,減少PCB面積,提高系統(tǒng)的可靠性。PLD的這些優(yōu)點使得它在90年代后得到飛速發(fā)展。 二 點陣式液晶顯示控制模塊的原理介紹2.1點陣式液晶顯示控制模塊基本原理2.1.1 顯示控制模塊的基本原理該模塊通過對FPGA芯片編程,并通過調(diào)用顯示文件中的字庫,把相應的二進制顯示代碼逐條送到顯示驅動電路,再經(jīng)放大后送到點陣式液晶顯示出來。2.1.2顯示控制模塊的原理框圖我們根據(jù)對點陣式液晶顯示控制模塊的描
8、述,設計如圖的原理框圖。 顯示驅動控制器顯示控制電路顯示驅動電路顯示液晶(LCD)顯示ROM配置電路控制信號控制信號驅動時序顯示數(shù)據(jù)顯示數(shù)據(jù)顯示數(shù)據(jù) 圖2 1 點陣式液晶顯示控制模塊框圖圖中是用來做主控制芯片的,相當于一個微控制器。顯示中包含有要顯示的字庫或圖形的代碼,就是通過顯示控制電路查詢并調(diào)用其二進制代碼,送到點陣式液晶進行顯示。顯示與是兩個分別獨立的部分,所以對于相同的控制程序,只需改變要顯示的中的字庫就可以改變顯示內(nèi)容,而不必對做另外的修改。通過這種方式控制設計的硬件的好處在于易于理解、易于維護、調(diào)試電路速度快、有很多易于掌握的仿真、綜合和布局布線工具,還可以用C語言配合HDL來做邏
9、輯設計的布線前和布線后仿真并驗證功能是否正確。2.2系統(tǒng)硬件介紹2.2.1 GDM 12864圖形點陣式液晶的介紹一、 GDM 12864的硬件組成LCD PANEL128×64 DOTS6464IC3 64內(nèi)藏負壓電 路DB0DB78 RETVEED/I,R/W3CS2CS1IC2IC1 圖2 2點陣式液晶主要硬件構成原理圖 如上面圖2 2所示,是GDM 12864的原理圖。其中IC3為行驅動器,IC1和IC2分別為左半個和右半個液晶的列驅動器。三、GDM 12864的工作時序 RSR/WEADDRESSN N+1N+2 OutputAddress NAddress N+1 reg
10、isterBusy Wire Busy Read dataBusy Read dataDB0-DB7Check address check address N check address N+1圖2-3 GDM12864引腳時序圖輸入輸出緩沖寄存器(I/O) 輸入緩沖控制器控制決定芯片是否可用。如果CS1和CS2是上升沿,輸入或輸出數(shù)據(jù)不會動作,因此內(nèi)部數(shù)據(jù)不變。但是RSTB和ADC卻可以照常運行,不受其影響。輸入寄存器 輸入寄存器用來連接不同運行頻率的嵌入式微處理器(MPU)而且輸入寄存器還用來暫時存儲沒寫入顯示的數(shù)據(jù)。當CS1和CS2是正值時,R/W和RS選擇輸入寄存器,來自MPU的數(shù)據(jù)寫
11、到輸入寄存器,并送到顯示RAM。鎖存器的數(shù)據(jù)在使能信號E的下降沿自動寫入顯示數(shù)據(jù)RAM。輸出寄存器 當CS1和CS2是上升沿并且RS=H,被存儲的顯示RAM的數(shù)據(jù)送到輸出寄存器,輸出寄存器存儲顯示RAM的臨時數(shù)據(jù)。當CS1和CS2是上升沿并且R/W=H,RS=L時,數(shù)據(jù)總線的數(shù)值就能讀出了。重置打開電源時對RSTB終端設置一個較低的值,系統(tǒng)能夠被初試化。當RSTB是0時,系統(tǒng)從MPU接受指令,接下來的程序就可以運行了。忙碌標記 忙碌標記決定KS0108B是否運行。當忙碌標記是高電平時,KS0108B在內(nèi)部運行,當忙碌標記是低電平時,KS0108B就可以就收數(shù)據(jù)或命令了。顯示開關觸發(fā)器顯示開關觸
12、發(fā)器決定晶振的開關。當觸發(fā)器置0時,選擇性和非選擇性的電壓都會體現(xiàn)在輸出端子部分;當觸發(fā)器置1時,不管顯示RAM的數(shù)據(jù)是什么,非選擇性電壓都會傳輸?shù)捷敵龆俗?。顯示開關觸發(fā)器能夠通過指令改變狀態(tài)。當RSTB是低電平時,顯示數(shù)據(jù)就會消失,觸發(fā)器的狀態(tài)就會通過讀指令輸出到DB5。X頁寄存器X頁寄存器表明內(nèi)部消失數(shù)據(jù)RAM的頁數(shù)。計數(shù)功能取消,相應的地址被指令置1。Y地址計數(shù)器Y地址計數(shù)器指定內(nèi)部顯示RAM的數(shù)據(jù)地址。該地址被指令置1并且伴隨讀寫顯示數(shù)據(jù)自動加1。1四、 GDM 12864的主要參數(shù)指標 GDM 12864是一種圖形點陣液晶顯示器,它主要由行驅動器和列驅動器以及128×64全
13、點陣液晶顯示器組成,可完成圖形顯示,也可以顯示8×4個的(16×16點陣)漢字。主要技術參數(shù)和性能指標:1。電源:VDD 為+5V。模塊內(nèi)自帶-10V負壓,用于LCD的驅動電壓;2。顯示內(nèi)容:128(列) ×64(行)像素點;3。全屏幕點陣;4。七種指令;5。與CPU接口采用8位數(shù)據(jù)總線并行輸入輸出和8條控制線;6。占空比:1/64;7。工作溫度:-10 +55,存儲溫度:-20+60;2.2.2 FPGA芯片的介紹在本設計中我們采用ALTERA公司MAX7000系列的FPGA芯片。該系列有四個專用輸入,它們可以作為每個宏單元和I/O引腳的高速、全局控制信號,如時
14、鐘(clock)、清除(Clear)和輸出使能(Output Enable)等。MAX7000的邏輯陣列塊(LAB)有16個宏單元組成,多個LAB通過可編程連線陣列(PIA)和全局總線;連在一起。全局總線有所有的專用輸入、I/O引腳和宏單元的提供信號。LAB的輸入信號有:來自通用邏輯輸入的PIA的36個信號;用于寄存器的輔助功能的全局控制信號;從I/O引腳到寄存器的直接輸入通道,用于實現(xiàn)高密度的MAX7000器件的快速建立時間。在MAX7000中邏輯陣列實現(xiàn)組合邏輯,給每個宏單元提供5個乘積項。乘積項選擇矩陣分配這些乘積項作為到或門和異或門的主要輸入邏輯,以實現(xiàn)組合邏輯函數(shù),或把這些乘積項作為
15、宏單元組中觸發(fā)器的輔助輸入,即清除(Clear)、置位(Preset)、時鐘(Clock)和時鐘使能(Clock Enable)控制。每個宏單元的一個乘積項可以反向后回會送到邏輯陣列。這個可共享的乘積項能夠連接到同一個LAB中任何其他乘積項上。根據(jù)設計的邏輯需要,Quartus II開發(fā)環(huán)境將自動優(yōu)化乘積項的分配。作為寄存器功能,每個宏單元的觸發(fā)器可以單獨地編程為具有可編程時鐘控制的D觸發(fā)器、T觸發(fā)器、SR觸發(fā)器或JK觸發(fā)器。另外,只要需要,也可將觸發(fā)器旁路,實現(xiàn)組合邏輯工作方式。每個觸發(fā)器也支持異步清除和異步置位功能,乘積項現(xiàn)在矩陣分配乘積項去控制這些操作。雖然乘積項驅動觸發(fā)器的置位和復位信
16、號是高電平有效,但是,在邏輯陣列中將信號反向可得到低電平有效控制。此外,每一個觸發(fā)器的復位功能可以由低電平有效的、專用的全局復位引腳GCLRn提供。所有與I/O引腳有關的MAX7000的宏單元都具有快速輸入功能。這些宏單元的觸發(fā)器有的直接來自I/O引腳輸入通道,它旁路了PIA和組合邏輯。這些直接輸入通道允許觸發(fā)器作為具有快速輸入建立時間(3us)的輸入寄存器。22.2.3 Verilog HDL介紹Verilog是專門為復雜數(shù)字系統(tǒng)的設計仿真而開發(fā)的,本身就非常適合復雜數(shù)字邏輯電路和系統(tǒng)的仿真和綜合。由于Verilog在其門級描述的底層,也就是在晶體管開關的描述方面比VHDL有更強的功能。采用
17、Verilog輸入法的最大優(yōu)點是其與工藝無關。對于設計出實際的電路,工程師在設計功能和驗證邏輯階段,只需要利用系統(tǒng)設計時對芯片的要求,而不必過多考慮門級及工藝實現(xiàn)的具體細節(jié)。邏輯校驗與具體工藝庫的匹配、布線及時延計算可利用計算機的超強能力并在EDA工具的幫助下來實現(xiàn),并最終把人們從繁瑣的設計中解放出來。三 液晶顯示控制模塊的程序設計3.1Quartus II軟件的簡單介紹對于編寫控制模塊的程序,我們要用到Quartus II軟件來編譯和仿真程序。Quartus II軟件自帶的仿真器支持波形文件作為激勵,其常見的格式主要有基本圖形波形文件(VWF)、壓縮的二進制型的VWF(CVWF)、基于文本的
18、輸入文件(VEC)、MAXPLUS II軟件圖形波形文件(SCF)、基于文本的輸出文件(TBL)、Tcl/TK腳本,但是對于Verilog和VHDl的測試文件只能用第三方的仿真器進行仿真了。Quartus II軟件可以非常方便地實現(xiàn)從波形文件到HDL測試文件的轉換。對于編寫測試文件不熟悉的,還可以先讓Quartus II軟件圖形方法產(chǎn)生激勵文件,再轉換成HDL測試文件,輸入到第三方仿真器進行仿真。而且還可以讓軟件生成測試的模板,再手動加入激勵。此外Quartus II軟件支持斷點功能,可根據(jù)仿真的需要預先設置斷點,而且還可以在仿真結果中加入自動輸出的設計引腳并檢查實際的仿真結構是否與預設的結果
19、一致。3.2模塊的原理框圖主顯示控制模塊液晶屏ROM顯示數(shù)據(jù)數(shù)據(jù) 地址圖3-1 顯示控制模塊的原理框圖如上面3-1框圖所示,該控制模塊通過地址遞增調(diào)用ROM模塊中的字庫文件,并把相應的16進制文件傳輸?shù)斤@示控制模塊中,再通過控制模塊把要顯示的數(shù)據(jù)送到液晶屏上,就可以顯示漢字了。在這里為了設計的簡便,我們不打算用整塊液晶來顯示漢字,而是只用其中的一部分來顯示。這就要用到對液晶的分頁,我們只用其中的兩個頁進行顯示。下面圖3-2是液晶分頁后的結構。數(shù)據(jù)輸入/輸出緩沖器數(shù)據(jù)通道八選一選擇器顯示數(shù)據(jù)鎖存器 80位8 顯示ROM單元 8位 位 第一頁(64字節(jié)×8位) 第二頁(64字節(jié)×
20、;8位)第三七頁第八頁(64字節(jié)×8位)Z地址計數(shù)器X地址寄存器0 1-3EH3FHY地址計數(shù)器數(shù)據(jù)總線 1 I 8 96364行號D0ID7D0ID7圖3-2顯示存儲器結構3.3 主顯示控制模塊的設計(一)介紹將要用到的引腳:clock:主控制時鐘;db:輸出數(shù)據(jù);cs:片選信號;e:使能信號;rs:寄存器的選擇信號;rw:讀寫控制信號;data_in:從ROM中輸入數(shù)據(jù);en:流動顯示使能信號;rom_address:ROM地址;以上這些信號都是設計程序所必須的,它們都是主要的輸入輸出引腳。(二)程序的初始化部分由于每次通過數(shù)據(jù)線傳送的ROM數(shù)據(jù)是兩個16進制的,所以對于data
21、_in,我們選擇8位的就可以了。同樣,向液晶傳送數(shù)據(jù)的db引腳,也應該是8位的。對于片選信號,由于只是左半個液晶和有半個液晶,因此需要選兩位。而對于要傳送ROM地址的rom_address,由于數(shù)據(jù)有幾百個,所以選用10位的。該控制模塊系統(tǒng)有五個狀態(tài)的有限狀態(tài)機,因此state只需要四位。這五個狀態(tài)位分別為:空閑狀態(tài)“Idle=4b0000”,寫頁面地址狀態(tài)“Xpage=4b0001”,寫列地址狀態(tài)“Yline=4b0010”,寫數(shù)據(jù)狀態(tài)“data=4b0100”,顯示狀態(tài)“Display=4b1000”。當狀態(tài)機處于Xpage時,寄存器的選擇信號為0,讀寫信號也為0,按照上文介紹的指令格式“
22、1 0 1 1 1 P2 P1 P0”,把頁面地址傳輸?shù)綌?shù)據(jù)總線上。當狀態(tài)機處于Yline狀態(tài)時,寄存器的選擇信號和讀寫信號也同時為0,并將列地址“0 1 C5 C4 C3 C2 C1 C0”傳輸?shù)綌?shù)據(jù)總線上,在列地址中的C5C0指代063的列地址。當狀態(tài)機處于Data狀態(tài)時,寄存器的選擇信號為1,讀寫信號為0,這樣可將ROM模塊中的數(shù)據(jù)傳輸?shù)綌?shù)據(jù)總線上。當全部把這8個頁面掃描完一遍時,狀態(tài)機進入Display狀態(tài),此時寄存器的選擇信號和讀寫信號又同時變?yōu)樽優(yōu)?,并將指令“0 0 1 1 1 1 1 1”傳輸?shù)綌?shù)據(jù)總線上。所以程序的初始化部分為:module xianshi(clock,db,
23、cs,e,rs,rw,data_in,en,rom_address);input clock,en;input7:0 data_in;output1:0 cs;output rs,rw,e;output7:0 db;output9:0 rom_address;reg d;reg2:0 n;reg3:0 state;reg1:0 cnt1; /計算器產(chǎn)生使能信號ereg9:0 cnt2; /列計數(shù)reg9:0 cnt3; /移位分頻reg7:0 cnt4; /移位地址差reg en1,rs,rw;reg7:0 db;reg9:0 rom_address;parameter Idle =4'
24、;b0000;parameter Xpage =4'b0001;parameter Yline =4'b0010;parameter Data =4'b0100;parameter Display=4'b1000;(三)分頻程序的設計和FPGA相比較而言,液晶是慢速設備。如果液晶處于“忙”的狀態(tài),則液晶對所有操作都會無效,所以每次要對液晶寫操作之前都必須通過其狀態(tài)寄存器判斷液晶是否處于“忙”的狀態(tài)。但是在本設計中,由于對輸出的控制簡單,我們采取延時的辦法來實現(xiàn)對液晶的判斷,即在每次對液晶寫操作以后延時一段時間再進行下一次的寫操作,用這種方法同樣可以使每次操作都有
25、效。在這里我們對液晶采用一個較低的時鐘頻率,也就相當于給液晶加延時了。為了不另外再加一個晶振,這個低頻時鐘就可以對FPGA的晶振頻率分頻。根據(jù)經(jīng)驗數(shù)據(jù)表明,對晶振四分配就足夠了,而且也不會影響液晶的刷新。四分頻的程序代碼為:always(posedge clock)/對clock四分頻產(chǎn)生使能信號e; cnt1<=cnt1+1;always(cnt1) if(cnt1=0) d<=1; else d<=0;assign e=d;通過對上面的程序用Quartus II軟件編譯仿真無錯誤后就可以生成一個如圖-四分頻的波形文件,從圖中我們可以很明顯看出,四個clock時鐘周期的時間
26、正好等于一個e的時鐘周期的時間??梢宰C明四分頻的程序是正確的。圖3-3四分頻的波形圖(四)液晶屏的刷新顯示程序對于液晶屏,我們是采用逐行掃描的刷新方式實現(xiàn)顯示的。這里主要是當液晶屏的一行顯示滿后,就對下一行掃描。主要程序代碼為:always(posedge d) /列計數(shù) if(state=Data) begin if(cnt3<63) cnt2=cnt2+1; else cnt2=0; endalways(posedge d) /行計數(shù) if(cnt3=63) n<=n+1;(五)移位程序的設計 在本設計中,我們要實現(xiàn)被顯示的內(nèi)容能夠在液晶屏上從左到右逐行移動,這就需要移位時鐘的
27、控制。通過移位時鐘使ROM中的數(shù)據(jù)逐行在液晶屏上滾動顯示。相應的移位時鐘的程序代碼為:if(cnt3=63) n<=n+1; always(posedge d) if(en) cnt3<=cnt3+1; else cnt3<=0;always(posedge d) if(en) begin if(cnt3=1023) en1<=en1; end else en1<=0;always(posedge en1) if(en) cnt4<=cnt4+1; else cnt4<=0;(六)狀態(tài)機的設計狀態(tài)機的三要素為:狀態(tài)、輸入、輸出。狀態(tài)機當前所處的狀態(tài)是由
28、一組觸發(fā)器構成的狀態(tài)寄存器來記憶的。如果說一個整體寄存器由n個觸發(fā)器構成,那么這個寄存器就可以存儲2n個狀態(tài)。所有觸發(fā)器的時鐘端都連接在同一個觸發(fā)時鐘上,從而所有的狀態(tài)的改變都只能發(fā)生在時鐘的跳變沿時刻。如前面所述,本設計的狀態(tài)機包含五個狀態(tài),當狀態(tài)機處于不同狀態(tài)時,相應的寄存器選擇信號和讀寫控制信號跟著作相應的變化,進而控制液晶屏的顯示。該功能的程序代碼為:always(posedge d) /狀態(tài)機設計 if(!en1) state<=Idle; else case(state) Idle:begin rs<=0;rw<=0; if(en1) state<=Xpag
29、e; else state<=Idle; end Xpage:begin rs<=0;rw<=0;db<=184+n; state<=Yline; end Yline:begin rs<=0;rw<=0;db<=64; state<=Data; end Data:begin rs<=1;rw<=0; if(n=3)|(n=4) db<=data_in; /在第三、四頁顯示漢字 else db<=0; if(n=7)&&(cnt2=63) state<=Display; else if(cnt2&
30、lt;=63) state<=Data; else state<=Xpage; end Display:begin rs<=0;rw<=0;db<=63; end endcasealways(cnt2,n,cnt4) /存儲器的地址計數(shù)if(n=3) rom_address<=343+cnt2-cnt4; /343和478是第三、四行數(shù)據(jù)else if(n=4)rom_address<=478+cnt2-cnt4; /在ROM中存儲的起始地址else rom_address<=0;為了使設計簡便,我們把液晶屏分為了8頁,每一頁都是64字節(jié)
31、5;8位。我們也把要顯示的字庫的像素做成是16×16的,所以,我們只需要在液晶的三、四頁顯示就足夠了。(七)顯示模塊的綜合仿真 如圖3-4是我們把以上各段程序綜合成一段程序后仿真出來的波形文件的截圖。從圖中可以看出輸出數(shù)據(jù)與地址線上的數(shù)據(jù)相對應。圖3-4液晶控制的仿真結果3.3 ROM模塊的設計ROM模塊根據(jù)控制模塊“rom_address”傳送過來的地址,查詢出相應的顯示數(shù)據(jù)再通過“data_in”傳送到控制模塊。這樣就完成了從ROM模塊中的數(shù)據(jù)的調(diào)用。而且對于液晶顯示,我們不用考慮像LED一樣的共陰與共陽,只要把液晶的哪個像素接上高電平,哪個像素就可以發(fā)光了。ROM中最主要的部分
32、就是對字庫數(shù)據(jù)的定義和讀取。而對于字庫,我們先考慮字庫的生成。對于要顯示的漢字,首先要通過字模提取軟件把要顯示的“河北大學”四個字的16進制數(shù)提取出來。首先通過字模提取軟件提取“河”的字庫,如圖2-5所示,16×16像素的漢字已經(jīng)可以顯示地很清晰了,同時我們通過該軟件獲得相應的字庫的16進制代碼:DB 08h, 20h, 84h, 20h, 46h, 7Fh, 60h, 80hDB 41h, 00h, 47h, 0F0h, 44h, 20h, 44h, 20hDB 44h, 20h, 4Fh, 0F0h, 44h, 02h, 40h, 01hDB 7Fh, 0FEh, 0C0h, 0
33、0h, 40h, 00h, 00h, 00h圖2-5漢字“北”的16×16像素的顯示圖片如圖2-6。并同樣得到16進制的字庫代碼:DB 00h, 04h, 04h, 06h, 04h, 04h, 04h, 08hDB 04h, 08h, 0FFh, 0FEh, 00h, 00h, 00h, 00hDB 0FFh, 0FCh, 04h, 02h, 08h, 02h, 10h, 02hDB 30h, 02h, 00h, 02h, 00h, 0Eh, 00h, 00h圖2-6漢字“大”的16×16像素的顯示圖片如圖2-7。并同樣得到16進制的字庫代碼:DB 04h, 00h, 0
34、4h, 02h, 04h, 02h, 04h, 04hDB 04h, 08h, 04h, 30h, 05h, 0C0h, 0FEh, 00hDB 05h, 80h, 04h, 60h, 04h, 10h, 04h, 08hDB 04h, 04h, 0Ch, 06h, 04h, 04h, 00h, 00h圖2-7同上得到如圖2-8的“學”顯示效果以及字庫代碼:圖2-8在ROM塊的設計,由于ROM模塊中應該存儲大量的字庫數(shù)據(jù),所以普通的對寄存器賦值的方法要想實現(xiàn)對ROM塊十分復雜。鑒于此,我們決定用查詢文件的方式對ROM模塊賦值。通過查詢資料,我們發(fā)現(xiàn)能夠對存儲器賦值的函數(shù)有$readmemb和$
35、readmemh。函數(shù)$readmemb的使用形式是“$readmemb(”ram.patt”,ROMB);”,在這里ram.patt是包含數(shù)據(jù)的文本文件,并且ram.patt必須包含二進制值。但是把通過字模提取的字庫一般都是十六進制的,這就需要我們自己把十六進制轉換成二進制,這同樣也是十分繁瑣的。而對于函數(shù)$readmemh,其使用格式為:“$readmemh”(F:/design/input.txt”,input);”在這里的input.txt支持十六進制的數(shù)據(jù)。這可以簡化我們大量的數(shù)據(jù)轉化的時間,所以我們選擇后者。因此,ROM模塊的程序代碼為:module memory(clock,da
36、ta);input clock;output data;reg9:0address;reg 7:0 data;reg 7:0 memh1023:0;always(posedge clock) begin data<=memhaddress;if(address=16'hff)address=0;elseaddress=address+1;end$readmemh("F:/design/rom.txt",memh);Endmodule在這段程序里,我們首先定義了一個寄存器memh,它通過$readmemh函數(shù)把要顯示的字庫傳送到寄存器中。再通過顯示模塊的傳送來的
37、地址,把相應地址中的數(shù)據(jù)傳輸?shù)斤@示模塊。最后把上面的的字庫代碼都寫入到txt文件中,并給該文件命名為rom.txt,放在上面的指定的目錄上就可以被函數(shù)$readmemh調(diào)用了。結論 在本課題的設計,我翻閱了大量關于FPGA資料,所以我對FPGA的基礎知識和系統(tǒng)的開發(fā)流程有了進一步的了解。雖然本人設計的系統(tǒng)簡單,但在設計過程中的不斷發(fā)現(xiàn)問題解決問題,我已經(jīng)對系統(tǒng)開發(fā)過程有了一個更清晰的認識。 本次設計的基于FPGA的點陣式液晶顯示控制模塊,結構簡單,能夠十分方便地把要顯示的漢字通過調(diào)用字庫文件實現(xiàn)。且本設計控制的液晶的分辨率是128×64的,它可以十分清晰地顯示內(nèi)容,甚至圖形信息。 由
38、于本人水平和精力有限,系統(tǒng)設計出來后還是有很多不完善的地方。如對要顯示的字庫,為了設計的簡便,做的是16×16像素的,只能在液晶的一小部分上顯示。而且由于時間倉促,也沒有做出真正的實物系統(tǒng)來。致謝經(jīng)過兩個月的時間,本此畢業(yè)論文經(jīng)過數(shù)次修改終于順利完成了。在此期間通過大量翻閱資料和網(wǎng)絡查詢,我掌握了很多在課堂上學不到的知識,使我的學習能力有了極大的提高。這讓我在以后的工作中如果在遇到技術難題,有了一個科學的解決思路。雖然這里面有本人的一點努力,但是離不開最近幾年來河北大學各位老師對我的悉心培養(yǎng)。但是更離不開指導教師余翎對我的耐心指導。余老師在我的論文選題和設計思路上給了我很大啟發(fā),我在
39、論文寫作過程中遇到的很多實際問題都是在余老師的幫助下解決的。而且讓我認識到做論文和做設計都必須踏踏實實,這樣才能在以后的工作中稱為一個對社會有用的人。在此一并表示由衷的感謝。參考文獻1 胡遠望 基于FPGA的液晶串口控制實現(xiàn) 電子工程師 2008年 09期 2 龍燕; 李劍峰; 曹科峰; 曹寧翔 以FPGA為核心的液晶顯示電路設計與實現(xiàn) 液晶與顯示 2006年 03期 3 覃永新; 陳文輝; 李克儉 基于FPGA的液晶顯示控制器的研制 制造業(yè)自動化 2008年 04期 4 袁文波 FPGA應用開
40、發(fā)從實踐到提高 中國電力出版社 20075梅楠楠;徐科軍LCD顯示驅動器的設計與實現(xiàn) 中國儀器儀表 2007-09-256吳其琦;章帆 基于FPGA的LCD驅動芯片的設計 廣西工學院學報 2008-09-257 J.A. Kalomiros J. Lygouras Design and evaluation of a hardware/software FPGA-based system for fast image processing 8夏宇文 Verilog數(shù)字系統(tǒng)設計教程 北京航空航天大學出版社 2003.79任曉東 文博 CPLD/FPGA
41、高級應用開發(fā)指南 電子工業(yè)出版社 2003.610趙雅興 FPGA原理、設計與應用 天津大學出版社 2002.3附錄顯示模塊的程序代碼:/*信號定義說明clock: 時鐘;db: 輸出數(shù)據(jù);cs: 片選信號;e: 使能信號;rs: 寄存器選擇信號;rw: 讀寫控制信號;data_in: 從ROM中輸入數(shù)據(jù);en: 流動顯示使能信號;rom_address:ROM地址. */module xianshi(clock,db,cs,e,rs,rw,data_in,en,rom_address);input clock,en;input7:0 data_in;output1:0 cs;output r
42、s,rw,e;output33:0 db;output33:0 rom_address;reg d;reg32:0 n;reg32:0 state;reg32:0 cnt1; /計算器產(chǎn)生使能信號ereg32:0 cnt2; /列計數(shù)reg32:0 cnt3; /移位分頻reg32:0 cnt4; /移位地址差reg en1,rs,rw;reg33:0 db;reg33:0 rom_address;parameter Idle =4'b0000;parameter Xpage =4'b0001;parameter Yline =4'b0010;parameter Dat
43、a =4'b0100;parameter Display=4'b1000;assign cs=2'b01; /片選always(posedge clock)/對clock四分頻產(chǎn)生使能信號e; cnt1<=cnt1+1;always(cnt1) if(cnt1=0) d<=1; else d<=0;assign e=d;always(posedge d) /列計數(shù) if(state=Data) begin if(cnt3<63) cnt2=cnt2+1; else cnt2=0; endalways(posedge d) /行計數(shù) if(cnt3
44、=63) n<=n+1; /移位時鐘always(posedge d) if(en) cnt3<=cnt3+1; else cnt3<=0;always(posedge d) if(en) begin if(cnt3=1023) en1<=en1; end else en1<=0;always(posedge en1) if(en) cnt4<=cnt4+1; else cnt4<=0;always(posedge d) /狀態(tài)機設計 if(!en1) state<=Idle; else case(state) Idle:begin rs<=0;rw<=0; if(en1) state<=Xpage; else state<=Idle; end Xpage:begin rs<=0;rw<=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 安徽省淮南市潘集區(qū)2024-2025學年九年級上學期期末化學試題(含答案)
- 清朝領導考試試題及答案
- 市場經(jīng)濟學試題及答案
- 管理沙盤面試題及答案
- 2019-2025年軍隊文職人員招聘之軍隊文職管理學與服務提升訓練試卷A卷附答案
- 2019-2025年軍隊文職人員招聘之軍隊文職管理學題庫附答案(典型題)
- 煙草公司2025招聘考試全真模擬筆試試題(綜合能力測試卷)和答案解析
- 鼻飼操作及胃管誤入氣道案例分析培訓課件
- 房產(chǎn)稅務知識培訓課件
- 鉆石專業(yè)知識培訓課件
- 教科版科學五年級下冊《生物與環(huán)境》單元教材解讀及教學建議
- 11471勞動爭議處理(第9章)
- 兒科-補液-液體療法課件
- 口腔健康教育和促進
- 紀檢監(jiān)察線索處置與談話策略-課件
- 廣州市建設項目代建合同穗政合同示范文本004號
- 經(jīng)濟效益證明(模板)
- 接力版六年級下冊小學英語 Lesson 4 Sally is going to Beijing. 第一課時 教案(教學設計)
- 食堂蔬菜品種及質量標準
- 《大數(shù)據(jù)分析與應用》教學大綱
- FZW2812F(FDR)型用戶分界真空負荷開關安裝使用說明書完
評論
0/150
提交評論