实验目的

掌握原码一位乘法运算的基本原理,熟练掌握 Logisim 寄存器电路的使用,能在 Logisim 平台中设计实现一个 8*8 位的无符号数乘法器。

设计要求

在 alu.circ 文件中原码一位乘法器子电路中增加控制电路和数据通路使得该电路能自动完成 8 位无符号数的一位乘法运算,设置引脚初始值,然后驱动时钟自动仿真,电路可自动完成运算,运算结束结果传输到输出引脚,运算结束时电路应该自动停止。

方案设计

无符号原码一位乘的计算: 维护一个部分积,初始为0,每次取乘数b的最低位,如果最低位为1,部分积=部分积+乘数a,如果最低位为0,部分积=部分积+0;然后将部分积右移一位(如果刚刚的运算没有发生进位,最高位补0),同时将乘数b右移一位。第i次(i<=8)对部分积的右移操作移出来的数为最终乘积的第i低位,8次结束后的部分积为最终乘积的高8位。该计算方法本质是计算乘数a与乘数b的各位相乘得到的部分积,然后将所有的部分积相加。
实验电路的设计:需要实现的部分操作与实现思路如下:

  • 对部分积作加运算时对加数0或乘数a的选择:用多路选择器实现,选择依据为乘数b的当前最低位,最低位的选择用了分线器来实现。

  • 对所维护的部分积作加运算:用8位串行加法器实现。

  • 对部分积的右移和对乘数b的右移:用四组八位宽的分线器实现。其中新部分积的最高位由串行加法器的进位得到,乘数b的最高位由部分积右移出来的那一位得到,这么做的好处是省空间,高效率,运算完成后的部分积就是乘积的低八位。

  • 部分积与乘数b的保存:两个寄存器实现,输出的数据既用于下次运算,也在运算完成后作为成绩结果输出。

  • 边界情况的处理:用一个计数器来统计脉冲次数,以此对边界情况做特殊处理。

实验电路图

实验步骤

  • 理解原码一位乘法的方法。
  • 分析用到的部件的作用。
  • 针对做原码一位乘法中需要的操作,实现各个操作的逻辑电路。
  • 对边界情况出现的问题进行分析与修改。

故障与调试

在本次实验中遇到了两个较大的问题,对于部分复用器具体实现的功能的误解与对边界情况故障的调试。

  • 前者问题主要出在寄存器,多路选择器和分线器上:所用寄存器不是上学期在数字逻辑中讨论较多的一维寄存器,本实验所用寄存器只是用来暂存数据的。多路选择器的功能是对两个八位数据的二选一,一开始理解的是上学期接触的那种两部分输入,一部分是数据,一部分用来对数据的选择的多路选择器,这对我设计实验电路中的数据选择部分造成了一定的困难。分线器之前没有用过,其实功能很简单,相当于实现了一个对数据的“合并”操作。

  • 第二个问题出在对边界情况的处理上,具体来说是第一个与最后一个脉冲。在人为的模拟这个过程的时候看起来步骤简单且一致,但实际上要在模拟电路中实现这样一个“有序的循环”,要对边界情况做合理的处理。首先第一个脉冲应该是将初始的乘数b送进寄存器里,之后是该寄存器的数据存的是上一次右移的乘数与部分积右移出来的那一位的拼接,因此这个地方要用一个多路选择器来实现,选择依据为计数器的当前值,用了一个比较器和一个Load隧道实现。当8次正式的运算循环结束后(第九个脉冲,计数器为8)部分积为乘积高八位,此时的在电路中的乘数b为乘积的低八位,此时应忽略脉冲,并将寄存器中的结果输出,用了一个比较器和Stop隧道实现。

测试与分析

实验总结

本次实验暴露出了一些自身存在的问题,对一些复用器功能的不熟悉,设计逻辑电路的方法与步骤不够科学。但通过本次实验,我理解了原码一位乘法的原理,并且对于部分复用器的使用更加熟练,优化了逻辑电路的设计的方法。本次实验使我收益匪浅。

logisim实验三:原码一位乘法器设计实验相关推荐

  1. 原码一位乘法器设计_对原码、反码和补码的加深理解

    我们知道计算机语言可以简单概括为三类,分别是机器语言.汇编语言和高级语言.机器语言是由二进制组成的编码,由无数个0和1组成.在二进制系统中,每个0或1就是一个位,而位是数据存储的最小单位,可称之为比特 ...

  2. 原码一位乘法器设计_十分钟带你彻底搞懂原码、反码、补码

    点击上方"程序员大白",选择"星标"公众号 重磅干货,第一时间送达 编辑 | 程序员大白公众号来源丨https://www.cnblogs.com/zhangz ...

  3. 计组头哥实验 第2关 原码一位乘法器设计

  4. 原码一位乘法器设计_数字IC校招基础知识点复习(七)——超前进位加法器、Wallace树、Booth乘法器...

    1.超前进位加法器 看了一些面经,提到会让你用基础的门搭加法器,因此首先得熟悉半加器,全加器等最基础的加法器才能理解之后的超前进位加法器,树型加法器等复杂的加法器. 半加器的输入为a,b,输出为结果s ...

  5. FPGA学习之路—应用程序—原码二位乘法器及Verilog代码分析

    FPGA学习之路--原码二位乘法器及Verilog代码分析 原理 原码乘法可以分为原码一位乘和原码二位乘,两者在实现规则上大同小异.原码一位乘每次判断乘数的最低位,对被乘数和部分积进行相应操作.而原码 ...

  6. FPGA:设计一个原码一位乘法器

    一.运算规则 X*Y=P 引入部分积的概念,每次Y的一位和X相乘的结果叫做部分积 ,每次相乘后需要右移一位,再处理Y下一位的数值 1.符号位单独计算(异或运算) 符号组合就4种(00.01.11.10 ...

  7. 【计算机组成原理】定点乘法运算之原码两位乘法

    讨论x * y = z 采用原码两位乘法,已知x和y,如何求得z 原码两位乘法和原码一位乘法一样,符号位不参加运算 部分积和被乘数x均采用三位符号,乘数y末位每次要加一个c,c一开始是0 根据如下法则 ...

  8. 计组中原码一位乘和原码二位乘方法和注意事项

    原码乘法可以分为原码一位乘和原码二位乘,两者在实现上规则大同小异 原码一位乘 原码一位乘采用数值位计算,符号位为两操作数异或结果.步骤如下: 对乘数和被乘数取绝对值(数值位不变,符号位换0) 初始化部 ...

  9. 【转】原码一位乘和移码一位乘

    原码1位乘法 在定点计算机中,两个原码表示的数相乘的运算规则是:乘积的符号位由两数的符号按异或运算得到,而乘积的数值部分则是两个正数相乘之积.设n位被乘数和乘数用定点小数表示(定点整数也同样适用) 被 ...

  10. 原码一位乘、补码一位乘(校正法、布斯法)、补码两位乘

    学习笔记 一.原码一位乘·: 运算法则:若Yi=1,+X; 若Yi=0,+0.(n次加法,n次移位) 二.补码一位乘(符号位参与运算) 校正法 若Y>0,计算方法与原码一位乘类似: 若Y< ...

最新文章

  1. HttpURLConnection IllegalStateException
  2. mysql 挂掉 无法启动_mysql-配置 - MySQL错误,时不时自动挂掉,无法启动
  3. wkWebView 的一些问题
  4. 戏说模式-追MM与设计模式 (转载)
  5. 把第三方jar包放入本地仓库
  6. CRM webClient UI搜索参数里max hit是怎么被后台服务器处理的
  7. P2617-Dynamic Rankings【树套树】
  8. stol函数在linux下使用,Linux下ATT汇编语法简介一
  9. 【个人笔记 - 目录】OpenCV4 C++ 快速入门 30讲
  10. java线程池ThreadPoolExecutor使用简介
  11. 纪念自己初中的住宿生活
  12. python数学建模基础教程_Python 数学建模极简入门(一)
  13. esp8266教程:定时器之PWM
  14. 标题生成图片插件(火车头采集器:根据文章标题生成相关图片)
  15. 游戏中的心理学(一):认知失调有前提条件
  16. 读取xls格式的文件
  17. Channel Attention 通道注意力
  18. apicloud ajax html,apicloud ajax请求问题
  19. ZJYYOJ 活字印刷(dfs)[C,C++]
  20. 自己动手丰衣足食,撸一个flutterApp

热门文章

  1. 工具-IDEA 好看的样式字体/字号/
  2. QListView实现自定义Item
  3. #Qt#QListView的两种用法,亲测有效
  4. 电阻器颜色代码在线计算机,色环电阻在线计算器
  5. Spring cloud搭建HSF框架,整合mybatis、redis、rabbit
  6. android导航栏动画,Android 带Lottie动画的导航栏
  7. 作为一名黑客,通过技术手段发现女朋友出轨了...
  8. 零基础入门STM32编程(一)
  9. PlatformIO中arduino框架下stm32编程实现原理
  10. VMware安装Windows XP虚拟机并手动安装外加驱动程序