流水線技術原理和Verilog HDL實現

2021-09-08 16:36:20 字數 4831 閱讀 1949

**:

所謂流水線處理,如同生產裝配線一樣,將操作執行工作量分成若干個時間上均衡的操作段,從流水線的起點連續地輸入,流水線的各操作段以重疊方式執行。這使得操作執行速度只與流水線輸入的速度有關,而與處理所需的時間無關。這樣,在理想的流水操作狀態下,其執行效率很高。

如果某個設計的處理流程分為若干步驟,而且整個資料處理是單流向的,即沒有反饋或者迭代運算,前乙個步驟的輸出是下乙個步驟的輸入,則可以採用流水線設計方法來提高系統的工作頻率。

下面用8位全加器作為例項,分別列舉了非流水線方法、2級流水線方法和4級流水線方法。

(1)非流水線實現方式

moduleadder_8bits(din_1, clk, cin, dout, din_2, cout);

input[7:0] din_1;

inputclk;

inputcin;

output[7:0] dout;

input[7:0] din_2;

outputcout;

reg[7:0] dout;

regcout;

always@(posedgeclk)begin

<= din_1 + din_2 + cin;

end

endmodule

(2)2級流水線實現方式:

input[7:0] cin_a;

input[7:0] cin_b;

inputcin;

inputclk;

outputcout;

output[7:0] sum;

regcout;

regcout_temp;

reg[7:0] sum;

reg[3:0] sum_temp;

always@(posedgeclk)begin

= cin_a[3:0] + cin_b[3:0] + cin;

end

always@(posedgeclk)begin

= + + cout_temp, sum_temp};

end

endmodule

注意:這裡在always塊內只能用阻塞賦值方式,否則會出現邏輯上的錯誤!

(3)4級流水線實現方式:

moduleadder_8bits_4steps(cin_a, cin_b, c_in, clk, c_out, sum_out);

input[7:0] cin_a;

input[7:0] cin_b;

inputc_in;

inputclk;

outputc_out;

output[7:0] sum_out;

regc_out;

regc_out_t1, c_out_t2, c_out_t3;

reg[7:0] sum_out;

reg[1:0] sum_out_t1;

reg[3:0] sum_out_t2;

reg[5:0] sum_out_t3;

always@(posedgeclk)begin

= + + c_in;

end

always@(posedgeclk)begin

= + + c_out_t1, sum_out_t1};

end

always@(posedgeclk)begin

= + + c_out_t2, sum_out_t2};

end

always@(posedgeclk)begin

= + + c_out_t3, sum_out_t3};

end

endmodule

總結:利用流水線的設計方法,可大大提高系統的工作速度。這種方法可廣泛運用於各種設計,特別是大型的、對速度要求較高的系統設計。雖然採用流水線會增大資源的使用,但是它可降低暫存器間的傳播延時,保證系統維持高的系統時鐘速度。在實際應用中,考慮到資源的使用和速度的要求,可以根據實際情況來選擇流水線的級數以滿足設計需要。

這是一種典型的以面積換速度的設計方法。這裡的「面積」主要是指設計所占用的fpga邏輯資源數目,即利用所消耗的觸發器(ff)和查詢表(lut)來衡量。「速度」是指在晶元上穩定執行時所能達到的最高頻率。面積和速度這兩個指標始終貫穿著fpga的設計,是設計質量評價的最終標準。

流水線技術原理和Verilog HDL實現

color darkred size medium 所謂流水線處理,如同生產裝配線一樣,將操作執行工作量分成若干個時間上均衡的操作段,從流水線的起點連續地輸入,流水線的各操作段以重疊方式執行。這使得操作執行速度只與流水線輸入的速度有關,而與處理所需的時間無關。這樣,在理想的流水操作狀態下,其執行效率...

流水線技術理解

流水線,這個詞語最早出於工廠裡面,是資本家為了提高產品的產量而採用的一種技術。我們姑且不去看他的定義,我們從生活中的例子理解什麼是流水線技術 假如我們有很多衣服要洗,現在有一台洗衣機和一台乾衣機,洗衣機用時30分鐘,乾衣機用時60分鐘。如果洗一桶衣服,如下圖所示 很顯然,總時間 洗衣時間 乾衣時間 ...

ARM ARM流水線技術

處理器按照一系列步驟來執行每一條指令,典型的步驟如下 1 從儲存器讀取指令 fetch 2 解碼以鑑別它屬於哪一條指令 decode 3 從指令中提取指令的運算元 這些運算元往往存在於暫存器 reg 中 4 將運算元進行組合以得到結果或儲存器位址 alu 5 如果需要,則訪問儲存器以儲存資料 mem...