我正在尝试在ALU中构建一个8位数据路径,它可以进行加、减、或和两个操作数。
我想为代码中的每个操作使用一个case语句,但我总是收到错误消息。
到目前为止它看起来是这样的:
module alu (
input [7:0] xa,xb,
input [7:0] op_sel,
input wire ctrl,
output reg 0Zero, 0Carry,
//0Zero infers latch: can only be assigned to 1/ always reg
output reg [7:0] result_out,
);
always @(*)
8'hE0 :
//4 bit for now
begin
out = 8'b0;
0Carry = 1'b0;
//calculate value
case (1) //alu controlled by ctrl signal
8'hA0: out = xa&xb;
//
8'hB0: (0Carry ,out) = xa+xb;
//
8'hC0: (0Zero , 0Carry, out) = xa-xb;
//
8'hD0: out = ~(xa|xb);
//
endcase
end发布于 2016-02-22 10:27:19
您的case表达式是1,您应该将其更改为某个变量。下面是一个case语句示例:
reg [1:0] address;
case (address)
2'b00 : statement1;
2'b01, 2'b10 : statement2;
default : statement3;
endcase如果地址值是2'b00,则将执行statement1。当地址值等于2'b01或2'b10时,执行Statement2。否则,将执行statement3。
https://stackoverflow.com/questions/35544689
复制相似问题