天天看點

經典電路系列——流水線加法器

`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