我正在设计R3000 MIPS处理器,并且对于指令解码器,想要给出一个casez,以便对于涉及立即指令的情况,例如ADDI,ANDI,我将比特6:0提供为z。我只是想知道{opcode,func}在案例是z的情况下它是否被合成为高阻抗开放连接?
module Instr_decoder (
input logic [31:0] instr,
output logic regDest,
output logic jump,
output logic branch,
output logic memtoReg,
output logic memRead,
output logic memWrite,
output logic ALUSrc,
output logic signExtendInstruction,
output logic immediateInstruction,
output logic regWrite);
logic immediate_i;
logic [5:0] opcode;
logic [4:0] rs;
logic [4:0] rt;
logic [4:0] rd;
logic [15:0] immediate_data;
logic [4:0] shamt;
logic [5:0] func;
logic [25:0] target;
assign opcode = instr[31:26];
assign shamt = instr[10:6];
assign func = instr[5:0];
assign target = instr[25:0];
assign immediate_i = (opcode == (ADDI || ANDI || ORI || SLTI || XORI));
always_comb
begin
casez({opcode, func}
{6'h00, 6'h20} : ADD = 1;
{6'h08, 6'dz} : ANDI = 1;
答案 0 :(得分:1)
你可以在模拟器上编译和执行的任何东西都是可以合成的。它归结为您使用的工具是否具有识别代码并将其映射到硬件实现的算法。
BTW,人们通常在Verilog数字文字中使用?
字符而不是z
来表示{{1}中的不关心值声明。