一个简单的小程序,求助

2019-03-25 10:04发布

下面是小弟编的一个加减计数器的程序, 
module count4(clk,pwm_pro,count); 
input clk; 
input pwm_pro; 
output [7:0]count; 
reg[7:0]count; 
reg flag; 
initial  
begin 
flag=1'b0; 
count=8'b00000000; 
end 

always @ (posedge clk) 
begin 
 if(count==8'b11111111)     
  flag <=1'b1; 
 if(count==8'b00000000) 
  flag <=1'b0; 
end 

always @ (negedge clk) 
if(pwm_pro) 
begin 
 if(flag==1) 
  count <= count-1'b1; 
 else if(flag==0) 
  count <= count+1'b1; 
end 
endmodule 
功能仿真的时候好像没什么问题 
 
 (原文件名:未命名.jpg) 
引用图片


但是时序仿真时候就会出面下面的情况 
 
 (原文件名:2.jpg) 
引用图片



这是为什么呢?要则么才能解决呢,小弟谢谢各位了~ 
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
spontaou
1楼-- · 2019-03-25 21:23
< / 你的意思是说时序仿真时出现很多毛刺?是吗?那是因为在出现毛刺的地方信号跳变的位数比较多,比如从7变到8时,“00000111”变到“00001000”,有4位信号跳变,所以有较多毛刺,跳变位数越多越明显,建议在输出时加上一到两级寄存器延时以消除毛刺,希望我的理解正确!
tx_xy
2楼-- · 2019-03-26 02:44
不建议使用这样的代码 。
initial语句貌似不可综合吧 所以在代码(testbench除外)中最好不要使用
要对cnt进行初始化的话 可以考虑使用复位信号 。。。
eeleader
3楼-- · 2019-03-26 08:43
 精彩回答 2  元偷偷看……

一周热门 更多>