傅翠嬌,曹慶華
(北京航空航天大學 計算機學院,北京 100191)
隨著計算機技術的飛速發展,EDA設計已經成為硬件設計的主要方式,新型的計算機實驗教學模式是利用硬件描述語言和EDA工具[1],先在計算機上進行設計、修改和仿真,通過仿真波形可以直接觀察到電路內部的各個信號的變化情況,然后將設計下載到實驗臺上的FPGA芯片中,進一步驗證設計的正確性。通過一系列綜合性的實驗,不僅可以加深學生對計算機硬件基本知識的理解,而且有助于學生貫通這些知識點。通過在實驗臺上的驗證與調試,鍛煉了學生的實際動手能力、分析問題和解決問題能力[2-4]。
計算機組成原理實驗是計算機專業重點的專業基礎課程之一,通過這門課程的學習和實踐,使學生了解計算機各個子系統的工作原理,建立起計算機整機系統的概念。該實驗課程起著承上啟下的作用,是讓學生建立起整機概念的關鍵,其他的計算機專業的硬件實驗課程可以圍繞計算機組成原理實驗展開,可以通過向下融合和向上擴展的方式使計算機硬件類的實驗課程成為一個有機的整體。本文通過一個基于MIPS處理器的實驗設計實例進行了詳細的說明[5-10]。
本實驗利用MIPS CPU、并行接口8255A以及定時器/計數器8253設計一個可循環運行的程序,要求對8255A和8253進行初始化后,使用8253進行定時運行CPU中的循環程序,并向8255A輸出數據,然后再把運行結果通過數碼管上顯示出來。
本文使用的MIPS處理器——MIPS-C主要定位于實驗教學,是一個僅執行定點指令的功能型處理器,與絕大多數 MIPS處理器不同,MIPS-C采用單發射多周期體系結構。MIPS-C具有中斷機制,不支持流水線、Cache、MMU、浮點運算等。MIPS-C的設計主要參考了《計算機組成與設計-軟件/硬件接口》一書[11]。
8255A是一個可編程的并行輸入、輸出接口電路,具有24個可編程設置的I/O口,包括3組8位的I/O為PA口、PB口、PC口,又可分為2組12位的I/O口:A組包括A口及C口高4位,B組包括B口及C組的低4位。8255A共有3種工作方式,其中A口可以設置為方式0、方式1、方式2,B口與C口只能設置為方式0或方式1。
8253是一種可編程定時/計數器,它有2個功能:一是作為計數器,另一是作為定時器。8253具有以下主要特點:(1)具有3個獨立的16位減一計數器;(2)可按二進制或十進制(BCD)計數;(3)具有6種不同的工作方式,這些方式可由軟件來設定[12]。
為了實現MIPS CPU與外圍接口的互連,需要對已設計的MIPS CPU做一些調整,例如原來的內存和CPU混合在一起,不易控制,也不易和外圍接口相連,因此需要先把內存移至CPU外;原來CPU與外界交換數據使用的是一條輸入數據線和一條輸出數據線,而8255等外圍接口使用的是即可作輸入又可作輸出的總線結構,因此需要將數據線修改為總線結構。怎樣控制定時器8253,比如門控信號,一種方法是使用8255A的C口輸出到8253,另一種方法是直接將其連接到一個輸入信號,手動控制門控信號。相比較而言,手動控制的方法比較好控制觀察現象,在這里選擇第2種方法。8253的輸出信號等作中斷信號使用,與CPU的外部中斷INT信號相連,一旦計時到就開始循環執行程序,程序運行的結果通過8255A的B口輸出。
該實驗在QuartusⅡ7.2中進行設計和仿真,并在Altera公司的FPGA芯片EP2C35F672C6和DE2教學開發板上進行下載驗證。
MIPS CPU是一個實現了MIPS指令集的32位精簡指令集CPU。原來的內存是與CPU混合在一起的,不易控制,也不易與接口相連,因此需要先將內存移至CPU外部,然后生成CPU的頂層文件,為下一步與接口的連接做好準備,其符號文件如圖1所示。

圖1 MIPS CPU的符號模塊
MIPS CPU文件的時序仿真如圖2所示。

圖2 MIPS CPU的仿真波形文件
在本實驗中,8255A芯片工作在0方式,即A口、B口、C口的高低四位可以自行指定作為輸入輸出端口使用,可以根據自己的約定把一些端口作為控制位使用,8255A的符號模塊如圖3所示。對8255A可編程并行接口進行時序仿真,其仿真文件如圖4所示。
在本次實驗中,采用8253的0通道和方式0,其符號模塊如圖5所示[13]。

圖3 8255A的符號模塊

圖4 8255AA口輸入B口輸出的仿真波形文件

圖5 8253的符號模塊圖
對8253的0通道和方式0進行仿真,仿真波形文件如圖6所示。
原來的CPU與外界交換數據使用的是一個輸出數據線和一個輸入數據線,而8255A等接口使用的是既可以輸入,又可以輸出的總線結構,因此需要先將數據線改為總線結構。如圖7所示,將輸入數據與輸出數據合并為一條線,并且在輸入輸出端加入tri器件作為總線控制器,即可完成總線結構的改造。

圖6 82530通道、方式0的時序仿真

圖7 系統的總線結構圖
圖7中標記處為控制CPU輸入輸出的總線控制器,控制信號為讀取信號RW,當讀有效時,總線方向為CPU輸入方向,當寫有效時,總線方向為CPU輸出方向。
(1)內存譯碼電路。內存的譯碼電路比較簡單,因為只需要判斷A[7]是不是0即可,如圖8所示。

圖8 內存譯碼電路
(2)8255A的譯碼電路。只需要判斷 A[7:2]是否是100000,譯碼電路如圖9所示。

圖9 8255A的譯碼電路
(3)8253的譯碼電路。需要判斷A[7:2]是否是100001,譯碼電路如圖10所示。

圖10 8253譯碼電路
將各個元件連好后,就開始編寫MIPS匯編程序,本實驗中使用將程序硬編碼在內存中的做法。控制過程為:手動開啟gate信號,之后內存中的循環程序會一直將一個變量加1,定時器每定時1次,做1次加1運算。
控制邏輯如下所示:
(1)初始化8253:控制字為8’b00010100,計數初值為8’b00010000;
(2)初始化8255A:控制字為8’b10010000;
(3)然后8253每定時一次,程序把內存中的一個數加1,計算結果回送內存,并通過8255輸出。
初始化8253和8255A的時序仿真圖如圖11所示。開始執行循環程序的時序仿真如圖12所示。

圖11 初始化8253和8255A的時序仿真圖

圖12 開始執行循環程序的時序仿真圖
按照CPU的輸入輸出引腳定義以及8255A輸入輸出的引腳定義,把CPU和8255A進行連接。為了不讓內存和8255A輸出信號相沖突,在tri器件的選擇信號上需要加入本器件的CS使能信號,如圖13所示。

圖13 8255A輸出電路
在連接8253時,除了與CPU相對應的各種信號需要連接以外,還有2個信號需要注意,一個是啟動8253開始計時的gate信號,還有一個是8253的輸出信號。gate信號可直接將其連入一個輸入,手動開啟gate信號,這樣做的目的是比較好控制觀察現象。8253的輸出可以當做中斷信號來使用,與CPU的外部中斷INT信號相連,具體的連接方法如圖14所示。
再次對工程進行全編譯,然后將生成的目標文件下載到實驗箱上,進行在線測試。測試結果驗證了系統功能的正確性。
本文設計并實現了一個基于MIPS處理器的并行接口的計數器應用實驗,功能仿真和下載測試表明:該系統功能正確,性能穩定。通過增加外圍芯片,加深了學生對處理器的理解和認識;通過實現處理器對外圍接口的控制,使學生更好地理解了接口的工作過程。該設計綜合了多種計算機硬件設計知識,對學生更好地掌握這方面的非常有幫助。

圖14 CPU與8255A、8253的連接圖
(References)
[1]任春明,劉軍.計算機組成原理實驗教學的思考與改進[J].實驗技術與管理,2006,23(10):110-111.
[2]袁春風,黃宜華,武港山,等.“計算機組成與體系結構”課程群建設實踐[J].計算機教育,2010(13):80-83.
[3]王帥,袁春風.美國一流大學計算機組成與系統結構實驗課程研究[J].計算機教育,2011(17):115-118.
[4]顧兵,彭文藝,歐陽星明.計算機專業硬件課程實踐教學改革思考[J].計算機教育,2011(12):19-21.
[5]董再秀,溫衛敏,趙亮.“計算機組成原理”課程教學改革與實踐[J].滁州學院學報,2011,13(2):94-96.
[6]袁春風,陳貴海,黃宜華,等.“計算機組織與系統結構”課程的教學現狀和改革思路[J].計算機教育,2009(4):153-156.
[7]王誠,宋佳興.教學計算機系統的設計與實現[J].計算機工程與應用,2005(12):213-216.
[8]陳智勇.計算機組成系統實驗的改革與實踐[J].電氣電子教學學報,2007,29(5):73-78.
[9]李山山,全成斌.計算機組成原理課程實驗教學的調查與研究[J].計算機教育,2010(22):127-129.
[10]袁春風,張澤生,楊若瑜,等.“計算機組成與系統結構”課程建設思路與教學實踐[J].計算機教育,2012(2):62-66.
[11]David A Patterson,John L.Hennessy.計算機組成與設計硬件/軟件接口[M].北京:機械工業出版社,2007.
[12]劉樂善,歐陽星明,劉學清.微型計算機接口技術及應用[M].武漢:華中科技大學出版社,2000.
[13]傅翠嬌,曹慶華.計算機接口與通信實驗教程[M].北京:清華大學出版社,2011.