国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

ICE中調(diào)試模塊IP軟核的設(shè)計與實現(xiàn)

2014-04-25 02:18:32江正斌周建偉李德安彭崇梅袁國順
電子科技 2014年5期
關(guān)鍵詞:仿真器斷點寄存器

江正斌,周建偉,李德安,彭崇梅,袁國順

(1.河北工業(yè)大學(xué) 微電子研究所,天津300130;2.北京中科微電子技術(shù)有限公司 研發(fā)部,北京100029;)

隨著片上系統(tǒng)集成度越來越高,嵌入式技術(shù)得到廣泛應(yīng)用,尤其是在消費電子產(chǎn)品中的應(yīng)用,芯片在線仿真器(In-Circuit Emulator,ICE)的研發(fā)也變得越來越重要,然而市場上的大部分ICE都是適用于幾款或一個系列的芯片,市場中的BD12000、TRACE32等通用仿真器并不能滿足需求,一些提出通用仿真器的方案卻并沒有提出調(diào)試模塊的IPcore具體的實現(xiàn)方法[1-4]。使得開發(fā)人員在開發(fā)相應(yīng)在線仿真器時,周期大幅增長,成本相應(yīng)增加?;诖?,提出一種具體實現(xiàn)調(diào)試模塊IPcore的方法,實現(xiàn)通用性,縮短開發(fā)周期,減少成本。整個過程的開發(fā)選擇了在Xilinx Spartan系列XC3S700AN開發(fā)板套件中進(jìn)行。

1 特點及其應(yīng)用

仿真器從應(yīng)用性角度可分為兩類:(1)特定在線仿真器。包括使用BDM、JTAG等,屬某一類或者某一系列的。(2)通用型仿真器。一類是用硬件搭建程序來實現(xiàn)的,這種仿真器并沒有很好的適用度,但可以作為基本的開發(fā)實驗,另一類則是基于FPGA用IP核來實現(xiàn)[5-9],將要實現(xiàn)ICE的所有IP軟核下載到FPGA中實現(xiàn),這種方案雖然通用,然而受調(diào)試模塊IP的限制,想要針對不同處理器進(jìn)行ICE開發(fā)需要較長的周期,且沒有固定的方案,可重復(fù)率較小,基于此,文中列出實現(xiàn)ICE調(diào)試模塊IP的詳細(xì)框架,并列出時鐘控制塊的詳細(xì)邏輯,使得其重復(fù)利用率大幅提高,縮短了開發(fā)周期。

2 系統(tǒng)實現(xiàn)

一般通用在線仿真器系統(tǒng)的實現(xiàn)可以分為:PC端軟件部分,USB(Universal Serial Bus)接口部分和以FPGA為主的硬件部分,3個部分缺一不可。從實現(xiàn)功能上來說,以FPGA為主的硬件部分是ICE機(jī)制實現(xiàn)的關(guān)鍵[10-12]。圖1為在線仿真器實現(xiàn)的系統(tǒng)圖。

圖1 ICE機(jī)制實現(xiàn)流程圖

2.1 調(diào)試模塊IP核的實現(xiàn)

PC端軟件部分和USB的接口部分為在線仿真器提供了方便,而整個ICE硬件電路的實現(xiàn)則需要在FPGA上實現(xiàn),硬件電路的質(zhì)量直接決定著在線仿真器的質(zhì)量,而調(diào)試模塊則又是實現(xiàn)ICE機(jī)制的關(guān)鍵。

圖2中雙向箭頭表示數(shù)據(jù)經(jīng)過調(diào)試模塊通過USB和電腦端進(jìn)行雙向通訊,電腦端發(fā)數(shù)據(jù)到FPGA視為寫數(shù)據(jù),F(xiàn)PGA向電腦端發(fā)數(shù)據(jù)視為讀過程,整個框圖表示的其實是一個讀寫的狀態(tài)機(jī),F(xiàn)PGA等待接收數(shù)據(jù),之后按照自定義的協(xié)議將字節(jié)信息進(jìn)行分類,以識別不同命令,根據(jù)命令發(fā)出相應(yīng)的控制CPU運行的動作,之后對發(fā)出數(shù)據(jù)進(jìn)行校驗,如果正確則轉(zhuǎn)入讀寄存器狀態(tài),將讀完的數(shù)據(jù)進(jìn)行校驗,正確后轉(zhuǎn)入寫等待即等待輸入新的命令,整個狀態(tài)機(jī)可以較好地實現(xiàn)和電腦端的交互過程。圖2是實現(xiàn)調(diào)試模塊的具體的狀態(tài)圖。

圖2 調(diào)試模塊實現(xiàn)狀態(tài)流程圖

2.2 關(guān)鍵邏輯設(shè)計

下面列出調(diào)試模塊端口中比較重要的信號:

debug_k2,//連接mcu,總開關(guān)控制對寄存器的操作;

dclkcon,//連接mcu總的時鐘控制線,1有效,有效時MCU時鐘被屏蔽;

debug_wr,//連接mcu表示寫寄存器命令;

debug_rd,//連接mcu表示讀寄存器命令;

debug_addr_w,//地址信息用來表示要讀取或?qū)懭氲氖悄膫€寄存器;

debug_k2是總的寄存器讀寫控制端口,當(dāng)微處理器處于停止?fàn)顟B(tài)時,通過控制debug_k2來實現(xiàn)對寄存器進(jìn)行讀寫,當(dāng)其為1時,可以對微處理器內(nèi)部寄存器進(jìn)行讀寫,當(dāng)進(jìn)行讀操作時,此時需要將debug_rd置1,當(dāng)進(jìn)行寫操作時,將debug_rd置0之后將debug_wr置1即可,對于讀哪些寄存器時需要近似于RAM地址線的debug_addr_w進(jìn)行控制,定義其為9位的位寬,當(dāng)其取不同值時定義其對應(yīng)不同的寄存器即可。

調(diào)試模塊中如何正確有效的控制CPU的運行是實現(xiàn)ICE機(jī)制的關(guān)鍵,定義其為1時CPU停止運行,為0時CPU繼續(xù)運行。然而,斷點運行、單步運行、全速運行3種命令之中都隱含有使微處理器運行的命令。同理,斷點運行、單步運行、停止命令3種命令之中都隱含有使微處理器停止運行的命令。多個命令控制同一個時鐘時,一個觸發(fā)器是不可能實現(xiàn)的,必須對控制同一寄存器時鐘的信號進(jìn)行邏輯組合,進(jìn)行優(yōu)先級的劃分,方能實現(xiàn)對整個時鐘的控制,以下是根據(jù)情況對應(yīng)不同命令定義的不同的時鐘控制分量:

reg adlkcon;//停止命令的“?!笨刂菩盘?,當(dāng)其為1時應(yīng)讓CPU停止運行

reg ddlkcon;//單步命令時“停”控制信號,當(dāng)其為1時應(yīng)讓CPU停止運行

reg edlkcon;//斷點命令時“停”控制信號,當(dāng)其為1時應(yīng)讓CPU停止運行

reg bdlkcon;//運行命令的控制信號,當(dāng)其為0時CPU運行

要實現(xiàn)正確的時鐘邏輯,則需要上述四個分量共同決定dclkcon的時序,經(jīng)過分析可知,當(dāng)FPGA接收到斷點運行、“單步、“全速運行”命令時,必須將bdlkcon置0,從而使時鐘控制信號dclkcon為0,微處理器開始運行,當(dāng)運行到指定要求時斷點運行、單步命令對應(yīng)的時鐘分量必須被置1,使時鐘控制信號dclkcon置1,微處理器停止運行,并且各分量對時鐘信號的控制必須滿足命令循環(huán)重復(fù)的情況。

當(dāng)adlkcon,ddlkcon,edlkcon為1時,微處理器需停止運行,此時時鐘控制信號dclkcon必須被置1,當(dāng)bdlkcon為0時微處理器需開始運行,此時時鐘控制信號dclkcon必須被置0,然而,當(dāng)adlkcon,ddlkcon,edlkcon由1變?yōu)?或者是bdlkcon由0變?yōu)?時,并不希望dclkcon的值發(fā)生變化,此時,時鐘信號必須保持不變,也就是使其保持原值即可。

通過時序的驗證,以上時序邏輯控制能夠較好地滿足所需要求。當(dāng)出現(xiàn)跟運行有關(guān)的命令時,bdlkcon由1變?yōu)?,時鐘信號dclkcon被置1,緊接著bdlkcon置1,時序邏輯進(jìn)入到下一層進(jìn)行邏輯判斷,當(dāng)遇到跟停止有關(guān)的命令時,adlkcon或ddlkcon或edlkcon由0變1,由于bdlkcon為1,時鐘控制邏輯直接進(jìn)入到下一層進(jìn)行判斷,整個時鐘控制邏輯得以實現(xiàn)。

2.3 查錯設(shè)計

有數(shù)據(jù)發(fā)送就難免有錯誤,由于USB通訊本身的優(yōu)點,從電腦端發(fā)送到調(diào)試模塊總線端口的數(shù)據(jù)出錯的幾率較小,但為了避免出錯造成對字節(jié)命令的影響,在定義字節(jié)含義時,在每一條命令相關(guān)的最后一個字節(jié)都帶有兩字節(jié)的校驗和用來檢驗,當(dāng)發(fā)生錯誤時會自動重新發(fā)送,從而保證數(shù)據(jù)傳輸?shù)恼_性。

3 板上驗證

選用EM78P447S的IP軟核并結(jié)合調(diào)試模塊在Xilinx Spartan系列XC3S700AN開發(fā)板套件中成功進(jìn)行了驗證。

一般的仿真器斷點實現(xiàn)方法是將斷點地址事先存入斷點寄存器,執(zhí)行時斷點地址與程序地址進(jìn)行比較,當(dāng)相等時則CPU停止運行,然而這樣在隨時取消斷點的同時實現(xiàn)起來較麻煩。如果采用軟硬件結(jié)合的辦法,無論設(shè)多少個斷點,只在點擊斷點運行命令時將離當(dāng)前運行位置最近的斷點作為地址發(fā)送至內(nèi)部FPGA,并且每次運行只發(fā)一個地址,這樣就可以保證在設(shè)置了多個斷點地址時,在運行了一部分后隨意取消之前設(shè)置的斷點,就可實現(xiàn)任意設(shè)置和取消斷點,并且每次斷點運行只發(fā)一次地址的簡便實現(xiàn)方法。

單步的實現(xiàn)既可用保存地址而后進(jìn)行比較的方法實現(xiàn),最簡單的辦法則是根據(jù)處理器的芯片執(zhí)行流水線特性選擇關(guān)鍵點,此次選用的EM78P447S為兩級流水線,PC變化時表示上一條指令剛執(zhí)行完成,根據(jù)其特性,采樣PC變化,在單步執(zhí)行時每變化一次則停止一次即可實現(xiàn)單步功能

圖3為單步運行邏輯分析儀采樣圖,單步停下的地址為007H,然后讀出相應(yīng)寄存器的值。t_mfd為雙向數(shù)據(jù)總線,將“單步”停止后各個寄存器的值傳回電腦端,如圖3所示,dclkcon為總的時鐘控制信號,當(dāng)其為高時CPU停止運行,為低時CPU運行,bdlkcon為0時CPU運行,ddlkcon為“單步“命令時控制信號,當(dāng)“單步”時,ddlkcon發(fā)出一個高電平脈沖,由上述總時鐘控制邏輯可以看出,當(dāng)bdlkcon低電平到來時觸發(fā)dclkcon變低,CPU開始運行,當(dāng)bdlkcon脈沖結(jié)束后,if(adlkcon==1edlkcon==1)并不滿足所以dclkcon繼續(xù)保持邏輯,等到ddlkcon變?yōu)?之后,使得dclkcon變1則CPU停止運行,PC的值增加1,CPU執(zhí)行了一條指令后停止,停止后PC的值為0007H。

圖3 斷點停止

4 結(jié)束語

設(shè)計的硬件電路能夠較好地實現(xiàn)“全速運行”,“停止”,“斷點運行”,“單步運行”,并且讀寫相應(yīng)的寄存器,在整個系統(tǒng)中,軟硬件結(jié)合設(shè)計才能有效地完成在線仿真器的開發(fā)?;诖嗽O(shè)計方法,可以廣泛應(yīng)用于MCU,ARM等芯片的在線仿真器開發(fā)中。本IP核具有如下優(yōu)點:(1)整個程序?qū)哟畏置鳌⑦壿嬊逦?、可重?fù)利用、易于修改。(2)不受具體器件的限制,根據(jù)具體器件的特性稍加改動便可兼容。(3)具有良好的檢驗差錯重發(fā)能力,避免了出錯帶來的錯誤結(jié)果。(4)適用性強(qiáng),為研發(fā)人員提供了方便,大幅節(jié)約了調(diào)試的成本。(5)擺脫對某些特定種類在線仿真器的束縛,實現(xiàn)了仿真器的通用化。至此,結(jié)合通用仿真器方案,將調(diào)試模塊的IP加入,則可在FPGA上實現(xiàn)具體芯片的ICE機(jī)制。

[1] 李舸,桑楠,熊光澤.一種通用在線仿真調(diào)試器的設(shè)計[J].計算機(jī)應(yīng)用,2007,27(4):875-876.

[2] 曹健雄,嚴(yán)壯志.基于FPGA的單片機(jī)仿真器設(shè)計[J].中國醫(yī)療器械雜志,2010,34(6):424-426.

[3] 郭金懷,劉丹非,王誠.嵌入式CPU的設(shè)計與仿真[J].現(xiàn)代電子技術(shù),2003,16(增刊):59-62.

[4] 王祖強(qiáng),張華,李玲.8位RISC MCU IP軟核仿真的新方法[J].計算機(jī)工程,2007,33(11):248-249.

[5]Xilinx Conpraion.Spartan-3A FPGA family data sheet[M].CA USA:Xilinx Conpraion,2009.

[6]Intel.Universal serial bus specification[M].CA USA:Intel Conpration,1998.

[7]Cypress.CY7C68013 EZ-USB FX2 USB microcontroller high-speed USB peripheral controller[M].CA USA:Cypress Conpration,2012.

[8] 田耕,徐文波.Xilinx FPGA開發(fā)實用教程[M].北京:清華大學(xué)出版社,2008.

[9] 夏宇聞.Verilog數(shù)字系統(tǒng)設(shè)計教程[M].2版.北京:北京航空航天大學(xué)出版社,2008.

[10]柴欣,張紅梅.Visual C++程序設(shè)計基礎(chǔ)[M].2版.北京:中國鐵道出版社,2007.

[11]宋存杰.基于6502的MCU的開發(fā)及其ICE機(jī)制的實現(xiàn)[D].哈爾濱:哈爾濱工業(yè)大學(xué),2010.

[12]朱武星.65C02 MCU在線仿真器的設(shè)計研究[D].廈門:廈門大學(xué),2008.

猜你喜歡
仿真器斷點寄存器
Lite寄存器模型的設(shè)計與實現(xiàn)
一類無限可能問題的解法
分簇結(jié)構(gòu)向量寄存器分配策略研究*
主導(dǎo)電回路發(fā)生斷點故障判斷方法探討
基于多線程的慣導(dǎo)邏輯仿真器設(shè)計
天文測量仿真器模擬星圖精度分析
并行片上網(wǎng)絡(luò)仿真器ParaNSim的設(shè)計及性能分析
高速數(shù)模轉(zhuǎn)換器AD9779/AD9788的應(yīng)用
TKScope仿真調(diào)試Cortex-M3內(nèi)核的高級手段
基于32位SPARC處理器的JTAG仿真器設(shè)計與實現(xiàn)
察哈| 田阳县| 呼伦贝尔市| 伊宁市| 广西| 萝北县| 确山县| 芦山县| 封丘县| 鲁山县| 扶风县| 赤水市| 宝山区| 邵阳市| 澎湖县| 昆山市| 漯河市| 梁河县| 仁布县| 禄丰县| 咸宁市| 巴南区| 浦江县| 北票市| 鄂托克旗| 乐清市| 和林格尔县| 衢州市| 贡嘎县| 高州市| 葫芦岛市| 丽江市| 龙游县| 济南市| 隆昌县| 青海省| 南宫市| 太仆寺旗| 哈尔滨市| 无为县| 友谊县|