陸玲霞, 姚 維, 高 健
(浙江大學電氣工程學院,浙江杭州310027)
EDA技術(shù)經(jīng)過20多年的發(fā)展,由于其高速度、高可靠性、高集成度等優(yōu)點已被廣泛應用到醫(yī)療衛(wèi)生、軍事航天、科學計算等領(lǐng)域。為適應EDA技術(shù)的發(fā)展規(guī)律,培養(yǎng)該領(lǐng)域的系統(tǒng)級優(yōu)秀人才,國內(nèi)外高校紛紛開設基于FPGA的相關(guān)課程和實驗。然而FPGA課程實踐性強、設計性要求高,在FPGA教學過程中,實驗課程占據(jù)很大的比例是非常重要的,因此如何激發(fā)學生的實驗興趣及探索實驗有效途徑是首要任務[1-2]。
為充分給予學生實踐機會,本文通過引入暑期短學期集中培訓的方式,盡量壓縮理論課堂教學時間,充分給予學生實驗室動手實踐機會;同時結(jié)合實驗項目給定的方式開展實驗課堂教學,并通過結(jié)果和過程兩者相結(jié)合的評定機制提升學生的學習積極性。值得特別提出的是:掌握FPGA技術(shù)的關(guān)鍵是使學生能自主完成較完整的系統(tǒng)設計,同時由于高性能CPU是國家技術(shù)實力的象征,設計國內(nèi)自主產(chǎn)權(quán)的CPU意義重大,而且學生也已學過“微機原理和接口技術(shù)”課程,基于上述多方面原因,通過開設VHDL硬件描述語言實現(xiàn)簡易處理器內(nèi)核的綜合性、創(chuàng)新性實驗,幫助學生深刻理解微處理器內(nèi)部結(jié)構(gòu)和工作機理,更好地掌握FPGA的設計原理、步驟和方法,精通VHDL硬件描述語言的開發(fā)和實踐,意義深遠。
Altera DE2-70實驗/開發(fā)兩用板是臺灣友晶公司為高等院校學生學習FPGA編程和學習,基于Nios軟核處理器應用項目編程而開發(fā)的實驗平臺。DE2-70多媒體開發(fā)平臺的核心是Altera公司Cyclone II系列2C70型FPGA芯片,其擁有7萬個邏輯單元,全稱EP2C70F896C6,包括了豐富的資源,如存儲芯片、音頻、視頻解碼器、以太網(wǎng)接口、USB接口、串口等可靠的外設及多媒體特性,是一款具有強大數(shù)字信號處理功能和多媒體功能的開發(fā)板,可靠性較高[3-4]。
本實驗就基于DE2-70采用VHDL硬件描述實現(xiàn)一個能執(zhí)行如立即數(shù)賦值、寄存器賦值、寄存器加減法等簡單指令功能的單片機系統(tǒng)[5-8]。
圖1為該處理器的內(nèi)部結(jié)構(gòu),包含多個16位寄存器,多路選擇器,加法器、減法器,計數(shù)器,和一個控制單元。數(shù)據(jù)采用16位標準輸入,內(nèi)部單元間傳輸數(shù)據(jù)通過16位總線,通過時鐘來驅(qū)動輸入控制信號和數(shù)據(jù)以完成微處理器的一系列指令動作。
考慮到開發(fā)板的硬件條件限制,在實際開發(fā)中,指令和立即數(shù)同時由外部輸入信號Din給定,并通過不同的時鐘步調(diào)實現(xiàn)指令和數(shù)據(jù)的讀取和操作。
最終需實現(xiàn)的最基本的指令見表1。表1左欄定義了寄存器的指令名稱和操作數(shù),右欄中Rx←[Ry]是指寄存器Ry的內(nèi)容賦值給Rx,Rx←D是指將立即數(shù)D賦值到Rx中,以此類推,完成經(jīng)典的四個匯編指令功能,分別是寄存器之間賦值、向寄存器賦立即數(shù)、寄存器內(nèi)容相加減。
每個指令譯碼成9位二進制數(shù)存入到IR寄存器中,格式如IIIXXXYYY,其中III代表指令,如mv、mvi等;XXX表示Rx寄存器;YYY表示Ry寄存器。該指令由16位DIN輸入信號分離出9位二進制數(shù)得來,如圖1所示。但對于mvi指令來講,YYY沒有任何意義,該操作數(shù)是立即數(shù)#D,由DIN輸入完畢9位指令后待第二個時鐘來臨時所獲得的16位數(shù)值。
圖1 微處理器內(nèi)部結(jié)構(gòu)
表1 指令和功能介紹
Run信號高電平有效,控制指令的執(zhí)行與否;一旦某一指令執(zhí)行完畢,控制器將發(fā)出Done信號;而當reset信號來臨,系統(tǒng)復位;指令周期分配由圖1中couter模塊提供,是一個二維量,不同指令需不同的處理周期。由于都需要通過總線buswire才能傳遞數(shù)據(jù),因此將mov和movi指令分配兩個周期(T0和T1),add和sub分配4個周期(T0、T1、T2和 T3),其中 T0時刻完成共性的動作——指令的讀取,控制IRin有效,其余控制信號與相應的指令周期請見圖2。
參看圖2中mvi指令:要完成立即數(shù)的讀取,首先在T0時刻將IRin置為有效,從DIN信號中分離出有效地指令信息,然后等待T1時刻來臨,再將IRin置為無效后使DINout、RXin、Done3個控制信號有效,即完成將外部的立即數(shù)信號通過總線傳輸?shù)郊拇嫫鞯倪^程,并給出指令完成信號Done提醒用戶。
通過對圖1內(nèi)部結(jié)構(gòu)的剖析,自然想到采用VHDL結(jié)構(gòu)化的編程思路[9-10]。對應于圖中各部件,編寫各例化元件(component),主要包括 counter、addsub、multiplexer、IR、control等。其中最關(guān)鍵的是control模塊,它包括向各寄存器提供輸入控制信號,向多路選擇器提供選通控制信號等。主要的設計流程圖見圖 3[11-15]。
圖2 控制信號與周期匹配圖
圖3 軟件流程圖
圖4說明了4個指令的執(zhí)行過程,Clock時鐘信號為上升沿有效,一個時鐘周期也就是圖2中的T為20 ns,因此完成加減法指令需要4個CLOCK周期,即80 ns。4個指令的順序執(zhí)行過程如下:
① MOVIR0,#0005H;10 ns~50 ns區(qū)間
R0←0005H 即此時R0=0005H
② MOV R1,R0;50 ns~90 ns區(qū)間
R1←R0 即此時R1=R0=0005H
③ ADD R0,R1;90 ns~170 ns區(qū)間
R0←[R0]+[R1]
即此時R0=0005H+0005H=000AH
④ SUB R0,R0;170~250區(qū)間
R0←[R0]-[R0]
即此時R0=0005H-0005H=0000H
該仿真圖充分驗證出設計結(jié)果的準確性和步調(diào)一致性。
圖4 處理器仿真圖
通過實驗,有利于學生系統(tǒng)地綜合應用多路選擇器、人機顯示、計數(shù)器等各種模塊,掌握用component編程思想,思路清晰,自上而下,并通過控制器的時序?qū)崿F(xiàn),幫助學生更清晰地明白匯編指令功能的實現(xiàn)原理,實現(xiàn)過程,改變以往學生只是了解單片機匯編語言指令使用方法的現(xiàn)狀,提高學生的學習積極性,加深其對VHDL語言的理解,熟悉并掌握FPGA開發(fā)的基本過程,實驗教學效果良好。
[1] 陳 林,陳 晴,邢思銳,等.基于FPCA的綜合設計性實驗項目設計[J].實驗室科學,2012,15(4):83-86.
[2] 楊 光,馮 濤,秦永左.VHDL實驗教學的研究與探索[J].中國校外教育(下旬刊),2008(8):82.
[3] Nakkar Mouna.VHDL project tutorial on Altera DE2 board[C]//ASEE Annual Conference and Exposition,2009.
[4] 黃雄華,周 婭,蔣韋貞.基于Altera DE2板的數(shù)字邏輯電路課程EDA實驗內(nèi)容的設計[J].實驗室科學,2010,13(4):90-93.
[5] 范曉亮.基于FPGA的雙核模型機CPU的設計與實現(xiàn)[D].沈陽:東北大學,2008.
[6] 邵天增.基于FPGA的計算機組成與結(jié)構(gòu)實驗系統(tǒng)的設計與實現(xiàn)[D].上海:華東師范大學,2010.
[7] 劉 星.基于FPGA的8位模型機的設計與實現(xiàn)[D].天津:天津工業(yè)大學,2011.
[8] 鄧惠娟.8086單芯片計算機VGA控制器的研究與設計[D].合肥:合肥工業(yè)大學,2010.
[9] 毛 敏.基于VHDL的一個簡單Mealy狀態(tài)機[J].現(xiàn)代電子技術(shù),2009,32(14):4-6.
[10] 劉 君,常 明,秦 娟,等.基于硬件描述語言(VHDL)的數(shù)字時鐘設計[J].天津理工大學學報,2007,23(4):40-42.
[11] Charles H,Roth Jr,Lizy K John.數(shù)字系統(tǒng)設計與 VHDL(英文版)[M].北京:電子工業(yè)出版社,2010:340-349.
[12] Ortiz M,Quiles F,Hormigo J.Efficient Implementation of Carry-Save Adders in FPGAs[C]//Proceeding of20th IEEE Conference on Application-Specific Syatem,Architecture and Processors(ASAP 2009).Boston.2009:207-210.
[13] 羅力凡,常春藤.基于VHDL的FPGA開發(fā)快速入門技巧實例[M].北京:人民郵電出版社,2009:21-84.
[14] 趙艷華,曹丙霞,張 睿.基于Quartus II的FPGA/CPLD設計與應用[M].北京:電子工業(yè)出版社,2009:162-171.
[15] 陳欣波.Altera FPGA工程師成長手冊[M].北京:清華大學出版社,2012:120-150.