Logisim元件用法详解四:Arithmetic 运算器

文章为Hi_KER原创,因本人能力不足,文章难免有所纰漏,欢迎大家指正。

文章中部分中文名为HI_KER自行翻译,非官方翻译,特此提醒。

文章主要参考了 Logisim-Help-Tutorial (Logisim自带教程)

上一篇文章:Logisim元件用法详解三:Plexers 复用器

1.Adder 加法器

简介

        加法器将两个左端输入值相加,并在右端输出结果。

        组件的设计使它可以与其他加法器进行级联,用以处理比单个加法器更多的位。

        如果其中一个加数包含一些浮点位或错误位,则该组件将执行部分加法。(具体执行情况请参考 Logisim 自带教程)

引脚

西边(两输入,位宽匹配数据位属性)

        要加的两个值

北边,标记为 c in(输入,位宽1)

        要加到总和中的进位值。如果值是未知的(即浮动的),则假定它为0

东边(输出,位宽匹配数据位属性)

        西边两个输入值的和再加上 c in 位得到的较低的 Data Bits 位

南边,标记为 c out(输出,位宽1)

        为和计算的进位位。如果这些值作为无符号值加在一起产生的结果在 Data Bits 位之内,那么这值将是 0,否则,它将是 1

由于很多属性在前面的描述中频繁出现,此处不再介绍

Logisim元件用法详解四:Arithmetic 运算器_第1张图片 图1  加法器示例

Logisim元件用法详解四:Arithmetic 运算器_第2张图片 图2 加法器级联的示例(不规范,仅供参考)

2.Subtractor 减法器

简介

        减法器将左端输入的值相减(上减去下),在右端输出差值。该组件被设计成可以与其他减法器级联的结构,以处理比单个减法器更多的位。

        如果其中一个操作数包含一些浮动位或错误位,则该组件将执行部分减法。

部分引脚

对于常规引脚将不再说明。

北边,标记为 b in (输入,位宽1)

        如果是1,那么表示借 1。如果值是未知的(即浮动的),则假定它为0

南边,标记为 b out (输出,位宽1)

        借位计算了差额,如果这些值减去为无符号值,得到的是负数,那么这个位将是1,否则,它将是 0

Logisim元件用法详解四:Arithmetic 运算器_第3张图片 图3 减法器示例

3.Multiplier 乘法器

简介

        乘法器将通过左端输入的两个值相乘,然后在右端输出乘积。该组件被设计成可以与其他乘法器级联,以处理比单个乘法器具有更多位的数据。

部分引脚

北边,标记为 c in (输入,位宽匹配数据位属性)

        要添加到元件中的进位值。如果值的所有位都是未知的(即,浮动的),则假定它们为0

东边(输出,位宽匹配数据位属性)

        输出两个值乘积加上 c in 后的较低的 Data Bits位

南边,标记为c out(输出,位宽匹配数据位属性)

        输出较高的 Data Bits 位

Logisim元件用法详解四:Arithmetic 运算器_第4张图片 图4 乘法器示例

4.Divider 除法器

简介

        除法器将左边输入的两个值相除,在右边输出商。组件的设计便于它与其他除法器级联。

        如果除数为0,则不进行除法运算(即假设除数为1)。

        除法器实际上执行无符号除法。商总是一个整数,且 商*除数+余数=被除数。

部分引脚

北边,标签为 upper (输入,位宽匹配数据位属性)

        被除数前面的位

东边(输出,位宽匹配数据位属性)

        商的较低的数据位

南边,标记为 rem(输出,位宽匹配数据位属性)

        余数部分,这个值总是在0和除数减一之间

Logisim元件用法详解四:Arithmetic 运算器_第5张图片 图5 除法器示例
Logisim元件用法详解四:Arithmetic 运算器_第6张图片 图6 较完整的除法器示例

5.Negator 求补器

简介

        相当于求输入数据的补码(取反加一)。

        例如输入为 8 位数据 10101010,取反后为 01010101,然后加一得到 01010110,即为结果。

Logisim元件用法详解四:Arithmetic 运算器_第7张图片 图7 求补器示例

6.比较器

简介

        比较两个值(无符号值或两个补码值,可选)的大小。比较器有 3 个输出,通常,其中一个输出为1,另外两个输出为0。

        比较从每个数字的最有效位开始,并并行地向下进行,直到找到两个值不一致的位置。但是,如果在下降过程中遇到错误值或浮点值,则所有输出将匹配该错误或浮点值。

        比较器可级联。

元件属性较为清晰易懂,不作说明,下同。

Logisim元件用法详解四:Arithmetic 运算器_第8张图片 图8 比较器示例

Logisim元件用法详解四:Arithmetic 运算器_第9张图片 图9 简单的比较器级联示例(仅供参考)

7.Shifter 移位器

简介

        移位器含有两个输入,data 和 dist,它有一个输出,这是根据 dist 位移动数据的结果。data 和输出具有相同的位宽。data 和 dist 的关系为:dist = \left \lfloor log_2\ data \right \rfloor+1

Logisim元件用法详解四:Arithmetic 运算器_第10张图片

该组件支持以下shift类型:

逻辑左移

        数据中的所有位向左移动 dist 位,底部空出的位用 0 填充。例如,11001011逻辑左移两次就是00101100(之前的右边两位丢弃)

逻辑右移

        数据中的所有位向右移动 dist 位,左端空出的位用 0 填充。例如,11001011逻辑右移两次就是00110010(之前的左边两位丢弃)

算术右移

        数据中的所有位向右移动 dist 位,左端空出的位用数据中最高位重复填充。例如,11001011算术右移两次就是11110010(之前最高位为 1,所以用 1 填充)

循环左移

        数据中的所有位都向左移动 dist 位,左边被“挤出去”的位填充到右边空出的位。例如,将11001011循环左移两次就是00101111。

循环右移

        数据中的所有位都向右移动 dist 位,右边被“挤出去”的位填充到左边空出的位。例如,将11001011循环右移两次就是11110010。

Logisim元件用法详解四:Arithmetic 运算器_第11张图片 图10 移位器示例

8.Bit Adder 逐位加法器

简介

        逐位加法器计算输入中有多少位是1,并输出中1为的位的数量。

        例如,给定8位输入10011101,输出将是5,因为在输入中有5个1位(第一个,最后一个,以及中间的一个由3位组成的字符串)。

         逐位加法器可以右多个输入,如果输入一个有 n 位,输出的位宽 m 为:m=\left \lfloor log_2\ n \right \rfloor+1

Logisim元件用法详解四:Arithmetic 运算器_第12张图片 图11 逐位加法器示例

 9.Bit Finder 位查找器

 简介

        位查找器有一个 n 位宽的输入端口,表示输入的数据值。

        一个位宽为 1 的输出端口,表示是否找到对应的值。

        一个 \left \lfloor log_2\ n \right \rfloor+1 位宽的输出,表示找到的值的编号。

Logisim元件用法详解四:Arithmetic 运算器_第13张图片

 示例图已经表示的很简明了,可以据此理解该元件的作用。

Logisim元件用法详解四:Arithmetic 运算器_第14张图片 图12 位查找器示例

下一篇文章:Logisim元件用法详解五:Memory 储存库

你可能感兴趣的:(计算机组成原理,Logisim,计算机组成)