首先,在测试模块下,你的输入时钟为clk_in,而不是clk,所以应该把 clk = ~clk;替换为clk_in=~clk_in;在initial下把clk=0改成clk_in=0;另外,在modelsim下创建testbench的时候,由source——>show language templates可以得到测试模块的模板,只需对输入进行定义和初始化,以下是我做修改后在modelsim62下的测试模块的程序:
`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
以下插图是我仿真后的结果:
module clk(clk,sclk);
input clk;
output sclk;
reg sclk;
initial begin
sclk = 1‘b0;
end
always @(posedge clk)
begin sclk<=~sclk;
end
endmodule
这样添加就可以了
你写testcase应该是想写个测试程序,那么对变量mask赋值应该放到initial块里面:
initial
begin
mask=8'bx0x0x0x0;
end
记住:测试程序里,对任何变量赋初值,都要放到initial块里。
说一下我的想法:仿真速度并不一定都是可以提高的
如果你的程序复杂,时钟频率高,测试向量多都会导致较长的仿真时间,这是难以避免的
当然有一些小技巧可以在一定程度上缩短仿真时间(不考虑是否改善计算机硬件配置)比如设计的工作时钟频率为80MHz,即周期为125ns,原则上同步时序电路进行功能仿真的时间步进单位就是625ns,timescale为001ns因为同步时序逻辑一般都只使用时钟的上升沿 所以不需要严格要求时钟其他指标的具体实现 这样就可以把时钟信号设置为非1:1的占空比 即高电平65ns 低电平6ns 此时的timescale变为01ns 仿真速度可以加快一些 另外如果通过让testbench输出仿真结果文件而不是直接察看波形窗口的话 仿真速度可有较明显提高
以上就是关于我做verilog HDL的练习题,简单时序逻辑电路的设计,在quartus中做的代码在modelsim仿真时出现了错误!全部的内容,包括:我做verilog HDL的练习题,简单时序逻辑电路的设计,在quartus中做的代码在modelsim仿真时出现了错误!、1.用modelsim-altera 6.5e仿真的时候 显示 no data 2.signaltap ii 选择signal clock时出现错误、verilog HDL程序 modelsim 仿真报错等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)