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

2021-08-25 15:00:28 字數 2661 閱讀 2518

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

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

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

[color=red](1)非流水線實現方式[/color]

module adder_8bits(din_1, clk, cin, dout, din_2, cout);

input [7:0] din_1;

input clk;

input cin;

output [7:0] dout;

input [7:0] din_2;

output cout;

reg [7:0] dout;

reg cout;

always @(posedge clk) begin

<= din_1 + din_2 + cin;

endendmodule

[color=red]得到的rtl級**圖為:[/color]

[img]

[color=red](2)2級流水線實現方式:[/color]

module adder_4bits_2steps(cin_a, cin_b, cin, clk, cout, sum);

input [7:0] cin_a;

input [7:0] cin_b;

input cin;

input clk;

output cout;

output [7:0] sum;

reg cout;

reg cout_temp;

reg [7:0] sum;

reg [3:0] sum_temp;

always @(posedge clk) begin

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

endalways @(posedge clk) begin

= + + cout_temp, sum_temp};

endendmodule

[color=orange][size=medium]注意:這裡在always塊內只能用阻塞賦值方式,否則會出現邏輯上的錯誤![/size][/color][color=red]得到的功能**圖為:[/color]

[img]

[color=red]得到的電路**圖為:[/color]

[img]

[color=red](3)4級流水線實現方式:[/color]

module adder_8bits_4steps(cin_a, cin_b, c_in, clk, c_out, sum_out);

input [7:0] cin_a;

input [7:0] cin_b;

input c_in;

input clk;

output c_out;

output [7:0] sum_out;

reg c_out;

reg c_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 @(posedge clk) begin

= + + c_in;

endalways @(posedge clk) begin

= + + c_out_t1, sum_out_t1};

endalways @(posedge clk) begin

= + + c_out_t2, sum_out_t2};

endalways @(posedge clk) begin

= + + c_out_t3, sum_out_t3};

endendmodule

[color=red]得到的功能**圖為:[/color]

[img]

[color=red]得到的電路**圖為:[/color]

[img]

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

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

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

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

流水線技術理解

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

ARM ARM流水線技術

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