onehot code detect

本文通过独热码检测电路实例,展示了布尔代数如何影响电路设计,提出了一种利用减一操作与按位与操作相结合的方法,有效简化电路结构,减少延迟和面积消耗。

2、布尔代数知识的练习会对你的电路设计能力有着潜移默化的影响,举个非常简单的例子,独热码检测电路,目的是检测一个例如8位数码是否为独热码(只有一个比特位为1,其他全部为0),最直接想到的就是把这8比特数码加起来,然后看其结果是否为1,对应的代码如下所示:

 

综合器大约会根据上述代码综合出什么电路呢,大概也就是用target_library中现成的全加器模块或者所谓的“random logic”来推断出一些加法器,而且,需要很多级加法运算才能计算出结果,这种结构的延迟和面积都是很大的,为什么能“预知出”它的面积和延迟很大,这就是电路和集成电路基础知识的作用了,

那么能否根据布尔逻辑耍些花招来简化电路结构呢,

我们发现如果一个8比特数码减去1,那么如果8比特为独热码,它减一之后在与本身按位与操作,结果肯定是全零,因为一旦进行减一操作,唯一的那个1必然会被低位借一而变为0,那么按位与的结果就是0,

另一种情况为8比特数码为全0的情况,这时候它减一后的结果再同减一前的数码按位与,结果也为全零,

那么我们只需要在开始的时候排除全零的存在即可(缩减或)din_or;

而如果8比特有两个或者以上的1,那么如果减一操作,最低位的那个1会被借掉,高位的1都会被“隔离”,这样减一前后的两个结果按位与的结果就不是全零,

这种实现方法的最大延迟和面积消耗为减一操作(也是凭借电路、集成电路的基础知识来进行预知判断的),这个例子我没有花时间去画画示意图,再加上我的表达能力不是很好,也许会不太明白我在说些什么,最好自己动手按照一些提示,比如上面说到的减一,然后把减一前后的两个结果按位与操作后自己看看规律。这个例子说明了对于布尔代数的熟练是如何潜移默化影响电路设计能力提升的。(或许这个例子两种实现方法差距并不是很大,例子并不是很典型,只要能说明布尔代数在其中的作用即可)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值