FPGA之流水线算法实现八位加法器

1.普通方法实现八位加法器

/*******************8位加法器(非流水线)***********************/
module adder_nonpipe(cout, sum, ina, inb, cin, enable);

output cout;
output [7:0] sum;
input [7:0] ina, inb;
input cin, enable;

reg cout;
reg [7:0] sum;
reg [7:0] tempa, tempb;
reg tempc;

always @(posedge enable)
begin
    tempa = ina;
    tempb = inb;
    tempc = cin;
end

always @(posedge enable)
begin
    {cout,sum} = tempa + tempb + tempc;
end

endmodule

2.流水线方法实现八位加法器

/*******************8位2级流水加法器*************************/
module adder_pipeline(cout, sum, ina, inb, cin, enable);

output cout;
output [7:0] sum;
input [7:0] ina, inb;
input cin, enable;

reg cout;
reg [7:0] sum;

reg [3:0] tempa, tempb, firsts;
reg firstc;
always @(posedge enable)
begin
    {firstc,firsts} = ina[3:0] + inb[3:0] + cin;
    tempa = ina[7:4];        //高4位输入寄存,使其与sum低4位在下级流水线同步输入。
       tempb = inb[7:4];        //否则sum的高4位,与低四位分两个时钟周期输出
end

always @(posedge enable)
begin
    {cout,sum[7:4]} = tempa + tempb + firstc;
    sum[3:0] = firsts;       //不能合并为{cout, sum} = {tempa + tempb + firstc, firsts}; 位宽不匹配
end

endmodule

©️2020 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值