Logic 如何在verilog中实现4位加法器/减法器
我正在尝试确定如何使用全加器将此代码转换为4位加法器/减法器。现在它正在做加法,但我不知道如何做减法部分Logic 如何在verilog中实现4位加法器/减法器,logic,verilog,system-verilog,Logic,Verilog,System Verilog,我正在尝试确定如何使用全加器将此代码转换为4位加法器/减法器。现在它正在做加法,但我不知道如何做减法部分 module Adder #(parameter N = 4)( output wire [N-1:0] sum, // sum output wire co, // carry input wire [N-1:0] x, input wire [N-1:0] y, input
module Adder #(parameter N = 4)(
output wire [N-1:0] sum, // sum
output wire co, // carry
input wire [N-1:0] x,
input wire [N-1:0] y,
input wire is_sub;
);
wire [N:0] c;
assign c[0] = 1'b0;
assign co = c[N];
genvar i;
generate
for (i = 0; i < N; i=i+1)
begin : counter_gen_label
FA FAInst (
.s(sum[i]),
.co(c[i+1]),
.a(x[i]),
.b(y[i]),
.cin(c[i]),
.is_sub(is_sub)
);
end
endgenerate
endmodule
module FA(
output reg s,
output reg co,
input wire a,
input wire b,
input wire cin,
input wire is_sub
);
always @(*)
begin
s = a ^ b ^ cin;
co = (a & b) | (a & cin) | (b & cin);
end
endmodule
模块加法器#(参数N=4)(
输出线[N-1:0]和,//和
输出线co,//进位
输入线[N-1:0]x,
输入线[N-1:0]y,
输入线为_-sub;
);
导线[N:0]c;
赋值c[0]=1'b0;
分配co=c[N];
genvar i;
生成
对于(i=0;i
在FA模块中如何进行减法运算?
谢谢 FA不需要使用
is\u sub
输入
替换c[0]=1'b0代码>与c[0]=is_sub
和.b(y[i])
以及.b(y[i]^is_sub)
这是从x-y=x+y'+1开始的,其中y'表示反向y