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