我创建了一个接受电线[ 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将所有裸数字文字视为十进制。 A
和D
不是合法的十进制值。
对于十六进制文字,您需要使用'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/