微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 倍数以及计数器

倍数以及计数器

时间:10-02 整理:3721RD 点击:
有两个计数器,cnt1和cnt2,cnt1从0一直到很大很大,cnt2在cnt1为500倍数的时候依次加一,这个该怎么实现,请大家帮忙、、、

一,首先这个很大很大,一定要确定是多大,对资源有影响,不可能给你做到无穷大;
二,500的倍数用一个条件判断就可以吧,用求余数的%操作试试。

谢谢了,那我这样写可以吗?
always()
   if  (~(cnt1 % 500))
        cnt2 <= cnt + 1'b1;



    谢谢了,那我这样写可以吗?
always()
  begin
      if  (~(cnt1 % 500))
          cnt2 <= cnt2 + 1'b1;
  end
貌似算术运算符两边的操作数都要是确定的数,如果有一个不确定的话,好像结果是不确定的。

没用过,但应该不需要都是确定的,你的cnt1本来就是不确定的,得到不确定的结果,是可想而知的呀,按照你的描述。主要500不是2的n次方,所以部分比特位判断不好实现,只能用求余数的方式了。要不然就cnt1单独累加计数,因为你说是一直加下去(但这个终究要有一个尽头,资源不会无限大),然后在cnt1清零的时刻触发一个模为500的计数器cnt3,当cnt3到500时,让cnt2加一,cnt3清零重新计数,下一次500时再加一次cnt2,就和cnt1无关,因为只要cnt1和cnt3都从0开始,那么cnt2就是500的倍数时加一。可能算法说的复杂了点,你可以仔细考虑看看。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top