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

          新聞中心

          EEPW首頁 > 消費(fèi)電子 > 設(shè)計(jì)應(yīng)用 > 基于Nios II的非一般模式類設(shè)備設(shè)計(jì)與集成

          基于Nios II的非一般模式類設(shè)備設(shè)計(jì)與集成

          ——
          作者: 時(shí)間:2007-11-16 來源:FPGA設(shè)計(jì)網(wǎng) 收藏

            按其功能可分為筆段式和點(diǎn)矩陣式,后者又可以分為字符點(diǎn)陣式和圖形點(diǎn)陣式。圖形點(diǎn)陣式液晶顯示器不僅可顯示數(shù)字、字符等內(nèi)容,還能顯示漢字和任意圖形。但此類液晶顯示屏屬于非一般模式類設(shè)備,在 中不能直接開發(fā)使用。

            對(duì)于一個(gè)全新的外部設(shè)備, 有更好的解決方案快速的掌握它的控制方法。按照設(shè)備的電器要求,使用 的已有的基本控制設(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ā)效率。

            以下是液晶屏顯示模塊接口的設(shè)計(jì)與集成過程。

            液晶顯示模塊的設(shè)計(jì)

            液晶顯示簡(jiǎn)介

            GM12864A 是帶顯示存儲(chǔ)器的圖形液晶顯示器。它的內(nèi)部是由兩塊KS0108B作為列顯示控制器和一片KS0107B作為行顯示控制器組成。顯示屏上各像素點(diǎn)的顯示狀態(tài)與顯示存儲(chǔ)器的各位相互對(duì)應(yīng),顯示存儲(chǔ)器的數(shù)據(jù)直接作為圖形顯示的驅(qū)動(dòng)信號(hào)。顯示數(shù)據(jù)為“1”,相應(yīng)的像素點(diǎn)變亮。液晶屏結(jié)構(gòu)如圖1所示。

            

          液晶屏GM12864A的結(jié)構(gòu)圖

            圖1 液晶屏GM12864A的結(jié)構(gòu)圖

            PIO類的介紹

            設(shè)計(jì)初始階段主要的目的在于充分了解新設(shè)備的特性與控制方法,為之后的設(shè)備集成打好基礎(chǔ)。因此采用通用的輸入輸出控制接口(PIO)直接對(duì)液晶屏的引腳進(jìn)行控制。

            Nios II中PIO分為三大類:輸入(I)、輸出(O)和三態(tài)(Tri)。PIO通過Avalon總線與Nios II相連接。如圖2所示。

            

          通用輸入輸出接口與Nios II的連接

            圖2 通用輸入輸出接口與Nios II的連接

            接口的設(shè)計(jì)

            在Quartus II中新建一個(gè)工程,芯片類型選擇Cyclone 1C6Q240C8。設(shè)置畫面如圖3所示。

            

          芯片設(shè)置界面

            圖3 芯片設(shè)置界面

            工程創(chuàng)建完成后在SOPC Builder中定制Nios II處理器。液晶屏顯示器驅(qū)動(dòng)接口在設(shè)計(jì)初步作為普通的外部設(shè)備,用PIO進(jìn)行操作。所以為系統(tǒng)增添所需要的PIO接口。設(shè)計(jì)完成后如圖4所示。

            

          定制的Nios II處理器結(jié)構(gòu)

            圖4 定制的Nios II處理器結(jié)構(gòu)

            定制結(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所示。

            

          液晶屏控制系統(tǒng)頂層結(jié)構(gòu)

            圖5 液晶屏控制系統(tǒng)頂層結(jié)構(gòu)

            將控制系統(tǒng)編譯,液晶屏與芯片的接口連接電路如圖6所示。

            

          液晶屏與FPGA的接口電路

            圖6 液晶屏與FPGA的接口電路

            液晶屏顯示模塊的HAL集成

            為了更好的對(duì)新外設(shè)進(jìn)行高效二次開發(fā),通過編寫外設(shè)驅(qū)動(dòng)并集成到HAL中是最好的方法。這樣可以更加方便的再次構(gòu)件系統(tǒng),有效降低開發(fā)周期,提高開發(fā)效率,降低開發(fā)難度。

            開發(fā)外設(shè)并集成的開發(fā)流程如圖7所示。

            

          新設(shè)備集成HAL流程

            圖7 新設(shè)備集成HAL流程

            對(duì)于新外部設(shè)備的HAL集成流程是從設(shè)備功能角度出發(fā)并劃分控制單元模塊,因此使控制程序代碼對(duì)設(shè)備無關(guān),即外部設(shè)備細(xì)節(jié)控制對(duì)開發(fā)者是透明的,從而使代碼具有更好的規(guī)范性和可移植性。當(dāng)此設(shè)備處于不同的硬件配置的Nios II系統(tǒng)時(shí)仍能正常工作。

            結(jié)語

            在Altera FPGA中使用軟核處理器Nios II可以將外部存儲(chǔ)器、液晶顯示屏、以太網(wǎng)控制器等外部設(shè)備連接在一起,進(jìn)行外設(shè)的協(xié)調(diào)工作和數(shù)據(jù)共享。從而具有較高靈活性并且能適應(yīng)變化較多的技術(shù)領(lǐng)域。

            一個(gè)新的外部設(shè)備只要根據(jù)Nios的內(nèi)部規(guī)范編寫驅(qū)動(dòng)就可以集成到HAL中,加強(qiáng)新設(shè)備的運(yùn)行穩(wěn)定性和二次使用的效率。

            另外,可以根據(jù)系統(tǒng)的需要添加多個(gè)Nios II處理器實(shí)現(xiàn)“多內(nèi)核”系統(tǒng)或者在Nios II核中加入實(shí)時(shí)操作系統(tǒng)(RTOS),實(shí)現(xiàn)多任務(wù)的調(diào)度。運(yùn)用 Altera的SOPC技術(shù)可以高效快速的開發(fā)一個(gè)用戶定制的片上系統(tǒng)。并且具有外圍電路少,控制靈活方便,研發(fā)周期短等特點(diǎn)。

          p2p機(jī)相關(guān)文章:p2p原理




          評(píng)論


          相關(guān)推薦

          技術(shù)專區(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); })();