我创建了一个接受电线[ 4 : 0 ]作为输入的模块,并且正在使用该模块的多个实例。但是,我得到了:



每当我传递包含A-F的值时。

例如:

key_schedule i1(09); // works
key_schedule i1(0A); // doesn't work
key_schedule i1(15); // works
key_schedule i1(1D); // doesn't work

如果有人知道出了什么问题,我将感谢他们的帮助。

另外,如果我传递值“C”,但是我还有一条名为C的导线,会发生什么情况?

最佳答案

Verilog将所有裸数字文字视为十进制。 AD不是合法的十进制值。

对于十六进制文字,您需要使用'h指定文字类型:

key_schedule i1('h0A); // works
key_schedule i1('h1D); // works

请参阅IEEE标准(例如1800-2009)的“编号”部分。

以下代码在2个不同的模拟器(Incisive和VCS)上为我编译时没有错误:
module tb;
    key_schedule i1(5'h1A);
    key_schedule i2('h1A);
endmodule

module key_schedule (input [4:0] in);
    always @(in) $display(in);
endmodule

关于parameters - 将十六进制值传递给Verilog中的模块,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14204088/

10-13 06:36