馬軍爽
(唐山學院 信息工程系,河北 唐山063000)
隨著我國信息化進程的不斷推進,計算機技術還將對我國的生產力的發展產生日益深遠的影響。 近年來我國在CPU 設計領域取得了一些重大突破,相繼研制出龍芯系列、方舟系列高性能CPU,此外位于臺灣的威盛電子也是較大的處理器生產商。 然而我國的CPU 設計及制造技術與國外相比還有很大差距, 我國信息產業中與CPU 相關的許多核心技術及產品仍然主要依賴進口,不僅經濟上受制于人,而且信息系統的安全乃至國家安全也面臨威脅。 FPGA 技術自20 世紀80年代中期出現至今,引起了電子設計技術的深刻變革,也成為現代電子設計技術的核心。 因此,基于FPGA 技術的CPU 設計具有較高的研究價值。
流水線(pipelining)是提高CPU 運行效率的關鍵技術。 和工業流水相似,流水線的核心思想是把多條指令的執行重疊起來。 在任何時候,CPU 同時處理多條指令,這些指令分處于不同的運行周期,使用不同的物理器件。
在流水線CPU 中, 每條指令的指令執行過程被分成若干個執行階段。只有當每一個執行階段都完成之后,一條指令才算執行完畢。在每一個指令執行階段中,當一條指令在該階段中完成執行之后,下一條指令將立即進入到該執行階段開始執行。 當流水線處于飽和狀態時,CPU 中將有與流水線級數相同數目的指令在同時執行, 本設計將流水線分為4 個階段,每一個執行階段的名稱和功能如下∶
1)IF∶取指令階段;
2)ID∶指令譯碼階段;
3)EXE∶指令執行階段;
4)PPR∶后處理階段。
程序計數器的模塊結構如圖1 所示, 其中pc_addr 為16 位數據輸出端口,os16 為CPU 與操作系統的接口,enable 為其控制端,當enable 為高電平時os16 輸入有效。ir_addr 和imme 分別為分支和跳轉指令的指令運算所需要的16 位擴展加數輸入端口。 en 為該模塊的使能控制輸入信號,load 和branch 分別為跳轉和分支控制信號。 該模塊的功能為∶ 在時鐘作用下, 當跳轉和分支控制指令為低電平時,pc_addr 地址加1。
此模塊的結構圖如2 所示, 其中data 為16 位數據輸入端口,ena為該模塊的使能信號端口,clk 和rst 分別為時鐘和復位信號端口,instr 為16 位數據輸出端口。
此模塊的功能是在ena 信號為高電平的條件下將16 位輸入指令數據送給16 位輸出端口instr。

圖1

圖2
此模塊結構如圖3 所示, 其中a 和b 為16 位操作數輸入端口,aluop 為4 位的alu 操作碼信號輸入端口,shift 為4 位的偏移量信號輸入端口,result 為16 位的結果輸出端口。 此模塊為CPU 的核心運算模塊,其功能為在aluop 的控制下進行各種算數、邏輯及移位運算操作。ALU 操作碼aluop 并不是指令中的操作碼部分,而是經由指令譯碼模塊產生的控制信號。

圖3
此模塊為CPU 的邏輯控制及調度中心, 它的功能是根據輸入指令的類型及特點產生一系列的控制信號,協調其他模塊正確滴完成指令的執行過程。
通用寄存器堆模塊為CPU 的通用數據集散中心, 它既可以為指令的執行提供操作數,也可以存儲運算處理的結果,還可以和主存進行數據交換。 此模塊采用通用RAM 模塊的設計思想,在普通的RAM基礎上擴展相應的數據及地址輸入輸出端口實現了通用寄存器堆的功能。
本設計采用的驗證方式是設計相關的外圍模塊,通過實際運行測試程序來驗證CPU 的方法。這種方法更具體更實際。圖4 為本設計的16 位CPU 由os16 端口裝入程序首地址的操作的時序仿真結果。

圖4
通過仿真結果可以看出,本設計中的處理器功能正確,能實現定點加減法運算、邏輯運算、移位運算、數據傳送、指令跳轉等功能,控制邏輯及數據通路的時序匹配合理,運算速度快,精度高。
本設計根據FPGA 技術的特點, 提出了一種基于FPGA 的16 位CPU 的設計方法。設計中采用了自頂向下、模塊化的設計思想,將整個CPU 的設計分各個功能模塊,利用VHDL 語言進行了各個功能模塊的設計,最后采用原理圖的方法將各個模塊組合成一個完整的微處理器內核。 本設計對16 位的CPU 設計方法進行了探討,研究了片上系統的設計方法和技術,為實現高性能的CPU 設計提供了研究基礎,有較高的研究價值。
[1]朱子玉,李亞民.CPU 芯片邏輯設計技術[M].北京∶清華大學出版社,2005,01.
[2]張洪潤,張亞凡.FPGA/CPLD 應用設計200 例[M].北京∶北京航空航天大學出版社,2009,01.
[3]王賦攀,畢國堂.一種基于FPGA 和軟核CPU 的嵌入式系統設計方法[J].電腦知識與技術,2007,06.
[4]江先陽,沈緒榜,張天序.基于ARM 核的嵌入式CPU 內AHB 接口的實現[J].通信學報,2002,07.