《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 基于NiosⅡ處理器的TFT-LCD圖形顯示設(shè)計
基于NiosⅡ處理器的TFT-LCD圖形顯示設(shè)計
來源:微型機與應(yīng)用2010年第18期
石紅曉, 吳光敏
(昆明理工大學(xué) 理學(xué)院, 云南 昆明 650093)
摘要: 主要闡述了以Altera公司的FPGA為核心的基于NiosⅡ軟核的嵌入式LCD圖形顯示設(shè)計方法。從系統(tǒng)的角度提出在LCD上顯示圖形的設(shè)計過程,給出搭建NiosⅡ軟核的系統(tǒng)整體結(jié)構(gòu)圖,并最終實現(xiàn)了圖形以及漢字在LCD上的顯示,最后總結(jié)出利用FPGA技術(shù)實現(xiàn)LCD圖形顯示的優(yōu)勢。
Abstract:
Key words :

摘  要: 主要闡述了以Altera公司的FPGA為核心的基于NiosⅡ軟核的嵌入式LCD圖形顯示設(shè)計方法。從系統(tǒng)的角度提出在LCD上顯示圖形的設(shè)計過程,給出搭建NiosⅡ軟核的系統(tǒng)整體結(jié)構(gòu)圖,并最終實現(xiàn)了圖形以及漢字在LCD上的顯示,最后總結(jié)出利用FPGA技術(shù)實現(xiàn)LCD圖形顯示的優(yōu)勢。
關(guān)鍵詞: LCD顯示; NiosⅡ軟核; 現(xiàn)場可編程門陳列(FPGA)

    隨著工藝技術(shù)的發(fā)展與市場的需要,超大規(guī)模、高速、低功耗的FPGA不斷推出,并且被廣泛地應(yīng)用在高速、高密度的數(shù)字電路設(shè)計領(lǐng)域。SoPC[1](System on a Programmable Chip)是一種基于FPGA 的SoC設(shè)計方案,它將FPGA及微處理器的核心嵌在同一芯片上,構(gòu)成一個可編程的SoPC系統(tǒng)框架,具有高度的集成能力,很大程度上減小了產(chǎn)品體積以及外部信號對系統(tǒng)的干擾,大大增加了系統(tǒng)的可靠性、穩(wěn)定性和靈活性。本文介紹一種基于Nios Ⅱ軟核處理器實現(xiàn)對LCD控制顯示圖形的方法。在設(shè)計中,利用Altera的FPGA的SoPC Builder定制Nios Ⅱ軟核處理器及其與顯示功能相關(guān)的“軟”硬件模塊,來協(xié)同實現(xiàn)控制顯示的軟硬件設(shè)計。
1 系統(tǒng)設(shè)計
    在工業(yè)控制和消費電子領(lǐng)域,LCD的顯示技術(shù)呈現(xiàn)出越來越多的方式。本設(shè)計采用基于NiosⅡ處理器的液晶顯示圖形的設(shè)計方法,在SoPC Builder中以自定義接口的形式利用總線方式對LCD控制器進行設(shè)計,LCD控制器[2]一端接收用戶控制,一端實現(xiàn)LCD復(fù)雜時序,并集成多種功能。用戶只需要與控制器的簡單接口交互,便能達到控制LCD的目的,進而編寫應(yīng)用程序,實現(xiàn)顯示漢字、圖片、畫圖等功能。本文的設(shè)計方法大大降低了工作量,加快了數(shù)據(jù)的處理速度和掃描頻率,提高了各個功能模塊的集成度,改善了系統(tǒng)的性能和可靠性。
    本設(shè)計最終實現(xiàn)了一個基于Altera公司的DE2 開發(fā)板的TFT—LCD 控制器對已知圖形的顯示。
2 硬件設(shè)計
2.1 系統(tǒng)的整體結(jié)構(gòu)

    SoPC系統(tǒng)基于Avalon 總線與其他系統(tǒng)構(gòu)件來通信,整個SoPC系統(tǒng)設(shè)計中的外設(shè)通過Avalon總線模塊連接起來,并且總線規(guī)范為外設(shè)端口與總線模塊之間的數(shù)據(jù)傳輸提供了互連模型。
 本設(shè)計的SoPC系統(tǒng)整體結(jié)構(gòu)如圖1所示。

2.2  SoPC系統(tǒng)建立
    基于FPGA的SoPC方案[3]的可配置性表現(xiàn)在搭建硬件平臺時,用戶可以根據(jù)自己要實現(xiàn)的功能來靈活選擇所需要的存儲器以及外圍接口設(shè)備,而不用把所有提供的元件添加到系統(tǒng)中,這樣就可以因功能不同而有針對性地設(shè)計每一個系統(tǒng),從而也避免了添加無用元件占用FPGA資源而引起浪費。例如,由系統(tǒng)的整體結(jié)構(gòu)可知,本系統(tǒng)所需要的基本組件有CPU、SDRAM控制器、JTAG-UART、SRAM、定時器以及用三態(tài)橋來連接的CPI-FLASH,因為在TFT-LCD已經(jīng)帶有控制器了,所以就不需要以自定義組件的形式在SoPC Builder中添加該元件的控制器。
    本系統(tǒng)的構(gòu)建基于QuartusⅡ8.0版本的SoPC Builder工具,它使用CPU、存儲器接口和外圍設(shè)備(例如本設(shè)計中添加的掛接在三態(tài)橋上的接口gx_tft_lcd)生成系統(tǒng)模塊,并在Avalon總線模塊和所有系統(tǒng)組件上的從屬設(shè)備端口之間自動生成互連邏輯。由于利用總線方式來訪問已經(jīng)帶有控制器(TCB8000A)的TFT LCD,因此需要在Nios Ⅱ系統(tǒng)模塊中手動添加一個三態(tài)接口gx_tft_lcd。因為是只創(chuàng)建一個接口,因此不需要HDL文件和HAL文件,但是在信號設(shè)置時,應(yīng)根據(jù)Avalon總線三態(tài)從端口寫時序圖和TCB8000A的控制接口來添加需要的信號。
    設(shè)置生成新元件后就可以將新定制的gx_tft_lcd添加到Nios系統(tǒng)中,產(chǎn)生Nios II 系統(tǒng)模塊,并添加到工程中。保存編譯,通過之后可將編譯生成的sof文件下載到FPGA芯片,至此硬件方面的工作基本完成。
   圖2所示為搭建本設(shè)計的硬件平臺中使用SoPC Builder工具來添加生成的系統(tǒng)模塊。

3 軟件設(shè)計
 Nios II處理器的軟件程序設(shè)計使用HAL (Hardware Abstraction Layer)系統(tǒng)庫。HAI系統(tǒng)庫[4]為程序員提供了應(yīng)用程序與底層硬件交互的設(shè)備驅(qū)動接口,簡化了應(yīng)用程序的開發(fā),同時還為應(yīng)用程序與底層硬件驅(qū)動劃分了一條很清晰的分界線,從而大大提高了應(yīng)用程序的可復(fù)用性,使得應(yīng)用程序不受底層硬件變化的影響實現(xiàn)系統(tǒng)硬件和應(yīng)用程序之間的通信。HAI API[5](Application Program Interface)集成了ANSI C標(biāo)準(zhǔn)庫,使上層程序像訪問C函數(shù)庫一樣訪問系統(tǒng)硬件和軟件。軟件設(shè)計不用考慮底層硬件實現(xiàn)的細節(jié)而直接編寫應(yīng)用程序。系統(tǒng)軟件結(jié)構(gòu)如圖3所示。

 軟件系統(tǒng)主要分為兩部分:系統(tǒng)的初始化對LCD控制器的控制以及顯示數(shù)據(jù)的處理。
 系統(tǒng)初始化,調(diào)用HAL的各模塊初始化程序,并定義在后面程序當(dāng)中要用到的各個對LCD顯示屏背景顏色、字體顏色設(shè)置的函數(shù)。
 本設(shè)計采用總線方式[6]對LCD控制器(TCB8000A)的時序進行控制,利用SoPC Builder添加完一個掛接在三態(tài)橋上的接口,將TCB8000A的控制引腳與Avalon總線相關(guān)聯(lián)。由于TCB8000A的控制時序與Avalon總線三態(tài)接口的時序吻合,因此只需在定制接口時調(diào)整等待、建立時間便可以達到控制目的。在Nios程序內(nèi)用簡單的寫操作產(chǎn)生Avalon總線時序,需要注意的是TCB8000A只需一個地址控制線A1,且與總線的A1相連,因此寫操作應(yīng)使總線上的地址線A1符合TCB8000A對A1管腳的時序要求。即在并行模式下,MPU首先把完整的命令包送入地址為F004H的只寫寄存器(A1=0),然后將“1”送到地址為F006H的寄存器(A1=1),結(jié)束一個命令包,并打開顯示。對于地址線A0,A2~A17使用的控制板已經(jīng)設(shè)定好了,所以只需要控制A1便可完成命令的送入。流程圖如圖4所示。

    代碼如下:
void SdCmd(alt_u8 Command)   //send command
{   
       IOWR(GX_TFT_LCD_BASE, 0, Command);          //A1=0
}
void CmdEnd()                                 //send command
{   
       IOWR(GX_TFT_LCD_BASE, 2, 1);                     //A1=1
}
    在控制時序的基礎(chǔ)上,程序中的顯示圖片部分[7]首先把要顯示的圖片用Bmp2HexPro.exe軟件工具轉(zhuǎn)換成數(shù)據(jù)信息, 把圖片的數(shù)據(jù)信息以頭文件的形式(picture.h)添加在工程中。
    對儲存的多張圖片進行分類標(biāo)號(例如picx1、picx2、picx3等),然后在C主程序中用switch語句[8]來分別調(diào)用表示該圖片信息的索引號碼,示例程序如下:
void ShowBMP160(alt_u32 X,alt_u32 Y, alt_u8 picIndex)
{
      alt_u8 i,j,k,Buffer[5],*pic;
      alt_u16  p;
      alt_u32 addr;
            switch(picIndex){
            case 1: pic=picx1;break;
            case 2: pic=picx2; break;
            case 3: pic=picx3; break;
            default: break;
      }
    接下來就是給LCD的RAM分配地址,把要顯示的圖片的數(shù)據(jù)信息以數(shù)據(jù)指針的方式從左到右依次寫入目的地址。而SdCmd()函數(shù)為自己編寫的發(fā)送數(shù)據(jù)命令的子函數(shù)。
    addr=Y*5;      
     addr=addr<<7;     
      addr=addr+X*2;               //same as addr=X*2+Y*320*2
      p=0;                                            //Data ROM pointer
     for(j=0;j<10;j++)         //sprit one line data to 8 packet
           {
              SdCmd(0x84);     
                     //send data packet,送一個像素的數(shù)據(jù)到內(nèi)存
              SdCmd(40);
                       //no of byte in one packet,結(jié)束一個命令包
              for(k=0;k<20;k++)       //no of pixels in one packet
              {
                  SdCmd(pic[p+1]);                          //low byte
                SdCmd(pic[p]);                             //high byte
                p+=2;
              }
              CmdEnd();
        }
    addr+=640;                                      //next line
}   
      }
  對于漢字以及字符的顯示也是通過定義PrintGB()函數(shù),類似上述程序以命令包的形式把要顯示的信息送入目的地址,在后面的程序中直接調(diào)用該子函數(shù)來進行顯示。
    隨著LCD顯示越來越多地應(yīng)用于生產(chǎn)生活的各個方面,各種各樣的處理器控制LCD顯示的方案也相繼出現(xiàn),本文通過整個系統(tǒng)設(shè)計和在硬件平臺上實驗提出了一種基于FPGA的SoPC方案,并最終在平臺上面驗證了其可行性。該方案的優(yōu)勢在于系統(tǒng)功能改進的靈活性, 在不改變硬件平臺的情況下對系統(tǒng)進行增刪和優(yōu)化,降低了系統(tǒng)成本,這是傳統(tǒng)ARM方案無法達到的。由于微處理器和用戶邏輯接口都集成在一塊Cyclone芯片上, 編程人員可以靈活地定義I/O接口, 基于FPGA有更好的靈活性和可靠性[9]。對基于NiosⅡ的微處理器, 用戶能根據(jù)顯示屏的大小靈活調(diào)整硬件邏輯設(shè)計以實現(xiàn)對顯示屏的控制,而不需要改變其原有硬件構(gòu)成。但是16位微控制器卻只能對固定大小的顯示屏進行控制。從長遠來看,基于NiosⅡ的微處理器, 可以通過更改其硬件邏輯配置方便地進行版本升級,節(jié)省了成本。開發(fā)人員通過處理器[10]指令集中增加定制指令, 可以加速軟件算法, 定制指令可以在一個周期的時間內(nèi)完成復(fù)雜的處理任務(wù),為系統(tǒng)優(yōu)化提供了一種高性價比的解決方案。
參考文獻
[1]  潘松,黃繼業(yè),曾毓.SoPC技術(shù)實用教程[M].北京:清華大學(xué)出版社,2005.
[2]  王剛,張瀲.基于FPGA的SoPC嵌入式系統(tǒng)設(shè)計與典型實例[M].北京:電子工業(yè)出版社,2009.
[3]  王曉迪,張景秀.SoPC系統(tǒng)設(shè)計與實踐[M].北京:北京航空航天大學(xué)出版社,2008.
[4]  蔡偉剛.NiosⅡ軟件架構(gòu)解析[M].西安:西安電子科技大學(xué)出版社,2007.
[5]  田秀偉,鄭喜鳳,丁鐵夫.基于SoPC的LED顯示屏控制器設(shè)計[J].液晶與顯示,2007,22(6):737-741.
[6]  孫愷,程世恒.NiosⅡ系統(tǒng)開發(fā)設(shè)計與應(yīng)用實例[M]. 北京:北京航空航天大學(xué)出版社,2007.
[7]  郭強.液晶顯示應(yīng)用技術(shù)[M].北京:電子工業(yè)出版社, 2003.
[8]  郭書軍,王玉龍,葛紉秋.嵌入式處理器原理及應(yīng)用— Nios系統(tǒng)設(shè)計和C語言編程[M].北京:清華大學(xué)出版
社,2004.
[9]  孫偉,龔兆崗,楊忠根.基于NiosⅡ的LED顯示屏控制系統(tǒng)[J].上海海事大學(xué)學(xué)報,2005,26(2).
[10] 高兵,陳莉平.液晶和矩陣鍵盤SoPC外設(shè)組件設(shè)計開發(fā)[J].微計算機信息,2008,3(2):152-154.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美一区永久视频免费观看| 亚洲国产天堂久久综合网| 国产一区二区你懂的| 欧美日韩精品一区视频| 欧美xx69| 久久只精品国产| 久久精品视频免费| 欧美一区二区三区视频免费| 亚洲专区在线| 亚洲一区欧美| 亚洲一区在线直播| 亚洲一卡久久| 亚洲视频精品在线| 一区二区三区久久网| 99re热精品| 一本色道久久88亚洲综合88| 亚洲精品日韩在线观看| 亚洲精品国产日韩| 亚洲精品精选| 日韩视频在线观看一区二区| 亚洲免费观看在线观看| 99精品视频免费| 一本一本久久| 亚洲一品av免费观看| 亚洲综合国产精品| 欧美一区二区三区四区高清| 性欧美8khd高清极品| 欧美在线视频观看免费网站| 久久成人亚洲| 久久久综合网站| 美女精品在线观看| 欧美黑人国产人伦爽爽爽| 欧美日韩播放| 欧美视频在线观看| 国产精品高潮粉嫩av| 国产精品一香蕉国产线看观看 | 亚洲欧美另类在线| 性伦欧美刺激片在线观看| 久久国产精品第一页| 亚洲人体影院| 亚洲天堂av在线免费观看| 性欧美大战久久久久久久免费观看| 欧美在线视频在线播放完整版免费观看| 久久99伊人| 免费中文字幕日韩欧美| 欧美日韩欧美一区二区| 国产精品免费在线| 国语自产在线不卡| 亚洲精品影视| 亚洲欧美国产不卡| 亚洲七七久久综合桃花剧情介绍| 在线天堂一区av电影| 欧美一区二区三区久久精品茉莉花 | 亚洲第一偷拍| aa级大片欧美| 欧美呦呦网站| 夜夜精品视频一区二区| 久久国产高清| 欧美激情一区二区| 国产精品中文在线| 亚洲电影在线播放| 亚洲视屏一区| 亚洲经典在线| 午夜久久99| 欧美a级在线| 国产精品普通话对白| 一区视频在线播放| 亚洲专区一二三| 亚洲国内高清视频| 午夜综合激情| 欧美电影电视剧在线观看| 国产九九精品视频| 亚洲欧洲一级| 欧美在线观看一二区| 亚洲午夜成aⅴ人片| 久热精品在线视频| 欧美日韩三区四区| 黄色综合网站| 亚洲一二三区在线观看| 亚洲欧洲免费视频| 亚洲福利视频网站| 亚洲一区免费网站| 欧美高清视频一区| 国产午夜精品视频| 日韩写真在线| 亚洲激情影院| 久久精品国产视频| 国产精品扒开腿做爽爽爽视频| 在线不卡免费欧美| 亚洲欧美另类在线观看| 中文一区字幕| 欧美超级免费视 在线| 国产日韩精品视频一区二区三区| 日韩一区二区高清| 亚洲日本成人在线观看| 久久久国产精品一区二区中文| 欧美日韩色一区| 亚洲黄网站在线观看| 久久国产欧美日韩精品| 亚洲先锋成人| 美日韩精品视频| 国内成人精品2018免费看| 亚洲欧美另类中文字幕| 亚洲欧美视频在线观看| 欧美日韩综合在线| 亚洲精品乱码久久久久久日本蜜臀 | 欧美日韩国产bt| 影音先锋成人资源站| 欧美专区日韩视频| 欧美一区二区三区播放老司机| 欧美午夜精品久久久久久超碰| 亚洲精品国产无天堂网2021| 亚洲国产精品成人综合| 久久久精品网| 国产日韩一区在线| 性欧美大战久久久久久久免费观看 | 久久久久久欧美| 国产日韩欧美成人| 亚洲在线成人精品| 亚洲欧美日韩在线高清直播| 国产精品h在线观看| 一区二区三区久久| 亚洲无亚洲人成网站77777| 欧美日韩在线免费| 一区二区三区你懂的| 亚洲综合另类| 国产精品一区二区你懂的| 亚洲欧美一区二区原创| 欧美一区二区三区精品电影| 国产三级精品三级| 久久精品91久久久久久再现| 久久资源av| 亚洲盗摄视频| 一区二区激情小说| 欧美性生交xxxxx久久久| 亚洲一品av免费观看| 亚洲欧美另类在线观看| 国产精自产拍久久久久久蜜| 小黄鸭精品aⅴ导航网站入口 | 久久嫩草精品久久久精品一| 黄色成人av网| 亚洲人成在线免费观看| 欧美另类高清视频在线| 宅男噜噜噜66一区二区| 午夜精品美女久久久久av福利| 国产精品亚洲综合色区韩国| 欧美亚洲日本国产| 裸体女人亚洲精品一区| 亚洲精品少妇30p| 亚洲一区三区视频在线观看| 国产欧美欧洲在线观看| 久久国产精品99精品国产| 欧美国产日韩一区二区在线观看| 日韩视频一区| 欧美一级淫片aaaaaaa视频| 红杏aⅴ成人免费视频| 野花国产精品入口| 国产精品视频区| 久久精品夜夜夜夜久久| 欧美精彩视频一区二区三区| 亚洲午夜一区二区三区| 久久精品视频在线| 亚洲欧洲偷拍精品| 欧美一级二区| 在线观看欧美日韩| 亚洲深夜福利| 国产夜色精品一区二区av| 亚洲精品国产视频| 国产乱人伦精品一区二区 | 亚洲精品一区二| 国产精品wwwwww| 久久精品视频导航| 欧美精品色网| 欧美亚洲一级| 欧美日本韩国一区二区三区| 亚洲欧美日韩视频二区| 毛片基地黄久久久久久天堂| 在线一区二区三区做爰视频网站 | 国产精品久久久久久久久久免费| 久久精品成人一区二区三区| 欧美日韩黄色大片| 欧美一区二区免费观在线| 欧美日本在线播放| 欧美一区永久视频免费观看| 欧美日韩国产综合视频在线观看| 久久国产视频网站| 国产精品成人午夜| 亚洲欧洲日韩在线| 国产日韩精品一区二区三区| 一区二区三区欧美在线| 国内精品亚洲| 亚洲欧美精品中文字幕在线| 亚洲高清不卡av| 久久精品视频在线| 在线视频精品| 欧美国产欧美亚洲国产日韩mv天天看完整| 亚洲午夜一区| 欧美日韩国产影院| 亚洲欧洲免费视频| 狠狠久久五月精品中文字幕|