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