ver*_*fer 6 verilog hdl xilinx
据我所知,以下代码正确地进行了合成和模拟,但XST仍然发出以下警告: value(s) does not match array range, simulation mismatch.是否有我遗漏的东西?
使用的工具:Xilinx ISE项目导航器(合成器:XST)FPGA:SPARTAN 3E
module error_example(
input [47:0] data,
input [2:0] sel,
output [5:0] data_out
);
assign data_out = data[sel*6 +: 6];
endmodule
Run Code Online (Sandbox Code Playgroud)
WARNING:Xst:790 - "error_example.v" line 8: Index value(s) does not match array range, simulation mismatch.
就像我说的,这是有效的,我已经完成了数学运算:
sel 可以有0到7之间的值,
if sel为0,那么data_out = data[5:0]
......
如果sel是7,那么data_out = data[47:42]
我应该在这里做些不同的事吗?这是XST中的错误吗?
我在EDAplayground上创建了一个示例,它在没有警告的情况下运行.
我通常不会使用带有parameters的宽度,如果你这样做,你可能希望与reg定义保持一致.
尝试:
parameter data = 48'h123456789ABC;parameter [47:0] data = 48'h123456789ABC; 我认为我之前没有使用过这样的参数,但声明一个常量reg意味着相同的逻辑,这可能会避免警告.
reg [47:0] data = 48'h123456789ABC;注意:对于常量(parameter,localparam)使用大写是一个好习惯.
或者转换为case语句:
always @* begin
case (sel)
3'd0: data_out = 6'dx;
3'd1: data_out = 6'dx;
// ...
default : data_out = 6'd0;
endcase
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1049 次 |
| 最近记录: |