用VMLAB進(jìn)行AVR單片機(jī)硬件/軟件協(xié)仿真
前言
在單片機(jī)應(yīng)用開發(fā)過程中,當(dāng)源文件的編譯成功后,就要進(jìn)行仿真調(diào)試工作。仿真調(diào)試可分為兩大類--芯片級仿真和代碼級仿真。芯片級仿真是指使用仿真軟件和ICE硬件工具相配合,在實際硬件上進(jìn)行仿真調(diào)試工作;而代碼級仿真則完全在計算機(jī)上完成,不需要硬件的參與。兩種類型的仿真各有特點,使用的場合不同。本文基于VMLAB,講述了進(jìn)行AVR單片機(jī)硬件/軟件協(xié)同仿真的方法。
VMLAB的全稱為:VisualMicroLab。它針對于AVR以及ST62系列單片機(jī)設(shè)計,是一個單片機(jī)的虛擬原型(virtualprototype)框架(frame),它可以提供給用戶一個真正意義上的虛擬微控制器(MCU)設(shè)計實驗室。它具有強大的多窗口、多文件的編輯器,微控制器的集成開發(fā)環(huán)境,擁有一系列的集成開發(fā)工具,圖形界面調(diào)試器,混合模式的模擬-數(shù)字電路仿真器,代碼質(zhì)量檢查器等等。硬件和應(yīng)用軟件能進(jìn)行并發(fā)仿真,與之相比,在線硬件仿真器(ICE)顯得失去了意義。VMLAB可以基于MCU,仿真出包括模擬元器件在內(nèi)的更多外圍設(shè)備,并且它具有交互式器件(按鍵,電位計,液晶顯示器)模擬仿真功能。
在VMLAB中進(jìn)行協(xié)同仿真
首先,先介紹兩個概念:
1)虛擬原型(virtualprototype)
虛擬原型是一個具體應(yīng)用的集中體現(xiàn),是包括軟件和硬件在內(nèi)的一個集合體。虛擬原型的作用是在實現(xiàn)這種應(yīng)用之前,將其行為實現(xiàn)模擬出來。
2)硬件/軟件協(xié)仿真(hw/swco-simulation)
硬件/軟件協(xié)仿真是指對于某一個特定應(yīng)用而言,包括硬件和軟件在內(nèi)的全部特性都用一個虛擬原型來模擬實現(xiàn)。VMLAB是基于一個叫做CCCP(ConcurrentCo-simulatorofCircuitsandProcessors)的協(xié)仿真引擎來實現(xiàn)協(xié)仿真的。
采用基于具體應(yīng)用的虛擬原型的一大好處就是:硬件部分可以通過虛擬原型來模擬仿真,這無疑會提高開發(fā)速度不再需要在線仿真器(ICE)工具,成本無疑會大大降低。
在VMLAB中,仿真是通過工程文件*。prj來管理的。工程文件的一些語法關(guān)鍵字如表1所示。
表1:VMLAB工程文件語法關(guān)鍵字
仿真實驗需要按如下步驟進(jìn)行:
1)生成一個工程文件,選擇單片機(jī)類型,指定源文件。
2)在工程文件中添加或修改單片機(jī)外圍的硬件連接關(guān)系。
3)在菜單欄"view'CodeNotebook"窗口中,新建或者修改源文件代碼。
4)用菜單欄"project'build"命令(或者F9鍵)編譯生成硬件/軟件數(shù)據(jù)庫,可以通過菜單欄"view'Messages"窗口中的"CodeMaker"項來觀察出錯或者警告信息。
5)當(dāng)編譯無錯誤的時候,VMLAB工具欄中的綠燈便會點亮。單擊這個綠燈,仿真便會一直運行下去,可以用工具欄來控制仿真流程,也可以用菜單欄"Run'……"來控制仿真流程。
6)當(dāng)所有應(yīng)用特性仿真通過之后,將*。hex文件下載到單片機(jī)上。
VMLAB中的基本硬件庫簡介
VMLAB中的基本硬件庫分為四個部分,每個部分包含有不同的基本硬件。
1)基本模擬器件
包括電阻,接地電容,接地按鍵,LED四種。其中按鍵和LED全部接在控制面板上面,如圖1所示。
2)電壓產(chǎn)生器
包括脈沖電壓源,正弦波電壓源,電位計(滑動變阻器)三種。
3)互式非歸零碼發(fā)生器(NRZ-generator)
4)其它宏模型(Macro-models)
包括:運算放大器(OPAMP),比較器(COMP),兩輸入或非門(ND2),8位DA轉(zhuǎn)換器(D2A8),RS232,LCD模型,I2C監(jiān)視器,44矩陣鍵盤。
協(xié)仿真實例
如圖2所示,一個交流小信號經(jīng)過運放放大,加入到單片機(jī)Atmega16的AD輸入端。
外圍電路的連接可以通過在工程文件中添加如下行信息來實現(xiàn):
;-------------------------------------------------------------
XopOPAMPampposampnegPA7;添加一個運算放大器
R1GNDampneg100K;添加R1
R2PA7ampneg300K;添加R2
VsinampposVSSSIN(0。40。220);添加一個信號源,
。PLOTV(PA7)V(amppos);在scope窗口中觀察PA7和amppos節(jié)點的電壓
狀態(tài)
;-------------------------------------------------------------
在VMLAB中,用戶可以自己定義仿真節(jié)點名稱,例如上面的amppos和ampneg就是兩個用戶自己定義的節(jié)點,可以在節(jié)點名稱中使用字母、下劃線和數(shù)字,也可以使用VMLAB中預(yù)先定義好的各種類型單片機(jī)的管腳。
結(jié)束語
與其它類似代碼級仿真工具相比,VMLAB的優(yōu)勢在于--硬件仿真完全基于計算機(jī)完成,無需實際硬件的加入。作為一個仿真平臺,VMLAB不但能夠仿真出MCU和其它外圍設(shè)備的大部分特性,而且能夠?qū)ι婕澳M量的應(yīng)用進(jìn)行協(xié)同仿真。VMLAB的仿真功能甚至可以同ICE硬件工具相媲美,VMLAB使用又無疑會在開發(fā)成本方面會大為降低。