80C196單片機(jī)仿真軟件的設(shè)計(jì)與實(shí)現(xiàn)
CRunCode類封裝所有的操作模塊,仿真80C196單片機(jī)中的指令執(zhí)行部件,完成單步運(yùn)行、一次運(yùn)行和連續(xù)運(yùn)行3種指令的執(zhí)行方式。C196Chip類仿真整個(gè)單片機(jī)模塊,除了指令執(zhí)行部件外,還包括各種外設(shè)模塊,完成中斷、串口等功能。對外提供統(tǒng)一的控制接口,完成單片機(jī)的初始化、啟停、訪問存儲器、訪問外設(shè)、訪問特殊功能寄存器。
CPU模塊中各個(gè)類的描述及其繼承關(guān)系。
2.3指令的仿真運(yùn)行
80C196指令系統(tǒng)中有104種指令,按照操作碼和功能的不同,將指令劃分為13類,每個(gè)類模塊實(shí)現(xiàn)1類指令的功能。
CRunCode類封裝了13類指令的各個(gè)模塊,提供了統(tǒng)一的接口,以地址寄存器值作為輸入輸出。進(jìn)入CRuncode-類的為地址寄存器值,根據(jù)此值取得指令,依指令操作碼的不同進(jìn)入各個(gè)操作模塊。各個(gè)操作模塊完成指令的功能,并計(jì)算出下一條指令的地址值返回給CRunCode-類,CRunCode類再將此值寫入CPU的地址寄存器中。其執(zhí)行過程如圖3所示。
對于每一條指令的仿真,包括操作過程,操作結(jié)果與程序狀態(tài)字的改變力求做到與80C196指令集相一致。以兩個(gè)操作數(shù)的加法指令A(yù)DD Al,BL為例,其實(shí)現(xiàn)過程如下:
2.4編譯模塊設(shè)計(jì)
編譯模塊將用戶編寫的源程序編譯成CPU能識別的二進(jìn)制機(jī)器語言的形式。為了降低系統(tǒng)的設(shè)計(jì)難度,采用了已經(jīng)具有的外部程序?qū)υ闯绦蜻M(jìn)行處理。編譯模塊讀取由外部程序生成的列表文件,將程序信息轉(zhuǎn)化為本系統(tǒng)能處理的數(shù)據(jù)結(jié)構(gòu),并將生成的二進(jìn)制操作碼裝入CPU的存儲器。
2.5程序仿真與控制的實(shí)現(xiàn)
程序運(yùn)行有3種方式,即單步運(yùn)行,運(yùn)行一次和連續(xù)運(yùn)行。程序的主要控制功能有復(fù)位、設(shè)置/清除中斷點(diǎn)、查看寄存器、查看程序狀態(tài)字等。編譯模塊對源程序進(jìn)行預(yù)處理,將源程序轉(zhuǎn)化為二進(jìn)制操作碼。CPU模塊將操作碼裝入存儲器成功后,初始化CPU的各種信號,并將程序地址寄存器的值置Ox2080,這是80C196匯編程序的起始地址。然后CPU模塊依據(jù)地址寄存器的值取操作碼,按照取址、譯碼、執(zhí)行的過程執(zhí)行每一條指令。在一條指令執(zhí)行完畢后,執(zhí)行中斷處理,刷新顯示結(jié)果以及檢查中斷點(diǎn)等操作。
本仿真軟件的關(guān)鍵技術(shù)在于CPU模塊的設(shè)計(jì)。這個(gè)模塊要完成80C196所有指令的功能,要分配存儲器資源,要控制軟件仿真過程中程序狀態(tài)字、特殊功能寄存器以及其他CPU信號的變化。采用面向?qū)ο缶幊谭椒ê头謱釉O(shè)計(jì)的思路,通過對指令的合理劃分,降低了指令系統(tǒng)的復(fù)雜度,通過對實(shí)際器件的抽象與封裝,實(shí)現(xiàn)了與實(shí)際硬件器件的功能等價(jià),使得仿真結(jié)果與真實(shí)執(zhí)行情況相一致。
至此,該仿真軟件的基本功能已經(jīng)實(shí)現(xiàn),為仿真平臺的設(shè)計(jì)打下了基礎(chǔ),接下來的工作是以仿真軟件為基礎(chǔ),完成仿真平臺的開發(fā)與調(diào)試,主要包括各種外設(shè)的實(shí)現(xiàn),測試用例生成工具以及驅(qū)動(dòng)測試的外部激勵(lì)產(chǎn)生模塊,以此搭建一個(gè)具有良好人機(jī)界面的測試環(huán)境,提高應(yīng)用軟件的質(zhì)量與可靠性。按照軟件要求計(jì)劃采用dll文件的方式將各個(gè)模塊生成庫文件,并在仿真軟件中預(yù)留各個(gè)庫文件的接口,在程序需要時(shí)調(diào)用相應(yīng)的庫文件即可,簡化了設(shè)計(jì)的難度,同時(shí)增加了仿真平臺的靈活性和通用型。
4結(jié) 語
本文提出一種采用VC++面向?qū)ο蠹夹g(shù)設(shè)計(jì)80C196單片機(jī)應(yīng)用軟件仿真環(huán)境的方法。據(jù)此方法研制的仿真軟件可仿真80C196指令集的全部指令,并可對80C196單片機(jī)嵌入式控制軟件進(jìn)行仿真與運(yùn)行。該項(xiàng)技術(shù)為全軟件測試平臺的開發(fā)奠定了基礎(chǔ),也可供相關(guān)領(lǐng)域的應(yīng)用參考。
評論