FPGA-64位8级流水线加法器顶层模块

原理说明:

64位8级流水线加法器,即是将64位拆成8个8位进行运算,最后将8个8位运算的结果相加得出最后的和和进位位。采用8级流水线进行加法运算,则从第一次输入两个加数的第一个时钟起,需要第8个时钟周期对应的和才输出来,之后源源不断的输入加数,则和也不断的输出。

8级流水线需要将加法运算拆分成8个时钟周期来完成,每个时钟周期需要将前面计算得到的和、还未进行计算的加数进行缓存,由此,比如第1个8位计算得到的和就需要缓存7次,第2个8位计算得到的和就需要缓存6次,以此类推。同时,还要将未进行计算的加数进行缓存,比如[63:56]这个8位就需要缓存7次,[55:48] 这个8位就需要缓存6次。

第1个时钟周期:计算第1个8位的和,并加上前一个的进位位。缓存前面得到的和、未进行计算的加数

第2个时钟周期:计算第2个8位的和,并加上前一个的进位位。缓存前面得到的和、未进行计算的加数

第3个时钟周期:计算第3个8位的和,并加上前一个的进位位。缓存前面得到的和、未进行计算的加数

第4个时钟周期:计算第4个8位的和,并加上前一个的进位位。缓存前面得到的和、未进行计算的加数

第5个时钟周期:计算第5个8位的和,并加上前一个的进位位。缓存前面得到的和、未进行计算的加数

第6个时钟周期:计算第6个8位的和,并加上前一个的进位位。缓存前面得到的和、未进行计算的加数

第7个时钟周期:计算第7个8位的和,并加上前一个的进位位。缓存前面得到的和、未进行计算的加数

第8个时钟周期:计算第8个8位的和,并加上前一个的进位位。缓存前面得到的和、未进行计算的加数

                                   并计算出最后的结果。

         8级流水线对应8个时钟周期,对应代码的8always模块。

/**************************************版权申明************************************
** 文件名称:        adder_64bit.v
** 最新版本:        v1.0
** 功能描述:        64位8级流水线加法器顶层模块
***********************************************************************************/
module adder_64bit(
           clk,
           reset_n,
           data_in_a,
           data_in_b,
           sum,
           c
           );
input           clk;            //时钟信号
input           reset_n;        //复位信号
input   [63:0]  data_in_a;      //输入数1
input   [63:0]  data_in_b;      //输入数2
output  [63:0]  sum;            //和输出
output          c;              //进位位输出
// ***********************************************************************************/
// ****************和寄存器**************************
reg     [8:0]   sum1_reg1;      //第1个8位的和寄存器1
reg     [8:0]   sum1_reg2;      //第1个8位的和寄存器2
reg     [8:0]   sum1_reg3;      //第1个8位的和寄存器3
reg     [8:0]   sum1_reg4;      //第1个8位的和寄存器4
reg     [8:0]   sum1_reg5;      //第1个8位的和寄存器5
reg     [8:0]   sum1_reg6;      //第1个8位的和寄存器6
reg     [8:0]   sum1_reg7;      //第1个8位的和寄存器7
reg     [8:0]   sum1_reg8;      //第1个8位的和寄存器8

reg     [8:0]   sum2_reg1;      //第2个8位的和寄存器1
reg     [8:0]   sum2_reg2;      //第2个8位的和寄存器2
reg     [8:0]   sum2_reg3;      //第2个8位的和寄存器3
reg     [8:0]   sum2_reg4;      //第2个8位的和寄存器4
reg     [8:0]   sum2_reg5;      //第2个8位的和寄存器5
reg     [8:0]   sum2_reg6;      //第2个8位
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值