天天看点

经典电路系列——流水线加法器

`timescale 1ns / 1ps // // 16位2级流水线加法器 // // 流水线设计就是将一个时延比较大的复杂的组合逻辑系统地分割,在各个部分(分级)之间 //插入寄存器以暂存中间数据的方法。目的是将一个大操作分解成若干的小操作,每一步小操 //作的耗时较小,各小操作能并行执行,所以数据可以像流水线一样轮流进入每一步小操作进行 //处理,这样整体地来看系统,数据可以更快地进入和流出系统,所以能提高数据吞吐率(提高 //处理速度)。这样的流水线的速率取决与每一步小操作所耗费的时间。由于采用同步寄存器分 //割组合逻辑,只要每个组合逻辑的时延小于寄存器的时钟周期,那么系统的频率取决于系统的 //时钟频率。 // module adder16_2(cout,sum,clk,cina,cinb,cin); input [15:0] cina,cinb; input clk,cin; output [15:0] sum; output cout;

reg cout,cout1; reg[7:0] sum1; //sum1是低8位相加结果 reg [15:0] sum; //sum是16位结果

//第一级流水 always @(posedge clk) begin //低8位先加 {cout1,sum1}=cina[7:0]+cinb[7:0]+cin; //或{cout1,sum1}={cina[7],cina[7:0]}+{cinb[7],cinb[7:0]}+cin; end

//第二级流水 always @(posedge clk) begin //高8位再加 {cout,sum}=cina[15:8]+cinb[15:8]+cout1; //或{cout,sum}={{cina[15],cina[15:8]}+{cinb[15],cinb[15:8]}+cout1,sum1}; end

endmodule