Verilog2001中bit slicing特性
1、问题来源
HDLBits题目:Mux256to1v
实现256-1且位宽为4的多路选择器
从下图可以发现,直接使用in[ sel4+3 : sel4 ]是不行的,会报错
2、两种解决方法
- 利用bit slicing特性
bit slicing特性的内容可以参考link1
module top_module(
input [1023:0] in,
input [7:0] sel,
output [3:0] out );
assign out = in[sel*4 +: 4];
endmodule
需要注意,+: 是固定的语法符号,中间不能使用空格将其分开,否则也会出错。
另外,符号左边可以是变量,但是符号的右边必须是一个常量
- 依然使用选择位sel挑出需要的位,然后使用拼接的语法
module top_module(
input [1023:0] in,
input [7:0] sel,
output [3:0] out );
assign out = {in[sel*4+3], in[sel*4+2], in[sel*4+1], in[sel*4+0]};
endmodule