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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4509|回复: 13

[求助] cpld 计数器 从0开始计数记到16停止, 上电之后计数器不工作。

[复制链接]
发表于 2012-2-7 15:55:12 | 显示全部楼层 |阅读模式

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

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

x
always@(posedge clk or negedge rst)
if(!rst)
cont1<=4'b0000;
else if (cont1==16)
cont1<=16;
else
cont1<=cont1+1;
 楼主| 发表于 2012-2-7 16:15:04 | 显示全部楼层
时钟复位信号都正常,上电之后计数器马上变为16.没有中间计数的过程。哪位知道是什么问题?
发表于 2012-2-7 16:50:18 | 显示全部楼层
那是因为你没有抓到中间计数过程,而且你的计数器为什么计数到16就不动了,有实际意义吗?
发表于 2012-2-7 16:53:03 | 显示全部楼层
而且4位计数器怎么会计数到16呢?
 楼主| 发表于 2012-2-7 17:05:26 | 显示全部楼层
记到16是有意义的。设计需要。我写错了。计数器是5bit的。实际测量的也是5bit的计数器。但是实际测量中,计数器在复位的时候是零,复位信号去掉后直接变为16了。cont[0],cont[1],cont[2].这3个脚我都测量了。没有电平的高低变化。
 楼主| 发表于 2012-2-7 17:10:34 | 显示全部楼层
回复 4# skytang007

记到16是有意义的。设计需要。我写错了。计数器是5bit的。实际测量的也是5bit的计数器。但是实际测量中,计数器在复位的时候是零,复位信号去掉后直接变为16了。cont[0],cont[1],cont[2].这3个脚我都测量了。没有电平的高低变化。
发表于 2012-2-7 17:21:51 | 显示全部楼层
改下代码:
  if(!reset)
       cont1 <= 5'b00;
    else if(reset && cont1==5'd16)
           cont1 <= 4'b0;
    else if (reset && cont1< 5'd16)
       cont1 <= cont1 + 1'b1;
end
 楼主| 发表于 2012-2-7 17:31:12 | 显示全部楼层
回复 7# pontiff


    你这个代码是计数器记到16时计数器清零。如果这样编写,我试过计数器是可以工作的。但是我要的是计数器记到16就停止了。不在计数了。
发表于 2012-2-8 08:19:48 | 显示全部楼层




    因为不是循环计数,计数器时钟频率高,上电后计数器很快就计满16了
所以此时再去测量,是不能观察到计数器各比特位有变化的
发表于 2012-2-8 09:22:19 | 显示全部楼层
回复 1# bwl19881019


没有计数过程是不太可能的,除非是你没有抓到,如果DUMP FSDB就可以看到了。另外建议将else if(cnt1 == 16)改为 else if(cnt1 >= 5'd16)增强电路的健壮性
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-5 12:40 , Processed in 0.029567 second(s), 9 queries , Gzip On, Redis On.

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