傅翠嬌 曹慶華 任作成
摘要:分析現(xiàn)有的計算機系統(tǒng)結構類實驗課程中存在的問題,提出基于計算機原型系統(tǒng)的一體化實驗體系建設方案,明確了課程之間的關系和定位,并通過一個綜合性的實驗實例進行詳細說明。
關鍵詞:計算機原型系統(tǒng);實驗體系建設;教學改革;計算機系統(tǒng)結構
0、引言
隨著計算機技術的飛速發(fā)展,基于EDA的設計已經(jīng)成為硬件設計的主要方式。以前的基于小型模擬計算機系統(tǒng)的實驗已經(jīng)不再適應實驗教學的要求。傳統(tǒng)實驗教學模式大多采用中小規(guī)模集成電路芯片在面包板上搭建各種常見數(shù)字電路的方式,工作量大且易出錯。而新的實驗教學模式是利用硬件描述語言和EDA工具,先在計算機上進行設計、修改和仿真,然后通過仿真波形可以直觀地觀察到電路內部各個信號的變化情況,再將設計下載到實驗臺上的PLD芯片中,進一步驗證設計的正確性。通過一系列綜合性實驗,不僅可以加深學生對計算機硬件基本知識的理解,而且有助于學生對這些知識點的融會貫通。通過在實驗臺上不斷地調試與驗證,學生的動手能力、分析問題和解決問題的能力得到了鍛煉。
1、目前實驗教學中存在的問題
目前北京航空航天大學計算機學院的計算機硬件類必修實驗課程主要包括數(shù)字邏輯實驗、計算機組成原理實驗和計算機接口與通信實驗。這3門實驗課程通過不斷地進行實驗教學改革,取得了很大的進步,并已建立了以EDA為開發(fā)工具、以設計為主的新型計算機硬件實驗體系,但是目前還存在一些問題。
1.1 缺乏完整的實驗體系
1.1.1 實驗內容有重復
不同的實驗課程之間會出現(xiàn)重復的實驗內容。例如數(shù)字邏輯實驗和計算機組成原理實驗都是以計算機原型系統(tǒng)為目標進行設計的,但二者在存儲器設計上有所重復。另外,數(shù)字邏輯實驗中基本實驗的有限狀態(tài)機的設計部分主要以ADC 0809控制器設計為例,而在計算機接口與通信實驗的基礎實驗中的AD模數(shù)轉換控制電路設計也是以ADC 0809控制器設計為例進行的。
1.1.2 課程之間缺少銜接
目前北京航空航天大學數(shù)字邏輯實驗與組成原理實驗之間的內容結合地比較好。在數(shù)字邏輯實驗中所設計的基本部件(如寄存器、乘法器以及存儲器等)都可以在計算機組成原理實驗中利用。但是計算機接口與通信實驗和計算機組成原理實驗之間的內容銜接較差。隨著學生設計的MIPS指令集的CPU日益成熟,計算機接口與通信實驗逐漸過渡到使用MIPS CPU來代替嵌入式軟核NIOS CPU,從而將計算機原型系統(tǒng)的底層內容添加到計算機接口與通信實驗中㈣。
1.1.3 課程定位不明確
每門課程的定位應當明確,通過一門課程解決一個問題,從而循序漸進地達到培養(yǎng)目標。但是目前教學中還存在各門課程相對獨立、自成體系、缺乏整體考慮的問題,學生難以建立起整體的概念。
1.2 學生還未形成進行硬件編程的思維方式
硬件編程的思維方式與軟件編程的思維方式略有不同。硬件描述語言一般是并行執(zhí)行的。目前學生還沒有建立起并行的概念,沒有完全掌握硬件程序的調試、分析方法。因此我們在數(shù)字邏輯實驗中要有意識地在這方面加強對學生的培養(yǎng),通過對這3門課程的學習使學生逐步掌握硬件設計技能。
2、一體化實驗體系建設方案
我們需要理清計算機硬件類實驗課程之間的關系,明確各課程的定位,從而建立一個新的、一體化的,以掌握一種硬件設計方法、設計一個實驗平臺、系統(tǒng)地掌握計算機硬件知識、培養(yǎng)創(chuàng)新人才為目標的,實驗內容循序漸進、步步深入的,實驗方法靈活多樣的,教學質量大幅提高的實驗體系和創(chuàng)新平臺。
2.1 課程關系
計算機系統(tǒng)結構類實驗遵循馮·諾伊曼計算機模型。通過不同層次的實驗,可以使學生逐步深入理解計算機的內部邏輯關系、功能部件、性能以及交互方式,掌握基于硬件描述語言和EDA工具的、進行邏輯設計的方法和過程,完成計算機原型系統(tǒng)的設計。該設計包括綜合數(shù)字系統(tǒng)設計和調試在內的軟件設計,并且能讓學生編寫出執(zhí)行速度快、資源利用率高、性能接近于最優(yōu)的程序。
目前計算機系統(tǒng)結構類實驗中的必修課主要有:數(shù)字邏輯實驗、計算機組成原理實驗、硬件描述語言與EDA工具實驗、計算機接口與通信實驗,且以培養(yǎng)學生的軟硬件協(xié)同設計能力、工程實踐能力和科研實踐素養(yǎng)以及團隊協(xié)作精神為目標[3]。所以在進行實驗體系建設時,我們要根據(jù)計算機系統(tǒng)的內在邏輯關系重新整合各門課程的知識分布和銜接關系,以達到實驗內容相互支撐、成果形式層次遞進的效果。
(1)知識點的劃分。3門課程的知識點要既能覆蓋全部又避免重復。
(2)課程內容的設置。課程內容在設置時要保證前后相繼、由淺入深、不斷深化。
(3)相同的實驗環(huán)境。3門課程采用相同的實驗環(huán)境(軟件環(huán)境Quartus II和FPGA板康芯實驗板),根據(jù)課程內容逐步設計出與課程完全吻合的實驗平臺,并采用相同的硬件描述語言Verilog。學生通過反復練習,熟練掌握一種硬件設計方法、一種解決問題的思維方式、一類FPGA實驗板的使用方法,從而保證在掌握概念和原理的同時,熟練掌握硬件設計方法和技能,建立起計算機硬件整機的概念。
2.2 課程定位
計算機硬件實驗課程的目標在于培養(yǎng)學生的實踐動手能力、編程設計能力、探索創(chuàng)新能力以及分析問題解決問題的能力,讓學生形成硬件編程的思維方式,并建立計算機整機概念。
下面分別介紹每門課程的定位。
2.2.1 數(shù)字邏輯實驗
數(shù)字邏輯實驗是基礎。它主要解決的問題是掌握硬件實驗的基本技能以及組合邏輯電路和時序邏輯電路的原理。
該課程的目標是讓學生學習實驗平臺的使用方法,掌握硬件編程語言、EDA工具的使用、硬件描述的綜合與仿真,使學生能設計一些基本的時序邏輯電路和組合邏輯電路,培養(yǎng)學生的硬件編程思維方式。
2.2.2 計算機組成原理實驗
計算機組成原理實驗是核心。它起著承上啟下的作用,是讓學生建立起整機概念的關鍵。它能幫助學生理解和掌握一臺計算機整機系統(tǒng)的軟件、硬件組成及相互之間的配合。其他課程要圍繞計算機組成原理實驗展開。數(shù)字邏輯實驗課程要解決基本器件的設計和工具使用的問題,計算機組成原理實驗要解決應用微處理器的問題。本課程要求學生重點掌握MIPS指令系統(tǒng)及指令周期、數(shù)據(jù)通路、系統(tǒng)控制等,在此基礎上深化對硬件編程語言的理解。
2.2.3 計算機接口與通信實驗
計算機接口與通信實驗是完善、提高和應用。學生通過對外圍器件的學習,完善了計算機的整機概念。在此基礎上設計應用性的實驗對學生來說是提高。本課程重點掌握基本外部芯片、基本的輸入/輸出部件的設計和應用。
3、基于計算機原型系統(tǒng)的一體化的實驗實例
該實例利用并行接口8255A實現(xiàn)一個簡單的計算器功能,通過8255A輸入兩個8位的數(shù)據(jù),MIPS CPU將兩個數(shù)據(jù)相加或者相減,并將計算結果通過8255A輸出到數(shù)碼管上。這個實例以MIPS CPU為核心,包含了數(shù)字邏輯實驗中設計的ALU等部件,通過計算機組成原理實驗形成了MIPS CPU部件,再結合計算機接口與通信實驗中設計的8255A等外圍接口部件,實現(xiàn)了一個小型的數(shù)字系統(tǒng)。如果在此基礎上把操作系統(tǒng)和編譯等內容包含進去就構成了一個計算機原型系統(tǒng)。
3.1 設計思路
為了實現(xiàn)使用程序查詢方式在8255A與CPU之間交換數(shù)據(jù),我們需要8255A工作在0方式。根據(jù)設計要求,我們需要兩個8位數(shù)據(jù)口作為數(shù)據(jù)輸入口,一個8位數(shù)據(jù)口作為數(shù)據(jù)輸出口,共需要3個8位數(shù)據(jù)口,此外還需要一些控制信號,所以至少需要兩片8255A芯片。第一片8255A的A口和B口工作在0方式,均作為數(shù)據(jù)輸入。第二片8255A的A口和B口也工作在0方式,A口作為輸入,B口作為輸出,并使用PA0作為數(shù)據(jù)輸入后完成并執(zhí)行加法運算的信號,使用PAl作為數(shù)據(jù)輸入后完成并執(zhí)行減法運算的信號。MIPS CPU循環(huán)查詢第二塊8255A芯片的A口數(shù)據(jù),一旦發(fā)現(xiàn)輸入數(shù)據(jù)PA0或者PAl不為0,就從第一塊8255A芯片的A口和B口讀取兩個數(shù)據(jù)到某個寄存器,然后計算兩個寄存器內的數(shù)據(jù)的和或者差,并將結果輸出到第二片8255A的B口。
3.2 系統(tǒng)的整體結構
系統(tǒng)需要的器件主要有MIPS CPU、兩片并行接口8255A,還需要一個芯片能根據(jù)地址在內存和兩塊8255A芯片中做出片選,部分代替總線的功能。其總體結構如圖1所示。
在本實驗中,當?shù)刂沸∮?28時,表示的是內存地址,則將總線數(shù)據(jù)寫入內存或者從內存讀取數(shù)據(jù)到總線上;當?shù)刂反笥?28時,從兩片8255A中讀寫數(shù)據(jù)。
3.3 系統(tǒng)各模塊設計
我們首先設計系統(tǒng)的各功能模塊,接著設計MIPS匯編程序,最后生成頂層文件,綁定引腳并下載驗證。
3.3.1 MIPS CPU模塊
MIPS CPU是一個實現(xiàn)了MIPS指令集的32位精簡指令集CPUN。本實驗只關注MIPS CPU的外部接口,并為調試方便為MIPS CPU增加了很多接口,但實際上真正需要的接口只有CLK、DataReady、RData、PCIk、BE、RW、Adrr、WData,其作用分別是:時鐘信號、數(shù)據(jù)準備好信號、讀入數(shù)據(jù)信號、時鐘輸出信號、讀取模式信號、讀寫信號、地址、寫入數(shù)據(jù)信號。
如圖2所示是MIPS CPU的符號模塊。MIPS CPU文件的時序仿真波形文件如圖3所示。
3.3.2 8255A可編程并行接口模塊
在本實驗中,8255A芯片工作在O方式,即A口、B口、c口的高低四位可以自行指定作為輸入/輸出端口使用。我們可以根據(jù)自己的約定把一些端口作為控制位使用。8255A的符號模塊如圖4所示。
我們對8255A可編程并行接口進行時序仿真后,8255A芯片A口輸入B口輸出的仿真波形文件如圖5所示。
3.3.3 總線控制器模塊設計
總線控制器(BUS Controller)是本次實驗的核心器件,它的主要功能是根據(jù)MIPS CPU所要讀寫的地址,輸出相應的片選信號和地址信息,控制將8255A的數(shù)據(jù)或者內存中的數(shù)據(jù)輸出到總線上或者將總線上的數(shù)據(jù)寫入到8255A的某些端口或內存中。在本實驗中,當?shù)刂沸∮?28時,表示內存地址,則將總線數(shù)據(jù)寫入內存或者從內存讀取數(shù)據(jù)到總線上;當?shù)刂反笥诘扔?28時,從兩塊8255A并口中讀取數(shù)據(jù)。當?shù)刂反笥?28時,我們要根據(jù)之前所規(guī)定的端口號,產(chǎn)生相應的8255A控制信號,從而實現(xiàn)對8255A相應的端口進行讀寫。相應的8255A芯片的控制信息如表1所示。
總線控制器的符號模塊如圖6所示。
總線控制器的仿真波形文件如圖7所示。
由于使用了兩片8255A芯片,因此我們需要一個譯碼器和一個多路選擇器,以便在兩片8255A芯片中做出選擇。譯碼器的符號模塊如圖8所示,多路選擇器的符號模塊如圖9所示。
另外我們還需要七段數(shù)碼管顯示電路,它能夠將數(shù)字轉換為七段數(shù)碼管的顯示信號。七段數(shù)碼管顯示電路的符號模塊如圖10所示。
3.4 編寫MIPS CPU匯編程序
我們將各個元件連好后,就開始編寫MIPS匯編程序。本設計使用將程序硬編碼在內存中的做法??刂七壿嬋缦滤荆?/p>
1)第一塊8255A的初始化:CS=0,RD=1,WR=0,AI=1,A0=1,控制字為8b10010010;
2)第二塊8255A的初始化:CS=0,RD=1,WR=0,AI=1,A0=1,控制字為8b10010000;
3)然后循環(huán)查詢第二塊8255A芯片的A口,當PA0或者PAl為高電平時,表示數(shù)據(jù)準備好;
4)CPU分別從第一塊8255A芯片的A口和B口讀取兩個8位整數(shù)到兩個寄存器;
5)進行判斷,如果PAl為1執(zhí)行減法指令,如果PA0為1執(zhí)行加法指令,計算結果保存在某個寄存器中。
6)將結果輸出到第二塊8255A芯片的B口。
頂層文件的仿真波形如圖11所示。
3.5 生成頂層文件
之后我們需要對系統(tǒng)進行綁定引腳,進行一次全編譯。系統(tǒng)頂層文件如圖12所示。
4、結語
目前,包括數(shù)字邏輯實驗、計算機組成原理實驗以及計算機接口與通信實驗在內的系統(tǒng)結構類實驗已經(jīng)建成了一體化的實驗體系。經(jīng)過多輪實驗教學驗證,該體系能切實提高學生的設計能力,幫助學生理解和掌握計算機基礎知識并建立計算機整機的概念。