我做verilog HDL的练习题,简单时序逻辑电路的设计,在quartus中做的代码在modelsim仿真时出现了错误!
module half_clk(reset,clk_in,clk_out);
input clk_in,reset;
output clk_out;
reg clk_out;
always @(posedge clk_in)
begin
if(!reset) clk_out=0;
else clk_out=~clk_out;
end
endmodule
这个没有问题,就是modelsim利用的测试模块的源代码,出现了错误
测试模块的源代码:
//------------------- clk_Top.v -----------------------------
`timescale 1ns/100ps
`define clk_cycle 50
module clk_Top.v
reg clk,reset;
wire clk_out;
always #`clk_cycle clk = ~clk;
initial
begin
clk = 0;
reset = 1;
#100 reset = 0;
#100 reset = 1;
#10000 $stop;
end
half_clk half_clk(.reset(reset),.clk_in(clk),.clk_out(clk_out));
endmodule
出现的错误:** Error: C:/altera/72/myproject/half_clk/simulation/modelsim/half_clk_Top.v(6): near ".": syntax error, unexpected '.', expecting ';'
不知道在测试模块的源代码中如何修改 展开
首先,在测试模块下,你的输入时钟为clk_in,而不是clk,所以应该把 clk = ~clk;替换为clk_in=~clk_in;在initial下把clk=0改成clk_in=0;另外,在modelsim下创建testbench的时候,由source——>show language templates可以得到测试模块的模板,只需对输入进行定义和初始化,以下是我做修改后在modelsim6.2下的测试模块的程序:
`timescale 1ns/100ps
`define clk_cycle 50
module half_clk_tb ;
reg clk_in ;
wire clk_out ;
reg reset ;
always #`clk_cycle clk_in = ~clk_in;
initial
begin
clk_in = 0;
reset = 1;
#100 reset = 0;
#100 reset = 1;
#10000 $stop;
end
half_clk
half_clk (
.clk_in (clk_in ) ,
.clk_out (clk_out ) ,
.reset (reset ) );
endmodule
以下插图是我仿真后的结果:
2024-05-27 广告
换个名字试试
你这里的标点符号不是在中文状态下输入的吧?