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

          新聞中心

          EEPW首頁 > 電源與新能源 > 設計應用 > 基于SOPC的通用字符VGA顯示電路設計

          基于SOPC的通用字符VGA顯示電路設計

          作者: 時間:2012-06-29 來源:網絡 收藏

          在整個工程的頂層文件中例化生成的system_0模塊,用鎖相環(huán)模塊產生所需的25MHz時鐘信號并作為模塊iCLK 25信號輸入。由于的CPU RESET信號只能鎖定在實際器件中的按鈕上作為輸入,而DE2開發(fā)上的4個按鈕在后面的實例都需要用到,因此在頂層文件中將CPU RESET信號直接置1。system_0的其他的輸入輸出信號根據(jù)開發(fā)板的相應資源進行定義和管腳鎖定。
          本設計的FPGA配置信息(sof文件)寫入EPCS器件中,Nios II程序(elf文件)寫入CFI Flash模塊中,所用到的兩個字庫也寫入CFI Flash中,字庫起始偏移地址分別為0x80000和0x1000000。

          2 原理
          調用點陣字庫實現(xiàn)任意數(shù)字和漢字的實時是本設計的基本方法。本設計中分別采用ASC16和HZK16字庫作為ASCII碼和漢字的點陣字庫,這兩個字庫最早在UCDOS系統(tǒng)中被使用。
          ASC16字庫含有256個ASCII碼,每個ASCII碼均以16×8的點陣表示,點陣信息以行優(yōu)先的方式存儲,每個字符占用128個存儲位(16字節(jié)),按照ASCII碼的編碼順序存儲,故一個字符的ASCII碼值乘16就是它在ASC16字庫中的偏移地址。
          HZK16是依據(jù)GB2312編碼存儲的點陣字庫,每個漢字用16×16的點陣表示,每個字符占用256個存儲位(32字節(jié)),點陣信息同樣以行優(yōu)先方式存儲。
          HZK16字庫內漢字按照內碼順序存儲,每個漢字的內碼由兩個字節(jié)組成,高位字節(jié)為區(qū)號,低字節(jié)為位號,兩字節(jié)的范圍均為0xA1~0xFE共94個取值。將漢字的兩個字節(jié)分別減去0xA1,即可得到該漢字的區(qū)號和位號。設某個漢字編碼的兩個字節(jié)分別為0xMM和0xNN,則該漢字在HZK16字庫中對應的偏移地址為:
          OFFEST=[94×(0xMM-0xA1)+(0xNN-0xA1)]×32
          定位了ASCII碼字符或漢字在點陣字庫中的位置后,讀出其所對應的16字節(jié)或32字節(jié)數(shù)據(jù),用按位與運算和左移運算對每個字節(jié)的8個位逐一測試,將測試結果為1的位的對應像素填充為前景色,否則將像素填充為背景色,實現(xiàn)設定字符的。

          3 中相關函數(shù)的定義
          根據(jù)上述原理,以C語言編寫適用于上述的字符顯示函數(shù),并以Nios II HAL系統(tǒng)庫為基礎。
          3.1 ASCII碼字符顯示函數(shù)show_asc
          此函數(shù)用于在輸出畫面的(x,y)坐標處顯示單個ASCII碼字符asc,主要代碼如下:
          d.JPG
          e.JPG


          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();