• 沒有找到結果。

3.3 新摺疊演算法一( Parallel-In )

3.3.2 排程矩陣

將有限脈衝響應濾波器架構轉換為我們的新摺疊演算法應用雛型後,再來就 是要將 r 個最小基本運算操作單元 MAC 的每一輸入、輸出端做好管理,就能完 成有限脈衝響應濾波器的運算功能,以下介紹 4 個排程矩陣( Scheduling Matrix ) 如何應用其來完成排程動作,並且達到記憶體管理的最佳化(即暫存器個數減到 最少):

1.資料輸入矩陣( Data Matrix )-輸入資料 x[n]訊號到 MAC 的乘法器輸入端;

2.係數輸入矩陣( Coefficient Matrix )-輸入係數 h[n]到 MAC 的另一乘法器輸入 端;

3.讀取前一級運算結果矩陣( Feedback Matrix )-讀取前一級運算結果到 MAC 的 加法器輸入端;

4.更新運算結果矩陣( Accumulator Matrix )-讀取 MAC 輸出端的運算結果數值並 更新到所選取的目的暫存器。

( 操作原理: Accumulator = Data * Coefficient + Feedback ;)

clock MAC0 MAC1 MAC2

Feedback Matrix 0

R1 R2 R3

R4 R5 R6

R7 R8 R9

R10 R11

clock MAC0 MAC1 MAC2

1 R0 R1 R2

Accumulator Matrix

R0 R1 R3

解讀 解讀 解讀

解讀排程矩陣排程矩陣排程矩陣排程矩陣::: :

1.當 clock=1 時,3 個 MAC 皆同時動作,操作時序參考圖圖圖圖 3.11,而 R1(ta)為 R1 在 ta時刻的儲存值,

MAC0 在 ta時執行 x0*h0+R1(ta)的運算,到 tb時才更新 R0(tb)為 x0*h0+R1(ta),

MAC1 在 ta時執行 x0*h1+R2(ta)的運算,到 tb時才更新 R1(tb)為 x0*h1+R2(ta),

MAC2 在 ta時執行 x0*h2+R3(ta)的運算,到 tb時才更新 R2(tb)為 x0*h2+R3(ta);

所以,在操作時序的規劃上是可執行的,並不會有無限迴圈的情況出現。

2.當 clock=2 ,3 ,4 時,與 clock=1 同理,注意當 clock=4 時,MAC2 的 feedback 值為 0,原因是此時 MAC2 為代表有限脈衝響應濾波器的最後一級乘加運算,

所以其加法器的輸入端給 0。

3.當 clock=5~8 時,重複 clock=1~4 的動作,只是 Data Matrix 的 x0 換成 x1,表 示輸入下一筆資料。

4.當 clock=1 時,寫入新的值到 R1 中,而要到 clock=5 時,才會讀取儲存在 R1 中的值,此時的 R1 實現 4D 的效果(指暫存器每隔 4 clocks 才做一次讀取更新 值的動作,所以 1D 指的是每隔 1 clock 做一次讀取更新值動作的暫存器),所 以,R2 也是實現 4D 效果的暫存器;而 R3 是在 clock=2 時,寫入新值,而到 clock=5 時,才做讀取值的動作,所以,R3 是實現 3D 效果的暫存器。

5.就實現角度而言,R0~R11 都是可以用 1D 的暫存器去實現,每個暫存器透過類 似圖圖圖 3.6 捆綁的定址方式,就能以 1D 去直現上述 4.的效果。 圖

6.根據 Feedback Matrix 得知,在 clock=1 時,只會讀取 R1,R2,R3,而 clock=2 時,

只讀取 R4,R5,R6,而 clock=3 讀取 R7,R8,R9,而 clock=4 讀取 R10,R11,0,每 隔 4 clocks 重複一樣動作;而根據 Accumulator Matrix 得知,在 clock=1 時,只 需更新 R0,R1,R2,而 clock=2 時,只更新 R3,R4,R5,而 clock=3 更新 R6,R7,R8,

而 clock=4 只更新 R9,R10,R11,也是每隔 4 clocks 重複一樣動作,所以,只要 小心把特定的 3 個暫存器位址做捆綁的話,可以簡化更新與讀取暫存器內容的 解碼器的控制訊號。

7.根據排程矩陣,推演出每個時刻中暫存器內容的變化情形,如表表表 3.5 所示,注表 意 R0 每次更新的值即為 y[n],所以,y[n]只需每隔 f = 4 clocks 讀取一次 R0 值。

8.以上 1.~7.介紹整除案例(K = rf),以下介紹不整除案例,K = 12,r = 5,則 f = 3,

其排程矩陣如下所示。

9.不整除案例的排程矩陣運作方式請參考上述 1.~7.的運作方式,需注意的是表表表表 3.9 中空白的框框代表空(Null)動作,表示不寫到任何暫存器中,主要是為了平 衡摺疊週期每個 MAC 的工作量。

3.4 新 新 新 新摺疊演算法 摺疊演算法 摺疊演算法 摺疊演算法二 二 二( Serial-In ) 二

在介紹新摺疊演算法二之前,讓我們先從推導有限脈衝濾波器的轉移函數 ( Transfer Function )開始介紹,改寫式子(3.2)為(3.3)式:

∑ ∑

根據式子(3.3)推導出新摺疊演算法二-Serial-In,最主要與 Parallel-In 不同 的地方是係數輸入方式,以 3 MACs 來摺疊 12taps 的有限脈衝響應濾波器(即 K = 存器實現方式為圓形定址(Circular Addressing),暫存每一 short-lengh 所需 4 個 x 值。

第四章 第四章 第四章 第四章

硬體實現架構

在介紹摺疊理論推導之後,再來就是考慮新摺疊演算法硬體實現的部分。有 些在演算法上看似簡單的問題,在硬體實現上不見得相對單純,在接下來的內容 之中,會作較為詳盡的探討;但主要焦點會集中在比較各種摺疊演算法在硬體實 現部分的成本(指面積與功率消耗)分析討論。

首先,會先概括地介紹整個新摺疊演算法的完整電路架構,然後再個別介紹 摺疊硬體實現的每一部分結構與操作,而實現摺疊演算法架構都是由三塊模組所 構成見圖圖圖圖 4.1:一是處理器陣列( Processor Array ,PA )主要由 MAC 所組成,負責 有限脈衝響應濾波器的乘累加運算;二是暫存器檔案( Register File ,RF )主要是由 暫存器所組成,負責有限脈衝響應濾波器中間運算轉移資料的儲存與更新;三是 控制單元( Control Unit ,CU )主要是由計數器所組成,負責摺疊架構中處理器陣 列與暫存器檔案的溝通,後面的章節都會一一作仔細的介紹。

接著討論各種摺疊演算法硬體實現架構的成本函數(Cost Function),其一成 本函數是討論硬體面積,另一是討論功率消耗;最後再以 IS-95 WCDMA Pulse Shaping 33 taps FIR Filter 見表表表 4.2 所列電路規格來實現各種摺疊演算法以及原始表

架構,並且以 SYNOPSYS 公司的 Design Compiler 與 PrimePower 軟體來分析討 論各種摺疊演算法以及原始架構的面積與功率消耗情形是否符合成本函數預期 估計結果。

4.1 新摺疊演算法 新摺疊演算法 新摺疊演算法 新摺疊演算法一 一 一硬體實現 一 硬體實現 硬體實現 硬體實現

實現的摺疊架構如圖圖圖圖 4.1 所示由三個模組所構成:處理器陣列、暫存器檔案、

控制單元,以下三小節有更詳細的描述功能與實現方式。處理器陣列( Processor Array ,PA )主要由 MAC 所組成,負責有限脈衝響應濾波器的乘加運算,觀察 PA 有外部輸入 Xn 與 Hn,並與 RF 之間有資料互傳,且接受 CU 的控制;暫存器檔 案( Register File ,RF )主要是由暫存器所組成,負責有限脈衝響應濾波器中間轉移 資料的儲存與更新,觀察 RF 與 PA 有互傳資料的活動,並接受 CU 的控制,在 預定的時序吐出 Yn 的輸出;控制單元( Control Unit ,CU )由計數器和一些數位邏 輯閘所組成,負責摺疊架構中處理器陣列與暫存器檔案的溝通,觀察 CU 有 clk 與 reset 輸入訊號控制著 CU 的狀態( State ),並送出控制訊號到 PA 與 RF,及一 輸出訊號 valid 為宣告此時 Yn 為有效值。

4.1.1 處理器陣列處理器陣列處理器陣列 處理器陣列

4.1.2 暫存器檔案暫存器檔案暫存器檔案 暫存器檔案

R_w clk reset R_r

Parallel-In暫存器檔案

F0 ~ Fr 為輸出到處理器陣列的資料訊號線( 用來做為 MAC 中的加法輸入 端,即代表為加上前一刻的中間運算結果 ),用來讀取圖圖圖圖 4.3 中所示右半邊的 f 群暫存器其中一群( 分群的方法請參考第三章所敘述的排程矩陣原理 )的儲存 值,而讀取暫存器的解碼器由控制單元輸入的控制訊號線 R_r 來選擇讀取哪一群 暫存器。

R_w 與 R_r 訊號線並不等長,因為寫讀暫存器解碼器的實現方式並不一樣,

寫暫存器解碼器的輸入與輸出關係是一對多,必須以每群為單位增加 enable 訊 號線,所以, f 群必須有 f 位元長度的訊號線,即 R_w 為 f 位元的訊號線;而 讀暫存器解碼器可以使用多工器來實現(原因是輸入與輸出的關係是多對一),所 以,R_r 長度為 lf = ceil( log2 f)位元。

圖 圖圖

圖 4.3 中 reset 與 clk,為由外部輸入的訊號,reset 負責工作為控制每一暫存 器何時該清為 0 並且暫存器同時亦開始動作,而 clk 負責工作是暫存器每隔多久 更新一次內容;然而其連線方式僅為示意,由於 reset 與 clk 都必須連接到每一 暫存器上,為了避免讓圖圖圖圖 4.3 看起來太過於複雜,所以,僅以簡單的兩個箭號表 示。因此,暫存器檔案只需一組暫存器的讀取、寫入的控制訊號( R_r、R_w ),

便能完成在該時脈中 r 個乘加器該讀取哪 r 個暫存器以及將運算結果更新到哪 r 個暫存器上;最後,圖中 y[n]為摺疊架構的輸出訊號。

4.1.3 控制單元控制單元控制單元 控制單元

clk、reset 為由外部輸入的時脈訊號與重置訊號,兩者負責整個控制單元目 前處於哪一個狀態( State );valid 為輸出訊號告知此刻暫存器檔案的輸出訊號 y[n]

值為有效輸出;而 R_w、R_r 為輸出到暫存器檔案的訊號,用來控制寫入或讀取 哪一個中間運算暫存器。因為暫存器檔案中每一個暫存器的位置已經過精心安排 而定址過,所以,只需依照排程矩陣的安排,在每一時序送出一組所需控制訊號 ( R_w、R_r )管理哪個暫存器該做讀取、哪個該做更新。

控制單元實現上應該是由一個 ceil(log2 f)位元長度的計數器,f 為摺疊因數,

並加上由邏輯合成軟體(如:Design Compiler)對每個狀態送出的控制訊號所合出 的數位邏輯(此一部分不是本篇研究範圍,未加以詳細描述)所構成,且其控制單 元整體佔整個折疊演算法架構比例甚小。

4.2 新摺疊演算法 新摺疊演算法 新摺疊演算法二 新摺疊演算法 二 二 二硬體實現 硬體實現 硬體實現 硬體實現

h0+ h1z-1+ h2z-2+ …+ hf-1z-(f-1)

hf+ hf+1z-1+ hf+2z-2+ …+ h2f-1z-(f-1)

h(r-1)f+ h(r-1)f+1z-1+ …+ hrf-1z-(f-1)

+ +

+

z-f

z-f Y(z) X(z)

0 Serial-In演算法

新摺疊演算法二如圖圖圖圖 4.5 所示由 r 個長方形框所構成,而每一長方形框執行

所示;然後再將圖圖圖圖 4.64.64.6 的硬體實現架構圖以圖4.6 圖圖圖 4.1 的概念再區分出三個工作區 塊:處理器陣列、暫存器檔案、控制單元,以下三小節有更詳細的描述功能與實 現方式。

依據圖圖圖圖 4.7MAC 運作內容 Clock=1 ~ f 時,x 輸入端的 fD 圓形定址暫存器存 放內容為( x-(f-1) , …, x-1, x0 ),而 Clock=f+1 ~ 2f 時,x 輸入端存放內容為( x-(f-2) , …, x0, x1 ),每個 MAC 負責 1 short-length FIR 運算。

4.2.1 處理器陣列處理器陣列處理器陣列 處理器陣列

處理器陣列的實現如圖圖圖圖 4.8 所示,每個處理器元素( Processor Element , PE ) 都是由一組乘法器與加法器構成亦稱為 MAC 共 r 個,其操作原理及描述請參考 4.1.1 小節,而 x 輸入端增加一 fD 暫存器為圓形定址模式。

4.2.2 暫存器檔案暫存器檔案暫存器檔案 暫存器檔案

暫存器檔案架構如圖圖圖圖 4.9 所示,圖中的 Acc0 ~ Accr-1為由處理器陣列輸入到 暫存器檔案的資料訊號線(亦即乘加器的輸出中間運算結果需被暫存,將其送到

暫存器檔案中移位暫存器來儲存);F0 ~ Fr-1 為輸出到處理器陣列的資料訊號線 (用來做為 MAC 中的加法輸入端,即代表為加上前一刻的中間運算結果),而 F0

的來源( Source )見圖圖圖圖 4.9 有暫存器的輸出及前一級 fD 的輸出,利用 FS 控制訊號 線來管理;FC 為由 CU 輸出的除頻訊號管理圖圖圖圖 4.9 中 fD 的時脈輸入;clk 為由 外部輸入的訊號,負責工作是暫存器每隔多久更新一次內容;Rst 負責工作為控 制每一暫存器何時該清為 0 並且暫存器同時亦開始動作,然而其連線方式僅為示 意,由於 Rst 與 clk 都必須連接到每一暫存器上,為了避免讓圖圖圖圖 4.9 看起來太過 於複雜,所以,僅以簡單的兩個箭號表示;最後,圖中 y[n]為摺疊架構的輸出訊 號。

4.2.3 控制單元控制單元控制單元控制單元

clk、reset 為由外部輸入的時脈訊號與重置訊號,兩者負責整個控制單元目 前處於哪一個狀態( State );而 FS、FC、Rst 為輸出到暫存器檔案的訊號,用來 控制 F0 ~ Fr 以及 y(n)的輸出是否為正確值。因為暫存器檔案中在做寫入的動作

clk、reset 為由外部輸入的時脈訊號與重置訊號,兩者負責整個控制單元目 前處於哪一個狀態( State );而 FS、FC、Rst 為輸出到暫存器檔案的訊號,用來 控制 F0 ~ Fr 以及 y(n)的輸出是否為正確值。因為暫存器檔案中在做寫入的動作