【摘要】微機(jī)接口技術(shù)是計(jì)算機(jī)以及電子信息類專業(yè)的一門必修課程,該課程的內(nèi)容抽象枯燥、學(xué)習(xí)難度較大,本文提出了一種將SystemC引入到該門課程的實(shí)驗(yàn)環(huán)節(jié),通過(guò)實(shí)際對(duì)課程中各類芯片的實(shí)際建模及仿真的方式在提高學(xué)生學(xué)習(xí)興趣的同時(shí)加深對(duì)所學(xué)內(nèi)容的理解。
【關(guān)鍵詞】SystemC 建模 仿真
【基金項(xiàng)目】省科學(xué)技術(shù)基金(黔科合J字LKS[2010]11號(hào) 基于SystemC的微機(jī)接口技術(shù)仿真平臺(tái)的構(gòu)建。)
【中圖分類號(hào)】G64 【文獻(xiàn)標(biāo)識(shí)碼】A 【文章編號(hào)】2095-3089(2015)01-0244-01
微型計(jì)算機(jī)接口技術(shù)是電子信息、計(jì)算機(jī)等相關(guān)專業(yè)必修的一門專業(yè)課。該課程主要介紹計(jì)算機(jī)與外設(shè)之間進(jìn)行數(shù)據(jù)交換時(shí)所需要解決的各類問(wèn)題。課程主要的內(nèi)容是介紹某一具體問(wèn)題,以及所采用的技術(shù),實(shí)現(xiàn)這一技術(shù)的接口芯片。重點(diǎn)是對(duì)于每一類芯片的功能、結(jié)構(gòu)以及編程三個(gè)方面。課程的實(shí)用性較強(qiáng),主要培養(yǎng)學(xué)生在對(duì)各種芯片的內(nèi)部結(jié)構(gòu)及工作原理理解的基礎(chǔ)上學(xué)會(huì)運(yùn)用接口芯片解決實(shí)際的問(wèn)題的能力。本文介紹了在微機(jī)接口技術(shù)教學(xué)過(guò)程中引入SystemC作為輔助工具,以使學(xué)生通過(guò)對(duì)芯片建模的方式加深對(duì)芯片理解的方法。
一、 微機(jī)接口教學(xué)內(nèi)容的特點(diǎn)
微機(jī)接口技術(shù)這門課程的教學(xué)主要是理論加實(shí)驗(yàn)。理論環(huán)節(jié)主要是介紹數(shù)據(jù)傳輸中需要解決的問(wèn)題。在介紹各種技術(shù)的理論知識(shí)后,重點(diǎn)則是實(shí)現(xiàn)該技術(shù)的具體芯片,包括芯片的功能、內(nèi)部結(jié)構(gòu)、工作原理及使用等。課程的實(shí)用性很強(qiáng),而實(shí)驗(yàn)環(huán)節(jié)一般是購(gòu)買某個(gè)廠家的實(shí)驗(yàn)箱,且實(shí)驗(yàn)箱都有配套的實(shí)驗(yàn)書,書的內(nèi)容包含了接口芯片的內(nèi)部寄存器結(jié)構(gòu)說(shuō)明,實(shí)驗(yàn)連線圖,程序等。實(shí)驗(yàn)過(guò)程一般是按照書中的實(shí)驗(yàn)圖在實(shí)驗(yàn)箱上連線,在計(jì)算機(jī)或?qū)嶒?yàn)箱上輸入程序,編譯運(yùn)行??磳?shí)驗(yàn)結(jié)果。一般來(lái)說(shuō),如果實(shí)驗(yàn)箱設(shè)備狀態(tài)良好,實(shí)驗(yàn)程序及連線無(wú)誤則實(shí)驗(yàn)結(jié)果很快就會(huì)出現(xiàn)。在這一過(guò)程中,大部分學(xué)生沒有經(jīng)過(guò)思考,未能很好地理解實(shí)驗(yàn)內(nèi)容。此外,因?yàn)樵O(shè)備、場(chǎng)地等客觀條件,很難讓每一位學(xué)生一臺(tái)實(shí)驗(yàn)箱獨(dú)立做實(shí)驗(yàn),實(shí)驗(yàn)課時(shí)有限。結(jié)果只能是學(xué)生對(duì)所學(xué)的內(nèi)容知之甚少,隨著所學(xué)內(nèi)容的不斷深入,因前面內(nèi)容不理解,感覺課程難度越來(lái)越大,從而失去信心和興趣。[1][2][3]
為了加深對(duì)課程內(nèi)容的理解,在進(jìn)行實(shí)驗(yàn)前必須對(duì)實(shí)驗(yàn)的內(nèi)容加以預(yù)習(xí),這其中對(duì)芯片各部分內(nèi)容的回顧是必不可少的,但僅靠布置作業(yè),回答幾道題的方式來(lái)進(jìn)行預(yù)習(xí),效果并不理想。為此,本文提出了一種利用SystemC編程以對(duì)某類芯片進(jìn)行建模的方式以達(dá)到讓學(xué)生對(duì)芯片有一個(gè)完整的認(rèn)識(shí)的過(guò)程,以提高實(shí)驗(yàn)質(zhì)量。
二、SystemC的建模功能
SystemC是由OSCI(Open SystemC initiative)組織制定和維護(hù)的一種基于C++的建模平臺(tái),它完全是用C++語(yǔ)言編寫的。它可以實(shí)現(xiàn)各種抽象級(jí)別上的硬件建模和仿真。通過(guò)文獻(xiàn)2的實(shí)例可以看出,對(duì)一個(gè)電路進(jìn)行功能建模的元素包括:模塊(Module)、端口(Port)、信號(hào)(signal)、進(jìn)程(Process)、仿真的啟動(dòng)和停止等。其中模塊的作用相當(dāng)于C/C++中的結(jié)構(gòu)體或者是類,作用是將內(nèi)部的數(shù)據(jù)與外部其他部分分離,但提供一定的外部接口。模塊是用SC_MODULE關(guān)鍵字表示的。端口的作用是用于數(shù)據(jù)在不同模塊之間傳輸,有方向性。端口必須指定可以傳輸?shù)臄?shù)據(jù)類型。例如SC_in
1.模塊的描述SC_MODULE(模塊名){包括端口、進(jìn)程等的定義}。
2.端口SC_IN(OUT、INOUT)<數(shù)據(jù)類型>端口名。
3.信號(hào)SC_SIGNAL<數(shù)據(jù)類型>信號(hào)名。
4.進(jìn)程 SC_METHOD(進(jìn)程名);sensitive<<端口或其他能激發(fā)事件的對(duì)象。
5.仿真實(shí)現(xiàn)在主函數(shù)中完成幾個(gè)步驟:定義的模塊實(shí)例化,實(shí)例化的模塊連接,調(diào)用sc_start啟動(dòng)仿真,查看運(yùn)行結(jié)果[5]。
對(duì)于描述一個(gè)電路或是集成芯片,從內(nèi)部結(jié)構(gòu)到功能實(shí)現(xiàn)到仿真,有了這幾部分已經(jīng)足夠。
三、利用SystemC對(duì)微機(jī)接口芯片建模
下面以8255A并口的建模為例:
1.對(duì)8255A的引腳建模
Sc_inout
Sc_in
2.內(nèi)部寄存器
Bool Creg[8],Areg[8],Breg[8],CReg[8];
定義控存、數(shù)據(jù)寄存器等。
3.功能的描述
8255的主要作用就是完成數(shù)據(jù)從端口A、B或C上接收數(shù)據(jù)并存入內(nèi)部寄存器中。8255有三種工作方式,為此可以實(shí)現(xiàn)兩個(gè)數(shù)據(jù)輸入輸出進(jìn)程,一個(gè)實(shí)現(xiàn)基本輸入輸出,另一個(gè)則實(shí)現(xiàn)選通式的輸入輸出。
SC_METHOD(Basic_INOUT);
Sensitive< Sensitive< 表示當(dāng)PA、PB或PC上有變化時(shí),該進(jìn)程被調(diào)用,進(jìn)程內(nèi)部代碼中包括了按照控存的內(nèi)容進(jìn)行相應(yīng)操作的功能。 SC_METHOD(Select_INOUT) Sensitive< 進(jìn)程內(nèi)部需要對(duì)選通信號(hào)進(jìn)行識(shí)別以區(qū)分是A口還是B口數(shù)據(jù)。 內(nèi)部功能的實(shí)現(xiàn),幾乎就是一個(gè)完全C/C++程序設(shè)計(jì)的問(wèn)題。 4.測(cè)試平臺(tái)的建立與仿真 在主函數(shù)中,生成8255的實(shí)例模塊,并定義相應(yīng)的信號(hào),進(jìn)行連接。啟動(dòng)仿真函數(shù)sc_start。查看結(jié)果。為了能夠調(diào)用8255的進(jìn)程,需另編寫一個(gè)產(chǎn)生各種信號(hào)的模塊。 通過(guò)上面的對(duì)幾個(gè)部分的描述,可以使得學(xué)生在預(yù)習(xí)過(guò)程中,將原本枯燥的內(nèi)容轉(zhuǎn)為一次次的編程練習(xí),在一定程度上提高了學(xué)生的學(xué)習(xí)興趣,且經(jīng)過(guò)每一步的編程描述加深學(xué)生對(duì)芯片的理解和熟悉。 四、結(jié)束語(yǔ) 本文提出了一種利用SystemC編程的方式從簡(jiǎn)單引腳、內(nèi)部寄存器到復(fù)雜的功能描述對(duì)接口芯片建模??梢钥闯鰧?duì)芯片建模并不需要很復(fù)雜的知識(shí),只是在原有的C/C++的基礎(chǔ)上增加少量的SystemC建模知識(shí),對(duì)于較難的部分,可以給予一定的指導(dǎo)。透過(guò)這種方式可以使得學(xué)生較為完整地認(rèn)識(shí)和理解所學(xué)的芯片,為后續(xù)的實(shí)驗(yàn)環(huán)節(jié)以及應(yīng)用打下堅(jiān)固的基礎(chǔ)。 參考文獻(xiàn): [1]陳燕俐、李愛群、周寧寧.微機(jī)接口虛擬中斷實(shí)驗(yàn)的研究和實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件.2010,171. [2]孔世明.微機(jī)接口技術(shù)課程教改探究[J].教育界.2013,(6):172. [3]楊斌.從知識(shí)點(diǎn)掌握到應(yīng)用系統(tǒng)構(gòu)建的微機(jī)接口課程設(shè)計(jì)規(guī)劃及實(shí)現(xiàn).計(jì)算機(jī)教育.2009(13):104. [4]張彌左、王兆月等.微型計(jì)算機(jī)接口技術(shù)[M].機(jī)械工業(yè)出版社,2004. [5]朱小虎、曹陽(yáng)等.基于SystemC的周期精確事物級(jí)AMBA總線建模[J].武漢大學(xué)學(xué)報(bào)(理學(xué)版).2005(5):629. 作者簡(jiǎn)介: 曹曉龍(1976-),男,漢族,講師,碩士,研究方向:SoC系統(tǒng)級(jí)設(shè)計(jì)、計(jì)算機(jī)軟件。