chinesebear 发表于 2012-3-8 20:02:35

关于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的下降沿之后翻转。这软件是不是有问题。还是我想的不对!

chinesebear 发表于 2012-3-8 20:03:54

图片传不上来!

zxy19876280 发表于 2012-3-8 20:58:57

因为你的count在第一次计数到4变为0后再次变为4需要5个时钟沿才行,所以你每次看到的都是在第5个时钟沿翻转的而不是第4个,所以需要把伺候的翻转count值设置为3就可以了。

bear0514 发表于 2012-3-9 17:53:04

因为是用的非阻塞,当记到4时,要等下一个激励来时时钟才翻转意味着4就变成了5

zombes 发表于 2012-3-11 18:15:39

参看四楼非阻塞,所以不要看第一次时在哪个时钟,如果用在分频里的话,是8分频就够了

yuxuejun1123 发表于 2012-3-23 09:40:41

可能两个原因,一个是楼主使用了非阻塞方式,第二就是楼主使用了时序仿真而非功能仿真

wsq19800917 发表于 2012-3-25 15:50:21

第一个沿时count=1......第四个沿时count=4,当第五个沿来时才能判断count==4,才翻转同时count清零。应该是在第五个上升沿来时才能翻转吧。所以个人认为三楼说的还是有道理的。
至于楼上说使用了时序仿真而非功能仿真,但是时序仿真有问题,肯定是程序有问题,并不是功能仿真没有问题程序就没有问题。

求知鸟 发表于 2012-3-31 10:24:47

因为在时序逻辑中,楼主用上升沿触发。那么寄存器在上升沿时候采值,在下降沿时候释放。所以分频后始终始终是在下降沿开始翻转。
页: [1]
查看完整版本: 关于quartus的时序仿真问题!