在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2824|回复: 5

[求助] 计数器在程序初始阶段就+1,究竟是什么原因呢

[复制链接]
发表于 2013-8-16 15:45:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本人编写的一个fpga发送预定频宽的高电平,当数据准备完毕data_ready=1,模块使能信号shitong_EN=1,之后,发出shitong_sig 信号脉冲,即shitong_sig 信号置1,同时计数器cnt0开始计数,当计数值到达指定的PW0时,shitong_sig 就清零,从而能够发出一个指定宽度的脉冲。程序代码如下:




  1. always @ (posedge clk or negedge rst_n) begin
  2. if(!rst_n) begin
  3. cnt0 <= 8'b0;
  4. shitong_sig<= 1'b0;
  5. delay_EN<= 1'b0;
  6. end

  7. else begin
  8. if (rst_soft) begin
  9. cnt0 <= 8'b0;
  10. shitong_sig<= 1'b0;
  11. delay_EN<= 1'b0;
  12. end
  13. else begin
  14. if(data_ready) begin
  15. if(shitong_EN) begin
  16. if(cnt0 < PW0) begin//一旦全局使能开始,数据准备完毕,开始发波
  17. shitong_sig <= 1'b1;
  18. delay_EN <= 1'b1;
  19. cnt0 <= cnt0+1'b1;
  20. end
  21. if(cnt0 == PW0[7:0]) begin
  22. shitong_sig<= 1'b0;
  23. cnt0<=cnt0+1'b1;
  24. delay_EN <= 1'b1;
  25. end
  26. if(cnt0 > PW0[7:0]) begin
  27. shitong_sig<= 1'b0;
  28. delay_EN <= 1'b1;
  29. cnt0<=cnt0;
  30. end
  31. end
  32. end
  33. end
  34. end
  35. end
  36. endmodule//08.16


复制代码

但是我在用逻辑分析仪时,发现程序一运行,cnt0 自动+1了,如图:

逻辑分析仪仿真结果

逻辑分析仪仿真结果
而在modelsim功能仿真时没有出现这个情况,

modelsim仿真结果

modelsim仿真结果
求大神指点迷津啊。
发表于 2013-8-16 17:08:19 | 显示全部楼层
明显PW0信号变化导致cnt动作了
 楼主| 发表于 2013-8-16 18:35:24 | 显示全部楼层
回复 2# yadog


    在modelsim里面是正常的,PW0达到预定值,信号跳变,可是在板调试时,也就是用signaltap  ii 调试时,PW0还是0的时候,使能也为0 他就自动+1了,这不干PW0的事儿啊
 楼主| 发表于 2013-8-16 18:36:54 | 显示全部楼层
注意看signaltapII 的仿真结果图,PW0还没跳变之前,cnt0就已经是1了,百思不得其解啊
 楼主| 发表于 2013-8-16 20:06:06 | 显示全部楼层
回复 2# yadog


    找到原因了,原来是我在modelsim之后新加的模块导致的,我来改改试试看,坑爹啊
发表于 2013-8-16 21:54:34 | 显示全部楼层
复位信号处理的很怪异。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-6 08:03 , Processed in 0.024525 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表