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

          新聞中心

          EEPW首頁(yè) > 光電顯示 > 設(shè)計(jì)應(yīng)用 > 基于MCU和FPGA的LED圖文顯示屏控制系統(tǒng)

          基于MCU和FPGA的LED圖文顯示屏控制系統(tǒng)

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

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

            3 控制器的設(shè)計(jì)

            3.1 控制模塊總體方案

            如圖3所示,控制模塊主要由單片機(jī)與FPGA接口及數(shù)據(jù)讀寫模塊、讀地址發(fā)生器、譯碼器、行地址發(fā)生器、數(shù)據(jù)鎖存器組、移位寄存器組、脈沖發(fā)生器等模塊組成。

            讀地址發(fā)生器主要產(chǎn)生讀地址信號(hào),地址信號(hào)送往接口及數(shù)據(jù)讀寫模塊,讀取外部SRAM1或SRAM2中已處理好的數(shù)據(jù),并把數(shù)據(jù)按分區(qū)方式送到數(shù)據(jù)鎖存器組鎖存。鎖存器輸出16分區(qū)數(shù)據(jù),通過(guò)移位寄存器組實(shí)現(xiàn)并串轉(zhuǎn)換得到所需要的串行數(shù)據(jù),并送往顯示屏列驅(qū)動(dòng)電路。脈沖發(fā)生器為各模塊提供相應(yīng)的同步時(shí)鐘,行地址發(fā)生器產(chǎn)生相應(yīng)的行信號(hào)送往顯示屏的行驅(qū)動(dòng)電路。

            3.2 單片機(jī)與FPGA接口及數(shù)據(jù)讀寫模塊

            單片機(jī)與FPGA接口及數(shù)據(jù)讀寫模塊結(jié)構(gòu)如圖4所示。單片機(jī)從EEPROM中讀取數(shù)據(jù)并根據(jù)顯示要求進(jìn)行處理后,通過(guò)接口及數(shù)據(jù)讀寫模塊把數(shù)據(jù)送往數(shù)據(jù)緩沖器SRAM1或SRAM2。為提高數(shù)據(jù)的傳輸速度,保證顯示效果的連續(xù)性,在系統(tǒng)中采用雙體切換技術(shù)來(lái)完成數(shù)據(jù)存儲(chǔ)過(guò)程。也就是說(shuō),采用雙SRAM存儲(chǔ)結(jié)構(gòu),兩套完全獨(dú)立的讀、寫地址線和數(shù)據(jù)線輪流切換進(jìn)行讀寫。工作時(shí),F(xiàn)PGA在一個(gè)特定的時(shí)間只從兩塊SRAM中的一塊讀取顯示的數(shù)據(jù)進(jìn)行顯示,同時(shí)另外一塊SRAM與進(jìn)行數(shù)據(jù)交換。會(huì)寫入新的數(shù)據(jù),依次交替工作,可實(shí)現(xiàn)左移、上移、雙屏等顯示模式。如果顯示的內(nèi)容不改變,即一塊SRAM里的數(shù)據(jù)不變時(shí),MCU不需要給另外一塊SRAM寫數(shù)據(jù)。

            該模塊采用VHDL有限狀態(tài)機(jī)來(lái)實(shí)現(xiàn),整個(gè)控制分為4個(gè)狀態(tài),其狀態(tài)轉(zhuǎn)換圖如圖5所示。其工作過(guò)程如下:



          評(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); })();