999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

NiosⅡ嵌入式處理器在LCD顯示系統設計中的應用

2013-04-12 00:00:00湯莉莉黃偉
現代電子技術 2013年19期

摘 要: Altera公司的Nios嵌入式軟核處理器以其成本低廉,設計靈活等特點,在嵌入式應用領域得到了廣泛的應用,同時LCD也越來越多地在各種儀器儀表和測控系統中作為人機界面和顯示模塊。論述利用SOPC技術實現了一種基于Nios嵌入式軟核處理器的液晶顯示屏的軟、硬件設計方案,并給出了對該液晶屏進行控制的硬件接口電路、軟件編寫流程以及相應程序。

關鍵詞: FPGA; Nios; LCD; 嵌入式處理器

中圖分類號: TN873?34 文獻標識碼: A 文章編號: 1004?373X(2013)19?0151?03

0 引 言

LCD液晶顯示滿足嵌入式系統日益提高的要求,特別在工業控制和消費電子領域,具有穩定可靠、成本低、功耗小、控制驅動方便、接口簡單易用、模塊化結構緊湊、體積小和重量輕等優點。Nios Ⅱ是一種可配置的16/32位RISC處理器,它結合豐富的外設專用指令和硬件加速單元可以低成本地提供極度靈活和功能強大的SOPC 系統,開發者根據實際需要自行整合。Altera公司所有主流FPGA 器件都支持Nios Ⅱ。將LCD驅動與Nios Ⅱ相結合可以得到一個擴展性強、通用的IP核,從而解決不同型號液晶屏之間的驅動差異問題。

1 NiosⅡ軟核處理器和SOPC設計

NiosⅡ核用占用不到一半的FPGA資源,可計算增加1倍以上的信息。NiosⅡ嵌入式處理器性能超過200 DMIPS,32位數據和地址、采用32位指令、32個外部中斷源和32位通用寄存器;Nios Ⅱ支持幾十個外設選項,開發者能夠選擇合適的外設,獲得最合適的處理器、外設和接口組合。

現在,在一片FPGA芯片上可以實現如MCU、DSP、PCI總線控制和各種控制算法等復雜的功能。FPGA芯片密度已達到百萬門級,由于FPGA芯片密度的提高和EDA開發工具的不斷更新,利用FPGA器件實現SOC已成為可能,這項技術稱為嵌入式SOPC技術。SOPC技術既具有基于ASIC的系統級芯片設計的特征,又具有基于模板級設計的特征,具有了可重構性、高效自動化的設計方法。Altera推出的Nios Ⅱ為設計者提供了FPGA優化的嵌入式處理器,以及為SOPC設計了一套綜合解決方案[1?2]。

Nios Ⅱ處理器具有完善的軟件開發套件,包括集成開發環境(IDE)、編譯器、MC調試器、TCP/IP協議棧和實時操作系統(RTOS)。設計者能夠用Altera Quartus Ⅱ開發軟件中的SOPC Builder系統開發工具創建用戶定制的CPU和外設電路,獲得設計需要的處理器系統。利用SOPC Builder開發工具創建專用的處理器系統,需要進行SOPC的嵌入式處理器芯片內部資源的選擇和軟件設計。SOPC Builder工具通過加載Nios Ⅱ軟核和外圍接口的定義來配置一個高集成度的SOPC系統的嵌入式處理器芯片[3?4]。

圖1是一個液晶顯示的SOPC系統的Nios Ⅱ處理器,主要端口包括復位信號、全局輸入時鐘和一些I/O端口。因Nios Ⅱ是在FPGA芯片內實現的,那么它既可以通過FPGA的引腳連到外部設備,也可以直接連到FPGA芯片內的其他電路上。FPGA片內未被使用的資源仍然同樣可以被配置成為其他的模塊使用,從而實現系統的SOC集成。

2 液晶屏控制器的選擇

這里使用的是一塊YM12864J的液晶顯示模塊,它已集成了SED1330作為液晶顯示屏的控制器,與同類產品相比其主要特點有:

(1)有較強功能的I/O控制器;

(2)指令簡單;

(3)8位并行I/O口;

(4)文本和圖形方式混合顯示。

YM12864J的I/O接口見表1。

3 FPGA與LCD的接口電路

本設計選擇的液晶顯示屏已經和控制器集成在了一起,外圍電路就比較簡單,只有FPGA芯片和液晶控制模塊的連接。這里有兩種方案可以考慮,第一種是把液晶顯示模塊當作外部存儲器,利用Ext_Shared_Bus的數據和地址總線對其進行控制;第二種是把LCD接口當作普通的外部設備GPIO進行操作,通過對I/O口的操作來控制LCD的數據以及讀、寫使能,片選。一般地,對于不太復雜的系統,把外部設備看作是普通PIO是比較簡單的方法,所以在這里采用第二種方案,Nios與LCD模塊的接口電路如圖2所示。

4 系統軟件設計

系統硬件上電復位后,初始化函數會對硬件層進行初始化配置,包括I/O口的方向配置。在對系統硬件層正確的初始化以后,可以通過Nios將數據直接送至SED1330顯示緩沖區,應用層函數會對液晶的控制器發送控制命令和顯示數據,然后液晶屏就會顯示用戶想要顯示的內容[5?6],本設計應用層設計了一些基本的顯示函數,可以顯示字符,漢字和簡單的圖形,用戶只需調用一些顯示函數就可以顯示內容,系統的軟件設計流程如圖3所示。

初始化函數的作用對液晶顯示器的控制器發送初始化命令。發送指令的方法如下:根據I/O的配置,先將命令數據送到與SED1330控制器的命令口相連的I/O口,然后把該命令的參數依次送到數據口地址。初始化代碼如下:

該程序主要包括頭文件lcd.h及主程序hello_world.c。

頭文件lcd.h的主要程序如下:

void lcd_cmd_set(alt_u8 u8_side,alt_u8 u8_cmd)

{ alt_u8 i;

lcd_status(u8_side);

//check u8_side status and side is enable

LCD_RS_L();

LCD_WR_L();

LCD_OUT_SET();

LCD_ENABLE(); //Enable the LCD

LCD_DAT_OUT(u8_cmd); for(i=0;i<10;i++);

//delay for enable

LCD_DISABLE(); for(i=0;i<10;i++);

//delay for enable }

void lcd_data_write(alt_u8 u8_side,alt_u8 u8_dat)

{ alt_u8 i;

lcd_status(u8_side);

LCD_RS_H();

LCD_WR_L();

LCD_OUT_SET();

LCD_ENABLE(); // Enable the LCD

LCD_DAT_OUT(u8_dat);

LCD_ENABLE(); for(i=0;i<10;i++);

//delay for enable

LCD_DISABLE(); for(i=0;i<10;i++);

//delay for enable }

void lcd_on_off(alt_u8 u8_side,alt_u8 u8_on_off)

{ lcd_cmd_set(u8_side,(u8_on_off 0x01)|0x3e); }

void lcd_line_set(alt_u8 u8_side,alt_u8 u8_line_num)

{ alt_u8 line_num;

if(u8_line_num>0x3f)

line_num = 0x3f;

else

line_num = u8_line_num;

lcd_cmd_set(u8_side,line_num|0xc0); }

void lcd_set_page(alt_u8 u8_side,alt_u8 u8_page_num)

{ lcd_cmd_set(u8_side,(u8_page_num 0x7)|0xb8); }

void lcd_set_colum(alt_u8 u8_side,alt_u8 u8_colum)

{ lcd_cmd_set(u8_side,(u8_colum 0x3f)|0x40); }

void lcd_write_dat(alt_u8 u8_page,alt_u8 u8_colum,alt_u8 u8_dat)

{ alt_u8 u8_side=0,colum;

if(u8_colum>0x3f u8_colum<128)

{ u8_side = 1; colum = u8_colum-64;

//write on the right screen }

if(u8_colum>=0 u8_colum<=0x3f)

{ colum = u8_colum;

lcd_set_page(u8_side,u8_page);

lcd_set_colum(u8_side,colum);

lcd_data_write(u8_side,u8_dat); }

void printf_hz(alt_u8 h,alt_u8 l,alt_u8 hz[32])

{ alt_u8 i;

for(i=0;i<16;i++)

{ lcd_write_dat(h*2,l+i,hz[i]);

lcd_write_dat(h*2+1,l+i,hz[i+16]); } }

主程序hello_world.c如下:

int main (void) //word 中存放漢字字模

{ printf_hz(3,i,_word1);

printf_hz(3,i+16,_word2);

printf_hz(3,i+32,_word3);

printf_hz(3,i+48,_word4);

printf_hz(3,i+64,_word5);

printf_hz(3,i+80,_word6);

printf_hz(3,i+96,_word7);

printf_hz(3,i+112,_word8);

return 0; }

當所有代碼設計完成并仿真調試成功后,在Quartus Ⅱ軟件中將完整的項目進行編譯,也就是將硬件配置信息與代碼軟件信息編譯在一起,并通過并口電纜最終下載到EP2C8T144C8芯片中,得到系統顯示結果信息清晰,穩定。

5 結 語

本文利用SOPC技術實現了基于NiosⅡ嵌入式處理器的LCD 顯示系統設計,從設計中可以看出采用NiosⅡ嵌入式軟核處理器與使用NiosⅡIDE 集成開發環境進行軟硬件開發的靈活性和優越性,且本文介紹的設計思路與實例開發對解決不同型號液晶屏之間的驅動具有通用性。

參考文獻

[1] 潘松,黃繼業.SOPC技術實用教程[M].北京:清華大學出版社,2005.

[2] 周立功.SOPC嵌入式系統基礎教程[M].北京:北京航空航天大學出版社,2006.

[3] 沈振乾,孔冰,常海峰.基于Nios嵌入式軟核處理器的LCD控制方法研究[J].天津工業大學學報,2006,25(4):94?96.

[4] 占榮,康勇.基于Nios嵌入式軟核處理器的液晶顯示屏控制[J].自動化技術與應用,2005,24(4):125?128.

[5] 孫愷,程世恒.NiosⅡ系統開發設計與應用實例[M].北京:北京航空航天大學出版社,2007.

[6] 王曉迪,張景秀.SOPC系統設計與實踐[M].北京:北京航空航天大學出版社,2008.

主站蜘蛛池模板: 亚洲国产无码有码| 免费国产高清视频| 国产欧美成人不卡视频| 国产91精选在线观看| 伊人久久久久久久久久| 亚洲美女AV免费一区| 婷婷午夜天| 97国产在线播放| 中国成人在线视频| 欧美国产综合色视频| 国产欧美日韩另类| 亚洲资源站av无码网址| 欧美亚洲第一页| 亚洲一级毛片在线观播放| 国内精品久久九九国产精品| 华人在线亚洲欧美精品| 91青草视频| 色综合国产| 久久人体视频| 精品国产成人三级在线观看| 无码人中文字幕| 色综合中文字幕| 极品av一区二区| 91精品aⅴ无码中文字字幕蜜桃| 久久精品这里只有精99品| 又黄又爽视频好爽视频| 香蕉网久久| 亚洲午夜国产片在线观看| 老汉色老汉首页a亚洲| 亚洲人成亚洲精品| 一级福利视频| 性欧美在线| 日韩一区二区三免费高清| 中文字幕va| 亚洲国产成熟视频在线多多| 国产波多野结衣中文在线播放| 亚洲欧美色中文字幕| 动漫精品中文字幕无码| 国产精品免费入口视频| 91福利片| 欧美日韩另类在线| 久久亚洲高清国产| 全部免费毛片免费播放| 美美女高清毛片视频免费观看| 久久精品国产精品一区二区| 日韩在线成年视频人网站观看| 成人在线观看不卡| 国产精品精品视频| 欧美激情第一区| 亚洲伊人久久精品影院| 色偷偷一区二区三区| 四虎在线高清无码| 亚洲综合色吧| 青青网在线国产| 亚洲高清无在码在线无弹窗| 国产精品自在在线午夜| 67194在线午夜亚洲| 国产在线八区| 欧美视频在线不卡| 中文字幕 欧美日韩| 国产精品久久久久久久久久久久| 97在线国产视频| 欧美成人免费一区在线播放| 97在线国产视频| 欧美自慰一级看片免费| 亚洲天堂在线免费| 无码丝袜人妻| 日韩欧美国产精品| 国产在线日本| 亚洲AV无码不卡无码| 婷婷色狠狠干| 成人在线观看不卡| 99久久精品免费视频| 婷婷色婷婷| 91国内视频在线观看| 一级一级一片免费| 伊人福利视频| 午夜a视频| 亚洲欧美天堂网| 国产成人av一区二区三区| 免费一级毛片在线播放傲雪网| 日韩精品毛片人妻AV不卡|