国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于FPGA的MIPS單周期處理器的實現(xiàn)

2021-09-27 00:53嚴海洲
電腦知識與技術 2021年19期

嚴海洲

摘要:在MIPS CPU設計原理的基礎上,通過Verilog硬件描述語言編程、使用Xilinx FPGA開發(fā)板的調(diào)試和仿真工具Vivado,實現(xiàn)基于FPGA的MIPS單周期處理器。最終下載到Nexys4-DDR平臺上,通過ChipScope工具抓取運行過程中產(chǎn)生的波形進行驗證。

關鍵詞:MIPS;硬件描述語言 ; Vivado ;單周期處理器

中圖分類號:TP311? ? ? 文獻標識碼:A

文章編號:1009-3044(2021)19-0005-04

本文旨在使讀者理解和掌握基于FPGA的MIPS單周期處理器的設計和實現(xiàn)。我們要在了解MIPS CPU設計原理的基礎上,掌握Verilog硬件描述語言編程、Xilinx FPGA開發(fā)板(Nexys4-DDR)的調(diào)試和仿真工具(Vivado? 2014.4)。過程大致分為用Vivado設計套件創(chuàng)建工程、編寫 Verilog 代碼、仿真測試和下載驗證等四部分。

1 用Vivado設計套件創(chuàng)建工程

1.1 關于Vivado設計套件

Vivado設計套件是FPGA廠商賽靈思Xilinx公司2012年發(fā)布的集成設計環(huán)境,以提升生產(chǎn)力、縮短產(chǎn)品上市時間、實現(xiàn)可編程系統(tǒng)集成等目標。Vivado設計套件可實現(xiàn)FPGA部分的設計和開發(fā),管腳和時序的約束,編譯和仿真,實現(xiàn)RTL 到比特流的設計流程。包括高度集成的設計環(huán)境和新一代從系統(tǒng)級到IC級的工具,全新的系統(tǒng)級設計的中心思想是基于知識產(chǎn)權(IP)核的設計,Vivado工具把各類可編程技術結合在一起,能夠擴展多達1億個等效ASIC門的設計。這些均建立在共享的可擴展數(shù)據(jù)模型和通用調(diào)試環(huán)境基礎上,可以讓用戶更快地實現(xiàn)設計收斂。

1.2 新工程的創(chuàng)建和設置

打開 Vivado設計套件(本文使用的是Vivado 2014.4)新建工程,輸入工程名和存儲路徑如圖1所示。然后選擇FPGA型號、綜合和仿真工具、推薦描述語言(Verilog)等配置如圖2所示。

1.3 添加Verilog 模塊

如圖3所示,右鍵點擊 Hierarchy 窗口,選擇 Add Copy of Source ,添加已有的Verilog模塊,例如 Register file,Sign Extend,Data Memory,Instruction Memory,ALU 模塊。并重新定義Top 層模塊和 Control。

2 編寫 Verilog 代碼

2.1 關于Verilog HDL

Verilog HDL(常簡稱為Verilog)是一種硬件描述語言,以文本形式來描述數(shù)字系統(tǒng)硬件的結構和行為的語言,用它可以表示邏輯電路圖、邏輯表達式,還可以表示數(shù)字邏輯系統(tǒng)所完成的邏輯功能。Verilog HDL和VHDL是目前業(yè)界最常用的兩種硬件描述語言,這兩種HDL均為IEEE標準。

2.2 MIPS 單周期處理器原理概要

單周期CPU是指一條指令在一個時鐘周期內(nèi)執(zhí)行完畢,然后開始執(zhí)行下一條指令。時鐘周期一般也稱振蕩周期。 單周期處理器的設計,關鍵是確定數(shù)據(jù)路徑以及確定哪些操作需要時鐘,哪些不需要時鐘。例如對于 Data Memory 讀和寫就需要區(qū)別對待。將計算好的數(shù)據(jù)寫到 Data Memory 需要一個時鐘周期來完成。而讀 Memory 的操作,意味著將讀到的數(shù)據(jù)寫入到 Register file,如果讀 Memory 和寫 Register 都需要一個時鐘周期,那就無法實現(xiàn)單周期的處理器。所以 Data Memory寫操作采用時序邏輯,而讀操作采用組合邏輯,本文采用的就是這種方式。當然,還有其他方式來解決多周期修改成單周期,例如采用快慢兩個時鐘的方法等。

2.3 編輯 control 模塊和Top 層模塊

根據(jù)上述設計思路,編輯 control 模塊如圖4;編輯Top層模塊如圖5,將各個模塊互聯(lián)起來。

2.4 系統(tǒng)時鐘的設置

設計的系統(tǒng)時鐘暫定為 32MHz,外部時鐘是 100MHz,需要添加一個時鐘生成器進行分頻處理,得到32MHz。利用Core Generator來生成時鐘,右鍵選中 Hierarchy 窗口,選擇 New Source,左側框中選擇 IP,右側輸入文件名,如圖6所示。選擇 IP Core 類型,這里使用 Clocking Wizard,如圖7所示。然后配置 DCM 時鐘參數(shù),在 Top 模塊中調(diào)用 Clk_gen 模塊。

3 仿真測試

整個處理器設計基本完成,接下來編輯 testbench 文件,進行行為級的仿真。

3.1 系統(tǒng)的初始化

1)初始化 data memory、instruction memory 和 register 三大存儲模塊,這里僅以初始化 instruction memory 為例說明,其他類推即可。該 memory 用于存儲二進制代碼,如圖8顯示。Verilog中調(diào)用了系統(tǒng)任務$readmemh,將Instruction文件中的數(shù)據(jù)讀入到InstMem數(shù)組中。

2)編寫Top層的testbench文件如圖9。右鍵選中Hierachy窗口,選擇new source,如圖10所示,定義 file name為Top_tb,在左側欄中選擇 Verilog Test Fixture,點擊 Next,選擇Top模塊,自動生成 Top_tb 測試文件。添加時鐘激勵,初始化其他輸入信號。

3.2 仿真與觀察

1)調(diào)用Vivado自帶的仿真工具進行仿真如圖11,雙擊 Simulate Behavioral Model。添加 register 模塊中的 regfile 寄存器數(shù)組到波形窗口,觀察各個寄存器的變化情況,如圖12所示。