徐愛萍 張玉萍 涂國慶
摘要:針對開發(fā)式CPU設(shè)計中存在的若干問題,研究如何充分發(fā)揮學(xué)生的主觀能動性并激發(fā)學(xué)生的實踐積極性的教學(xué)方法,分析案例教學(xué)與自主設(shè)計相結(jié)合、時序仿真與硬件調(diào)試相結(jié)合、實驗設(shè)計與實習(xí)報告相結(jié)合、集中指導(dǎo)與自主實驗相結(jié)合、多種考核手段相結(jié)合的教學(xué)改革實踐,指出這些教學(xué)改革方法在實踐中取得了較好的效果,對后續(xù)計算機組成原理整機實習(xí)的進一步完善具有很好的指導(dǎo)作用。
關(guān)鍵詞:計算機組成原理課程;整機實習(xí);CPU設(shè)計;教學(xué)方法;教學(xué)改革;教學(xué)實踐
0、引言
計算機組成原理和體系結(jié)構(gòu)是計算機專業(yè)的核心課程,計算機整機實習(xí)在該課程的教學(xué)中有著重要的作用。這是因為CPU是整個計算機系統(tǒng)的控制中心,也是系統(tǒng)中最復(fù)雜的部件。CPU是計算機硬件設(shè)計的主要依據(jù),同時CPU指令系統(tǒng)又是軟件設(shè)計的基礎(chǔ)。在計算機專業(yè)知識結(jié)構(gòu)中CPU起著承上啟下的關(guān)鍵作用,有了CPU的理論基礎(chǔ)和設(shè)計經(jīng)驗,學(xué)生將來無論從事硬件設(shè)計還是軟件開發(fā)都會有很大的幫助。為此,美國、日本和西歐的一些國家在計算機專業(yè)課程的教授中加大了這方面的資助力度。美國的許多高校在本科計算機專業(yè)中都安排了CPU設(shè)計的實驗內(nèi)容,在該課程實踐中要求學(xué)生自行設(shè)計ALU、單指令周期CPU、多指令周期CPU乃至流水線的32位MIPS CPU設(shè)計,要求學(xué)生用VHDL語言基于FPGA自主實現(xiàn)CPU并完成軟硬件調(diào)試。然而,我國大多數(shù)高等院校在實驗與實踐方面主要在一些由分離元件構(gòu)成的實驗平臺上完成簡單模型CPU的驗證性實驗,沒法完成像國外高校那樣的自主創(chuàng)新型CPU設(shè)計。基于以上問題,目前在我國一流的高等院校開始了基于VHDL和最新EDA技術(shù)的開放式CPU設(shè)計。近幾年,計算機組成原理整機實習(xí)主要在Quartus II仿真平臺上進行可視化設(shè)計與時序仿真,其調(diào)試?yán)щy、仿真結(jié)果不直觀,為此筆者開始了基于VHDL的開放式CPU設(shè)計,對計算機組成原理整機實習(xí)在如下幾個方面進行了教學(xué)改革和實踐。
1、案例教學(xué)與自主設(shè)計相結(jié)合
計算機組成原理課程實驗的方法通常有兩種:一種是利用現(xiàn)有的計算機組成原理實驗儀將CPU的各個組成部件做好,學(xué)生只需按書中要求撥動相應(yīng)開關(guān)就能完成實驗,這種方法的缺點是不利于學(xué)生理解內(nèi)部原理,由于器件的種類、數(shù)量擴展困難,學(xué)生的設(shè)計難以突破實驗箱的限制,因此,驗證性實驗?zāi)J酱嬖谥窒扌?,不能給學(xué)生提供自主設(shè)計的平臺和自由發(fā)揮的空間;另一種方法是應(yīng)用EDA技術(shù),利用Quartus II仿真平臺進行開放式的CPU設(shè)計,通過模擬仿真或相應(yīng)硬件資源來直觀地觀察實驗結(jié)果。本課程分別采用此兩種方法為學(xué)生開設(shè)部件實驗和整機實習(xí),驗證性試驗主要讓學(xué)生對計算機的各個組成部分有初步的了解,整機實習(xí)則將計算機組成的各個部分組成一個模型計算機,該模型計算機能執(zhí)行一定的指令系統(tǒng)。我們在整機實習(xí)時主要選用湯志忠編著的《開放式實驗CPU設(shè)計》和潘松編著的《現(xiàn)代計算機組成原理》作為教材,由于書上已有相應(yīng)代碼,而整機實習(xí)時間有限,如果讓學(xué)生把書上代碼敲一遍然后調(diào)試,既花時間又使學(xué)生沒有思考空間,調(diào)試完后學(xué)生也不知道自己如何去設(shè)計。因此在實習(xí)中我們將書上的代碼作為案例拷貝給學(xué)生,然后在此基礎(chǔ)上設(shè)計一套不同的CPU結(jié)構(gòu)或不同的指令格式或不同指令系統(tǒng)的控制器,學(xué)生從確定CPU指令系統(tǒng)架構(gòu)開始,進行指令集、指令格式、尋址方式、數(shù)據(jù)通路的設(shè)計,并且針對自己設(shè)計的要求來修改案例代碼,在修改過程中學(xué)生會遇到很多實際問題,等這些問題逐一解決后學(xué)生會恍然大悟,把案例代碼變成自己的設(shè)計,然后對自己的設(shè)計方案進行測試和驗證,在CPU設(shè)計過程中達到更完整、更深入地理解計算機組成與系統(tǒng)結(jié)構(gòu)的目的。如此,既節(jié)省了時間,又達到了培養(yǎng)學(xué)生自主設(shè)計的目的,提高了學(xué)生分析問題、解決問題、硬件語言設(shè)計和調(diào)試的能力,在鞏固學(xué)生對計算機組成原理課程理論的學(xué)習(xí)、熟悉CPU各個功能部件的工作、促進學(xué)生的感性認(rèn)識、培養(yǎng)學(xué)生計算機應(yīng)用能力和創(chuàng)新能力等方面起了積極的作用。在實驗中由學(xué)生進行自主設(shè)計并驗證已成為實驗的重要內(nèi)容,是素質(zhì)教育的發(fā)展趨勢。
2、時序仿真與硬件調(diào)試相結(jié)合
基于EDA技術(shù)的計算機組成原理整機實習(xí)通常在Quartus II仿真平臺上實現(xiàn),可以采取Block Diagram和VHDL的設(shè)計方式,兩者方法各有利弊,但如果能揚長避短,兩者配合使用,必定事半功倍。
CPU設(shè)計包括組合邏輯、微程序控制和流水線技術(shù)的CPU設(shè)計,在設(shè)計時要求學(xué)生對CPU的幾個組成部分分文件夾存放,一般分為寄存器、譯碼器、多路選擇器、運算器、存儲器、取指部件、指令譯碼和執(zhí)行部件,每個部件都用VHDL來編寫,通過自動生成結(jié)構(gòu)圖來查找邏輯連接上的錯誤并單獨仿真來測試各個部件設(shè)計的準(zhǔn)確性。在此以寄存器的調(diào)試為例,如圖1為寄存器結(jié)構(gòu)圖,其中reg00至reg03為4個16位的寄存器;decoder為2-4譯碼器;mux 4 to 1為4選1的選擇器;reset為復(fù)位信號;clk為時鐘信號;SR[1..0]為源寄存器選擇信號;DR[1..0]為目的寄存器選擇信號;d_input[15..0]為15位數(shù)據(jù)輸入信號;DRwr為寄存器讀寫信號,高電平寫入,低電平讀出;d Output[15..O]為15位數(shù)據(jù)輸出信號。
寄存器的時序仿真波形如圖2所示,仿真前先將reset置為低電平來復(fù)位各寄存器,然后將DRWr信號置“1”來寫入5個時鐘周期,最后將DRWr信號置“0”來讀出寄存器的值。由圖2可見時序仿真有毛刺,讀出的數(shù)據(jù)只能驗證其功能的正確性,但仿真過程麻煩而且結(jié)果不直觀。之前的實驗仿真結(jié)果證明時序仿真用于CPU的整體調(diào)試很難仿真出來。因此,當(dāng)部件設(shè)計分別仿真調(diào)試成功后就用頂層文件設(shè)計完整的CPU,但對CPU的調(diào)試我們采用實驗室引進的“WT-1型計算機系統(tǒng)硬件綜合實驗平臺”,該實驗平臺由CPU核心板、主實驗板、擴展板組成,可使學(xué)生在本實驗平臺上搭建一個完整的計算機系統(tǒng),但必須是用VHDL編寫的CPU才能下載到該實驗平臺上進行調(diào)試。endprint
該硬件平臺配有相應(yīng)的調(diào)試軟件。設(shè)計好CPU工程并編譯成功后,直接點擊QuartusII工具欄上的Programmer按鈕,在Mode框中選擇默認(rèn)的JTAG下載方式,確保下載硬件為ByteBlasterlI【LPT1】,如果不是的話,就點擊Hardware Setup按鈕來設(shè)置。完成上述過程后,選中需要下載的sof文件,點擊Start開始下載到硬件實驗平臺上。下載完后打開調(diào)試軟件,然后分別加載測試程序和規(guī)則文件,在調(diào)試軟件中編譯成功后再下載到內(nèi)存,最后開始調(diào)試,通過查看寄存器的值來檢測指令的功能是否成功,測試界面如圖3所示。執(zhí)行完“ADD Rl,R2”指令后,RI=0,進位為1(4號寄存器中存放的是進位c)。
時序仿真調(diào)試與硬件設(shè)備調(diào)試相結(jié)合的方法較好地完成了整機實習(xí),讓學(xué)生很好地將理論與實踐結(jié)合起來,從CPU的設(shè)計成功中享受學(xué)習(xí)本課程的收獲、感受本課程學(xué)習(xí)的價值,調(diào)動了學(xué)生的學(xué)習(xí)積極性。
3、實習(xí)設(shè)計與實習(xí)報告相結(jié)合
由于實驗室機器不足、實習(xí)時間有限,我們的整機實習(xí)是分組進行的,一般1~4人為一組。雖然分組實驗不能讓每個同學(xué)獨立完成實習(xí)的整體工作,但培養(yǎng)了學(xué)生的團隊合作精神,使學(xué)生得到了交流學(xué)習(xí)、互為提高的機會。實習(xí)完成后我們要求小組提交實習(xí)報告,報告中要求學(xué)生談自己的收獲和體會,學(xué)生在實習(xí)總結(jié)報告中表示在開放式CPU設(shè)計實驗中收獲頗豐,既有在系統(tǒng)知識上的鞏固與擴展,也有實驗方法、團隊精神和動手能力的提升。實驗的過程中問題一個個接踵而至,學(xué)生除在團隊內(nèi)部交流外還和其他小組進行溝通,更復(fù)雜的問題就咨詢老師,每個問題都考驗了他們的集體協(xié)作能力,考驗了他們解決問題的能力。在實驗過程中,由于CPU各部件都是用VHDL(硬件描述語言)編寫,分析案例代碼是首要任務(wù)。但每個單元的接口、引腳單靠源代碼難以分析清楚,因此要借助電路圖,可以采用QuartusⅡ軟件中的RTLVaewer來自動生成電路連接圖。該圖可以讓學(xué)生對實驗內(nèi)容的理解起到事半功倍的效果,同時讓學(xué)生真正學(xué)會對知識的融會貫通。另外,在分配引腳時,由于本設(shè)計的CPU和案例CPU的輸出端口有所不同,因此需要借助實驗指導(dǎo)書上的芯片引腳分配,大膽嘗試,學(xué)生最后成功地分配好了引腳,這讓他們明白了實驗中敢于嘗試是保證成功的基石。總之,對一個CPU的工作流程的整體把握,包括取指、取數(shù)、譯碼、執(zhí)行等流程,是對計算機組成原理知識的總結(jié)和升華,有助于學(xué)生加深對EDA這門課程的理解,具有相當(dāng)大的實用價值。同時,這次實驗極大地培養(yǎng)了學(xué)生的動腦動手能力和硬件編程能力。CPU開放式實驗讓學(xué)生了解到,實驗不僅僅是“自己動手做”,也要“看別人如何做”,并且問“為什么這樣做”,也使他們認(rèn)識到以前所學(xué)的知識是零散的,沒有整機的概念。通過運用已學(xué)的內(nèi)容去探索未知的知識是一個溫故而知新的過程。在實驗過程中,學(xué)生發(fā)現(xiàn)了書本上的理論知識與實際的結(jié)果有一些出入,正所謂實踐是檢驗真理的唯一標(biāo)準(zhǔn),只有通過不斷的嘗試和質(zhì)疑、修正及檢驗,理論才得以可信。小組團結(jié)協(xié)作完成實驗的全部內(nèi)容,讓他們很有成就感。而教師也可以從實踐中吸取經(jīng)驗和教訓(xùn),了解學(xué)生的困惑以及教師在指導(dǎo)上的可取之處和不足之處,以便更好地指導(dǎo)以后的實習(xí)。
4、集中指導(dǎo)與自主實驗相結(jié)合
計算機組成原理整機實習(xí)任務(wù)重、時間緊,集中指導(dǎo)對成績優(yōu)秀者一般可以完成,但50%同學(xué)尚不能完成。考慮到實習(xí)最后的CPU調(diào)試需要在硬件綜合平臺上測試,因此,集中實習(xí)之后實驗室對學(xué)生開放。學(xué)生課堂上如果不能完成實驗,可以自己安排實驗時間,實驗室每天有實驗員值班,只要在實驗課程所開設(shè)的學(xué)期內(nèi)完成實驗即可。通過開放實驗室,學(xué)生可以自學(xué)到一些實驗以外的知識,從而開闊學(xué)生的視野、培養(yǎng)學(xué)生查閱資料、獨立分析問題和解決問題的能力和科研能力。
5、多種考核手段相結(jié)合
由于實習(xí)是多人一組,有些學(xué)生做實驗時不認(rèn)真,等待同組其他同學(xué)做,在最后評分時不好區(qū)別,成績的公平性會影響學(xué)生的積極性。因此,在實習(xí)過程中我們采取多種考核方法。首先每天檢查各組的實驗情況,檢查過程中記錄下每小組各成員的進展情況作為平時成績,占總成績的30%;實習(xí)最后一天讓每個學(xué)生匯報整體CPU設(shè)計的結(jié)果,匯報情況作為設(shè)計成績,占總成績的40%;評閱實習(xí)報告作為報告成績,占總成績的30%??傮w實驗成績不能偏低,以激發(fā)學(xué)生的實際動手積極性,經(jīng)過切實參與指導(dǎo)和考察,90%做到了公平考核,對提高學(xué)生對整機實習(xí)的興趣起到了重要作用。
6、結(jié)語
該設(shè)計基于Altera最新推出的Cyclone系列FPGA硬件平臺和Quartus II工具軟件,從最基本的部件至整個宏觀系統(tǒng),全部用VHDL設(shè)計并實現(xiàn)于一個單片F(xiàn)PGA中,同時利用平臺提供的高效軟硬件調(diào)試和測試工具優(yōu)化設(shè)計,而在實現(xiàn)方面利用HardCopy技術(shù)來完善設(shè)計。這一切在傳統(tǒng)的教學(xué)內(nèi)容、實驗?zāi)J胶蛯嶒炇侄紊鲜菦]有的,是對傳統(tǒng)計算機組成原理整機實習(xí)的徹底改革,使學(xué)生在了解計算機組成原理和軟件設(shè)計技術(shù)的同時,學(xué)會了計算機硬件設(shè)計技術(shù),提高了自主創(chuàng)新能力。endprint