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