流水線設計
流水線概述
如下圖為工廠流水線,工廠流水線就是將一個工作(比如生產一個產品)分成多個細分工作,在生產流水線上由多個不同的人分步完成。這個待完成的產品在流水線上一級一級往下傳遞。
圖片來自網絡
比如完成一個產品,需要8道工序,每道工序需要10s,那么流水線啟動后,不間斷工作的話,第一個產品雖然要80s才完成,但是接下來每10s就能產出一個產品。使得速度大大提高。當然這也增加了人員等資源的付出。
對于電路的流水線設計思想與上述思想異曲同工,也是以付出增加資源消耗為代價,去提高電路運算速度。
流水線設計實例
這里以一個簡單的8位無符號數全加器的設計為實例來進行講解,實現
assign {c_out,data_out [7:0]} = a[7:0] + b[7:0] +c_in
c_out 為進位位。
(源碼鏈接:https://pan.baidu.com/s/1-imO5A51dJ_pfWpRfOYcHg 提取碼:dx0k)
如果有數字電路常識的人都知道,利用一塊組合邏輯電路去做8位的加法,其速度肯定比做2位的加法慢。因此這里可以采用4級流水線設計,每一級只做兩位的加法操作,當流水線一啟動后,除第一個加法運算之外,后面每經過一個2位加法器的延時,就會得到一個結果。
整體結構如下,每一級通過in_valid,o_valid信號交互,分別代表每一級的輸入輸出有效信號。
第一級:做最低兩位與進位位的加法操作,并將運算結果和未做運算的高六位傳給下一級。
第二級:做2,3兩位與上一級加法器的進位位的加法操作,并將本級運算結果和未做運算的高4位傳給下一級。
第三級:做4,5兩位與進位位的加法操作,并將運算結果和未做運算的高2位傳給下一級。
第四級:做最高兩位與上一級加法器輸出的進位位的加法操作,并將結果組合輸出。
仿真結果如下:如圖,當整體模塊in_valid有效時,送進去的數據a=1,b=5,c_in=1;故經過四個周期后,o_valid信號拉高,同時獲得運算結果data_out=7。(本設計的流水線每級延時為一個時鐘周期)
總結
流水線就是通過將一個大的組合邏輯劃分成分步運算的多個小組合邏輯來運算,從而達到提高速度的目的。
在設計流水線的時候,我們一般要盡量使得每級運算所需要的時間差不多,從而做到流水匹配,提高效率。因為流水線的速度由運算最慢的那一級電路決定。
-
流水線
+關注
關注
0文章
120瀏覽量
25726 -
數字電路
+關注
關注
193文章
1605瀏覽量
80578
原文標題:流水線設計
文章出處:【微信號:LF-FPGA,微信公眾號:小魚FPGA】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論