張勝 李方云 曹家慶
摘要:在QuartusII6.0的IDE環(huán)境下利用VHDL技術(shù)設(shè)計并實現(xiàn)了一個基于CycloneⅡ系列的FPGA芯片的16位模型機,能夠?qū)崿F(xiàn)加減乘除算術(shù)運算、與或非邏輯運算以及進行算術(shù)左右移運算。對模型機各部件設(shè)計、編譯和仿真成功后,下載到SOPC/EDA實驗平臺進行測試,達到了預(yù)期效果。
關(guān)鍵詞:CPU設(shè)計;VHDL;Quartus II;FPGA
中圖分類號:G642.0 文獻標志碼:A 文章編號:1674-9324(2018)13-0275-04
近年來,隨著電子設(shè)計自動化技術(shù)的不斷發(fā)展,基于現(xiàn)場可編程(FPGA)技術(shù)設(shè)計嵌入式CPU突破了原有的技術(shù)瓶頸,使產(chǎn)品的開發(fā)周期大為縮短,性價比也大幅提高。特別是隨著硬件描述語言(VHDL)綜合工具功能和性能的提高,計算機中許多重要的元器件,甚至是整個CPU都用硬件描述語言來設(shè)計和表達,形成了所謂的單片系統(tǒng)——SOC和SOPC。
本文是計算機組成原理課程中綜合實驗的內(nèi)容之一,以計算機基本組成和原理為基礎(chǔ),利用EDA中的VHDL技術(shù)在CycloneⅡ系列的FPGA芯片上設(shè)計、實現(xiàn)一個16位模型計算機,主要側(cè)重于CPU設(shè)計,要求能夠?qū)崿F(xiàn)加減乘除算術(shù)運算、與或非邏輯運算以及左右移運算等基本功能。
一、模型機的硬件設(shè)計
簡易16位模型機模塊設(shè)計如圖1所示,包括的部件有存儲器(RAM)、內(nèi)存緩存寄存器(MBR)、內(nèi)存地址寄存器(MAR)、控制器(CU)、程序計數(shù)器(PC)、指令寄存器(IR)、緩沖寄存器(BR)、累加器(ACC)、乘法寄存器(MR)和運算器(ALU)。圖中帶箭頭的粗線表示模型機的數(shù)據(jù)流,帶箭頭的細線表示模型機中的控制信息(CS)。系統(tǒng)將累加器和乘法寄存器一并設(shè)計在運算器中。
二、指令系統(tǒng)設(shè)計
1.指令設(shè)計。系統(tǒng)采用單地址指令結(jié)構(gòu),指令字包含操作碼和地址碼兩部分,前者描述指令的功能,如加減乘除、與或非、左右移等,后者指明數(shù)據(jù)在內(nèi)部存儲器的位置。為了簡便起見,內(nèi)部存儲器大小設(shè)定為256×16bits,操作碼和地址碼各占8位。系統(tǒng)中指令集如表1所示,[x]表示內(nèi)存地址為x的內(nèi)容,例如,指令字(03C8)16表示加指令,其功能是將內(nèi)存地址C8存儲單元的值與ACC的值相加后結(jié)果存入ACC中。
2.微指令設(shè)計。微指令由操作控制字段(16位)和順序控制字段(8位)組成。前者是CU產(chǎn)生的16位控制信號,實現(xiàn)對各部件的操作控制,后者通過邏輯判斷完成下一條微指令的尋址。微指令中操作控制字段功能分配如表2所示。其中,C[3..0]是ALU的操作選擇信號,可控制執(zhí)行設(shè)計的16種算術(shù)邏輯操作之一。本系統(tǒng)選用了10種方式,對ACC進行清零、加減乘除、與或非和移位操作。C[5..4]是MBR的輸入選擇信號,01傳入主存信息,10傳入ALU計算結(jié)果信息。C[7..6]是MAR的輸入選擇信號,01傳入MAR信息尋找下一條數(shù)據(jù)信息,10傳入PC信號尋找下一條指令。C[9..8]是PC的控制選擇信號,01是PC+1定位下一條指令地址,10是傳入MBR[7..0]的數(shù)據(jù)地址。C[10]控制是否將緩存高8位信息傳入IR,對其進行譯碼。C[11]控制是否將緩存信息傳入BR,對其進行ALU計算。C[12]控制CU是否終止操作,即結(jié)束模型機工作。C[15]控制對主存的寫和讀。通過這些控制信號使模型機按時序正常運行。
3.微程序設(shè)計。系統(tǒng)采用微程序控制器對指令進行譯碼。每條指令對應(yīng)一個微程序。指令周期包括取指周期(T1、T2、T3三個時鐘周期)和執(zhí)行周期(T4、T5、T6、T7等若干個時鐘周期)兩部分,各指令對應(yīng)的微操作如表3所示。
三、系統(tǒng)仿真與測試
邏輯電路的設(shè)計與仿真是在QuartusII6.0的環(huán)境下完成的,硬件測試平臺為杭州康芯電子有限公司在“SOPC/EDA組成原理實驗開發(fā)系統(tǒng)”上完成。
測試程序代碼與數(shù)據(jù)通過編輯lpm_ram_dq0配置文件ram.mif,并將其保存在與實驗電路CPU.bdf工程所在的文件夾中,與實驗電路CPU.bdf一同編譯后,得到下載文件CPU.sof。ram.mif內(nèi)容如圖2所示,內(nèi)存地址[00]至[1B]為測試代碼,[A0]至[B2]為測試數(shù)據(jù)。其中,[00]至[1C]測試表1中列示的算術(shù)和邏輯命令,[0D]至[17]為計算1—100的整數(shù)求和(結(jié)果為5050),[18]至[1A]表示將求和的結(jié)果除5,用來測試除法指令。
1.仿真測試。設(shè)計波形激勵文件,進行波形仿真,仿真結(jié)果如圖3所示。從仿真結(jié)果看,達到了預(yù)期的設(shè)計要求,因文章篇幅限制,圖中列示了部分仿真結(jié)果。
2.下載至實驗平臺測試。在SOPC/EDA組成原理實驗開發(fā)系統(tǒng)上進行FPGA芯片類型的選擇、內(nèi)部電路模式選擇及引腳綁定。(1)芯片選擇:Cyclone系列的EP1C6Q240C8。(2)時鐘信號:clk選用clock2(=4khz),ram_clk選用clock0(=8khz)。(3)內(nèi)部電路模式:0號電路。(4)Reset信號:鍵8。(5)數(shù)碼管:左邊高4位為ACC值,右邊低4位為BR值。實驗結(jié)果達到了設(shè)計要求。
四、結(jié)語
本文利用了VHDL技術(shù)設(shè)計并實現(xiàn)了一個簡易的16位模型機,能夠?qū)崿F(xiàn)簡單的算術(shù)邏輯運算,讓學(xué)生能夠深入理解計算機的基本組成、內(nèi)部結(jié)構(gòu)和工作原理,為后續(xù)計算機軟硬件課程學(xué)習(xí)打下了良好的基礎(chǔ)。由于時間關(guān)系,本系統(tǒng)設(shè)計仍然存在某些不足,如時序控制、指令系統(tǒng)過于簡單、沒有考慮運算結(jié)果(如溢出、負值、零值等)對控制器的影響等問題,但是該模型機基本能夠?qū)崿F(xiàn)計算機系統(tǒng)中所用的關(guān)鍵指令。
參考文獻:
[1]潘松,潘明.現(xiàn)代計算機組成原理[M].北京:科學(xué)出版社,2007.
[2]陳嬡,黃賢英.基于EDA技術(shù)的定向型計算機硬件設(shè)計[J].微計算機信息,2007,23(29):289-291.
[3]徐愛萍,張玉萍,涂國慶.基于VHDL之CPU設(shè)計與實踐[J].實驗室研究與探索,2014,33(5):120-124.
[4]徐志永,李永紅.基于FPGA的嵌入式處理器SOC的設(shè)計[J].儀表技術(shù),2007,(5):19-21.
[5]陸玲霞,姚維,高健.基于VHDL的FPGA新實驗開發(fā)——簡易處理器實現(xiàn)[J].實驗室研究與探索,2013,32(11):269-272.