大家好,modelsimaltera仿真怎么没有输出波形,时钟和复位信号都有!!!
按照特权同学的教程写的一个蜂鸣器实验,仿真的输出信号怎么不对啊,请教高人解答,我是新手。。。一下是verilog代码:
module ex3(clk, rst_n,fm);
input clk;
input rst_n;
output fm;
reg cnt;
always @(posedge clk or negedge rst_n)
if(!rst_n) cnt <= 6'd0;
else if(cnt < 6'd49) cnt <= cnt+1'b1;
assign fm = (cnt <= 6'd24) ? 1'b0 : 1'b1;
endmodule 回复【楼主位】kerenyang
-----------------------------------------------------------------------
http://cache.amobbs.com/bbs_upload782111/files_36/ourdev_614764FLYKEI.JPG
这是仿真的输出波形 (原文件名:00.JPG) 回复【1楼】kerenyang
-----------------------------------------------------------------------
以下是testbench,请教高人解答,不胜感激
`timescale 1ps/1ps
module ex3_vlg_tst();
// constants
// general purpose registers
reg eachvec;
// test vector input registers
reg clk;
reg rst_n;
// wires
wire fm;
// assign statements (if any)
ex3 i1 (
// port map - connection between master ports and signals/registers
.clk(clk),
.fm(fm),
.rst_n(rst_n)
);
initial begin
clk=0;
forever
#10 clk=~clk;
end
initial begin
rst_n=0;
#1000;
rst_n=1;
#5000;
$stop;
end
endmodule 没看出波形有什么不对。
楼主的逻辑,不就是复位后,cnt从0计数到49后就停止计数,保持为49嘛。
而fm在cnt为0~24期间保持为低电平,之后保持高电平,49当然大于24,所以之后一直保持为高。
而eachvec,在testbench里面定义后从来没有用过,自然一直都是不定态。 回复【3楼】linuxpro
-----------------------------------------------------------------------
谢谢楼上的回答,cnt忘记清零了,刚刚搞着东西,非常感谢啊! 红色的好像是没有初值,所以显示红色,赋初值就可以了。
页:
[1]