80C51系列單片機(jī)仿真器選購指南
第六章 如何測試通用仿真器
在選擇了仿真器生產(chǎn)廠商后,用戶還需要對仿真器的性能做仔細(xì)的測試,保證您選擇的仿真器能夠達(dá)到該仿真器保證的性能以及作為仿真器應(yīng)該達(dá)到的性能。
在選擇一種仿真器前,通過該仿真器的廣告和銷售人員的介紹,用戶能基本上了解該仿真器的突出性能。這些突出性能應(yīng)該是該仿真器確實(shí)存在的功能,雖然可能有被夸大但一般都不會有欺騙的成分。這些性能好不好需要有針對性的一一驗(yàn)證,這里只能建議用戶將目光注意在實(shí)際仿真性能上,而不要過分注意一些與仿真器無關(guān)或關(guān)系不大的功能。
很多的仿真器雖然具備一些附加的功能,但是用戶必須要注意到這些仿真器可能在一些最基本的仿真功能卻做不好,這種現(xiàn)象在國產(chǎn)的仿真器中非常普遍!由于用戶并不專業(yè)于仿真器的測試,因此在購買中不知道對這些仿真器的死點(diǎn)進(jìn)行驗(yàn)證。等以后在學(xué)習(xí)特別是在開發(fā)設(shè)計中,這些設(shè)計中的死點(diǎn)可能給您帶來莫名其妙的問題。您可能要花幾倍的時間來尋找其中的原因,因?yàn)槟紫葢岩墒悄到y(tǒng)的問題而不懷疑是仿真器的問題。所以選擇一個性能可靠的仿真器是十分重要的,這需要非常專業(yè)化的測試程序來實(shí)現(xiàn)。
以下的測試程序由廣州致遠(yuǎn)電子有限公司提供,經(jīng)過長時間的使用證明能基本上反映出一個仿真器設(shè)計水平的高低。廣州致遠(yuǎn)電子有限公司在提供這些測試程序時聲明:這些測試程序只是指出仿真器設(shè) 計中容易出現(xiàn)的問題,但并不有意攻擊任何含有上述問題的仿真器廠家。
1.單步性能的測試
測試說明:單步是仿真器設(shè)計中比較難實(shí)現(xiàn)的功能。照通常的理解,用戶每執(zhí)行一個單步應(yīng)該準(zhǔn)確實(shí)現(xiàn)理想運(yùn)行的單步性能。例如,運(yùn)行一個機(jī)器周期的指令,內(nèi)部的所有時序應(yīng)該都動作一個機(jī)器周 期而不能出現(xiàn)不動作或動作過度的現(xiàn)象。不過很遺憾的看到國內(nèi)的仿真器多數(shù)不能達(dá)到這個指標(biāo)。
測試程序:
ORG 0000H
SETB TR0 /* 打開定時器0 */
TestStart:
NOP /* 定時器0 運(yùn)行1個機(jī)器周期, TL0 加1 */
MOV A,#0FFH /* 定時器0 運(yùn)行1個機(jī)器周期, TL0 加1 */
MUL AB /* 定時器0 運(yùn)行4 個機(jī)器周期, TL0 加4 */
LJMP TestStart /* 定時器0 運(yùn)行2 個機(jī)器周期, TL0 加2 */
END
測試步驟
(1) 照您當(dāng)前使用的仿真器要求測試上面的程序;
(2) 在運(yùn)行前打開TL0 的顯示,以便單步運(yùn)行后能觀察TL0 的變化;
(3) 使用當(dāng)前仿真器環(huán)境提供的單步功能開始單步運(yùn)行;
(4) 單步運(yùn)行后檢查TL0 變化的數(shù)值是否與指令的周期數(shù)相同。
測試結(jié)論:仿真器如果沒有照嚴(yán)格正規(guī)的設(shè)計,程序的單步運(yùn)行性能將不準(zhǔn)確,一般會出現(xiàn)實(shí)際運(yùn)行時間變長的現(xiàn)象,這在時間要求較高的單步運(yùn)行將不能仿真程序的真正運(yùn)行。
2.中斷性能的測試
測試說明:中斷是一種非正常的程序跳轉(zhuǎn),單步仿真有一定的難度,尤其在低檔仿真器中。在當(dāng)前采用Bondout 技術(shù)制作的仿真器中一般可以做到正確仿真,但是仍有一些仿真器不能正確單步仿真中斷。
測試程序:
ORG 0000H
LJMP TestStart
ORG 000BH /* 定時器0 的中斷服務(wù)程序 */
RETI
TestStart:
SETB EA /* 開放全局中斷允許 */
SETB ET0 /* 開放T0 中斷允許 */
TestLoop:
SETB TF0 /* 設(shè)置T0 的中斷標(biāo)志 */
INC A /* A 數(shù)值加一,以便觀察程序持續(xù)運(yùn)行 */
LJMP TestLoop /* 連續(xù)運(yùn)行 */
END
測試步驟
(1) 照您當(dāng)前使用的仿真器要求測試上面的程序。
(2) 每次SETB TF0 后程序?qū)⑦M(jìn)入T0 的中斷服務(wù)程序,執(zhí)行完畢后返回主程序繼續(xù)運(yùn)行。
(3) 主程序能在TestLoop 中連續(xù)運(yùn)行,因此A 能連續(xù)加一,但是每循環(huán)一次就進(jìn)入一次中斷。
測試結(jié)論:仿真器如果沒有照嚴(yán)格正規(guī)設(shè)計,程序的中斷性能將不準(zhǔn)確。可能出現(xiàn)程序不能跳轉(zhuǎn)到中斷服務(wù)程序,或沒有返回到正確的主程序,或A 不能每次循環(huán)連續(xù)的加1。
評論