文章为Hi_KER原创,因本人能力不足,文章难免有所纰漏,欢迎大家指正。
文章中部分中文名为HI_KER自行翻译,非官方翻译,特此提醒。
文章主要参考了 Logisim-Help-Tutorial (Logisim自带教程)
上一篇文章:Logisim元件用法详解三:Plexers 复用器
加法器将两个左端输入值相加,并在右端输出结果。
组件的设计使它可以与其他加法器进行级联,用以处理比单个加法器更多的位。
如果其中一个加数包含一些浮点位或错误位,则该组件将执行部分加法。(具体执行情况请参考 Logisim 自带教程)
西边(两输入,位宽匹配数据位属性)
要加的两个值
北边,标记为 c in(输入,位宽1)
要加到总和中的进位值。如果值是未知的(即浮动的),则假定它为0
东边(输出,位宽匹配数据位属性)
西边两个输入值的和再加上 c in 位得到的较低的 Data Bits 位
南边,标记为 c out(输出,位宽1)
为和计算的进位位。如果这些值作为无符号值加在一起产生的结果在 Data Bits 位之内,那么这值将是 0,否则,它将是 1
由于很多属性在前面的描述中频繁出现,此处不再介绍
减法器将左端输入的值相减(上减去下),在右端输出差值。该组件被设计成可以与其他减法器级联的结构,以处理比单个减法器更多的位。
如果其中一个操作数包含一些浮动位或错误位,则该组件将执行部分减法。
对于常规引脚将不再说明。
北边,标记为 b in (输入,位宽1)
如果是1,那么表示借 1。如果值是未知的(即浮动的),则假定它为0
南边,标记为 b out (输出,位宽1)
借位计算了差额,如果这些值减去为无符号值,得到的是负数,那么这个位将是1,否则,它将是 0
乘法器将通过左端输入的两个值相乘,然后在右端输出乘积。该组件被设计成可以与其他乘法器级联,以处理比单个乘法器具有更多位的数据。
北边,标记为 c in (输入,位宽匹配数据位属性)
要添加到元件中的进位值。如果值的所有位都是未知的(即,浮动的),则假定它们为0
东边(输出,位宽匹配数据位属性)
输出两个值乘积加上 c in 后的较低的 Data Bits位
南边,标记为c out(输出,位宽匹配数据位属性)
输出较高的 Data Bits 位
除法器将左边输入的两个值相除,在右边输出商。组件的设计便于它与其他除法器级联。
如果除数为0,则不进行除法运算(即假设除数为1)。
除法器实际上执行无符号除法。商总是一个整数,且 商*除数+余数=被除数。
北边,标签为 upper (输入,位宽匹配数据位属性)
被除数前面的位
东边(输出,位宽匹配数据位属性)
商的较低的数据位
南边,标记为 rem(输出,位宽匹配数据位属性)
余数部分,这个值总是在0和除数减一之间
相当于求输入数据的补码(取反加一)。
例如输入为 8 位数据 10101010,取反后为 01010101,然后加一得到 01010110,即为结果。
比较两个值(无符号值或两个补码值,可选)的大小。比较器有 3 个输出,通常,其中一个输出为1,另外两个输出为0。
比较从每个数字的最有效位开始,并并行地向下进行,直到找到两个值不一致的位置。但是,如果在下降过程中遇到错误值或浮点值,则所有输出将匹配该错误或浮点值。
比较器可级联。
元件属性较为清晰易懂,不作说明,下同。
移位器含有两个输入,data 和 dist,它有一个输出,这是根据 dist 位移动数据的结果。data 和输出具有相同的位宽。data 和 dist 的关系为:
该组件支持以下shift类型:
逻辑左移
数据中的所有位向左移动 dist 位,底部空出的位用 0 填充。例如,11001011逻辑左移两次就是00101100(之前的右边两位丢弃)
逻辑右移
数据中的所有位向右移动 dist 位,左端空出的位用 0 填充。例如,11001011逻辑右移两次就是00110010(之前的左边两位丢弃)
算术右移
数据中的所有位向右移动 dist 位,左端空出的位用数据中最高位重复填充。例如,11001011算术右移两次就是11110010(之前最高位为 1,所以用 1 填充)
循环左移
数据中的所有位都向左移动 dist 位,左边被“挤出去”的位填充到右边空出的位。例如,将11001011循环左移两次就是00101111。
循环右移
数据中的所有位都向右移动 dist 位,右边被“挤出去”的位填充到左边空出的位。例如,将11001011循环右移两次就是11110010。
逐位加法器计算输入中有多少位是1,并输出中1为的位的数量。
例如,给定8位输入10011101,输出将是5,因为在输入中有5个1位(第一个,最后一个,以及中间的一个由3位组成的字符串)。
逐位加法器可以右多个输入,如果输入一个有 n 位,输出的位宽 m 为:
位查找器有一个 n 位宽的输入端口,表示输入的数据值。
一个位宽为 1 的输出端口,表示是否找到对应的值。
一个 位宽的输出,表示找到的值的编号。
示例图已经表示的很简明了,可以据此理解该元件的作用。
下一篇文章:Logisim元件用法详解五:Memory 储存库