基于Nios II的非一般模式類設(shè)備設(shè)計(jì)與集成
摘要:在Nios II的開發(fā)過程中,硬件抽象層提供多種一般模式類設(shè)備,使得開發(fā)者可以高效的在系統(tǒng)中添加并使用這些設(shè)備。然而對不屬于一般模式類的新設(shè)備的使用將不能按照原有的設(shè)計(jì)方法進(jìn)行系統(tǒng)開發(fā)。為此,需要根據(jù)Nios II內(nèi)部總線規(guī)范提供一個(gè)設(shè)備驅(qū)動(dòng),并按照SOPC Builder要求集成到硬件抽象層中。通過設(shè)計(jì)并集成非字符型液晶顯示模塊得出結(jié)論:任何非一般模式類設(shè)備均可加載到Nios II系統(tǒng)中并能正常工作。
關(guān)鍵詞:液晶顯示;Nios II;Avalon總線;設(shè)備集成
中圖法分類號:TN911.72 ;TP319 文獻(xiàn)標(biāo)識碼: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ū)動(dòng)等優(yōu)良特點(diǎn)[1]。已被廣泛應(yīng)用于各種儀器儀表、電子設(shè)備及控制領(lǐng)域中,成為測量結(jié)果顯示和人機(jī)對話的重要工具。液晶顯示器按其功能可分為筆段式和點(diǎn)矩陣式液晶顯示器,后者又可以分為字符點(diǎn)陣式和圖形點(diǎn)陣式液晶顯示器。圖形點(diǎn)陣式液晶顯示器不僅可顯示數(shù)字、字符等內(nèi)容,還能顯示漢字和任意圖形。但此類液晶顯示屏屬于非一般模式類設(shè)備,在Nios II中不能直接開發(fā)使用。
1 SOPC設(shè)計(jì)與嵌入式Nios II處理器
片上可編程系統(tǒng)(SOPC)是PLD(可編程邏輯)技術(shù)優(yōu)勢的新延伸,其特點(diǎn):開發(fā)周期短,靈活性強(qiáng),較低的開發(fā)費(fèi)用等。Altera將SOPC開發(fā)過程與功能強(qiáng)大的Quartus II工具相結(jié)合的SOPC Builder是一個(gè)強(qiáng)有力的創(chuàng)建基于處理器、外設(shè)和存儲器的系統(tǒng)開發(fā)工具,使得工程師進(jìn)行SOPC設(shè)計(jì)時(shí)只需要點(diǎn)幾個(gè)按鈕,就可以選擇和配置處理器及其外設(shè),并把它們同系統(tǒng)的其余部分進(jìn)行連接。新工具也允許設(shè)計(jì)人員全程介入研發(fā)的過程,從而獲得更為細(xì)致的控制。
Nios II是一個(gè)32位RISC嵌入式處理器。具有超過200 DMIP的性能。由于處理器是軟核形式,具有很大的靈活性,可以在多種系統(tǒng)設(shè)置組合中進(jìn)行選擇,達(dá)到性能、特性和成本目標(biāo)。Nios II處理器可定制特性集并且方便配置系統(tǒng)性能擁有無與倫比的靈活性。
對于一個(gè)全新的外部設(shè)備,Nios II有更好的解決方案快速的掌握它的控制方法。按照設(shè)備的電器要求,使用Nios II的已有的基本控制設(shè)備(例如通用輸入輸出端口PIO)掌握新設(shè)備的控制特性與方法。當(dāng)充分理解新設(shè)備的特性后就可以按照Nios II的硬件抽象層(HAL)的定義方法,編寫新設(shè)備的驅(qū)動(dòng)將其集成到Nios II中。這樣在今后的開發(fā)中在SOPC Builder中就可以像其他設(shè)備一樣增添這個(gè)新設(shè)備,Nios II軟核生成后會(huì)自動(dòng)加載此設(shè)備的設(shè)備驅(qū)動(dòng)。這樣提高了新設(shè)備的二次使用時(shí)的開發(fā)效率[2]。
以下是液晶屏顯示模塊接口的設(shè)計(jì)與集成過程。
2 液晶顯示模塊的設(shè)計(jì)
2.1 液晶顯示簡介
GM12864A是帶顯示存儲器的圖形液晶顯示器。它的內(nèi)部是由兩塊KS0108B作為列顯示控制器和一片KS0107B作為行顯示控制器組成。顯示屏上各像素點(diǎn)的顯示狀態(tài)與顯示存儲器的各位相互對經(jīng),顯示存儲器的數(shù)據(jù)直接作為圖形顯示的驅(qū)動(dòng)信號。顯示數(shù)據(jù)為“1”,相應(yīng)的像素點(diǎn)變亮[3]。液晶屏結(jié)構(gòu)如圖1所示。
圖1 液晶屏GM12864A的結(jié)構(gòu)圖
GM12864A的接口引腳有15根,其中2個(gè)控制線,2個(gè)片選線,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的引腳說明
了解液晶屏的引腳后還要對它的指令進(jìn)行詳細(xì)的分析,因?yàn)橐壕恋目刂浦饕峭ㄟ^指令完成的。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è)計(jì)初始階段主要的目的在于充分了解新設(shè)備的特性與控制方法,為之后的設(shè)備集成打好基礎(chǔ)。因此采用通用的輸入輸出控制接口(PIO)直接對液晶屏的引腳進(jìn)行控制。{{分頁}}
Nios II中PIO分為三大類:輸入(I)、輸出(O)和三態(tài)(Tri)。PIO通過Avalon總線與Nios II相連接[4]。如圖2所示。
圖2 通用輸入輸出接口與Nios II的連接
2.3 接口的設(shè)計(jì)
在Quartus II中新建一個(gè)工程,芯片類型選擇Cyclone 1C6Q240C8。設(shè)置畫面如圖3所示。
圖3 芯片設(shè)置界面
工程創(chuàng)建完成后在SOPC Builder中定制Nios II處理器。液晶屏顯示器驅(qū)動(dòng)接口在設(shè)計(jì)初步作為普通的外部設(shè)備,用PIO進(jìn)行操作。所以為系統(tǒng)增添所需要的PIO借口。設(shè)計(jì)完成后如圖4所示。
定制結(jié)束后生成Nios II處理器模塊。生成后回到Quartus II中進(jìn)行系統(tǒng)頂層結(jié)構(gòu)的設(shè)計(jì)。通過SOPC Builder生成的Nios II模塊需要一個(gè)時(shí)鐘和一個(gè)復(fù)位輸入端,輸出與定制時(shí)所設(shè)計(jì)的一致。增添相應(yīng)的輸入輸出引腳。頂層結(jié)構(gòu)如圖5所示。
圖5 液晶屏控制系統(tǒng)頂層結(jié)構(gòu)
將控制系統(tǒng)編譯,液晶屏與芯片的接口連接電路如圖6所示。
圖6 液晶屏與FPGA的接口電路
2.4軟件設(shè)計(jì)
利用SOPC Builder開發(fā)工具創(chuàng)建專用的處理器系統(tǒng)的硬件后,SOPC Builder還為編寫操作這些片上硬件的軟件代碼提供了一個(gè)Nios II集成開發(fā)環(huán)境(IDE),這個(gè)軟件開發(fā)環(huán)境包括語言的頭文件、外圍接口的驅(qū)動(dòng)以及實(shí)時(shí)操作系統(tǒng)的內(nèi)核,可完成整個(gè)軟件工程的編輯、編譯、調(diào)試和下載等過程,極大地提高了軟件的開發(fā)效率。
液晶屏顯示流程如圖7所示。
圖7 液晶屏顯示流程
根據(jù)液晶屏顯示原理,編寫三個(gè)函數(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è)計(jì)實(shí)踐
顯示屏是信息輸出的載體,為了更好的達(dá)到良好交互效果,嘗試通過Nios II的液晶屏顯示借口進(jìn)行漢字顯示的實(shí)踐。 {{分頁}}
根據(jù)對漢字的使用頻繁程度的研究,把漢字分為高頻字,常用字,次常用字,罕見字和死字。正常使用的漢字達(dá)15000個(gè)。1981年我國頒布了GB2312-80的方案,集合成漢字基本字符集(共6763個(gè))。國標(biāo)GB2312-80在漢字操作系統(tǒng)中是以漢字庫的形式提供的。漢字庫結(jié)構(gòu)作了統(tǒng)一規(guī)定,即將字庫分成94個(gè)區(qū),每個(gè)區(qū)有94個(gè)漢字每個(gè)漢字在漢字庫中有確定的區(qū)和位的編號。每個(gè)漢字在字庫中是以點(diǎn)陣字模形式存儲的,如一般采用16
評論