亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

基于3072點快速傅里葉變換的數(shù)據(jù)處理方法及處理器的制造方法_3

文檔序號:9326852閱讀:來源:國知局
單元,所以一輪處理16次3點DFT運算,1024次3點DFT運算共需要16輪。數(shù) 據(jù)存取控制單元從數(shù)據(jù)存儲單元的32個RAM的第0~15號RAM和第16~31號RAM乒乓 取出數(shù)據(jù)送入3點DFT運算單元進行運算,運算完的結(jié)果原位寫回到相應的RAM地址中去。 需要注意的是,根據(jù)Goertzel算法數(shù)據(jù)取出的順序是地址從高到底依次取出。
[0074] 本發(fā)明中采用Goertzel算法,3點DFT運算的公式如下:
[0076] 其中,x(n)為輸入數(shù)據(jù),X(k)為運算結(jié)果,W為蝶形旋轉(zhuǎn)因子。
[0077] 公式(2)可以為變換成公式⑷的形式:
[0079] 從上式可以看出X(k)的結(jié)果可以進行遞歸運算,如圖5所示,Goertzel算法的結(jié) 果見表2。
[0081] 表 2
[0082] 其中,y (η)為每次步驟得到的結(jié)果,y (n) = x(n)+REG。x(n)和REG別為兩項中間 結(jié)果。REG代表寄存器中的數(shù)據(jù)。
[0083] 為了提高數(shù)據(jù)處理能力,本發(fā)明在3點DFT運算單元中采用3個Goertzel運算單 元并行運算的結(jié)構(gòu),處理時間可以提高3倍,其結(jié)構(gòu)如圖6所示。以第一輪運算,第0號3點 DFT運算單元為例,從數(shù)據(jù)存儲模塊RAMO的第2048號、1024號以及0號地址中取出數(shù)據(jù)輸 入到3點DFT運算單元中,待運算完成后X(O)、X(I)以及X(2)的結(jié)果分別再寫回到RAMO 的第0、1024以及2048號地址中去達到原位運算的效果。其他輪次的其他3點DFT都依照 類似的順序從通過數(shù)據(jù)存取控制單元從數(shù)據(jù)存儲單元中取出數(shù)據(jù)進行運算并原位寫回。每 個Goertzel運算單元除了需要輸入X值之外還需要配合輸入蝶形旋轉(zhuǎn)因子W 31^W31以及W32。 在運算單元中輸入12bit數(shù)據(jù)(lbit符號位、2bit小數(shù)位、9bit小數(shù)位)經(jīng)過如圖5所示 的3次迭代之后輸出13bit數(shù)據(jù)(Ibit符號位、3bit小數(shù)位、9bit小數(shù)位),共需要進行2 次復數(shù)乘法以及2次復數(shù)加法。為了防止數(shù)據(jù)溢出導致輸出數(shù)據(jù)符號位發(fā)生錯誤,在最后 一次迭代輸出時需要對輸出數(shù)據(jù)進行溢出保護處理。具體方法是,首先判斷截止位是否每 一 bit都為全"0"或者全" 1",如果是則表示沒有出現(xiàn)溢出,數(shù)據(jù)按照規(guī)則輸出截取的13bit 數(shù)據(jù);如果不是全"0"或者全"1",則表示數(shù)據(jù)超出13bit表示存在溢出,這時判斷截止位的 最高位,如果是"0",則輸出13'bOllllllllllll ;如果是"1",則輸出13'blOOOOOOOOOOOO.
[0084] 在進行完所有的3點DFT運算之后就可以按照Good-Thomas算法對表1中每一行 進行1024點DFT運算,共進行3輪。本發(fā)明采用Cooley-Tukey時間抽取基-2FFT算法,其 算法流圖如圖7所示。1024點DFT運算共需要進行10級運算,每級進行512次蝶形運算, 共計5120次蝶形運算;圖7虛線框中表示的就是一個蝶形運算單元,其主要完成如圖8所 示的蝶形運算,蝶形運算器輸入端口 1的數(shù)據(jù)加上或者減去輸入端口 2的數(shù)據(jù)與旋轉(zhuǎn)因子 的乘積。每個蝶形運算中包含一次復數(shù)乘法,故整個1024點DFT運算總共需要進行5120 次復數(shù)乘法;本發(fā)明實施例采用16個蝶形并行運算的硬件結(jié)構(gòu),故每一級1024點DFT運算 需要進行32次運算,整個1024點DFT需要進行320次運算。
[0085] 1024點DFT運算單元用來完成1024點DFT的運算,為了提高數(shù)據(jù)處理能力,增加 運算的并行度,DFT運算單元包含16個蝶形運算單元,以及一個旋轉(zhuǎn)因子產(chǎn)生單元用來產(chǎn) 生運算時需要的旋轉(zhuǎn)因子(如圖11所示),其中蝶形運算單元主要完成如圖8所示的蝶形 運算,其中輸入的X 1GO與X2GO對應蝶形運算單元的a與b端口(參照圖11中的蝶形運 算單元),tw端口(參照圖11中的蝶形運算單元)輸入的是每次蝶形運算所需要的旋轉(zhuǎn) 因子,其由旋轉(zhuǎn)因子產(chǎn)生單元生成。為了提高數(shù)據(jù)處理性能,蝶形運算單元采用全流水線結(jié) 構(gòu),每4個時鐘(elk)可以完成一次蝶形運算。完成一級運算需要32個時鐘(elk)。由于 1024點DFT運算需要進行10級,為了在保證性能的前提下盡可能的節(jié)省硬件存儲資源,所 以需要對每一級運算的結(jié)果進行截位處理。每一級截位以及定點情況如表3所示。
[0086]
[0087] 表 3
[0088] 與Goertzel運算單元一樣,蝶形運算單元也需要對運算結(jié)果進行溢出保護,其方 法也與Goertzel運算單元類似,判斷截止位是否每一 bit都為全"0"或者全"1",再根據(jù)判 斷結(jié)果對輸出數(shù)據(jù)進行相應的調(diào)整。
[0089] 本發(fā)明實施例對3072點數(shù)據(jù)分3輪進行1024點快速傅里葉變換運算,下面以第 一輪1024點DFT運算為例介紹數(shù)據(jù)存取控制模塊對運算中間結(jié)果的存取操作。第一輪需 要進行1024點DFT運算的數(shù)據(jù)存儲在數(shù)據(jù)存儲單元中RAMO~31的地址0~31中,一共 1024個數(shù)據(jù),為描述方便,數(shù)據(jù)與地址關(guān)系如圖9所示,這里每個地址存儲的數(shù)據(jù)都是剛經(jīng) 歷過3點DFT運算之后寫回到對應地址的結(jié)果。在進行1024點DFT運算時每個時鐘周期通 過數(shù)據(jù)存取控制單元從數(shù)據(jù)存儲單元的32個RAM中分別讀取一個數(shù)據(jù)送入到1024點DFT 運算單元中進行運算。由之前分析可知,1024點DFT運算共需要10級才能運算完成,而每 一級又由于需要進32次運算,每次運算由16個蝶形運算單元并行完成,也就是每個時鐘周 期從RAM中讀取32個數(shù)據(jù)進行運算,只要不發(fā)生地址沖突,則整個運算過程就可以流水線 進行,為了保證整個運算過程中不發(fā)生讀寫地址沖突,在每一次1024點快速傅里葉運算的 第一級運算完成之后數(shù)據(jù)寫回時需要對數(shù)據(jù)存儲地址進行調(diào)整,如圖10所示,圖中第一行 標有"順序"對應列表示第1級運算完寫回數(shù)據(jù)仍然存儲在原來位置的位置上;標有"逆序" 對應的列表示第1級運算完寫回的數(shù)據(jù)存儲順序需要顛倒,如RAMO地址1的數(shù)據(jù)經(jīng)過第1 級FFT運算完之后將寫到RAM31地址1中。這種寫回數(shù)據(jù)地址的調(diào)整僅在每次1024DFT運 算的第1級完成之后進行,之后的運算則嚴格按照原位運算的原則從RAM中讀寫數(shù)據(jù)。做 這次調(diào)整的目的是因為寫回的數(shù)據(jù)還是按照之前輸入數(shù)據(jù)與RAM地址對應關(guān)系存儲,在運 算進行到第6級時會發(fā)生地址沖突,影響運算的并行性。而這次調(diào)整僅在寫回時進行,不會 打斷算法的流水處理。
[0090] 1024點DFT運算需要進行10級,每一級運算都需要從數(shù)據(jù)存儲單元的RAM中按 圖7所示排列順序?qū)?shù)據(jù)出入到1024點DFT模塊中進行運算。除了在進行第一級運算需 要調(diào)整位序之外,之后的每一級運算數(shù)據(jù)都可以進行原位運算,這樣的好處是使得整個運 算的數(shù)據(jù)存儲相對簡單,也節(jié)省了大量的數(shù)據(jù)緩存空間,使得這個3072點快速傅里葉變換 在整個運算過程中只使用3072個存儲空間成為可能,使用RAM的資源達到最少。
[0091] 在所有3072個數(shù)據(jù)在進行完3次1024點DFT運算之后需要根據(jù)Good-Thomas算 法:
[0093] 對輸出數(shù)據(jù)序列再次進行索引變換,其中,
彳《丨表 示小于或者等于η中與η互為質(zhì)數(shù)的個數(shù)
所以輸出數(shù)據(jù) 的映射關(guān)系如表4所示:
[0095] 表 4
[0096] 當kl等于0對應存儲在數(shù)據(jù)存儲單元的32個RAM的第0~31號地址中的數(shù)據(jù); kl等于1對應存儲在數(shù)據(jù)存儲單元的32個RAM的第32~63號地址中的數(shù)據(jù);kl等于2 對應存儲在數(shù)據(jù)存儲單元的32個RAM的第64~95號地址中的數(shù)據(jù)。由于在進行1024點 DFT運算時對數(shù)據(jù)存儲的地址進行了一次調(diào)整,所以最終數(shù)據(jù)輸出的順序也響應的進行了 調(diào)整,最終RAM中數(shù)據(jù)輸出地址關(guān)系如圖12所示,與圖類似圖中三塊分別代表32個RAM的 第0~31、32~63以及64~95地址空間。每塊第一行數(shù)字表示具體的RAM地址,共96 個地址;每塊最右側(cè)第一列表示RAM的編號,共32塊RAM。每個地址中的數(shù)字序號表示輸出 數(shù)據(jù)的順序號,第一個輸出的數(shù)據(jù)序號為〇,例如圖中第一塊中第3行第2列2049表示的是 輸出的第2050個數(shù)據(jù)存儲在RAMl的第0號地址中。數(shù)據(jù)存取控制模塊按照圖所示的地址 數(shù)據(jù)映射關(guān)系按順序從數(shù)據(jù)存儲單元中讀取數(shù)據(jù)輸出,最終完成3072點快速傅里葉變換。
[0097] 基于上述【具體實施方式】,本發(fā)明實施例提供的基于3072點快速傅里葉變換的處 理器具體為如圖13所示的結(jié)構(gòu),包括:
[0098] 數(shù)據(jù)存儲模塊,由32個96 X 36 (深度行數(shù)X位寬bit) RAM組成。
[0099] 數(shù)據(jù)存取控制模塊,負責讀寫數(shù)據(jù)。
[0100] 3點DFT運
當前第3頁1 2 3 4 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1