Files
MipsPipelineProcessor/PipelineProcessor.srcs/sources_1/new/HazardUnit.v
2024-07-10 12:06:19 +08:00

21 lines
551 B
Verilog

`timescale 1ns / 1ps
module HazardUnit (
input [1:0] PC_jump,
input is_loadword,
input PC_branch,
output [1:0] IFID_source,
output IDEX_source,
output IF_need_stall
);
wire is_jump;
assign is_jump = PC_jump == 2'b01 || PC_jump == 2'b10;
assign IFID_source = (is_loadword == 1'b1) ? 2'b10 :
(PC_branch == 1'b1 || is_jump == 1'b1) ? 2'b01 : 2'b00;
assign IDEX_source = (is_loadword == 1'b1 || PC_branch == 1'b1 || is_jump == 1'b1) ? 1 : 0;
assign IF_need_stall = (is_loadword == 1'b1) ? 1 : 0;
endmodule