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

          新聞中心

          EEPW首頁 > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 在FPGA上對OC8051IP核的修改與測試

          在FPGA上對OC8051IP核的修改與測試

          作者: 時間:2009-12-14 來源:網(wǎng)絡(luò) 收藏


          引 言
          20世紀(jì)80年代初,Intel公司推出了MCS-51單片機(jī),隨后Intel以專利轉(zhuǎn)讓的形式把內(nèi)核發(fā)布給許多半導(dǎo)體廠家,從而出現(xiàn)了許多與MCS-51系統(tǒng)兼容的產(chǎn)品。這些產(chǎn)品與MCS-51的系統(tǒng)結(jié)構(gòu)相同,采用CMOS工藝,因而常用80C51系列來指代所有具有指令系統(tǒng)的單片機(jī)。在80C51系列中,以架構(gòu)清晰、取指帶寬大、時鐘效率高等諸多優(yōu)點(diǎn)受到業(yè)內(nèi)人士的青睞。本文在分析OpenCores網(wǎng)站提供的一款8051核的基礎(chǔ)上,給出了一種仿真調(diào)試方案;利用該方案指出了其中若干邏輯錯誤并對其進(jìn)行修改,最終完成了修改后核的下載測試。

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


          1 8051結(jié)構(gòu)分析
          OpenCores網(wǎng)站提供的OC8051 核與8051的系統(tǒng)結(jié)構(gòu)相同,如圖1所示。該IP核兼容所有8051指令系統(tǒng),內(nèi)部資源包括:8位CPU,尋址能力達(dá)2×64K;4 KB的ROM和128字節(jié)的RAM;4個8位I/O口;16位內(nèi)部定時/計(jì)數(shù)器;5個中斷源和2個中斷優(yōu)先級。采用Verilog語言對其各個模塊進(jìn)行描述。系統(tǒng)主要模塊及其功能說明如表1所列。不同模塊對應(yīng)的源文件均是以模塊名稱命名的,例如累加器A對應(yīng)的源文件為oc8051_acc.v。

          雖然上述OC8051 IP核宣稱兼容所有8051指令系統(tǒng),但是實(shí)際執(zhí)行時并非如此。例如在執(zhí)行表2所列的2組功能相同的代碼時,所得到的執(zhí)行結(jié)果并不相同。代碼1的執(zhí)行結(jié)果是將5寫入地址為0的外部RAM,代碼2的執(zhí)行結(jié)果是將5寫入地址為4的外部RAM。造成這種現(xiàn)象的原因是,oc8051_ext_addr_sel模塊配置寫外部RAM地址時延誤了一個時鐘周期。若要OC8051 IP核與標(biāo)準(zhǔn)8051系統(tǒng)一致,須對源文件中類似的邏輯錯誤進(jìn)行修改。

          2 OC805 1仿真調(diào)試及修改
          對于硬件設(shè)計(jì)而言,仿真的作用是驗(yàn)證設(shè)計(jì)結(jié)果的邏輯功能是否符合初始規(guī)定,如果在這一層次上設(shè)計(jì)出了問題,那么以后各個層次的工作將完全不確定。由前文可知,OC8051 IP核存在著邏輯錯誤,所以有必要通過仿真的手段實(shí)現(xiàn)錯誤查找和定位,從而最終完成對邏輯錯誤的修改。


          上一頁 1 2 3 下一頁

          關(guān)鍵詞: FPGA 8051 OC IP

          評論


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