Verilog 如何在顺序电路中减去2个数字?

Verilog 如何在顺序电路中减去2个数字?,verilog,sequential,circuit,subtraction,Verilog,Sequential,Circuit,Subtraction,我需要做一个电路,其中我减去2个数字。我认为我需要使用总和和符号位,以及一些掩码,但我不知道如何将它们组合在一起 [稍后编辑] 我试着做“15-3” 二进制中的15是1111 二进制中的3是0011 我为符号0加了一点,为+加了一点,为+加了一点- 现在我有了:01111+10011=100010,我用符号掩码10000做了一个XOR。这就是我被卡住的地方 [以后再编辑] 我想我找到了另一种看待这个问题的方法。 我将使用2个移位寄存器来加载2个数字。每个移位寄存器的输出将是执行带0的“或”运算的

我需要做一个电路,其中我减去2个数字。我认为我需要使用总和和符号位,以及一些掩码,但我不知道如何将它们组合在一起

[稍后编辑]

我试着做“15-3”

二进制中的15是1111 二进制中的3是0011

我为符号0加了一点,为+加了一点,为+加了一点-

现在我有了:01111+10011=100010,我用符号掩码10000做了一个XOR。这就是我被卡住的地方

[以后再编辑]

我想我找到了另一种看待这个问题的方法。 我将使用2个移位寄存器来加载2个数字。每个移位寄存器的输出将是执行带0的“或”运算的“或”门的输入。(这是将0101转换为1010)然后这些门的2个输出将连接到总和的输入。 我的问题是,在输入求和之前,如何将1位数据转换回8位数据?

如果您了解作为一种反转(求反)数字的方法,问题将变得简单得多

有几种方法可以表示负数

1) 符号大小(添加符号位)

2) 1补码(按位反转)

3) 二补(一补+1)

二的补码增加了效率,因为它删除了一个补码所具有的重复的0代码(0000=>0和1111=>-0)

二的补码还具有一个特性,即数字可以正常相加。
对于
15-3
实际执行
15+(-3)

要了解如何添加二进制数,请快速查看


首先创建一个半加法器,添加2位,生成一个和和和一个进位。使用半加法器+异或门构建一个全加器,a+B+进位,生成求和和和进位(全部1位)。然后,您可以将它们链接在一起,形成一个X宽度的全加器。

半加器是由两个逻辑门构成的简单、功能性数字电路的一个示例。半加法器将一位二进制数(AB)相加。输出为两位和进位(C)之和。请注意,相同的两个输入如何指向两个不同的门。

您应该为您尝试的内容添加更多详细信息您标记了此verilog,那么
分配结果=15-3有什么问题?或者你想在门级手工构建它?我有这个任务,我必须完成所有这些步骤:绘制时序电路,绘制逻辑图,然后进行verilog模拟。
0 0011 =>  3
1 0011 => -3
0011 =>  3
1100 => -3
0011             =>  3
1100 + 1 => 1101 => -3