Verilog 2的补码加法器/减法器

问题描述

在Verilog中设计一个四位加法器/减法器,并将其显示在七段显示器上。

我的大多数代码都在起作用,但是当我需要一个包含负数的减法时,会产生错误的结果。

例如, 5-7应该得到2,但是我收到E

下面是我的代码

public static class DateTimeHelper
{
    public static DateTime Now() => TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow,TimeZoneInfo.FindSystemTimeZoneById("Russian Standard Time"));
}

解决方法

E是正确的结果,因为它在4位二进制补码中为-2。

从负的2的补数变为正的诀窍(如果尚未覆盖)是反转并加一个。

  • E的二进制值为1110

  • 1110的倒数是0001

  • 0001加1是0010(2)