verilog赋值问题
Din = 1;
Din = 2;
Din = 3;
Din = 4;
Din = 5;
Din = 6;
Din = 7;
Din = 8;
Din = 9;
第二行就开始报错,报错显示:tb.v(28): near "=": expecting: IDENT
把整个tb.v内容贴出来吧
让人好理解一点的
这样完全没法理解
`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 @(negedge Clk)
Din = 1;
Din = 2;
Din = 3;
Din = 4;
Din = 5;
Din = 6;
Din = 7;
Din = 8;
Din = 9;
改成
always @(negedge Clk)
begin
Din = 1;
Din = 2;
Din = 3;
Din = 4;
Din = 5;
Din = 6;
Din = 7;
Din = 8;
Din = 9;
end
就应该不会报错了,但是仿真激励并不对的
要想通过这样的方式对 Din 依次赋值,需要
在内部定义一个计数器,然后根据计数器的值
分别给 Din 赋值
嗯是的,如果那样改,一仿真就死机。
你说是用计数器给Din赋值,我写了一下:
`timescale 1ns/100ps
module tb;
reg Clk,Rst;
reg Din,BofIn;
wire dm,bof;
wire Dout,BofOut;
reg [3:0] cnt;
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)
begin
cnt <= cnt + 1;
Din = cnt;
end
endmodule
在仿真时还是不对,Din在仿真时只出现一道红线。
我想给Din依次赋值,从1到9,怎么弄呀?
定义的计数没有初值,所以仿真不出来的
只要给计数器赋个初值就可以的
