为什么在verilog中出现“分配时不兼容的类型”错误?

时间:2013-05-21 23:27:45

标签: verilog

我有以下Verilog代码,为什么我得到“赋值时不兼容的类型”-Error为赋值“pwmData = 4'b1000;”?我在Active-HDL 9.2中遇到了错误。

module PwmTestbench;

parameter dataWidth = 4;

reg clock, reset, pwmData[3:0], loadPwmData;
wire pwmOut;

Pwm #(.dataWidth(dataWidth)) pwm (
.clk(clock),
.reset(reset),
.data(pwmData),
.load(loadPwmData),
.out(pwmOut)
);

initial begin
    clock = 1'b1;
    reset = 1'b1;
    loadPwmData = 1'b0;
end

always begin
    #1 clock = !clock;
end

initial begin
    #1   pwmData = 4'b1000;     // # Error: VCP2852 pwm_tb.v : (29, 1): Incompatible types at assignment: .pwmData<reg[3:0]> <- 4'b1000<[3:0]bit>.
    #1   loadPwmData = 1'b1;
    #2   loadPwmData = 1'b0;
    #1   reset = 1'b0;
    #512 $finish;
end

endmodule

1 个答案:

答案 0 :(得分:4)

pwmData[3:0]定义了一个包含1位条目的4元素数组。

如果你想创建一个4位寄存器(这与4x 1位数组不同),那么另一方面的范围就是:

reg [3:0] pwmData;