已开源在GitHub上,欢迎各位大佬给Star
实验内容
1. 学习指令存储器的设计
2. 掌握CPU取指令操作与指令译码的方法和过程
解决方法
1. 本次实验设计采用哈佛结构设计存储器模块,需要设计一个只读存储器作为指令存储器,采用Memory IP核实现(不会用Memory IP核,可以看我这个博文存储器实验
2. 程序计数器PC与PC自增加法器组合成一个模块,由于指令存储器只有64个32位单元,所以PC的32位指令地址的高24位可直接在设计中清零
3. 需要注意在指令周期clk的上升沿执行取指令操作,在clk下降沿更新PC值
4. 代码展示:
顶层模块
module Fetch_Inst_Code(clk,rst,LED,MUX,op_code,funct,rs_addr,rt_addr,rd_addr,shamt,Inst_code);
input clk,rst;
input [1:0]MUX;
output [31:0]Inst_code;
output reg[7:0]LED;
reg [31:0]PC;
wire [31:0]PC_new;
output [5:0]op_code,funct;
output [4:0]rs_addr,rt_addr,rd_addr,shamt;
PC pc1(clk,rst,Inst_code);
always@(*)
begin