費(fèi) 翔 高天迎 張運(yùn)杰
(天津城建大學(xué) 計(jì)算機(jī)與信息工程學(xué)院,天津 300384)
計(jì)算機(jī)組成原理(后面簡(jiǎn)稱(chēng)“組成”)是計(jì)算機(jī)方向一門(mén)重要的專(zhuān)業(yè)基礎(chǔ)課[3],內(nèi)容偏向原理,為了深化學(xué)生的理解,必須在實(shí)踐環(huán)節(jié)配合具體、形象的教學(xué)內(nèi)容。但是由于計(jì)算機(jī)結(jié)構(gòu)的高度復(fù)雜性,很難選取合適的具體元件來(lái)進(jìn)行實(shí)踐教學(xué),而FPGA 技術(shù)既可以進(jìn)行波形仿真以便學(xué)生分析實(shí)驗(yàn)原理,又能夠?qū)崿F(xiàn)開(kāi)發(fā)板驗(yàn)證,直觀的展示現(xiàn)象,極大地滿(mǎn)足了教學(xué)需求。我校計(jì)算機(jī)專(zhuān)業(yè)在第三學(xué)期會(huì)進(jìn)行分方向培養(yǎng),其中的嵌入式方向與物聯(lián)網(wǎng)方向以ARM 處理器為學(xué)習(xí)對(duì)象。“組成”課程實(shí)驗(yàn)包括馮諾依曼結(jié)構(gòu)定義的計(jì)算機(jī)五部分,并逐步構(gòu)建出RISC型模型機(jī)以銜接后續(xù)方向課。而且,前期的數(shù)字邏輯設(shè)計(jì)課程(后面簡(jiǎn)稱(chēng)“數(shù)電”)也根據(jù)計(jì)算機(jī)專(zhuān)業(yè)的特點(diǎn)[4],在課程內(nèi)容上做出了革新,進(jìn)而形成“數(shù)電——組成——ARM”相互連接的知識(shí)鏈。
模型機(jī)以RISC,4 位數(shù)據(jù)/地址寬度,哈佛存儲(chǔ)結(jié)構(gòu),定長(zhǎng)度(12bits)、定周期(8 節(jié)拍)指令為總體思路。按實(shí)驗(yàn)內(nèi)容的漸進(jìn)順序,總體框圖如圖1 所示。
圖1 總體結(jié)構(gòu)框圖
“組成”實(shí)驗(yàn)采用Altera 的EP4CE6 芯片,其具有10320 個(gè)邏輯單元。因此該型號(hào)芯片可以適應(yīng)各類(lèi)數(shù)字信號(hào)系統(tǒng)的設(shè)計(jì),同時(shí)擁有較靈活的時(shí)序設(shè)計(jì)資源[5]。實(shí)驗(yàn)開(kāi)發(fā)環(huán)境采用官方的Quartus II 13.0。
課程實(shí)驗(yàn)總體思路,包括以下幾點(diǎn):
2.2.1 實(shí)驗(yàn)項(xiàng)目串接知識(shí)鏈
這里的知識(shí)鏈,既包含課程內(nèi)容的漸進(jìn)順序,也包括不同課程之間的銜接[6-8]。比如,在前期“數(shù)電”中,組合邏輯部分突出全加器及加減電路的講解,并且設(shè)計(jì)“一位全加器實(shí)驗(yàn)”、“加減電路實(shí)驗(yàn)”,然后在其課設(shè)中包含“ALU 系統(tǒng)設(shè)計(jì)”題目,傳導(dǎo)ALU是CPU 運(yùn)算器的核心部件[9]的思想。時(shí)序邏輯部分突出D 觸發(fā)器與地址譯碼器的結(jié)合應(yīng)用,設(shè)計(jì)“寄存器實(shí)驗(yàn)”、“地址譯碼器實(shí)驗(yàn)”,然后在其課設(shè)中包含“存儲(chǔ)體設(shè)計(jì)”題目。
這樣在進(jìn)入“組成”后,學(xué)生已經(jīng)積累了ALU、存儲(chǔ)體等知識(shí)。然后,課程教學(xué)上引入運(yùn)算器內(nèi)部緩存概念,利用CPU 內(nèi)總線,將存儲(chǔ)體變形為寄存器堆,與ALU 構(gòu)建完整的運(yùn)算器。同樣,儲(chǔ)存系統(tǒng)環(huán)節(jié)突出存儲(chǔ)器擴(kuò)展原理的講解,利用存儲(chǔ)體和譯碼器進(jìn)行存儲(chǔ)器長(zhǎng)度擴(kuò)展[10]。
2.2.2 針對(duì)計(jì)算機(jī)的專(zhuān)業(yè)特點(diǎn)靈活使用FPGA
FPGA 的靈活性,很大原因是因?yàn)榭梢圆捎每删幊踢壿嬚Z(yǔ)言如:VHDL、Verilog 等進(jìn)行代碼開(kāi)發(fā)。雖然,計(jì)算機(jī)專(zhuān)業(yè)的基本功就是編程能力,但是可編程邏輯語(yǔ)言的學(xué)習(xí)卻不是本專(zhuān)業(yè)的重點(diǎn)。本專(zhuān)業(yè)學(xué)習(xí)更看重邏輯關(guān)系轉(zhuǎn)化為功能電路的過(guò)程。
因此,前期基礎(chǔ)電路實(shí)驗(yàn),比如:全加器、D 觸發(fā)器等,是要求學(xué)生以繪制電路原理圖的形式完成的。然后,利用Quartus II的代碼轉(zhuǎn)換功能,生成Verilog 源碼,接著對(duì)這種語(yǔ)言特性進(jìn)行學(xué)習(xí)和理解。后面的綜合電路實(shí)驗(yàn),則是利用基礎(chǔ)電路構(gòu)建的IP 核,進(jìn)行原理圖綜合設(shè)計(jì),這樣更加直觀的體現(xiàn)“組成”的完整過(guò)程。
實(shí)驗(yàn)?zāi)P蜋C(jī)包括:數(shù)據(jù)通路模塊,取指通路模塊和控制模塊三個(gè)部分[11]。
數(shù)據(jù)通路是運(yùn)算器與數(shù)據(jù)存儲(chǔ)器通過(guò)數(shù)據(jù)總線和地址總線[12]進(jìn)行連接而成,闡述一次計(jì)算機(jī)運(yùn)算的完成過(guò)程的子模型。它的結(jié)構(gòu)及各級(jí)結(jié)點(diǎn)說(shuō)明如圖2、表1 所示。
表1 數(shù)據(jù)通路控制信號(hào)說(shuō)明表
圖2 數(shù)據(jù)通路模塊
取指部件的主要功能是根據(jù)指令地址從指令存儲(chǔ)器中取出指令[13-15],包括程序計(jì)數(shù)器PC、指令存儲(chǔ)器和指令寄存器IR,闡述程序指令序列讀取過(guò)程。它的結(jié)構(gòu)及各級(jí)結(jié)點(diǎn)說(shuō)明如圖3、表2 所示。
圖3 取指通路模塊
表2 控制器取指通路控制信號(hào)說(shuō)明表
控制模塊包含時(shí)序系統(tǒng)和控制單元。所有指令采用定周期設(shè)計(jì),包含2 個(gè)機(jī)器周期(4 節(jié)拍每周期)共計(jì)8 個(gè)節(jié)拍。控制單元使用Verilog 編寫(xiě),依據(jù)組合邏輯指令譯碼思想,對(duì)IR 中操作碼、地址碼等展開(kāi)解析[16]。它的結(jié)構(gòu)如圖4 所示。
圖4 控制模塊
通過(guò)引入FPGA 技術(shù),設(shè)計(jì)一個(gè)RISC 模型機(jī),形象具體的實(shí)踐模式增強(qiáng)了學(xué)生對(duì)“組成”理論的理解。同時(shí),該模型機(jī)也提供向后擴(kuò)展的接口,在實(shí)驗(yàn)階段后的課程設(shè)計(jì)環(huán)節(jié)學(xué)生可以在這個(gè)模型基礎(chǔ)上進(jìn)行自主設(shè)計(jì),完成諸如“堆棧程序設(shè)計(jì)”、“中斷系統(tǒng)設(shè)計(jì)”、“外圍接口系統(tǒng)設(shè)計(jì)”等內(nèi)容。