热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

原码一位乘法器设计实验

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

实验目的

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


设计要求

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


方案设计

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


  • 对部分积作加运算时对加数0或乘数a的选择&#xff1a;用多路选择器实现&#xff0c;选择依据为乘数b的当前最低位&#xff0c;最低位的选择用了分线器来实现。
    在这里插入图片描述

  • 对所维护的部分积作加运算&#xff1a;用8位串行加法器实现。
    在这里插入图片描述

  • 对部分积的右移和对乘数b的右移&#xff1a;用四组八位宽的分线器实现。其中新部分积的最高位由串行加法器的进位得到&#xff0c;乘数b的最高位由部分积右移出来的那一位得到&#xff0c;这么做的好处是省空间&#xff0c;高效率&#xff0c;运算完成后的部分积就是乘积的低八位。
    在这里插入图片描述

  • 部分积与乘数b的保存&#xff1a;两个寄存器实现&#xff0c;输出的数据既用于下次运算&#xff0c;也在运算完成后作为成绩结果输出。
    在这里插入图片描述

  • 边界情况的处理&#xff1a;用一个计数器来统计脉冲次数&#xff0c;以此对边界情况做特殊处理。

在这里插入图片描述

实验电路图
在这里插入图片描述


实验步骤


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

故障与调试

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


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

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


测试与分析

在这里插入图片描述


实验总结

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


推荐阅读
  • golang常用库:配置文件解析库/管理工具viper使用
    golang常用库:配置文件解析库管理工具-viper使用-一、viper简介viper配置管理解析库,是由大神SteveFrancia开发,他在google领导着golang的 ... [详细]
  • [论文笔记] Crowdsourcing Translation: Professional Quality from Non-Professionals (ACL, 2011)
    Time:4hoursTimespan:Apr15–May3,2012OmarZaidan,ChrisCallison-Burch:CrowdsourcingTra ... [详细]
  • 深入解析JVM垃圾收集器
    本文基于《深入理解Java虚拟机:JVM高级特性与最佳实践》第二版,详细探讨了JVM中不同类型的垃圾收集器及其工作原理。通过介绍各种垃圾收集器的特性和应用场景,帮助读者更好地理解和优化JVM内存管理。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 优化联通光猫DNS服务器设置
    本文详细介绍了如何为联通光猫配置DNS服务器地址,以提高网络解析效率和访问体验。通过智能线路解析功能,域名解析可以根据访问者的IP来源和类型进行差异化处理,从而实现更优的网络性能。 ... [详细]
  • CentOS 7 磁盘与文件系统管理指南
    本文详细介绍了磁盘的基本结构、接口类型、分区管理以及文件系统格式化等内容,并提供了实际操作步骤,帮助读者更好地理解和掌握 CentOS 7 中的磁盘与文件系统管理。 ... [详细]
  • 本文详细记录了在基于Debian的Deepin 20操作系统上安装MySQL 5.7的具体步骤,包括软件包的选择、依赖项的处理及远程访问权限的配置。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • Navicat Premium 15 安装指南及数据库连接配置
    本文详细介绍 Navicat Premium 15 的安装步骤及其对多种数据库(如 MySQL 和 Oracle)的支持,帮助用户顺利完成软件的安装与激活。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 本文介绍了如何使用 Spring Boot DevTools 实现应用程序在开发过程中自动重启。这一特性显著提高了开发效率,特别是在集成开发环境(IDE)中工作时,能够提供快速的反馈循环。默认情况下,DevTools 会监控类路径上的文件变化,并根据需要触发应用重启。 ... [详细]
  • 三星W799在2011年的表现堪称经典,以其独特的双屏设计和强大的功能引领了双模手机的潮流。本文详细介绍其配置、功能及锁屏设置。 ... [详细]
  • 在API测试中,我们常常需要通过大量不同的数据集(包括正常和异常情况)来验证同一个接口。如果为每种场景单独编写测试用例,不仅繁琐而且效率低下。采用数据驱动的方式可以有效简化这一过程。本文将详细介绍如何利用CSV文件进行数据驱动的API测试。 ... [详细]
  • 本文详细介绍了如何解决Uploadify插件在Internet Explorer(IE)9和10版本中遇到的点击失效及JQuery运行时错误问题。通过修改相关JavaScript代码,确保上传功能在不同浏览器环境中的一致性和稳定性。 ... [详细]
author-avatar
赵lamarta
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有