minecraft吧 关注:2,548,843贴子:31,868,145
  • 11回复贴,共1

【数字电路基础】2进制-10进制转码器及8bit二进制乘法器

只看楼主收藏回复

大家好,这里是红石羊驼。
7年没有碰红石,近来大学学了数电,造了个顺序密码锁,颇有趣味,故重新入坑。
最近除了数电实验还开了计组的实验,现在先造点稍微大型点的模块,bin-BCD转码器和乘法器就是其中两个重要模块。最后还剩个除法器就能实现简单的二元计算器了。
太久没动了所以布线技术有所退步,大佬轻喷,有人感兴趣的话可以具体讲讲电路的实现。



IP属地:广东1楼2023-03-19 00:16回复
    此处是bin-BCD转码器的输入:000110101,输出53,可知结果正确。


    IP属地:广东2楼2023-03-19 00:19
    回复
      此处是乘法器的输出 255 x 255 = 65025 = 1111 1000 0000 0001 可知结果正确


      IP属地:广东3楼2023-03-19 00:21
      回复
        牛牛牛


        IP属地:山西来自Android客户端4楼2023-03-19 00:21
        回复
          思路的话,简单来讲
          bin-BCD转码器 就是通过double-dabble算法,把参数量巨大的组合逻辑改为可堆叠的时序逻辑,当然此处的时序逻辑非常简单,可以理解为带置数功能的移位寄存器。此处算法就是 满五加三再移位。
          乘法器基本原理上就是移位加法,模块搭建上采用的是锦标赛算法,通俗来讲就是空间换时间,使用更多的器件保存中间结果。在此处的表现就是所有中间结果都要通过两两相加来得到,而不是逐级相加,最终时间复杂度是O(log2N)。


          IP属地:广东5楼2023-03-19 00:29
          收起回复
            再讲讲堆叠性,这玩意的本质类似线性系统。就比如说加法器,这玩意直接copy+paste完全没问题,在运算时每个位都是被一视同仁的,且高位输入不影响低位输出,所以它可以无脑堆叠。
            译码器就要稍微麻烦一些,你需要一个使能端,这个不再赘述了。
            至于乘法器的线性性质就不那么好了,它只在乘数每一位与被乘数参与运算时表现出线性行为,因此完整的模块就不好参与堆叠了,不像3-8译码器可以简单地接成4-16译码器。当然如果使用串行实现的话就可以随便堆了,无非是多造几个寄存器保存结果,缺点就是慢。
            bin-bcd转码器的线性性质简直是灾难,2转10算法包含乘方运算,如果是组合逻辑电路,封装好的模块基本就告别位扩展了。改用串行实现可以拥有很好的堆叠性,这是double-dabble算法最大的优势之一。


            IP属地:广东6楼2023-03-19 00:43
            回复
              厉害的(数电才刚学,而且我也不会布线[不整红石])


              IP属地:黑龙江来自Android客户端7楼2023-03-19 00:45
              收起回复
                大家不太爱看数电基础啊,虽然我得承认的确是各种飞行器 活塞门 大炮啥的更帅啦(( 不过那些玩意小时候反正是没造明白,现在学的知识只有数电能够飞速移植到mc里,我估计近期是没法玩明白那些东西了。


                IP属地:广东8楼2023-03-19 00:46
                收起回复