本發(fā)明涉及數(shù)字信號處理領(lǐng)域,特別是涉及一種信號處理的方法及系統(tǒng)。
背景技術(shù):
信號處理在asic系統(tǒng)、soc系統(tǒng)中有著廣泛的應用,尤其是在有線通信、無線通信、雷達通信、圖像和語音信號處理等領(lǐng)域應用非常廣泛。
現(xiàn)有的信號處理中,應用雙端口ram作為存儲器,參數(shù)讀取和存儲需要插入等待周期,且ram單元的讀寫需要復雜的讀寫控制邏輯和地址產(chǎn)生模塊,從而降低了運算效率。
因此,如何有效地克服讀寫參數(shù)的等待周期,提高運算效率是本領(lǐng)域技術(shù)人員目前需要解決的技術(shù)問題。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的是提供一種信號處理的方法及系統(tǒng)。該信號處理的方法及系統(tǒng)能夠有效地克服讀寫參數(shù)的等待周期,提高運算效率。
為了解決上述問題,本發(fā)明提供了一種信號處理的方法,包括:
在信號處理過程中,將當前對信號進行運算的蝶形運算確定為目標運算;
輸出所述目標運算的第一輸出數(shù)據(jù)和第二輸出數(shù)據(jù),所述第一輸出數(shù)據(jù)和所述第二輸出數(shù)據(jù)為所述目標運算對所述信號進行算術(shù)運算后的輸出數(shù)據(jù);
將所述第一輸出數(shù)據(jù)和所述第二輸出數(shù)據(jù)分別存儲至先入先出隊列fifo中,并在所述目標運算的下一級蝶形運算開始前,依據(jù)先入先出的順序依次輸出第三輸出數(shù)據(jù)和所述第一輸出數(shù)據(jù),所述第三輸出數(shù)據(jù)為所述目標運算的上一級蝶形運算輸出的與所述第二輸出數(shù)據(jù)歸屬同一運算類型的輸出數(shù)據(jù);
將所述第一輸出數(shù)據(jù)和所述第三輸出數(shù)據(jù)作為所述目標運算的下一級蝶形運算的輸入數(shù)據(jù),并將所述目標運算的下一級蝶形運算作為新的目標運算,執(zhí)行上述信號處理過程,直至完成對所述信號的處理。
上述的方法,優(yōu)選的,所述第一輸出數(shù)據(jù)具體為所述目標運算對所述信號進行相加運算后的輸出數(shù)據(jù),所述第二輸出數(shù)據(jù)具體為所述目標運算對所述信號進行相乘運算后的輸出數(shù)據(jù)。
上述的方法,優(yōu)選的,還包括:對所述第一數(shù)據(jù)和所述第二數(shù)據(jù)進行分別緩存,并按照先入先出的順序分別輸出所述第一數(shù)據(jù)和所述第二數(shù)據(jù)。
上述的方法,優(yōu)選的,還包括:在控制信號的作用下,對所述第一數(shù)據(jù)和所述第二數(shù)據(jù)以乒乓控制的模式進行數(shù)據(jù)交換。
上述的方法,優(yōu)選的,還包括:對所述目標運算輸出的第一輸出數(shù)據(jù)的高三位和第二輸出數(shù)據(jù)的高三位分別進行溢出處理。
上述的方法,優(yōu)選的,還包括:通過仿真模擬所述信號處理方法,得出最終信號處理結(jié)果,驗證所述最終信號處理結(jié)果的準確性。
一種信號處理的系統(tǒng),包括:
確定單元,用于在信號處理過程中,將當前對信號進行運算的蝶形運算確定為目標運算;
輸出單元,用于輸出所述目標運算的第一輸出數(shù)據(jù)和第二輸出數(shù)據(jù),所述第一輸出數(shù)據(jù)和所述第二輸出數(shù)據(jù)為所述目標運算對所述信號進行算術(shù)運算后的輸出數(shù)據(jù);
數(shù)據(jù)存儲單元,采用fifo結(jié)構(gòu),用于將所述第一輸出數(shù)據(jù)和所述第二輸出數(shù)據(jù)分別存儲至先入先出隊列fifo中,并在所述目標運算的下一級蝶形運算開始前,依據(jù)先入先出的順序依次輸出第三輸出數(shù)據(jù)和所述第一輸出數(shù)據(jù),所述第三輸出數(shù)據(jù)為所述目標運算的上一級蝶形運算輸出的與所述第二輸出數(shù)據(jù)歸屬同一運算類型的輸出數(shù)據(jù);
處理單元,用于將所述第一輸出數(shù)據(jù)和所述第三輸出數(shù)據(jù)作為所述目標運算的下一級蝶形運算的輸入數(shù)據(jù),并將所述目標運算的下一級蝶形運算作為新的目標運算,執(zhí)行上述信號處理過程,直至完成對所述信號的處理。
上述的系統(tǒng),優(yōu)選的,還包括:
數(shù)據(jù)緩存單元,采用fifo結(jié)構(gòu),用于對所述第一數(shù)據(jù)和所述第二數(shù)據(jù)進行分別緩存,并按照先入先出的順序分別輸出所述第一數(shù)據(jù)和所述第二數(shù)據(jù)。
上述的系統(tǒng),優(yōu)選的,還包括:
數(shù)據(jù)交換單元,用于在控制信號的作用下,對所述第一數(shù)據(jù)和所述第二數(shù)據(jù)以乒乓控制的模式進行數(shù)據(jù)交換。
上述的系統(tǒng),優(yōu)選的,還包括:
溢出處理單元,用于對所述目標運算輸出的第一輸出數(shù)據(jù)的高三位和第二輸出數(shù)據(jù)的高三位分別進行溢出處理。
上述的系統(tǒng),優(yōu)選的,還包括:
驗證單元,用于通過仿真模擬所述信號處理方法,得出最終信號處理結(jié)果,驗證所述最終信號處理結(jié)果的準確性。
本申請?zhí)峁┑男盘柼幚淼姆椒ㄖ?,確定目標蝶形運算后的兩個輸出數(shù)據(jù),所述兩個輸出數(shù)據(jù)分別為第一數(shù)據(jù)和第二數(shù)據(jù);對所述第一數(shù)據(jù)和所述第二數(shù)據(jù)進行分別存儲,并按照先入先出的順序分別輸出所述第一數(shù)據(jù)和第三數(shù)據(jù);所述第三數(shù)據(jù)與所述第一數(shù)據(jù)作為下一級蝶形運算的兩個輸入數(shù)據(jù),對所述兩個輸入數(shù)據(jù)進行所述下一級蝶形運算,所述蝶形運算采用流水線設計,所述蝶形運算的結(jié)果直接用于下一級運算,無需等到所述蝶形運算全部完成。這樣就保證了數(shù)據(jù)的連貫性,采用流水線設計,前一級的蝶形運算有運算結(jié)果輸出時,自動啟動下一級的蝶形運算,前一級蝶形運算的結(jié)果直接用于下一級蝶形運算,無需等到前一級蝶形運算全部完成,提高了運算效率。
附圖說明
為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1是本申請一種信號處理的方法實施例1的流程圖;
圖2是本申請一種信號處理的方法實施例2的流程圖;
圖3是本申請一種信號處理系統(tǒng)實施例1的結(jié)構(gòu)示意圖;
圖4是本申請一種信號處理系統(tǒng)實施例2的結(jié)構(gòu)示意圖;
圖5是本申請一種信號處理系統(tǒng)實施例2具體應用的結(jié)構(gòu)示意圖;
圖6是本申請一種信號處理系統(tǒng)實施例2具體應用中數(shù)據(jù)寫入變化規(guī)律圖;
圖7是本申請一種信號處理系統(tǒng)的具體結(jié)構(gòu)示意圖。
具體實施方式
本發(fā)明的核心是提供一種信號處理的方法及系統(tǒng),可以有效地克服讀寫參數(shù)的等待周期,提高運算效率。
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
請參考圖1,示出了本申請一種信號處理的方法實施例1的流程圖,可以包括以下步驟:
步驟s101:在信號處理過程中,將當前對信號進行運算的蝶形運算確定為目標運算。
在對信號進行快速傅里葉變換時,若進行n點快速傅里葉變換,則需要進行的蝶形運算的級數(shù)為
步驟s102:輸出所述目標運算的第一輸出數(shù)據(jù)和第二輸出數(shù)據(jù),所述第一輸出數(shù)據(jù)和所述第二輸出數(shù)據(jù)為所述目標運算對所述信號進行算術(shù)運算后的輸出數(shù)據(jù)。
一個蝶形運算包括加減運算和乘法運算,經(jīng)過蝶形運算中的加減運算后將產(chǎn)生一個加項結(jié)果和一個減項結(jié)果,然后得到的減項結(jié)果與相應的旋轉(zhuǎn)因子相乘,進行乘法運算,得到相乘后的結(jié)果,所述加項結(jié)果和所述相乘后的結(jié)果即為一個蝶形運算后的兩個輸出數(shù)據(jù),加項結(jié)果為所述第一數(shù)據(jù),相乘 后的結(jié)果為所述第二數(shù)據(jù)。
步驟s103:將所述第一輸出數(shù)據(jù)和所述第二輸出數(shù)據(jù)分別存儲至先入先出隊列fifo中,并在所述目標運算的下一級蝶形運算開始前,依據(jù)先入先出的順序依次輸出第三輸出數(shù)據(jù)和所述第一輸出數(shù)據(jù),所述第三輸出數(shù)據(jù)為所述目標運算的上一級蝶形運算輸出的與所述第二輸出數(shù)據(jù)歸屬同一運算類型的輸出數(shù)據(jù)。
所述第一數(shù)據(jù)和所述第二數(shù)據(jù)直接進行分別存儲,方便尋址,且在對所述第二數(shù)據(jù)進行存儲時,先按照先入先出的順序輸出第三數(shù)據(jù),然后再對所述第二數(shù)據(jù)進行存儲。所述輸出的第三數(shù)據(jù)即為之前存儲的前一級蝶形運算后的所述第二數(shù)據(jù)。
步驟s104:將所述第一輸出數(shù)據(jù)和所述第三輸出數(shù)據(jù)作為所述目標運算的下一級蝶形運算的輸入數(shù)據(jù),并將所述目標運算的下一級蝶形運算作為新的目標運算,執(zhí)行上述信號處理過程,直至完成對所述信號的處理。
按照先入先出順序輸出的所述第三數(shù)據(jù)和所述一個蝶形運算后的第一數(shù)據(jù)共同作為下一級蝶形運算的兩個輸入數(shù)據(jù),對所述兩個輸入數(shù)據(jù)進行蝶形運算,所述蝶形運算仍然包括加減運算和乘法運算,蝶形運算后產(chǎn)生兩個輸出數(shù)據(jù),一個為加項結(jié)果即為所述第一數(shù)據(jù),一個為相乘后的結(jié)果即為所述第二數(shù)據(jù),然后對所述第二數(shù)據(jù)進行存儲,并按照先入先出的順序輸出第三數(shù)據(jù),所述第三數(shù)據(jù)與所述第一數(shù)據(jù)作為下一級蝶形運算的兩個輸入數(shù)據(jù),進行下一級蝶形運算。所述蝶形運算采用流水線設計,所述蝶形運算的結(jié)果直接用于下一級運算,無需等到所述蝶形運算全部完成,提高運算效率。
本申請?zhí)峁┑男盘柼幚矸椒ㄖ?,采用流水線設計,前一級的蝶形運算有運算結(jié)果輸出時,自動啟動下一級的蝶形運算,前一級蝶形運算的結(jié)果直接用于下一級蝶形運算,無需等到前一級蝶形運算全部完成,提高了運算效率。
請參考圖2,示出了本申請一種信號處理方法實施例2的流程圖,該方法還包括以下步驟:
步驟105:對所述第一數(shù)據(jù)和所述第二數(shù)據(jù)進行分別緩存,并按照先入先出的順序輸出所述第一數(shù)據(jù)和所述第二數(shù)據(jù)。
每一級蝶形運算后的兩個輸出數(shù)據(jù)均需要進行緩存,而且所述兩個輸出 數(shù)據(jù)即所述第一數(shù)據(jù)和所述第二數(shù)據(jù)進行分別緩存,防止每一級蝶形運算后的輸出結(jié)果出現(xiàn)丟失的情況,以方便對每一級蝶形運算的兩個輸出結(jié)果分別進行讀取。在對每一級蝶形運算后的兩個輸出數(shù)據(jù)進行緩存后,并按照先入先出的順序輸出所述第一數(shù)據(jù)和第二數(shù)據(jù)。數(shù)據(jù)進行緩存后需要經(jīng)過兩個時鐘周期后才可以進行讀取,所以整個流水線過程中,需要插入兩個等待周期。
步驟106:在控制信號的作用下,對所述第一數(shù)據(jù)和所述第二數(shù)據(jù)以乒乓控制的模式進行數(shù)據(jù)交換。
所述控制信號是在運算過程中產(chǎn)生的,而非人為設定的。
所述以乒乓控制的模式進行數(shù)據(jù)交換具體為:當控制信號為低電平時,所述第一數(shù)據(jù)和所述第二數(shù)據(jù)不進行交換,當控制信號為高電平時,所述第一數(shù)據(jù)和所述第二數(shù)據(jù)進行交換。以方便更加準確的獲取需要的數(shù)據(jù)。
該方法還包括:
對所述目標運算輸出的第一輸出數(shù)據(jù)的高三位和第二輸出數(shù)據(jù)的高三位分別進行溢出處理。
為了解決好數(shù)據(jù)的動態(tài)范圍,本設計采用塊浮點的數(shù)據(jù)存取方式,其介于浮點和定點之間。該方法將n點數(shù)據(jù)共享同一個指數(shù),這個指數(shù)為n點數(shù)據(jù)中絕對值最大的數(shù)的指數(shù)。這樣在對數(shù)據(jù)塊進行加法、乘法時只需對尾數(shù)進行相應的加、乘運算。可以保證數(shù)據(jù)動態(tài)范圍的前提下,獲得與定點運算一樣的速度,但是容易在進行尾數(shù)定點加法時產(chǎn)生了數(shù)據(jù)溢出問題。
由于a+b*w、a-b*w復數(shù)運算中最多兩次加法,也即最多兩次進位,因此將輸入的16位數(shù)據(jù)按照符號位擴展成18位,然后進行乘加運算,其中a和b分別為進行蝶形運算的兩個輸入數(shù)據(jù),w為參與蝶形運算的旋轉(zhuǎn)因子。對蝶形運算結(jié)果的高三位進行溢出檢測,由此來決定如何從18位中取16位有效數(shù)據(jù)。同時根據(jù)同級運算溢出的最大位數(shù)來相應增加各級指數(shù)。該溢出處理方案如下:
蝶形運算單元結(jié)果的高三位為000或111時無溢出;001或110時溢出一位;01x或10x時溢出兩位。
當計算結(jié)果出現(xiàn)溢出時,會記錄每一級的最大溢出位數(shù)。本級的運算結(jié)果用作下一級的運算參數(shù),在下一級參數(shù)讀取過程中根據(jù)上一級的溢出標志 對取出的數(shù)據(jù)進行移位處理,保證每一級的參數(shù)均為16位有效數(shù)據(jù)。還可以對每一級的溢出位數(shù)進行求和得到整個fft運算的溢出位數(shù),當fft運算結(jié)束后對計算結(jié)果進行統(tǒng)一處理。
該方法還包括:
步驟107:通過仿真模擬所述信號處理方法,得出最終信號處理結(jié)果,驗證所述最終信號處理結(jié)果的準確性。
為了驗證利用所述信號處理方法計算得到的最終信號處理結(jié)果的準確性,本申請采用了物理驗證和軟件驗證兩種方法,最終對這兩種方法的驗證結(jié)果進行比對,若所述兩種方法的計算結(jié)果相對應,兩個計算結(jié)果的差值在誤差允許的范圍內(nèi),則利用本申請所述的信號處理方法計算得到的結(jié)果準確無誤。
與此同時,比較兩種驗證方法整個過程的時延,還可以驗證此信號處理方法采用流水線設計能大大提高運算效率。
與上述本申請一種信號處理方法實施例1所提供的方法相對應,請參考圖3,本申請還提供了一種信號處理系統(tǒng)實施例1的結(jié)構(gòu)示意圖,在本實施例中,該系統(tǒng)包括:
確定單元101,用于在信號處理過程中,將當前對信號進行運算的蝶形運算確定為目標運算;
輸出單元102,用于輸出所述目標運算的第一輸出數(shù)據(jù)和第二輸出數(shù)據(jù),所述第一輸出數(shù)據(jù)和所述第二輸出數(shù)據(jù)為所述目標運算對所述信號進行算術(shù)運算后的輸出數(shù)據(jù);
數(shù)據(jù)存儲單元103,采用fifo結(jié)構(gòu),用于將所述第一輸出數(shù)據(jù)和所述第二輸出數(shù)據(jù)分別存儲至先入先出隊列fifo中,并在所述目標運算的下一級蝶形運算開始前,依據(jù)先入先出的順序依次輸出第三輸出數(shù)據(jù)和所述第一輸出數(shù)據(jù),所述第三輸出數(shù)據(jù)為所述目標運算的上一級蝶形運算輸出的與所述第二輸出數(shù)據(jù)歸屬同一運算類型的輸出數(shù)據(jù);
處理單元104,用于將所述第一輸出數(shù)據(jù)和所述第三輸出數(shù)據(jù)作為所述目標運算的下一級蝶形運算的輸入數(shù)據(jù),并將所述目標運算的下一級蝶形運算作為新的目標運算,執(zhí)行上述信號處理過程,直至完成對所述信號的處理。
所述蝶形運算采用的流水線設計是由系統(tǒng)狀態(tài)機控制的。此信號處理系統(tǒng)的工作狀態(tài)由一個主狀態(tài)機控制,共有三個工作狀態(tài),idle狀態(tài)為空閑狀態(tài),即為此信號處理系統(tǒng)的初始狀態(tài),當此系統(tǒng)處于空閑狀態(tài)時收到start信號時,系統(tǒng)進入運算狀態(tài)state1中,否則狀態(tài)機機制處于空閑狀態(tài)。state1為系統(tǒng)的一級蝶形運算狀態(tài),若一級蝶形運算結(jié)束,則stage_end=1,系統(tǒng)進入下一狀態(tài)state2中,否則保持state1的狀態(tài)。在state2中,系統(tǒng)判斷所有蝶形運算是否全部完成,若沒有完成,則繼續(xù)在state1狀態(tài)下完成蝶形運算,否則,則回到空閑狀態(tài)。
該系統(tǒng)采用系統(tǒng)狀態(tài)機控制流水線過程,即在一個時鐘周期內(nèi)完成一個蝶形運算單元。使得系統(tǒng)結(jié)構(gòu)簡單、占用系統(tǒng)資源較少且運算效率高。
在圖3的基礎(chǔ)上,本申請?zhí)峁┑囊环N信號處理系統(tǒng)實施例2如圖4所示,該系統(tǒng)還包括:
數(shù)據(jù)緩存單元105,采用fifo結(jié)構(gòu),用于對所述第一數(shù)據(jù)和所述第二數(shù)據(jù)進行分別緩存,并按照先入先出的順序輸出所述第一數(shù)據(jù)和第二數(shù)據(jù)。
該系統(tǒng)中包括兩個數(shù)據(jù)緩存單元,分別用于緩存所述第一數(shù)據(jù)和所述第二數(shù)據(jù),且所述兩個數(shù)據(jù)緩存單元均采用fifo結(jié)構(gòu),簡單且讀寫控制相對容易。數(shù)據(jù)寫入fifo后需要經(jīng)過兩個時鐘周期后才可以讀取,所以整個流水線過程中,需要插入兩個等待周期。
數(shù)據(jù)交換單元106,用于在控制信號的作用下,對所述第一數(shù)據(jù)和所述第二數(shù)據(jù)以乒乓控制的模式進行數(shù)據(jù)交換。
所述以乒乓控制的模式進行數(shù)據(jù)交換具體為:當控制信號為低電平時,為直通模式,即輸出端口1等于輸入端口1,輸出端口2等于輸入端口2。當控制信號為高電平時,所為交叉模式,即輸出端口1等于輸入端口2,輸出端口2等于輸入端口1。以方便更加準確的獲取需要的數(shù)據(jù)。
該系統(tǒng)還包括:
溢出處理單元:用于對所述目標運算輸出的第一輸出數(shù)據(jù)的高三位和第二輸出數(shù)據(jù)的高三位分別進行溢出處理。
當計算結(jié)果出現(xiàn)溢出時,所述溢出處理單元會記錄每一級的最大溢出位數(shù)。本級的運算結(jié)果用作下一級的運算參數(shù),在下一級參數(shù)讀取過程中根據(jù) 上一級的溢出標志對取出的數(shù)據(jù)進行移位處理,保證每一級的參數(shù)均為16位有效數(shù)據(jù)。所述溢出處理單元還可以對每一級的溢出位數(shù)進行求和得到整個fft運算的溢出位數(shù),當fft運算結(jié)束后對計算結(jié)果進行統(tǒng)一處理。
該系統(tǒng)還包括:
驗證單元107,用于通過仿真模擬所述信號處理方法,得出最終信號處理結(jié)果,驗證所述最終信號處理結(jié)果的準確性。
本系統(tǒng)采用物理驗證和軟件驗證兩種方法,物理驗證采用fpga驗證手段。
在實際驗證時,若蝶形運算單元103中的乘法器采用八級流水線設計,時鐘頻率為100mhz,1024點傅里葉變換共需要5120個蝶形運算單元103,理想狀態(tài)下,用c語言進行驗證時1024點傅里葉變換需要51.2us。通過fpga驗證的實際工作時間為52.9us,剩余的1.7us主要是每一級蝶形運算單元的數(shù)據(jù)讀取時間、流水線準備時間和系統(tǒng)狀態(tài)機切換時間。
此驗證數(shù)據(jù)充分證明了系統(tǒng)流水線工作的有效性,即在一個時鐘周期內(nèi)完成一個蝶形運算單元。系統(tǒng)結(jié)構(gòu)簡單且占用系統(tǒng)資源較少,在功耗和運算效率方面均取得了很好的平衡。
請參考圖5,示出了本申請一種信號處理系統(tǒng)實施例2具體應用的結(jié)構(gòu)示意圖。
包括datafifo/a107,datafifo/b108,butterflyunit103,bufferfifo/1109,bufferfifo/2110和dataswitch105;其中datafifo/a107和datafifo/b108的結(jié)構(gòu)一樣,bufferfifo/1109和bufferfifo/2110的結(jié)構(gòu)一樣。
以八點傅里葉變換(fft)為例,cpu把八點原始數(shù)據(jù)按照奇偶序列分別寫入數(shù)據(jù)存儲器fifo/a和fifo/b中,a0、a1、a2、a3寫入fifo/a中,b0、b1、b2、b3寫入fifo/b中。
八點fft共需要三級蝶形運算,第一級第一個蝶形運算得到的兩個結(jié)果將成為下一級運算的a0和a1,第一級第二個蝶形運算得到的兩個結(jié)果將成為下一級運算的b0和b1,第一級第三個蝶形運算單元得到的兩個結(jié)果將成為下一級運算的a2和a3,第一級第四個蝶形運算單元得到的兩個結(jié)果將成 為下一級運算的b2和b3。
這樣存在一個問題就是一次蝶形運算得到的兩個結(jié)果需要存儲到同一個數(shù)據(jù)存儲器中,本申請應用了兩個bufferfifo作為數(shù)據(jù)緩存,蝶形運算單元butterflyunit的運算結(jié)果先存儲至bufferfifo中,由于設計中所采用的fifo在數(shù)據(jù)寫入三個周期后才可以讀取,三個周期后把第一個數(shù)據(jù)+r0通過乒乓操作單元dataswitch寫入datafifo/a中,該時刻沒有數(shù)據(jù)寫入datafifo/b。下一時刻把-r0寫入datafifo/a中,+r1寫入datafifo/b中。下一時刻把+r2寫入datafifo/a中,把-r1寫入datafifo/b中。下一時刻把-r2寫入datafifo/a中,把+r3寫入datafifo/b中。下一時刻把-r3寫入datafifo/b中。當fft運算到第二級時寫入數(shù)據(jù)的規(guī)律和第一級略有區(qū)別其變化規(guī)律如圖6所示。
在圖5中乒乓操作單元dataswitch在控制信號en的作用下工作,en信號的變化規(guī)律如圖6所示,第一級生成連續(xù)兩個a,然后是連續(xù)兩個b,第二級則為先計算得到連續(xù)四個a,接著計算得到四個b,所以乒乓切換的頻率隨著級數(shù)的增加變慢。
同時由于fft運算先生成的結(jié)果都將是下一級的a,需要等待b生成后才可以向datafifo/b中寫入數(shù)據(jù),這樣寫入datafifo/b的變換規(guī)律如圖6所示。最終的運算結(jié)果將保存在datafifo/a和bufferfifo/2中。
請參考圖7,示出了本申請一種信號處理系統(tǒng)的具體結(jié)構(gòu)示意圖,該系統(tǒng)包括:
addressgenerator111,twiddlerom112,overflowhanding113和114,datafifo/a115,datafifo/b116,dataselector117和118,dataswitch105,butterflyunit103,bufferfifo/1119和bufferfifo/2120。
所述addressgenerator111,用于根據(jù)旋轉(zhuǎn)因子的地址變換規(guī)律,確定旋轉(zhuǎn)因子的地址,并根據(jù)所述旋轉(zhuǎn)因子的地址獲取所述旋轉(zhuǎn)因子。
所述twiddlerom112,用于對所述獲取的旋轉(zhuǎn)因子進行存儲。
所述butterflyunit103,用于對所述旋轉(zhuǎn)因子和輸入運算參數(shù)進行蝶形運算。
所述overflowhanding113和114,用于對所述蝶形運算結(jié)果的高三位進行溢出檢測,若所述蝶形運算結(jié)果的高三位出現(xiàn)溢出,則進行溢出標志。
所述bufferfifo/1119和bufferfifo/2120,采用fifo結(jié)構(gòu),對所述蝶形運算結(jié)果進行緩存,并按照先入先出的順序輸出所述蝶形運算后的結(jié)果。
所述dataswitch105,用于在控制信號的作用下,以乒乓控制的模式對所述數(shù)據(jù)緩存單元104輸出的蝶形運算結(jié)果進行交換。
所述dataselector117和118,用于對輸入運算參數(shù)進行選擇。
所述datafifo/a115和datafifo/b116,采用fifo結(jié)構(gòu),用于對所述選擇的運算參數(shù)和所述蝶形運算結(jié)果進行存儲。
綜上所述,本申請?zhí)峁┑囊环N信號處理的方法及系統(tǒng),能夠有效地克服讀寫參數(shù)的等待周期,提高運算效率
需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同要素。
以上對本發(fā)明所提供的一種信號處理的方法及系統(tǒng)進行了詳細介紹,本文中應用了具體個例對本發(fā)明的實施方式進行了闡述,以上實施例的說明只是用于幫助理解本申請的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式及應用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應理解為對本發(fā)明的限制。