基于logisim的八位求补器的设计与实现

这篇具有很好参考价值的文章主要介绍了基于logisim的八位求补器的设计与实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、实验原理 

1.1 补码

正数:

正整数的补码是其二进制表示,与原码相同 。

例:+10的补码是00001010。(备注:这个+10的补码是用8位2进制来表示的,补码表示方式很多,还有16位二进制补码表示形式,以及32位二进制补码表示形式,64位进制补码表示形式等。每一种补码表示形式都只能表示有限的数字。)

负数

求负整数的补码,将其原码除符号位外的所有位取反(0变1,1变0,符号位为1不变)后加1。

同一个数字在不同的补码表示形式中是不同的。比如-15的补码,在8位二进制中是11110001,然而在16位二进制补码表示中,就是1111111111110001。以下都使用8位2进制来表示。

0的补码

数0的补码表示是唯一的。

[+0]补=[+0]反=[+0]原=00000000

[ -0]补=11111111+1=00000000

1.2 求补器

       求补器的概念:正数的原码与补码形式相同,直接由输入信号通过求补电路的输入端送至输出out;负数的补码是符号位不变原码的绝对值部分求反加1之后,输出out。

求补电路如下:

基于logisim的八位求补器的设计与实现

电路初始图:

基于logisim的八位求补器的设计与实现

二、实验内容:

1、熟悉LogiSim环境

2、设计一个求补器

三、八位求补器(第8位是符号位)电路测试

示例一:正数

输入:0000 0001 结果:0000 0001

基于logisim的八位求补器的设计与实现

正数的补码与原码相同。

示例二:负数

输入:1000 1001结果:1111 0110

基于logisim的八位求补器的设计与实现

负数的补码由原码各位取反加一得到。文章来源地址https://www.toymoban.com/news/detail-412022.html

源代码:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project source="2.7.1" version="1.0">
This file is intended to be loaded by Logisim (http://www.cburch.com/logisim/).
<lib desc="#Wiring" name="0"/>
  <lib desc="#Gates" name="1"/>
  <lib desc="#Plexers" name="2"/>
  <lib desc="#Arithmetic" name="3"/>
  <lib desc="#Memory" name="4"/>
  <lib desc="#I/O" name="5"/>
  <lib desc="#Base" name="6">
    <tool name="Text Tool">
      <a name="text" val=""/>
      <a name="font" val="SansSerif plain 12"/>
      <a name="halign" val="center"/>
      <a name="valign" val="base"/>
    </tool>
  </lib>
  <main name="main"/>
  <options>
    <a name="gateUndefined" val="ignore"/>
    <a name="simlimit" val="1000"/>
    <a name="simrand" val="0"/>
  </options>
  <mappings>
    <tool lib="6" map="Button2" name="Menu Tool"/>
    <tool lib="6" map="Button3" name="Menu Tool"/>
    <tool lib="6" map="Ctrl Button1" name="Menu Tool"/>
  </mappings>
  <toolbar>
    <tool lib="6" name="Poke Tool"/>
    <tool lib="6" name="Edit Tool"/>
    <tool lib="6" name="Text Tool">
      <a name="text" val=""/>
      <a name="font" val="SansSerif plain 12"/>
      <a name="halign" val="center"/>
      <a name="valign" val="base"/>
    </tool>
    <sep/>
    <tool lib="0" name="Pin">
      <a name="tristate" val="false"/>
    </tool>
    <tool lib="0" name="Pin">
      <a name="facing" val="west"/>
      <a name="output" val="true"/>
      <a name="labelloc" val="east"/>
    </tool>
    <tool lib="1" name="NOT Gate"/>
    <tool lib="1" name="AND Gate"/>
    <tool lib="1" name="OR Gate"/>
  </toolbar>
  <circuit name="main">
    <a name="circuit" val="main"/>
    <a name="clabel" val=""/>
    <a name="clabelup" val="east"/>
    <a name="clabelfont" val="SansSerif plain 12"/>
    <wire from="(680,600)" to="(680,610)"/>
    <wire from="(930,370)" to="(980,370)"/>
    <wire from="(970,590)" to="(970,730)"/>
    <wire from="(810,340)" to="(810,540)"/>
    <wire from="(810,810)" to="(810,820)"/>
    <wire from="(880,840)" to="(880,850)"/>
    <wire from="(440,160)" to="(440,430)"/>
    <wire from="(980,370)" to="(980,440)"/>
    <wire from="(520,130)" to="(520,330)"/>
    <wire from="(830,790)" to="(830,820)"/>
    <wire from="(860,730)" to="(860,820)"/>
    <wire from="(1000,160)" to="(1000,440)"/>
    <wire from="(520,330)" to="(520,540)"/>
    <wire from="(280,160)" to="(280,440)"/>
    <wire from="(860,730)" to="(970,730)"/>
    <wire from="(830,740)" to="(850,740)"/>
    <wire from="(1000,160)" to="(1150,160)"/>
    <wire from="(500,330)" to="(520,330)"/>
    <wire from="(610,790)" to="(830,790)"/>
    <wire from="(540,610)" to="(610,610)"/>
    <wire from="(90,820)" to="(800,820)"/>
    <wire from="(1100,360)" to="(1100,530)"/>
    <wire from="(850,490)" to="(850,540)"/>
    <wire from="(350,350)" to="(410,350)"/>
    <wire from="(230,150)" to="(1190,150)"/>
    <wire from="(680,610)" to="(730,610)"/>
    <wire from="(1150,160)" to="(1150,440)"/>
    <wire from="(500,350)" to="(550,350)"/>
    <wire from="(1180,160)" to="(1180,380)"/>
    <wire from="(390,330)" to="(390,530)"/>
    <wire from="(690,350)" to="(730,350)"/>
    <wire from="(710,160)" to="(710,440)"/>
    <wire from="(550,350)" to="(550,440)"/>
    <wire from="(410,590)" to="(410,800)"/>
    <wire from="(90,160)" to="(90,820)"/>
    <wire from="(660,120)" to="(660,340)"/>
    <wire from="(250,590)" to="(250,810)"/>
    <wire from="(730,770)" to="(840,770)"/>
    <wire from="(840,360)" to="(840,440)"/>
    <wire from="(350,330)" to="(390,330)"/>
    <wire from="(410,350)" to="(450,350)"/>
    <wire from="(1130,380)" to="(1180,380)"/>
    <wire from="(410,800)" to="(820,800)"/>
    <wire from="(710,160)" to="(860,160)"/>
    <wire from="(280,160)" to="(440,160)"/>
    <wire from="(520,130)" to="(1190,130)"/>
    <wire from="(810,110)" to="(810,340)"/>
    <wire from="(1130,380)" to="(1130,440)"/>
    <wire from="(870,760)" to="(870,820)"/>
    <wire from="(430,480)" to="(430,530)"/>
    <wire from="(860,160)" to="(1000,160)"/>
    <wire from="(560,490)" to="(560,540)"/>
    <wire from="(1120,590)" to="(1120,760)"/>
    <wire from="(390,140)" to="(390,330)"/>
    <wire from="(1080,360)" to="(1100,360)"/>
    <wire from="(840,770)" to="(840,820)"/>
    <wire from="(230,150)" to="(230,530)"/>
    <wire from="(540,600)" to="(540,610)"/>
    <wire from="(810,110)" to="(1190,110)"/>
    <wire from="(870,760)" to="(1120,760)"/>
    <wire from="(250,350)" to="(300,350)"/>
    <wire from="(860,160)" to="(860,440)"/>
    <wire from="(820,800)" to="(820,820)"/>
    <wire from="(850,740)" to="(850,820)"/>
    <wire from="(1080,380)" to="(1130,380)"/>
    <wire from="(660,120)" to="(1190,120)"/>
    <wire from="(390,140)" to="(1190,140)"/>
    <wire from="(990,490)" to="(990,530)"/>
    <wire from="(1180,160)" to="(1190,160)"/>
    <wire from="(780,340)" to="(810,340)"/>
    <wire from="(730,610)" to="(730,770)"/>
    <wire from="(270,490)" to="(270,530)"/>
    <wire from="(950,100)" to="(950,350)"/>
    <wire from="(1100,90)" to="(1190,90)"/>
    <wire from="(440,160)" to="(570,160)"/>
    <wire from="(950,350)" to="(950,530)"/>
    <wire from="(570,160)" to="(710,160)"/>
    <wire from="(610,610)" to="(610,790)"/>
    <wire from="(830,600)" to="(830,740)"/>
    <wire from="(980,370)" to="(1030,370)"/>
    <wire from="(660,340)" to="(660,540)"/>
    <wire from="(90,160)" to="(280,160)"/>
    <wire from="(640,350)" to="(690,350)"/>
    <wire from="(780,360)" to="(840,360)"/>
    <wire from="(570,160)" to="(570,440)"/>
    <wire from="(690,350)" to="(690,440)"/>
    <wire from="(550,350)" to="(590,350)"/>
    <wire from="(250,810)" to="(810,810)"/>
    <wire from="(840,360)" to="(880,360)"/>
    <wire from="(410,350)" to="(410,430)"/>
    <wire from="(250,350)" to="(250,440)"/>
    <wire from="(950,100)" to="(1190,100)"/>
    <wire from="(1100,90)" to="(1100,360)"/>
    <wire from="(930,350)" to="(950,350)"/>
    <wire from="(640,340)" to="(660,340)"/>
    <wire from="(1150,160)" to="(1180,160)"/>
    <wire from="(700,490)" to="(700,540)"/>
    <wire from="(1140,490)" to="(1140,530)"/>
    <comp lib="1" loc="(250,590)" name="XOR Gate">
      <a name="facing" val="south"/>
    </comp>
    <comp lib="0" loc="(880,840)" name="Splitter">
      <a name="facing" val="north"/>
      <a name="fanout" val="8"/>
      <a name="incoming" val="8"/>
    </comp>
    <comp lib="1" loc="(990,490)" name="AND Gate">
      <a name="facing" val="south"/>
    </comp>
    <comp lib="1" loc="(1030,370)" name="OR Gate">
      <a name="facing" val="west"/>
      <a name="label" val="c0"/>
    </comp>
    <comp lib="1" loc="(700,490)" name="AND Gate">
      <a name="facing" val="south"/>
    </comp>
    <comp lib="1" loc="(430,480)" name="AND Gate">
      <a name="facing" val="south"/>
    </comp>
    <comp lib="1" loc="(730,350)" name="OR Gate">
      <a name="facing" val="west"/>
      <a name="label" val="c2"/>
    </comp>
    <comp lib="1" loc="(970,590)" name="XOR Gate">
      <a name="facing" val="south"/>
    </comp>
    <comp lib="1" loc="(880,360)" name="OR Gate">
      <a name="facing" val="west"/>
      <a name="label" val="c1"/>
    </comp>
    <comp lib="1" loc="(270,490)" name="AND Gate">
      <a name="facing" val="south"/>
    </comp>
    <comp lib="1" loc="(850,490)" name="AND Gate">
      <a name="facing" val="south"/>
    </comp>
    <comp lib="0" loc="(1210,80)" name="Splitter">
      <a name="facing" val="west"/>
      <a name="fanout" val="8"/>
      <a name="incoming" val="8"/>
    </comp>
    <comp lib="0" loc="(880,850)" name="Pin">
      <a name="facing" val="north"/>
      <a name="output" val="true"/>
      <a name="width" val="8"/>
      <a name="labelloc" val="east"/>
    </comp>
    <comp lib="1" loc="(410,590)" name="XOR Gate">
      <a name="facing" val="south"/>
    </comp>
    <comp lib="1" loc="(300,350)" name="OR Gate">
      <a name="facing" val="west"/>
      <a name="label" val="c5"/>
    </comp>
    <comp lib="1" loc="(560,490)" name="AND Gate">
      <a name="facing" val="south"/>
    </comp>
    <comp lib="1" loc="(1120,590)" name="XOR Gate">
      <a name="facing" val="south"/>
    </comp>
    <comp lib="1" loc="(830,600)" name="XOR Gate">
      <a name="facing" val="south"/>
    </comp>
    <comp lib="1" loc="(450,350)" name="OR Gate">
      <a name="facing" val="west"/>
      <a name="label" val="c4"/>
    </comp>
    <comp lib="1" loc="(680,600)" name="XOR Gate">
      <a name="facing" val="south"/>
    </comp>
    <comp lib="1" loc="(1140,490)" name="AND Gate">
      <a name="facing" val="south"/>
    </comp>
    <comp lib="6" loc="(1271,52)" name="Text">
      <a name="text" val="输入"/>
    </comp>
    <comp lib="6" loc="(794,867)" name="Text">
      <a name="text" val="输出"/>
    </comp>
    <comp lib="0" loc="(1210,80)" name="Pin">
      <a name="facing" val="west"/>
      <a name="width" val="8"/>
      <a name="tristate" val="false"/>
    </comp>
    <comp lib="1" loc="(590,350)" name="OR Gate">
      <a name="facing" val="west"/>
      <a name="label" val="c3"/>
    </comp>
    <comp lib="1" loc="(540,600)" name="XOR Gate">
      <a name="facing" val="south"/>
    </comp>
  </circuit>
</project>

到了这里,关于基于logisim的八位求补器的设计与实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机组成原理--基于Logisim的海明校验码编码电路实验的应用(超详细/设计/实验/作业/练习)

    掌握海明码设计原理,能独立设计实现汉字 GB2312 编码的海明校验编码体系,并最终在实验环境中利用硬件电路实现对应的编码电路。 1.软件:Logisim软件、JAVA环境 2.硬件:计算机Windows 10 在 logisim 中打开实验资料包中的 data.circ 文件,在对应电路中完成海明校验编码电路。输

    2024年02月08日
    浏览(232)
  • 计算机组成原理--基于Logisim的4位并行加法器实验的应用(超详细/设计/实验/作业/练习)

    掌握快速加法器中先行进位的原理,能利用相关知识设计4位先行进位电路,并利用设计的4位先行进位电路构造4位快速加法器,能分析对应电路的时间延迟。 1.软件:Logisim软件、JAVA环境 2.硬件:计算机Windows 10 利用已设计好的四位先行进位电路构造四位快速加法器,其引脚定

    2024年02月02日
    浏览(247)
  • 计算机组成原理--基于Logisim的8位可控加减法器实验的应用(超详细/设计/实验/作业/练习)

    掌握一位全加器的实现逻辑,掌握多位可控加减法电路的实现逻辑,熟悉 Logisim 平台基本功能,能在 logisim 中实现多位可控加减法电路。 1.软件:Logisim软件、JAVA环境 2.硬件:计算机Windows 10 在 Logisim 模拟器中打开 alu.circ 文件,在对应子电路中利用已经封装好的全加器设计8

    2024年02月04日
    浏览(179)
  • FPGA实现八位数字抢答器设计

    八位数字抢答器设计要求: 抢答器同时供8名选手或8个代表队比赛,分别用8个按钮S0 ~ S7表示。 设置一个系统清除和抢答控制开关S,该开关由主持人控制。 抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,并在优先抢答选手的编号一直保持到主持人将系统清

    2023年04月15日
    浏览(70)
  • 实验三 原码一位乘法实验(基于Logisim)

    学生掌握原码一位乘法运算的基本原理,熟练掌握 Logisim 寄存器电路的使用,能在 Logisim 平台中设计实现一个 8*8 位的无符号数乘法器。 在 alu.circ 文件中原码一位乘法器子电路中增加控制电路和数据通路使得该电路能自动完成 8 位无符号数的一位乘法运算,设置引脚初始值,

    2024年02月08日
    浏览(41)
  • 数字逻辑---头歌实训作业---加法器设计(Logisim)

    第1关:半加器设计 如有任何不解或者想要答案代码,可在评论区喊话我哦,希望我的答案对你有帮助,点个关注再走吧,感谢!!! 本关卡最终答案:   任务描述 本关任务:利用在Logisim中的“组合逻辑分析”工具自动生成半加器电路。 相关知识 半加器电路是指对两个输

    2023年04月13日
    浏览(53)
  • 【计算机硬件系统设计(华科)——现代时序 CPU(Logisim 实现)】

    本章为《计算机硬件系统设计》的最后部分——现代时序CPU的设计与实现。 且本章未按照课程讲述设计(展示的设计内容实现指令 24 条)

    2024年02月09日
    浏览(44)
  • 数字逻辑---头歌实训作业---多路选择器设计与应用(Logisim)

    如有任何不解或者想要最终实验代码,可评论区喊话哦,希望我的答案对你有帮助,点个关注再走吧,感谢!!! 本关卡最终答案: 任务描述 本关任务:在Logisim中绘制2选1多路选择器,先在本地完成测试,体验数据选择的功能,然后在线完成测评。 相关知识 多路选择器又

    2024年02月08日
    浏览(118)
  • educoder数字逻辑实训:锁存器和触发器设计(Logisim)

    第1关:基本SR锁存器的设计 任务描述 本关任务:在Logisim中,构建由两个或非门构成的基本SR锁存器。 第2关:门控SR锁存器的设计  任务描述 本关任务:在Logisim中,在基本锁存器的基础上构建门控SR锁存器。 第3关:与非门构成的门控SR锁存器的设计  任务描述 本关任务:在

    2024年02月04日
    浏览(44)
  • 【计算机硬件系统设计(华科)——单周期MIPS CPU(Logisim 实现)】

    本章继续讲述计算机硬件系统设计的内容,之前已经大概说明了 ALU 和存储系统的设计,本文讲述CPU的设计。对应的有单周期、多周期 CPU 设计,以及流水线设计,中断处理会在后文中详细说明,本文不进行讲述。 即定长指令周期,机器性能取决于最慢的指令,导致时钟周期

    2024年02月02日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包