【发布时间】:2014-01-28 09:25:20
【问题描述】:
我们是否可以有任何语法使 case 语句可扩展? 让我用一个例子来解释:Mux
如果只有 2 行选择
always @(A[1:0]) begin
case (A[1:0])
2'b00 : select = 4'b1110;
2'b01 : select = 4'b1101;
2'b10 : select = 4'b1011;
2'b11 : select = 4'b0111;
endcase
end
选择 3 行
always @(A[2:0]) begin
case (A[2:0])
3'b000 : select = 8'b1111_1110;
3'b001 : select = 8'b1111_1101;
3'b010 : select = 8'b1111_1011;
3'b011 : select = 8'b1111_0111;
3'b100 : select = 8'b1110_1111;
3'b101 : select = 8'b1101_1111;
3'b110 : select = 8'b1011_1111;
3'b111 : select = 8'b0111_1111;
endcase
end
我的问题:
是否有一种通用的代码编写方法可以使用任意数量的选择行来寻址多路复用器? 2,3,4...
除了case语句之外,还有其他方法可以使用语法来实现吗?
欢迎任何反馈。 问候
【问题讨论】:
-
右边的数据(位模式)从哪里来?如果它是已知的常规模式,那么创建它的方法可能比查找表更好。
-
右边的数据是正则模式,除1外所有位都是1,这个位置和select值一样。例如。 case[0] 将 select[0] 设为零,case [4] 将 select[4] 设为零。