📄 alucontrl.v
字号:
module alucontrl( op , ina , inb , aluOp , aluCtrl , writein , outcalc , shiftsign , extend , luisign , sign , signslt); //???????? //控制信号生成单元input [31:0] op ;//输入的32位的机器指令output [1:0] aluOp, outcalc;//得到的alu操作指令和结果输出的多路选择器控制信号output [3:0] aluCtrl ;//得到的ALU控制信号output ina , inb , writein , shiftsign , extend , luisign , sign , signslt;//生成的控制信号,依次为A口控制信号,B口控制信号,写寄存器信号,移位寄存器控制信号,符号扩展控制信号,lui指令控制信号,有符号运算信号,有符号slt指令信号wire ina , inb , writein , shiftsign , extend , luisign , sign , signslt;wire [1:0] aluOp, outcalc;wire [3:0] aluCtrl ;//以下是各个信号的逻辑表达式assign aluOp[1] = ~op[31] & ~op[30] & ~op[29] & ~op[28] & ~op[27] & ~op[26]; //R type op=1assign aluOp[0] = ~aluOp[1]; //I type op=1assign writein = aluOp[1];assign extend = aluOp[0] & ~op[28] & ~op[26];assign luisign = op[28] & op[27] & op[26];assign ina = op[28] & op[27] & op[26];assign inb = aluOp[0];assign shiftsign = aluOp[1] & ~op[5] & ~op[4] & op[1];assign aluCtrl[3] = aluOp[1] & op[2] & op[1];assign aluCtrl[2] = (aluOp[1] & op[5] & op[1]) | ~op[28] & op[27];assign aluCtrl[1] = (aluOp[1] & op[5] & ~op[2]) | (aluOp[0] & ~op[28]) | (op[27] & op[26]);assign aluCtrl[0] = (aluOp[1] & op[2] & ~op[1] & op[0]) | ( aluOp[1] & op[5] & op[3] & ~op[2] & op[1]) | (~op[28] & op[27]) | (op[28] & ~op[27] & op[26]);assign outcalc[0] = aluOp[1] & ~op[5] & op[4];assign outcalc[1] = aluOp[1] & ~op[5] & ~(op[4] & ~op[1]);assign sign = aluOp[1] & ~op[2] & ~op[0] & (~op[5] & op[3] | op[5] & ~op[3]) | aluOp[0] & ~op[28] & ~op[27] & ~op[26];assign signslt = aluOp[1] & op[5] & op[3] & ~op[0] | aluOp[0] & ~op[28] & op[27] & ~op[26];endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -