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