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

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜全文
查看: 5436|回复: 11

计数器误差

[复制链接]
发表于 2004-7-9 11:22:15 | 显示全部楼层 |阅读模式

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

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

×
SPATREN 2  XC2S50    ISE6。2
异步置位计数器 长时间计数,存在多一个或少一个的现象。
1  怀疑毛刺,采用格雷码,效果一样。
2  同步置位计数器 ,效果一样。
3  干扰吗?
还有什么方法,请提供,万分感激!!!
第一次做FPGA,难道FPGA这复杂??
发表于 2006-8-18 15:37:17 | 显示全部楼层
也碰到这个问题:
第二个process load 进来以后用时钟打几拍整理一下是什么意思啊

我说的同步的意思是:
第一个process rst信号不要放到敏感变量表(时序要相应调整)。
第二个process load 进来以后用时钟打几拍整理一下。 [/quote]
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-7-13 09:45:28 | 显示全部楼层

计数器误差

明白。
我用同步置位,问题搞定。只不过我的要把外部送来的异步数据同步一下。
异步和同步差别很大。
回复 支持 反对

使用道具 举报

发表于 2004-7-12 09:55:50 | 显示全部楼层

计数器误差

[这个贴子最后由bravelu在 2004/07/12 10:02am 第 1 次编辑]

我说的同步的意思是:
第一个process rst信号不要放到敏感变量表(时序要相应调整)。
第二个process load 进来以后用时钟打几拍整理一下。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-7-9 16:09:39 | 显示全部楼层

计数器误差

我的程序我用MODSIM 彷过,没看出问题。会不会是干扰电源??硬件有问题?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-7-9 16:01:20 | 显示全部楼层

计数器误差

置位和时钟出现毛刺,那应该不会出现多一个的情况。应该多几个吧?
计数中出现毛刺,有可能?
#################################################################
把两个process中的异步复位或置位改为同步,毛刺问题的影响就能排除
#################################################################

我不是不想用同步,第二个PROCESS中的LOAD是随机的。同步没法满足要求。
但是异步也不应该有问题呀??
回复 支持 反对

使用道具 举报

发表于 2004-7-9 15:30:12 | 显示全部楼层

计数器误差

如果用格雷码的目的仅仅是为了防止毛刺,那建议不用,简单问题复杂化了,那么大的case语句影响时序,把两个process中的异步复位或置位改为同步,毛刺问题的影响就能排除。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-7-9 14:47:16 | 显示全部楼层

计数器误差

没有全局复位信号?
#########################################
没有,我只用了全局时钟。全局复位信号有什么好处???
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-7-9 14:45:38 | 显示全部楼层

计数器误差

PROCESS(CLK)          --CLK  1M
BEGIN
IF CLK' EVENT AND CLK='1' THEN
   if qn=9 then
       qn = 0;
   else
       QN<=QN+1;
   end if;
END IF;
END PROCESS;
————————————————
这个程序有两个计数器,上面的用来分频。把1M的CLK分成100K的CLK1,CLK1为另个计数器的时钟。
另外一个计数器完成一个8计数循环。这个不准。
PLUSEX<=XAXA3;
PROCESS(CLK1,LOAD)        --CLK1   100K     LOAD外部随机信号
BEGIN
   IF SAVE3="0000000000000000" THEN
      IF LOAD='1' THEN
         SAVE3<="0000000000001100;      --格雷码   二进制 8
      END IF;
   ELSIF CLK1' EVENT AND CLK1='1' THEN
      IF SAVE3/="0000000000000000"  THEN
         CASE SAVE3 IS
             WHEN "0000000000001100"=>
               SAVE3<="0000000000000100";
             WHEN "0000000000000100"=>
               SAVE3<="0000000000000101";
             WHEN "0000000000000101"=>
               SAVE3<="0000000000000111";
             WHEN "0000000000000111"=>
               SAVE3<="0000000000000110";
             WHEN "0000000000000110"=>
               SAVE3<="0000000000000010";
             WHEN "0000000000000010"=>
               SAVE3<="0000000000000011";
             WHEN "0000000000000011"=>
               SAVE3<="0000000000000001";
             WHEN "0000000000000001"=>
               SAVE3<="0000000000000000";
             WHEN OTHERS=>
               SAVE3<="0000000000000000";
           END CASE;
             XAXA3<=NOT XAXA3;                            --XAXA3每次都翻转,通过PLUSEX<=XAXA3 输出,可以看到记了多少数。
      END IF;
  END IF;
END PROCESS;


回复 支持 反对

使用道具 举报

发表于 2004-7-9 12:03:18 | 显示全部楼层

计数器误差

没有全局复位信号?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2025-11-3 04:10 , Processed in 0.023547 second(s), 7 queries , Gzip On, Redis On.

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