rns减法的verilog代码

verilog code of rns subtraction

我尝试编写用于执行模运算的 rns 减法的 verilog 代码。在下面给出的代码中,我输入 sum80 = 6'd4 sum81 = 6'd6 总和 30 = 6'd1 sum31 = 6'd4 sum71 = 6'd2 sum70 = 6'd3 sum50 = 6'd2 sum51 = 6'd1

但是根据这个 rad71= -1 和 rad51= -1,但是在模拟之后它给出了 rad71=rad51=1111111 这没问题但是在输出中 sum7x 应该等于(sum7x=6)和(sum5x=4 ) 但我得到 (sum5x=0000110) 和 (sum7x=0001000)

我希望它应该考虑 rad71=rad51= -1 和 sum5x= m5(7'd5)-rad51=4....如何得到这个.....我应该在我们的代码中做哪些更改

module mod_sub1(clk,rst,sum80,sum81,sum30,sum31,sum71,sum70,sum50,sum51,sum8x,sum3x,sum5x,sum7x,rad81,rad31,rad51,rad71);

parameter m3=6'b000011,m5=6'b000101,m7=6'b000111,m=13'd840,m8=6'b001000;
input clk;
input rst;
input [5:0] sum80,sum81,sum30,sum31,sum71,sum70,sum50,sum51;
output reg signed  [6:0] sum8x,sum3x,sum5x,sum7x;
 output reg  signed [6:0] rad81,rad31,rad51,rad71;


always@(posedge clk )
 begin
   rad81=sum81-sum80;
    if (rad81<0)
      sum8x=(m8-rad81);
     else 
      sum8x=rad81;
  end

 always@(posedge clk )
 begin
    rad31=sum31-sum30;
      if (rad81<0)
      sum3x=(m3-rad31);
     else 
      sum3x=rad31;
  end

   always@(posedge clk )
 begin
  rad71=sum71-sum70;
    if (rad71<0)
      sum7x=(m7-rad71);
     else 
      sum7x=rad71;
  end


 always@(posedge clk )
 begin
  rad51=sum51-sum50;
  if (rad51<0)
      sum5x=(m5-rad51);
     else 
      sum5x=rad51;
  end



endmodule

(rad31 mod 3) 是 rad31 +(-) 3,而不是 3 - rad31