基于Nios II的非一般模式類設(shè)備設(shè)計與集成
摘要:在Nios II的開發(fā)過程中,硬件抽象層提供多種一般模式類設(shè)備,使得開發(fā)者可以高效的在系統(tǒng)中添加并使用這些設(shè)備。然而對不屬于一般模式類的新設(shè)備的使用將不能按照原有的設(shè)計方法進行系統(tǒng)開發(fā)。為此,需要根據(jù)Nios II內(nèi)部總線規(guī)范提供一個設(shè)備驅(qū)動,并按照SOPC Builder要求集成到硬件抽象層中。通過設(shè)計并集成非字符型液晶顯示模塊得出結(jié)論:任何非一般模式類設(shè)備均可加載到Nios II系統(tǒng)中并能正常工作。
關(guān)鍵詞:液晶顯示;Nios II;Avalon總線;設(shè)備集成
中圖法分類號:TN911.72 ;TP319 文獻標識碼:A 文章編號:
Design and integration of special device based on Nios II
MA Sen,LV Yue,LI Zhi-ping
(College of Information Engineering,Capital Normal University,Beijing 100037,China)
Abstract: During the development process of Nios II, hardware abstract layer provided a variety generic device model classes. The developer can make efficient use of the system and added to the equipment. However, such models do not fall within the general use of the new equipment. It will not be in accordance with the original design of systems development methods. To solve this problem, a device driver which in accordance with the Nios II internal bus norms have to been provided, and integrate into HAL with requirements of SOPC Builder. Through the design and integration of non-Character LCD module, the results show that: any new equipment can included in the Nios II system and to normal work.
Key Words: LCD modulate;Nios II;Avalon bus;Device integration
引言
液晶顯示器具有低工作電壓、功耗小、重量輕、厚度薄、長壽命、無電磁輻射、不耀眼、抗干擾性好、抗震性能好、有效顯示面積大、適于大規(guī)模集成電路直接驅(qū)動等優(yōu)良特點[1]。已被廣泛應(yīng)用于各種儀器儀表、電子設(shè)備及控制領(lǐng)域中,成為測量結(jié)果顯示和人機對話的重要工具。液晶顯示器按其功能可分為筆段式和點矩陣式液晶顯示器,后者又可以分為字符點陣式和圖形點陣式液晶顯示器。圖形點陣式液晶顯示器不僅可顯示數(shù)字、字符等內(nèi)容,還能顯示漢字和任意圖形。但此類液晶顯示屏屬于非一般模式類設(shè)備,在Nios II中不能直接開發(fā)使用。
1 SOPC設(shè)計與嵌入式Nios II處理器
片上可編程系統(tǒng)(SOPC)是PLD(可編程邏輯)技術(shù)優(yōu)勢的新延伸,其特點:開發(fā)周期短,靈活性強,較低的開發(fā)費用等。Altera將SOPC開發(fā)過程與功能強大的Quartus II工具相結(jié)合的SOPC Builder是一個強有力的創(chuàng)建基于處理器、外設(shè)和存儲器的系統(tǒng)開發(fā)工具,使得工程師進行SOPC設(shè)計時只需要點幾個按鈕,就可以選擇和配置處理器及其外設(shè),并把它們同系統(tǒng)的其余部分進行連接。新工具也允許設(shè)計人員全程介入研發(fā)的過程,從而獲得更為細致的控制。
Nios II是一個32位RISC嵌入式處理器。具有超過200 DMIP的性能。由于處理器是軟核形式,具有很大的靈活性,可以在多種系統(tǒng)設(shè)置組合中進行選擇,達到性能、特性和成本目標。Nios II處理器可定制特性集并且方便配置系統(tǒng)性能擁有無與倫比的靈活性。
對于一個全新的外部設(shè)備,Nios II有更好的解決方案快速的掌握它的控制方法。按照設(shè)備的電器要求,使用Nios II的已有的基本控制設(shè)備(例如通用輸入輸出端口PIO)掌握新設(shè)備的控制特性與方法。當充分理解新設(shè)備的特性后就可以按照Nios II的硬件抽象層(HAL)的定義方法,編寫新設(shè)備的驅(qū)動將其集成到Nios II中。這樣在今后的開發(fā)中在SOPC Builder中就可以像其他設(shè)備一樣增添這個新設(shè)備,Nios II軟核生成后會自動加載此設(shè)備的設(shè)備驅(qū)動。這樣提高了新設(shè)備的二次使用時的開發(fā)效率[2]。
以下是液晶屏顯示模塊接口的設(shè)計與集成過程。
2 液晶顯示模塊的設(shè)計
2.1 液晶顯示簡介
GM12864A是帶顯示存儲器的圖形液晶顯示器。它的內(nèi)部是由兩塊KS0108B作為列顯示控制器和一片KS0107B作為行顯示控制器組成。顯示屏上各像素點的顯示狀態(tài)與顯示存儲器的各位相互對經(jīng),顯示存儲器的數(shù)據(jù)直接作為圖形顯示的驅(qū)動信號。顯示數(shù)據(jù)為“1”,相應(yīng)的像素點變亮[3]。液晶屏結(jié)構(gòu)如圖1所示。
圖1 液晶屏GM12864A的結(jié)構(gòu)圖
GM12864A的接口引腳有15根,其中2個控制線,2個片選線,8根數(shù)據(jù)線,1根使能及電源引腳。具體如表1描述。
引腳號 |
引腳名稱 |
引腳類型 |
引腳說明 |
1 |
VCC |
Power |
電源 |
2 |
GND |
Ground |
地線 |
3 |
RS |
I |
控制 |
4 |
R/W |
I |
讀寫控制 |
5 |
E |
I |
使能 |
6 |
DB0 |
I/O |
數(shù)據(jù)線[0~7](雙向數(shù)據(jù)總線) |
7 |
DB1 |
I/O |
-- |
8 |
DB2 |
I/O |
-- |
9 |
DB3 |
I/O |
-- |
10 |
DB4 |
I/O |
-- |
11 |
DB5 |
I/O |
-- |
12 |
DB6 |
I/O |
-- |
13 |
DB7 |
I/O |
-- |
14 |
CS1 |
I |
片選信號1 |
15 |
CS2 |
I |
片選信號2 |
表1 液晶屏GM12864A的引腳說明
了解液晶屏的引腳后還要對它的指令進行詳細的分析,因為液晶屏的控制主要是通過指令完成的。GM12864A的指令表如表2所示。
指令 |
RS |
R/W |
DB0 |
DB1 |
DB2 |
DB3 |
DB4 |
DB5 |
DB6 |
DB7 |
讀狀態(tài)字 |
0 |
1 |
Busy |
0 |
ON/OF |
Res |
0 |
0 |
0 |
0 |
顯示開關(guān) |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1/0 |
設(shè)置行 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
行(0 ~ 7) | ||
設(shè)置列 |
0 |
0 |
0 |
1 |
列(0 ~ 63) | |||||
寫數(shù)據(jù) |
1 |
0 |
數(shù)據(jù)(DB0 ~ DB7) |
表2 液晶屏GM12864A的指令表
2.2 PIO類的介紹
設(shè)計初始階段主要的目的在于充分了解新設(shè)備的特性與控制方法,為之后的設(shè)備集成打好基礎(chǔ)。因此采用通用的輸入輸出控制接口(PIO)直接對液晶屏的引腳進行控制。{{分頁}}
Nios II中PIO分為三大類:輸入(I)、輸出(O)和三態(tài)(Tri)。PIO通過Avalon總線與Nios II相連接[4]。如圖2所示。
圖2 通用輸入輸出接口與Nios II的連接
2.3 接口的設(shè)計
在Quartus II中新建一個工程,芯片類型選擇Cyclone 1C6Q240C8。設(shè)置畫面如圖3所示。
圖3 芯片設(shè)置界面
工程創(chuàng)建完成后在SOPC Builder中定制Nios II處理器。液晶屏顯示器驅(qū)動接口在設(shè)計初步作為普通的外部設(shè)備,用PIO進行操作。所以為系統(tǒng)增添所需要的PIO借口。設(shè)計完成后如圖4所示。
定制結(jié)束后生成Nios II處理器模塊。生成后回到Quartus II中進行系統(tǒng)頂層結(jié)構(gòu)的設(shè)計。通過SOPC Builder生成的Nios II模塊需要一個時鐘和一個復(fù)位輸入端,輸出與定制時所設(shè)計的一致。增添相應(yīng)的輸入輸出引腳。頂層結(jié)構(gòu)如圖5所示。
圖5 液晶屏控制系統(tǒng)頂層結(jié)構(gòu)
將控制系統(tǒng)編譯,液晶屏與芯片的接口連接電路如圖6所示。
圖6 液晶屏與FPGA的接口電路
2.4軟件設(shè)計
利用SOPC Builder開發(fā)工具創(chuàng)建專用的處理器系統(tǒng)的硬件后,SOPC Builder還為編寫操作這些片上硬件的軟件代碼提供了一個Nios II集成開發(fā)環(huán)境(IDE),這個軟件開發(fā)環(huán)境包括語言的頭文件、外圍接口的驅(qū)動以及實時操作系統(tǒng)的內(nèi)核,可完成整個軟件工程的編輯、編譯、調(diào)試和下載等過程,極大地提高了軟件的開發(fā)效率。
液晶屏顯示流程如圖7所示。
圖7 液晶屏顯示流程
根據(jù)液晶屏顯示原理,編寫三個函數(shù)如下,函數(shù)Busy_Check()檢查液晶屏是否為忙LCD_Command_Write(alt_u8 Command)函數(shù)用來寫命令。LCD_Data_Write(alt_u8 Data)函數(shù)用來寫數(shù)據(jù)。 void Busy_Check()
{
alt_u8 temp=0x00; //狀態(tài)變量
IOWR_ALTERA_AVALON_PIO_DATA(LCD_CS1_BASE, 0); //給CS1賦值
IOWR_ALTERA_AVALON_PIO_DATA(LCD_CS2_BASE, 1); //給CS2賦值
IOWR_ALTERA_AVALON_PIO_DATA(LCD_RS_BASE, 0); //給RS賦值
IOWR_ALTERA_AVALON_PIO_DATA(LCD_RW_BASE, 1); //給RW賦值
IOWR_ALTERA_AVALON_PIO_DATA(LCD_E_BASE, 1); //給E賦值
IOWR_ALTERA_AVALON_PIO_DIRECTION(LCD_DB_BASE,0x00);
temp = IORD_ALTERA_AVALON_PIO_DATA(LCD_DB_BASE);//讀取狀態(tài)字
IOWR_ALTERA_AVALON_PIO_DATA(LCD_E_BASE, 0);
IOWR_ALTERA_AVALON_PIO_DIRECTION(LCD_DB_BASE,0xff);
BUSY=temp&0x80; //將狀態(tài)賦BUSY
}
void LCD_Command_Write(alt_u8 m_Command)
{
if (!BUSY) //判斷是否為忙
{
IOWR_ALTERA_AVALON_PIO_DATA(LCD_RS_BASE, 0);
IOWR_ALTERA_AVALON_PIO_DATA(LCD_RW_BASE, 0);
IOWR_ALTERA_AVALON_PIO_DIRECTION(LCD_DB_BASE,0xff);
IOWR_ALTERA_AVALON_PIO_DATA(LCD_DB_BASE, m_Command);
IOWR_ALTERA_AVALON_PIO_DATA(LCD_E_BASE, 1);
IOWR_ALTERA_AVALON_PIO_DATA(LCD_E_BASE, 0);
}
}
void LCD_Data_Write(alt_u8 m_Data)
{
if (!BUSY) //判斷是否為忙
{
IOWR_ALTERA_AVALON_PIO_DATA(LCD_RS_BASE, 1);
IOWR_ALTERA_AVALON_PIO_DATA(LCD_RW_BASE, 0);
IOWR_ALTERA_AVALON_PIO_DIRECTION(LCD_DB_BASE,0xff);
IOWR_ALTERA_AVALON_PIO_DATA(LCD_DB_BASE, m_Data);
IOWR_ALTERA_AVALON_PIO_DATA(LCD_E_BASE, 1);
IOWR_ALTERA_AVALON_PIO_DATA(LCD_E_BASE, 0);
}
}
2.5 漢字顯示設(shè)計實踐
顯示屏是信息輸出的載體,為了更好的達到良好交互效果,嘗試通過Nios II的液晶屏顯示借口進行漢字顯示的實踐。 {{分頁}}
根據(jù)對漢字的使用頻繁程度的研究,把漢字分為高頻字,常用字,次常用字,罕見字和死字。正常使用的漢字達15000個。1981年我國頒布了GB2312-80的方案,集合成漢字基本字符集(共6763個)。國標GB2312-80在漢字操作系統(tǒng)中是以漢字庫的形式提供的。漢字庫結(jié)構(gòu)作了統(tǒng)一規(guī)定,即將字庫分成94個區(qū),每個區(qū)有94個漢字每個漢字在漢字庫中有確定的區(qū)和位的編號。每個漢字在字庫中是以點陣字模形式存儲的,如一般采用16
評論