大lao们,想问一下关于计组课程的问题,就是目前我们讲到了单周期CPU取指模块的设计,对于下面这些代码不知道该怎么写了,可以帮帮忙吗
我不知道
大lao们,想问一下关于计组课设的问题,就是目前我们讲到了单周期CPU取指模块的设计,对于下面这些代码不知道该怎么写了,可以帮帮忙吗
下面是代码和图片:
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
module Ifetc32(Instruction,PC_plus_4_out,Add_result,Read_data_1,Branch,nBranch,Jmp,Jal,Jrn,Zero,clock,reset,opcplus4);
output[31:0] Instruction; // 输出指令到其他模块
output[31:0] PC_plus_4_out; // (pc+4)送执行单元
input[31:0] Add_result; // 来自执行单元,算出的跳转地址
input[31:0] Read_data_1; // 来自译码单元,jr指令用的地址
input Branch; // 来自控制单元
input nBranch; // 来自控制单元
input Jmp; // 来自控制单元
input Jal; // 来自控制单元
input Jrn; // 来自控制单元
input Zero; //来自执行单元
input clock,reset; //时钟与复位
output[31:0] opcplus4; // JAL指令专用的PC+4
wire[31:0] PC_plus_4; // PC+4
reg[31:0] PC; // PC寄存器(程序计数器)
reg[31:0] next_PC; // 下条指令的PC(不一定是PC+4)
reg[31:0] opcplus4;
wire[31:0] Jpadr;
assign Instruction = Jpadr;
//分配64KB ROM,编译器实际只用 64KB ROM
prgrom instmem(
.clka(clock), // input wire clka
.addra(PC[15:2]), // input wire [13 : 0] addra
.douta(Jpadr) // output wire [31 : 0] douta
);
assign PC_plus_4[31:2] =PC[31:2]+1;
assign PC_plus_4[1:0] =
assign PC_plus_4_out = PC_plus_4[31:0];
always @* begin // beq $n ,$m if $n=$m branch bne if $n /=$m branch jr
// 请考虑以上三条指令的判断条件,
// 以及三条指令的执行该给next_PC赋什么值
end
always @(negedge clock) begin //(含J,Jal指令和reset的处理)
end
endmodule