在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

    
    
    <address id="vxupu"><td id="vxupu"></td></address>

      <pre id="vxupu"><small id="vxupu"></small></pre>
      <dfn id="vxupu"></dfn>
      <div id="vxupu"><small id="vxupu"></small></div>
    1. 新聞中心

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

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

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

      2.1 仿真調(diào)試方案
      仿真調(diào)試方案如圖2所示。其原理是:在Keil軟件環(huán)境中編寫測試程序,編譯生成.hex文件并將其注入ROM的指令寄存器中。testbench負(fù)責(zé)產(chǎn)生工作時鐘及控制使能等信號,并將執(zhí)行ROM中指令的結(jié)果輸出到文本/波形文件中。開發(fā)人員通過對文本/波形文件和Keil調(diào)試工具執(zhí)行測試程序的結(jié)果進(jìn)行比較,從而實現(xiàn)對邏輯錯誤的查找與定位,并對核源文件進(jìn)行修改。

      本文引用地址:http://www.biyoush.com/article/191853.htm

      值得注意的是,雖然Modelsim功能強(qiáng)大,可以方便地觀察到任何層次模塊信號的變化,但是OC8051 核的結(jié)構(gòu)和時序比較復(fù)雜,仍避免不了仿真時因為中間信號多所帶來的不便。因此,在仿真調(diào)試時可尋求一些簡化操作的機(jī)制??紤]到借助數(shù)據(jù)寄存器指針DPTR和累加器A,MOVX指令可以將程序執(zhí)行過程中任何寄存器的值輸出到外部RAM中,而觀察外部RAM中的值相對容易,因而本文采用了這種機(jī)制。
      2.2 具體修改方法
      (1)oc805 1_ext_addr_sel模塊
      讀寫外部RAM地址可以由DPTR指示,也可以由Ri指示,該模塊的主要功能是選擇讀寫外部RAM地址。通過select和write信號完成對buff和state的配置,從而完成對讀寫外部RAM地址addr_out的配置。在Modelsim環(huán)境中,執(zhí)行表1中的代碼1時,發(fā)現(xiàn)addz_out的變化總是比DPTR慢一個時鐘周期,因而其執(zhí)行結(jié)果是將5寫入地址為0的外部RAM。造成這種現(xiàn)象的原因是配置buff和state時采用了always進(jìn)程,本文將該部分代碼修改為:
      assign state=write;
      asstgn buff=select?{8h00,ri}:{dptr_hi,dptr_lo};
      (2)oc8051_psw模塊
      該模塊由一個8位標(biāo)志寄存器及其控制邏輯組成,用來收集指令執(zhí)行后的有關(guān)狀態(tài)。8位寄存器的各位狀態(tài)通常是在指令執(zhí)行過程中自動形成,但也可以由用戶根據(jù)需要采用傳送指令加以改變。原設(shè)計中負(fù)責(zé)解釋傳送指令的邏輯采用if語句:
      if(addr[7:3]=='OC8051_SFR_B_ACC)data_out[addr[2:O]]=cy_in;
      'OC8051_SFR_B_ACC被定義為累加器A的高5位地址,用在這里顯然不對。應(yīng)該將其改為程序狀態(tài)字PSW的高5位地址'OC8051_SFR_B_PSW。
      (3)oc8051_alu模塊
      該模塊是一個性能極強(qiáng)的運算器,不但可以進(jìn)行四則運算和邏輯運算,而且具有數(shù)據(jù)傳送、移位、程序轉(zhuǎn)移等功能。其中,程序轉(zhuǎn)移功能是當(dāng)遇到短轉(zhuǎn)移指令SJMlE’或變址轉(zhuǎn)移指令JZ、CJNE、DJNZ等時,改變程序計數(shù)器PC的值,對應(yīng)原設(shè)計為always進(jìn)程中的'OC8051_ALU_PCS分支。其代碼如下:


      輸入src3為PC[15:8],src2為PC[7;0],src1為目標(biāo)轉(zhuǎn)移地址rel。需要注意的是,rel是以立即數(shù)形式存在的,且為補(bǔ)碼格式(補(bǔ)碼數(shù)的加減法運算統(tǒng)一為加法運算)。若src1[7]=1'b1成立,則rel為一負(fù)數(shù),對應(yīng)轉(zhuǎn)移指令是往前轉(zhuǎn)移;否則,往后轉(zhuǎn)移。當(dāng)rel為負(fù)數(shù)時,原設(shè)計僅考慮了:PC[7:0]≥| rel |的情況,其對目標(biāo)地址{des1,des2}的處理不全面;當(dāng)PC[7:0]|rel|時,des2=src2+src1為負(fù)數(shù),借位會對des1產(chǎn)生影響,因而應(yīng)有des1=src3-8'h1。因此,將該部分代碼修改為:


      其中c是借位標(biāo)志位,用來標(biāo)識程序轉(zhuǎn)移時PC[7:0]對PC[15:8]的影響。



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

      評論


      相關(guān)推薦

      技術(shù)專區(qū)

      關(guān)閉