2.verilog language--more verilog features --Generate for loop:100-digit BCD adder
题目:
You are provided with a BCD one-digit adder named bcd_fadd that adds two BCD digits and carry-in, and produces a sum and carry-out.
module bcd_fadd ( input [3:0] a, input [3:0] b, input cin, output cout, output [3:0] sum );
Instantiate 100 copies of bcd_fadd to create a 100-digit BCD ripple-carry adder. Your adder should add two 100-digit BCD numbers (packed into 400-bit vectors) and a carry-in to produce a 100-digit sum and carry out.
译文:为您提供了一个名为 bcd_fadd 的 BCD 一位加法器,它将两个 BCD 数字和进位相加,并产生和和进位输出。
模块 bcd_fadd (
输入 [3:0] a,
输入 [3:0] b,
输入辛,
输出计数,
输出[3:0]总和);
实例化 100 个 bcd_fadd 副本以创建一个 100 位 BCD 纹波进位加法器。 您的加法器应添加两个 100 位 BCD 数字(打包成 400 位向量)和一个进位以产生 100 位总和并执行。
解题思路:设置中间变量数组记录out,generate结合for生成多个模块的用法
代码:
module top_module( input [399:0] a, b, input cin, output cout, output [399:0] sum ); wire[400:0] t; bcd_fadd U0(a[3:0],b[3:0],cin,t[4],sum[3:0]); genvar i ; generate for(i=4;i<400;i=i+4)begin:tt bcd_fadd Ui(a[i+3:i],b[i+3:i],t[i],t[i+4],sum[i+3:i]); end endgenerate assign cout=t[400]; endmodule
标签:digit,input,--,BCD,Verilog,fadd,bcd,100,习题 From: https://www.cnblogs.com/yphasaki/p/17002997.html