讨论一个题目~
时间:10-02
整理:3721RD
点击:
一个8bits输入,输出是这8个bit中从MSB开始连续的0的个数。
例如‘b0001xxxx,输出3,’b01xxxxxx,输出1。
逻辑电路应该怎么设计?
代码很好写,但是要画个电路图该怎么整呢?
例如‘b0001xxxx,输出3,’b01xxxxxx,输出1。
逻辑电路应该怎么设计?
代码很好写,但是要画个电路图该怎么整呢?
最简单的方法是写好代码综合一下
厄。这样啊。
用状态机比较合适
并行输入的,要求用组合逻辑。
画了个图. 只有5BIT. 没画完. OUT(0 to 5) 连接一个 5bits to 3BIT输出编码器就可以了. 对你的8BITS要求 就是用经典的8 TO 3编码器.
思路是把高位开始的连续0经过第一及AND后全变为1. 而其他的BIT为0.
第二及AND把最低位的1(第一及生成的)保留. 其余1 全转为 0.
得到的那个还有1的那位的位号就是 连续0的个数.
最后接个8 to 3 编码器就好了. 我没画.这里
PS:图我自己没验证. 而且对于时序没有考虑.

三角是反相器
这个图 还没化简,呵呵

其实代码写好了 逻辑电路也就出来了
这样的问题似乎是全0和全1的输入都会输出全0,无法区分。
所以到你的第一级and的地方,即把开始连续的0变成1,后面都变成0,然后把输出的每个bit加起来就得到开头连续0的个数了。
写成公式的话:
out5= ~in5
out4= out5 & (~in4)
out3= (out5&out4) & (~in3)
out2= (out5&out4&out3) & (~in2)
out1= (out5&out4&out3&out2) & (~in1)
out1,2,3,4,5表示输出的bit1-5
in1,2,3,4,5表示输入的bit1-5
然后把out1-5累加。
这样应该可以把
真值表,卡诺图。
