当前位置: 首页 > 知识库问答 >
问题:

verilog带符号加减法

严天逸
2023-03-14
input [15:0] A;
input [15:0] B;
input [3:0] S;
output reg [15:0] AddAB;
...
always@(*)
    begin
        {OFAdd, AddAB} <= A + B;
        {OFSub, SubAB} <= A - B;
...
        case(S)
            0:
            begin
                Display <= AddAB;
                DisplayOF <= OFAdd;
            end
            1:
            begin
                Display <= SubAB;
                DisplayOF <= OFSub;
            end
...
input signed [15:0] A;
input signed [15:0] B;
input [3:0] S;
output reg signed [15:0] AddAB;
...
always@(*)
    begin
        {OFAdd, AddAB} <= A + B;
        {OFSub, SubAB} <= A - B;
...
        case(S)
            0:
            begin
                Display <= AddAB;
                DisplayOF <= OFAdd;
            end
            1:
            begin
                Display <= SubAB;
                DisplayOF <= OFSub;
            end
...
    A = 16'sb1010101010101010;
    B = 16'sd88;
    S = 4'd0;
    #10;

    A = 16'sb1010101010101010;
    B = 16'sd88;
    S = 4'd1;
    #10;

我不关心可综合性,我只想弄清楚如何处理带符号值的一元算术上的溢出。

如果有人能给我指明正确的方向,我会非常伟大,谢谢!

共有1个答案

百里景山
2023-03-14

{OFAdd,AddAB}<=A+b;在本例中,MSB(OFAdd)不是溢出位。如果您可以访问加法器的最后一位的执行,这可能会起到溢出的作用,但在RTL中,您不能访问这个仅有的另一个全加器位。

更详细的前面的回答,其中显示了如何使用这两个MSB检测溢出和下溢。

一个基本的溢出/下溢限制器:

AddAB = A + B;
case (AddAB[MSB:MSB-1])
  2’b01 : add = MAX_POS;//Overflow
  2’b10 : add = MAX_NEG;//Underflow
 default: add = AddAB[MSB-1:0]; //In Range
endcase
 类似资料:
  • 问题内容: 我想通过对Sequelize进行简单添加来进行更新。 表: 样品: 此查询后 我知道这是一个简单的问题,但我找不到解决方案。 我可以加减哪个运算符?谢谢 问题答案: 这里是 : 要么 您也可以只替换为。 有关更多详细信息:请 阅读

  • 问题内容: 我有显示的代码,并隐藏了。当显示和隐藏处于活动状态时,如何添加两个不同的图标作为精灵图像? 例如: + 图标显示给我,然后 - 图标隐藏我。 切换到 + 或 - 时需要将图像更改为上述图像。 谢谢 问题答案: 试试这个 jQuery HTML

  • 这有一个非常相似的问题。例如,如果我减去50和45,我得到4。如果我减去五万和四万五千,我得到四千九百。 我确信我在这里遗漏了一些简单的东西,但是我反复查看了代码,我不确定它是什么。

  • 问题内容: 我有topic(id )和tags(id ,name)和一个链接表topic_tags(topicFk ,tagFk )。 现在,我想选择每个具有所有良好标记(a,b,c)但没有不良标记(d,e,f)的主题。 我怎么做? 问题答案: 我自己的解决方案使用了Pauls和Bills的想法。 这个想法是将具有良好标签的主题进行内部联接(以抛出没有良好标签的主题),然后为每个主题计数唯一的标签

  • 我必须拆分一个包含破折号和减号的字符串。我试图根据unicode字符进行拆分(https://en.wikipedia.org/wiki/Hyphen#Unicode),仍然考虑减号与破折号字符相同。我如何解决它? 预期产出 (国家) (美国) -1个 实际输出量 (国家) (美国) //实际上,这里会打印空行,但编辑器会压缩空行 1. 我想在字符串连接期间会发生一些转换,但不确定。欢迎任何解决这

  • 主要内容:实例,实例,实例,实例,实例,实例,实例,实例,实例关键词: defparam,参数,例化,ram 当一个模块被另一个模块引用例化时,高层模块可以对低层模块的参数值进行改写。这样就允许在编译时将不同的参数传递给多个相同名字的模块,而不用单独为只有参数不同的多个模块再新建文件。 参数覆盖有 2 种方式:1)使用关键字 defparam,2)带参数值模块例化。 defparam 语句 可以用关键字 defparam 通过模块层次调用的方法,来改写低层次