爱问知识人 爱问教育 医院库

VHDL电子钟设计中count<16#24#是什么意思?

首页

VHDL电子钟设计中count<16#24#是什么意思?

VHDL电子钟程序中描述小时模块计数的语句如下,要看全的可以复制去搜索

if (clk'event and clk='1') then
if ( count(3 downto 0)="1001" then

if (count < 16#24#) then

count <= count 7;

else

count <= "000000";

end if;

其中count < 16#24#这句是表示什么意思,是什么用法?而那几行又是怎么解释呢?
麻烦请帮忙详细解答一下~解答好有加分!谢谢~!

提交回答

全部答案

    2018-09-18 01:40:36
  •   16#24#表示的是16进制中的24,换成10进制就是40,但这不重要。这段程序说的是当一个上升沿来临的时候,首先对COUNT进行判断,程序你没贴完,这里的COUNT应该是一个7位的逻辑信号量,然后他将这个7位信号分成了两部分来对小时进行计数,很巧妙,低4位用来计小时的个位,高3位用来计小时的十位,所以这里应该用16进制来表示COUNT,比如如果COUNT=0100100,我们应该分别将它分成高3位和低4位来看,就是24,而不是求所有的加权和36。
      
    上升沿来了先对低4位进行判断,看上一次有没有计到9,如果计到9了,那么再判断整个COUNT的大小,即你说的COUNT<16#24#,这一步的主要目的是到值清零和防止溢出,因为在小时模块里面,最多只能计到23,再往下计就该归零了,所以负责我们小时计数的COUNT就最多只能走到23,所以这是第一个作用,而且程序这种东西难免有时候会有漏洞,万一哪一天一不小心居然走到24或者25等等数字那时钟不是就走不回来了?所以加上这一个判断,如果COUNT小于24,那好说,该怎么计还怎么计,而如果COUNT大于等于24了,那就执行ELSE语句,将其清零,这样即使哪一天出现了问题也不至于让这个时钟永远走不回来。
      
    而里面的语句是这样解释的,当COUNT还没有计到23的时候,那么这时有几个需要进位的情况,比如19,09这些情况,个位需要向十位进位了,那么就进入最里面的那几个语句,COUNT=COUNT 7,这个语句是为了弥补16进制和10进制的进位不同而写的,如果搞不懂就不用去研究什么十进制十六进制,直接举例,比如当COUNT计到19了,那么它的16进制为19=0011001,这个时候怎么才能将它变成20呢?加1是肯定不行的,因为加一就变成了0011010,其16进制表示为1A,观察一下就可以发现,只要加7,即0111就可以搞定了,即001 1001 000 0111=010 0000 BCD码就为20了,只要每次个位为9的时候这么处理一下就行了,很简单,造成这种情况的原因就是16进制和10进制的进位不同导致的,具体去翻翻数字电路的10进制全加器的制作应该能看明白。
      

    不***

    2018-09-18 01:40:36

类似问题

换一换

相关推荐

正在加载...
最新问答 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):