关于quartus的时序仿真问题!
声明本人菜鸟一个!今天遇到个问题,主要是在此之前也没在意!
如下很简单的一段代码。降频、分频的用的,想实现8分之1的CLK的频率。
然后时序仿真,第一次用,有点跛脚!module test(CLK,CLK_m);
input CLK;
output reg CLK_m;
reg count;
always@(posedge CLK)
if(count==5'd4)
begin
CLK_m<=~CLK_m;
count<=0;
end
else
count<=count+1;
endmodule
仿真的时序图我感觉不对!
我明明写的CLK_m是在CLK的第四个上升沿翻转(~CLK_m),可是仿真图却是在第五个下降沿之后翻转。
我试过很多次,调整了参数,反正都是在都是在n+1的下降沿之后翻转。这软件是不是有问题。还是我想的不对! 图片传不上来! 因为你的count在第一次计数到4变为0后再次变为4需要5个时钟沿才行,所以你每次看到的都是在第5个时钟沿翻转的而不是第4个,所以需要把伺候的翻转count值设置为3就可以了。 因为是用的非阻塞,当记到4时,要等下一个激励来时时钟才翻转意味着4就变成了5 参看四楼非阻塞,所以不要看第一次时在哪个时钟,如果用在分频里的话,是8分频就够了 可能两个原因,一个是楼主使用了非阻塞方式,第二就是楼主使用了时序仿真而非功能仿真 第一个沿时count=1......第四个沿时count=4,当第五个沿来时才能判断count==4,才翻转同时count清零。应该是在第五个上升沿来时才能翻转吧。所以个人认为三楼说的还是有道理的。
至于楼上说使用了时序仿真而非功能仿真,但是时序仿真有问题,肯定是程序有问题,并不是功能仿真没有问题程序就没有问题。 因为在时序逻辑中,楼主用上升沿触发。那么寄存器在上升沿时候采值,在下降沿时候释放。所以分频后始终始终是在下降沿开始翻转。
页:
[1]