[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...