所謂流水線處理,如同生產裝配線一樣,將操作執行工作量分成若干個時間上均衡的操作段,從流水線的起點連續地輸入,流水線的各操作段以重疊方式執行。這使得操作執行速度只與流水線輸入的速度有關,而與處理所需的時間無關。這樣,在理想的流水操作狀態下,其運行效率很高。
如果某個設計的處理流程分為若干步驟,而且整個數據處理是單流向的,即沒有反饋或者迭代運算,前一個步驟的輸出是下一個步驟的輸入,則可以采用流水線設計方法來提高系統的工作頻率。
下面用8位全加器作為實例,分別列舉了非流水線方法、2級流水線方法和4級流水線方法。
(1)非流水線實現方式
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
{cout,dout} 《= din_1 + din_2 + cin;
end
endmodule
(2)2級流水線實現方式:
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
{cout_temp,sum_temp} = cin_a[3:0] + cin_b[3:0] + cin;
end
always @(posedge clk) begin
{cout,sum} = {{1‘b0,cin_a[7:4]} + {1’b0,cin_b[7:4]} + cout_temp, sum_temp};
end
endmodule
注意:這里在always塊內只能用阻塞賦值方式,否則會出現邏輯上的錯誤!
(3)4級流水線實現方式:
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_out_t1, sum_out_t1} = {1‘b0, cin_a[1:0]} + {1’b0, cin_b[1:0]} + c_in;
end
always @(posedge clk) begin
{c_out_t2, sum_out_t2} = {{1‘b0, cin_a[3:2]} + {1’b0, cin_b[3:2]} + c_out_t1, sum_out_t1};
end
always @(posedge clk) begin
{c_out_t3, sum_out_t3} = {{1‘b0, cin_a[5:4]} + {1’b0, cin_b[5:4]} + c_out_t2, sum_out_t2};
end
always @(posedge clk) begin
{c_out, sum_out} = {{1‘b0, cin_a[7:6]} + {1’b0, cin_b[7:6]} + c_out_t3, sum_out_t3};
end
endmodule
總結:
利用流水線的設計方法,可大大提高系統的工作速度。這種方法可廣泛運用于各種設計,特別是大型的、對速度要求較高的系統設計。雖然采用流水線會增大資源的使用,但是它可降低寄存器間的傳播延時,保證系統維持高的系統時鐘速度。在實際應用中,考慮到資源的使用和速度的要求,可以根據實際情況來選擇流水線的級數以滿足設計需要。
這是一種典型的以面積換速度的設計方法。這里的“面積”主要是指設計所占用的FPGA邏輯資源數目,即利用所消耗的觸發器(FF)和查找表(LUT)來衡量。“速度”是指在芯片上穩定運行時所能達到的最高頻率。面積和速度這兩個指標始終貫穿著FPGA的設計,是設計質量評價的最終標準。
編輯:jq
-
FPGA
+關注
關注
1630文章
21796瀏覽量
605998 -
數據
+關注
關注
8文章
7139瀏覽量
89576 -
觸發器
+關注
關注
14文章
2003瀏覽量
61347 -
LUT
+關注
關注
0文章
49瀏覽量
12577
原文標題:FPGA流水線設計
文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論