generate语句实例化元件(HDLbits)
Created: November 23, 2021 8:11 PM
Last Edited Time: November 23, 2021 8:26 PM
给定一个16位全加器add16,自行编写1位全加器元件add1,完成下图中所示的32位全加器:
module add16 ( input[15:0] a, input[15:0] b, input cin, output[15:0] sum, output,cout);
module top_module (
input [31:0] a,
input [31:0] b,
output [31:0] sum
);
wire cx; //32位全加器的进位
wire [15:0] c; //各一位加法器的进位
add1 a0 (a[0],b[0],1'b0,sum[0],c[0]); //最低位加法器实例化
add1 a15 (a[15],b[15],c[14],sum[15],c[15]); //第15位加法器实例化
add16 ax (a[31:16],b[31:16],c[15],sum[31:16],cx); //16位全加器实例化
genvar i; //generate参数
generate
for(i=1;i<=14;i=i+1) begin: adder_gen //generate项目名为 adder_gen
add1 ai (a[i],b[i],c[i-1],sum[i],c[i]); //中间14个加法器的实例化由循环实现
end
endgenerate
endmodule
module add1 ( input a, input b, input cin, output sum, output cout ); //一位全加器元件
assign sum = a ^ b ^ cin;
assign cout = a&b | a&cin | b&cin;
endmodule