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