<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 電源與新能源 > 設(shè)計(jì)應(yīng)用 > 基于Nios嵌入式軟核處理器的液晶顯示屏的設(shè)計(jì)方案

          基于Nios嵌入式軟核處理器的液晶顯示屏的設(shè)計(jì)方案

          作者: 時(shí)間:2014-01-08 來(lái)源:網(wǎng)絡(luò) 收藏

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

          本文引用地址:http://www.ex-cimer.com/article/227088.htm

          1 NiosⅡ軟和SOPC

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

          現(xiàn)在,在一片F(xiàn)PGA芯片上可以實(shí)現(xiàn)如MCU、DSP、PCI總線控制和各種控制算法等復(fù)雜的功能。FPGA芯片密度已達(dá)到百萬(wàn)門(mén)級(jí),由于FPGA芯片密度的提高和EDA開(kāi)發(fā)工具的不斷更新,利用FPGA器件實(shí)現(xiàn)SOC已成為可能,這項(xiàng)技術(shù)稱(chēng)為嵌入式SOPC技術(shù)。SOPC技術(shù)既具有基于ASIC 的系統(tǒng)級(jí)芯片設(shè)計(jì)的特征,又具有基于模板級(jí)設(shè)計(jì)的特征,具有了可重構(gòu)性、高效自動(dòng)化的設(shè)計(jì)方法。Altera推出的Nios Ⅱ?yàn)樵O(shè)計(jì)者提供了FPGA優(yōu)化的嵌入式處理器,以及為SOPC設(shè)計(jì)了一套綜合解決方案。

          Nios Ⅱ處理器具有完善的軟件開(kāi)發(fā)套件,包括集成開(kāi)發(fā)環(huán)境(IDE)、編譯器、MC調(diào)試器、TCP/IP協(xié)議棧和實(shí)時(shí)操作系統(tǒng)(RTOS)。設(shè)計(jì)者能夠用Altera Quartus Ⅱ開(kāi)發(fā)軟件中的SOPC Builder系統(tǒng)開(kāi)發(fā)工具創(chuàng)建用戶定制的CPU 和外設(shè)電路,獲得設(shè)計(jì)需要的處理器系統(tǒng)。

          利用SOPC Builder開(kāi)發(fā)工具創(chuàng)建專(zhuān)用的處理器系統(tǒng),需要進(jìn)行SOPC 的嵌入式處理器芯片內(nèi)部資源的選擇和軟件設(shè)計(jì)。SOPC Builder工具通過(guò)加載Nios Ⅱ軟核和外圍接口的定義來(lái)配置一個(gè)高集成度的SOPC 系統(tǒng)的嵌入式處理器芯片。

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

          基于Nios嵌入式軟核處理器的液晶顯示屏的設(shè)計(jì)方案

          2 液晶屏控制器的選擇

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

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

          (2)指令簡(jiǎn)單;

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

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

          YM12864J的I/O接口見(jiàn)表1.

          基于Nios嵌入式軟核處理器的液晶顯示屏的設(shè)計(jì)方案

          3 FPGA 與LCD 的接口電路

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

          基于Nios嵌入式軟核處理器的液晶顯示屏的設(shè)計(jì)方案

          4 系統(tǒng)軟件設(shè)計(jì)

          系統(tǒng)硬件上電復(fù)位后,初始化函數(shù)會(huì)對(duì)硬件層進(jìn)行初始化配置,包括I/O口的方向配置。在對(duì)系統(tǒng)硬件層正確的初始化以后,可以通過(guò)Nios 將數(shù)據(jù)直接送至SED1330顯示緩沖區(qū),應(yīng)用層函數(shù)會(huì)對(duì)液晶的控制器發(fā)送控制命令和顯示數(shù)據(jù),然后液晶屏就會(huì)顯示用戶想要顯示的內(nèi)容,本設(shè)計(jì)應(yīng)用層設(shè)計(jì)了一些基本的顯示函數(shù),可以顯示字符,漢字和簡(jiǎn)單的圖形,用戶只需調(diào)用一些顯示函數(shù)就可以顯示內(nèi)容,系統(tǒng)的軟件設(shè)計(jì)流程如圖3所示。

          基于Nios嵌入式軟核處理器的液晶顯示屏的設(shè)計(jì)方案初始化函數(shù)的作用對(duì)液晶顯示器的控制器發(fā)送初始化命令。發(fā)送指令的方法如下:根據(jù)I/O的配置,先將命令數(shù)據(jù)送到與SED1330 控制器的命令口相連的I/O
          上一頁(yè) 1 2 下一頁(yè)

          關(guān)鍵詞: Nios嵌入式軟 核處理器

          評(píng)論


          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();