verilog中testbench的赋值问题,求解答
时间:10-02
整理:3721RD
点击:
下面是一段testbench的程序,在modelsim中编译报错了。
`timescale 1ns/100ps
module tb;
reg Clk,Rst;
reg Din,BofIn;
wire dm,bof;
wire Dout,BofOut;
IntLvr U1(Clk,Rst,Din,BofIn,dm,bof);
IntLvr U2(Clk,Rst,dm,bof,Dout,BofOut);
initial begin
Clk = 0;
forever #5 Clk = ~ Clk;
end
initial begin
Rst = 1;
BofIn = 0;
#8 Rst = 0;
#24 BofIn = 1;
#10 BofIn = 0;
end
always @(negedge Clk)
Din = 1;
Din = 2;
Din = 3;
Din = 4;
Din = 5;
Din = 6;
Din = 7;
Din = 8;
Din = 9;
endmodule
报错位置在Din=2这里,报错显示的是tb.v(28): near "=": expecting: IDENT
我想给Din依次赋值,从1到9。
请告诉我如何修改?谢谢。
`timescale 1ns/100ps
module tb;
reg Clk,Rst;
reg Din,BofIn;
wire dm,bof;
wire Dout,BofOut;
IntLvr U1(Clk,Rst,Din,BofIn,dm,bof);
IntLvr U2(Clk,Rst,dm,bof,Dout,BofOut);
initial begin
Clk = 0;
forever #5 Clk = ~ Clk;
end
initial begin
Rst = 1;
BofIn = 0;
#8 Rst = 0;
#24 BofIn = 1;
#10 BofIn = 0;
end
always @(negedge Clk)
Din = 1;
Din = 2;
Din = 3;
Din = 4;
Din = 5;
Din = 6;
Din = 7;
Din = 8;
Din = 9;
endmodule
报错位置在Din=2这里,报错显示的是tb.v(28): near "=": expecting: IDENT
我想给Din依次赋值,从1到9。
请告诉我如何修改?谢谢。
always()
begin
............
end
你这个是不是每个posedge 都 clk Din+1?是的话也不用这么写吧!
for(i=1;i<10,i=i+1)
begin
@(posedge clk) Din=i;
end
还有那啥 ……
我见着的时钟一般都是在 initial的外面 用 always #(CLK_PERIOD/2) clk=~clk;在initial 里面用 clk=0;不知道这有什么说道没
赋值中间没有延迟。
1,你的always 后面没有加begin end 所以 din=2 及以后的语句是在 always外面的。
2. 你是不是想在每次时钟的下降沿,给din赋值?
可以这样写:
initial
begin
@(negedge clk);
din=1;
@ (negedge clk);
din =2;
@(negedge clk);
din = 3;
后面依次类推。
end
报错的最直接原因是你的always语句中缺少begin end。
