摘要:介紹了如何利用SystemC描述語言構(gòu)建51單片機(jī)程序設(shè)計(jì)仿真環(huán)境,包括51處理器模塊的構(gòu)造過程以及顯示模塊的設(shè)計(jì)。
關(guān)鍵詞:SystemC;51單片機(jī);仿真環(huán)境
中圖分類號:TP332 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9599 (2012) 17-0000-02
1 SystemC介紹
SystemC由C++衍生而來,在C++基礎(chǔ)上添加硬件擴(kuò)展庫和仿真庫構(gòu)成,從而使SystemC可以建模不同抽象級別的包括軟件和硬件的復(fù)雜電子系統(tǒng),既可以描述純功能模型和系統(tǒng)體系結(jié)構(gòu),也可以描述軟硬件的具體實(shí)現(xiàn)。
事物級建模因不考慮很多底層細(xì)節(jié),所以進(jìn)行建模時(shí)間短,并且可以將重點(diǎn)放在如何通信,而不是通信在更底層如何實(shí)現(xiàn)。事物級建??梢允褂檬录?qū)動,由一事件可驅(qū)動一系列行為,因此建??梢栽谠缙谶M(jìn)行。
在設(shè)計(jì)軟件算法以及接口說明時(shí),往往采用C++語言,主要是因?yàn)镃或C++語言提供了在開發(fā)緊湊及有效的系統(tǒng)時(shí)所需要的控制以及數(shù)據(jù)抽象。而大多數(shù)的設(shè)計(jì)人員都熟悉C或C++語言,同時(shí),大部分的開發(fā)工具都與C或C++有一定的關(guān)聯(lián)。
SystemC類庫提供了構(gòu)建系統(tǒng)結(jié)構(gòu)模型所必須的元素,這些元素包括:硬件時(shí)序、芯片工作的若干激勵(lì)信號等。而這些元素在標(biāo)準(zhǔn)的C++語言所缺乏的特性,若將這些元素加入C中需要擴(kuò)展語言本身的屬性,這樣做對整個(gè)行業(yè)而言是很難接受的。面向?qū)ο蟮腃++語言則可通過類來擴(kuò)展語言本身,而無需添加任何新的syntactic。SystemC給出了這些構(gòu)建系統(tǒng)結(jié)構(gòu)模型所必須的元素并允許設(shè)計(jì)人員繼續(xù)利用所熟悉的C++語言以及其他開發(fā)工具進(jìn)行系統(tǒng)設(shè)計(jì)。[2]
本文的系統(tǒng)是利用SystemC3.0.1實(shí)現(xiàn)了一個(gè)51單片機(jī)程序設(shè)計(jì)的仿真環(huán)境。
2 系統(tǒng)概述
本文所論述的系統(tǒng)主要是有幾個(gè)部分構(gòu)成:具有能夠?qū)?1匯編指令程序翻譯成機(jī)器碼的匯編器模塊,實(shí)現(xiàn)51指令集仿真器以及與外部其他模塊連接的處理器模塊,以及具有裝載程序的內(nèi)存模塊和具有7段數(shù)碼管顯示功能的顯示模塊,其他接口模塊等構(gòu)成。當(dāng)整個(gè)系統(tǒng)運(yùn)行時(shí),首先讀取編制好的匯編程序,進(jìn)行翻譯產(chǎn)生對應(yīng)含機(jī)器碼的可執(zhí)行文件,之后裝入內(nèi)存模塊,并在SystemC仿真運(yùn)行庫的控制下實(shí)現(xiàn)每個(gè)周期的取指、譯碼以及執(zhí)行的過程。系統(tǒng)構(gòu)成如下圖所示: