我制作了最多计数 100 的计数器。计数行为由时钟的上升沿驱动。 你可以看下面的代码
//codes for "design.sv"
module counter(
input clk,
input rstn,
output reg[7:0] count
);
always @ (posedge reg, negedge rstn) begin
if(!rstn) begin
count <= 0;
end
else if(clk) begin
count <= count+1;
end
end
endmodule
//codes for testbench.sv
module test;
reg clk;
reg rstn;
wire[7:0] count;
initial begin
clk = 0;
forever #5 clk = ~clk;
end
counter counter_1(clk, rstn, count);
initial begin
rstn = 1;
#0.1 rstn = 0;
#0.1 rstn = 1;
#1000 $finish;
end
initial begin
$dumpfiles("wave.vcd");
$dumpvars(0, test);
end
endmodule
模拟器给出如下错误。
design.sv:7: syntax error
design.sv:7: error: Malformed event control expression.
design.sv:7: error: Invalid event control.
我花了几个小时寻找声明 design.sv 第 7 个声明。 我考虑了测试台线[7:0]计数和模块寄存器[7:0]计数的连接。但是,我认为模块输出和测试台输入的端口连接作为注册线是可以的。
问题摘要:什么语句写错了?
问题是您错误地使用了关键字
reg
而不是时钟信号名称(clk
)。变化:
always @ (posedge reg, negedge rstn) begin
至:
always @ (posedge clk, negedge rstn) begin
测试台代码中存在另一个语法错误。将
$dumpfiles
更改为 $dumpfile
。