80C196單片機仿真軟件的設計與實(shí)現
l仿真軟件需求分析與軟件結構
仿真軟件作為全軟件測試平臺的主框架,主要利用PC機上較豐富的資源,在PC機上實(shí)現應用軟件全速全功能仿真80C196單片機的運行,并頂留測試用例生成模塊、軟件模擬的外部激勵等軟件測評信息的插裝接口。
該仿真軟件可仿真80C196單片機指令功能、中斷響應和外設接口功能。具有良好的人機界面,便于控制仿真過(guò)程,查看仿真結果。
CPU模塊,主要仿真80C196 CPU芯片和存儲器,執行80C196指令系統中的所有指令,支持多種數據類(lèi)型,包括位、字節、字、雙字、短整形、整形、長(cháng)整形,以及多種尋址方式,完成中斷處理并控制各種仿真的外設模塊;編譯模塊,完成源程序的預處理過(guò)程,包括編譯、分析、查錯,將源程序轉換成80C196 CPU能識別的指令集,供仿真運行使用;程序控制模塊,控制仿真軟件的運行,支持中斷點(diǎn)的設置,完成仿真軟件與用戶(hù)的交互;系統信息模塊,顯示當前系統信息,監視仿真軟件的運行情況;結果信息模塊,查看源程序運行結果,并以形象直觀(guān)的方式顯示出來(lái),具有良好的人機界面。
2仿真軟件設計與實(shí)現
仿真軟件采用VC++面向對象技術(shù),將系統中的各個(gè)抽象模塊,細化為各自的類(lèi)實(shí)例,從而完成規定的系統功能。仿真軟件中所用到的主要類(lèi)和關(guān)鍵技術(shù)描述如下
2.1 存儲器數據結構設計
80C196具有一個(gè)邏輯上完全統一的寄存器空間,可尋址范圍為64 kB,其中大部分空間是用戶(hù)可以自由使用的空間。為了實(shí)現存儲器的全部功能以及便于程序控制,設計了一個(gè)包含多種信息的結構作為仿真軟件中的存儲單元,并由這些存儲單元組成了仿真平臺的存儲區,軟件仿真平臺的存儲區與80C196的存儲空間一一映射。存儲單元結構表示如下:
仿真軟件中的存儲器表示為MyCode m_ramMap[0xffff],實(shí)現了與真實(shí)存儲空間的映射。
2.2 CPU模塊設計
CPU模塊實(shí)質(zhì)是一個(gè)龐大的類(lèi)實(shí)例,模擬80C196CPU的所有功能,他是整個(gè)仿真軟件的核心。CPU類(lèi)是80C196單片機中指令執行部件,存儲器,IO接口,串行口等硬件部件的軟件實(shí)現,完成指令仿真、存儲器管理、中斷管理等功能。能實(shí)現80C196單片機指令系統中104種指令的功能,并處理6種指令尋址方式,包括立即數尋址、寄存器直接尋址、間接尋址、自動(dòng)增量間接尋址、短變址尋址和長(cháng)變址尋址。
80C196CPU的所有功能由C196Chip類(lèi)實(shí)現,C196Chip類(lèi)的結構圖及其類(lèi)中調用關(guān)系。
CMyCPU類(lèi)為所有類(lèi)共有,包含存儲器單元,程序狀態(tài)字,CPU時(shí)鐘頻率,指令執行總的周期數以及一些其他的CPU信號。CFindAddr 類(lèi)實(shí)現了指令的六種尋址方式,通過(guò)提供統一的接口,實(shí)現不同的尋址方式,使得操作數的尋址過(guò)程變得透明。需要訪(fǎng)問(wèn)存儲器的指令通過(guò)調用CFindAddr類(lèi)中的方法完成訪(fǎng)問(wèn)存儲器的過(guò)程,取得訪(fǎng)問(wèn)數據,依指令的不同,取得的數據類(lèi)型包括字節、字、短整型數、整型數、雙字和長(cháng)整型數。80C196指令系統中有104種指令,依據功能的不同,劃分為加法指令、減法指令、乘法指令、除法指令、邏輯運算指令、數據傳送指令、堆棧操作指令、跳轉和子程序調用指令、條件跳轉、位邏輯值跳轉指令、單寄存器指令、移位指令和特殊控制指令。每一類(lèi)指令作為一個(gè)單獨的模塊設計為一個(gè)類(lèi)實(shí)例,完成相應指令的解釋執行。對于需要修改程序狀態(tài)字的指令,將修改狀態(tài)字的操作作為一個(gè)類(lèi)。
評論