本實(shí)用新型屬于半導(dǎo)體集成電路中數(shù)字集成電路技術(shù)領(lǐng)域,尤其涉及要求計(jì)算量復(fù)雜、計(jì)算速度快、占用面積小的SoC電路中。
背景技術(shù):
SoC(System On Chip,片上系統(tǒng))系統(tǒng)中常常需要完成信息的獲取、處理、存儲(chǔ)、傳輸?shù)綀?zhí)行,其中常常需要完成一些大數(shù)據(jù)的傳輸和運(yùn)算,其中有一些常用的不可或缺并且非?;A(chǔ)的運(yùn)算,如數(shù)字濾波,傅里葉變換,模平方,乘累加以及相應(yīng)的加窗運(yùn)算等等,而且每種運(yùn)算又可以分為實(shí)數(shù)運(yùn)算或者復(fù)數(shù)運(yùn)算。這些運(yùn)算有一些共同的特點(diǎn),即都有一定的規(guī)律可循,都會(huì)有較多的數(shù)據(jù)流參與運(yùn)算,參加運(yùn)算的數(shù)據(jù)輸出頻率與輸入頻率一致。一般常常借助于內(nèi)部處理器DSP或CPU運(yùn)算完成,而借助于內(nèi)部處理器,其運(yùn)算能力是一個(gè)較大的問題,尤其是復(fù)數(shù)運(yùn)算。通過軟件實(shí)現(xiàn)復(fù)數(shù)運(yùn)算,不僅會(huì)占用CPU的資源,影響CPU控制功能的發(fā)揮,更重要的是運(yùn)算速度受到影響,這在某些實(shí)時(shí)性要求高的場(chǎng)合是無法接受的。比較好的一個(gè)解決措施是將這些運(yùn)算做成硬件加速單元IP,與CPU一起完美的實(shí)現(xiàn)系統(tǒng)的功能,將CPU的能力發(fā)揮到最大化。因此要在SOC中增加運(yùn)算加速單元IP,滿足運(yùn)算能力的要求。為了做到一定的通用性,加速單元設(shè)計(jì)成可配置類型,以便實(shí)現(xiàn)更多的運(yùn)算。
中國(guó)專利申請(qǐng)“一種基于改進(jìn)的高基CORDIC算法的復(fù)數(shù)乘法運(yùn)算單元”(CN103488459A),文中提出一種改進(jìn)的高基CORDIC算法與基于改進(jìn)的高基CORDIC算法的復(fù)數(shù)乘法運(yùn)算單元。不同與本實(shí)用新型提出的實(shí)現(xiàn)復(fù)數(shù)乘法的方法,本實(shí)用新型中提出的硬件加速單元在實(shí)現(xiàn)復(fù)數(shù)乘法時(shí),具有運(yùn)算速度快,占用資源少等特性。
中國(guó)專利申請(qǐng)“一種FFT實(shí)現(xiàn)裝置和方法”(CN104268124A),文中提出克服FFT并行流水線結(jié)構(gòu)硬件資源開銷大而實(shí)用新型的一種FFT實(shí)現(xiàn)裝置和方法,但其仍是并行FFT實(shí)現(xiàn)。相對(duì)本實(shí)用新型方法具有硬件資源開銷大,內(nèi)部實(shí)現(xiàn)結(jié)構(gòu)復(fù)雜。
中國(guó)專利申請(qǐng)“一種可變點(diǎn)數(shù)的浮點(diǎn)FFT處理器”(CN104268122A),文中提出的浮點(diǎn)FFT處理器,其占用資源多。和本實(shí)用新型提出的算法實(shí)現(xiàn)方案不同。
2014年03月12日專利庫公開了一件名稱為“一種支持多模式的并行FFT信號(hào)處理器及方法”(CN103634241A),提出的并行FFT信號(hào)處理及方法,采用分時(shí)復(fù)用輸入接口,對(duì)4路FFT數(shù)據(jù)流旁路不處理,并需要在輸出接口使用分頻時(shí)鐘做為輸出時(shí)鐘。而本實(shí)用新型提出只需要一個(gè)工作時(shí)鐘,工作狀態(tài)穩(wěn)定,使用資源少。
技術(shù)實(shí)現(xiàn)要素:
本實(shí)用新型所要解決的技術(shù)問題是提供一種SoC系統(tǒng)中通用可配置加速單元的IP電路。
為解決上述技術(shù)問題,本實(shí)用新型提供一種SoC系統(tǒng)中通用可配置加速單元的IP電路,其特征是,可配置加速單元IP電路包括數(shù)據(jù)存儲(chǔ)器、運(yùn)算器和數(shù)據(jù)交換模塊,其中,數(shù)據(jù)存儲(chǔ)器中包括外部數(shù)據(jù)存儲(chǔ)器、內(nèi)部系數(shù)存儲(chǔ)器和窗系數(shù)存儲(chǔ)器,運(yùn)算器包括實(shí)部運(yùn)算器和虛部運(yùn)算器;
通過配置外置的模式寄存器產(chǎn)生控制信號(hào)控制可配置加速單元IP電路;
內(nèi)部系數(shù)存儲(chǔ)器和窗系數(shù)存儲(chǔ)器用于將存儲(chǔ)的復(fù)數(shù)分為實(shí)部運(yùn)算數(shù)據(jù)和虛部運(yùn)算數(shù)據(jù)分別輸入到實(shí)部運(yùn)算器和虛部運(yùn)算器;虛部運(yùn)算器通過外部數(shù)據(jù)存儲(chǔ)器把運(yùn)算的中間運(yùn)算結(jié)果的實(shí)數(shù)數(shù)據(jù)送入實(shí)部運(yùn)算器內(nèi),實(shí)部運(yùn)算器通過外部數(shù)據(jù)存儲(chǔ)器把運(yùn)算的中間運(yùn)算結(jié)果的虛數(shù)數(shù)據(jù)送入虛部運(yùn)算器內(nèi);
實(shí)部運(yùn)算器和虛部運(yùn)算器最后將輸出的實(shí)部數(shù)據(jù)和虛部數(shù)據(jù)輸出和輸入至數(shù)據(jù)交換模塊進(jìn)行數(shù)據(jù)交換。
實(shí)部運(yùn)算器和虛部運(yùn)算器內(nèi)部結(jié)構(gòu)相同。
實(shí)部運(yùn)算器和虛部運(yùn)算器主要由陣列乘法器、累加器/加法器、多個(gè)MUX選擇器和多個(gè)數(shù)據(jù)寄存器組成。
實(shí)部運(yùn)算器和虛部運(yùn)算器的時(shí)序相同。
輸入的多個(gè)內(nèi)部系數(shù)復(fù)數(shù)數(shù)據(jù)的實(shí)部數(shù)據(jù)先后在依次的一個(gè)時(shí)鐘周期時(shí)刻存入寄存器reg1中,后分別在相應(yīng)的下一個(gè)時(shí)鐘周期分別送入寄存器reg2、reg4中;
虛部運(yùn)算器運(yùn)算的中間運(yùn)算結(jié)果通過數(shù)據(jù)交換以及輸入的內(nèi)部系數(shù)復(fù)數(shù)數(shù)據(jù)的虛部數(shù)據(jù)也進(jìn)入實(shí)部運(yùn)算器內(nèi)部并存入寄存器reg3中;
窗系數(shù)的實(shí)部數(shù)據(jù)及內(nèi)部第一次碟算的實(shí)數(shù)結(jié)果數(shù)據(jù)通過MUX選擇器與寄存器reg4中的數(shù)據(jù)經(jīng)乘法器進(jìn)行乘法運(yùn)算,并把乘法運(yùn)算結(jié)果送至寄存器reg5中;寄存器reg2、寄存器reg5及寄存器reg7中的數(shù)據(jù)經(jīng)MUX選擇器送至寄存器reg6中;寄存器reg6中的數(shù)據(jù)經(jīng)累加器或加法器進(jìn)行累加運(yùn)算送到寄存器reg7中,寄存器reg7中的數(shù)據(jù)經(jīng)反相器后隨時(shí)鐘流水送至寄存器reg8和reg9,同時(shí)經(jīng)MUX選擇送回寄存器reg2中并進(jìn)行下一步流水運(yùn)算;
同理,第二次碟算輸入的復(fù)數(shù)數(shù)據(jù)的實(shí)部數(shù)據(jù)進(jìn)入實(shí)部運(yùn)算器內(nèi)并也進(jìn)行相同的流水運(yùn)算,第二次碟算的窗系數(shù)進(jìn)入實(shí)部運(yùn)算器內(nèi)部進(jìn)行相同的串行流水運(yùn)算;
最后在寄存器reg9讀取第二次碟算運(yùn)算的實(shí)部數(shù)據(jù)結(jié)果。
采用基4的尋址方式來完成基2的蝶算,即每次輸入4個(gè)復(fù)數(shù)數(shù)據(jù),完成4個(gè)點(diǎn)的4次蝶算,再輸出4個(gè)結(jié)果,并按照每個(gè)主時(shí)鐘周期輸入或輸出一個(gè)數(shù)據(jù)進(jìn)行流水。
本實(shí)用新型所達(dá)到的有益效果:
本設(shè)計(jì)提出的是一種有效的快速傅里葉變換的實(shí)現(xiàn)電路,且能夠?qū)崿F(xiàn)數(shù)字FIR濾波功能,并且可以實(shí)現(xiàn)模平方,乘累加以及相應(yīng)的加窗運(yùn)算等等運(yùn)算,并且僅僅通過硬件結(jié)構(gòu)實(shí)現(xiàn)加速算法,無需CPU等資源開銷,提高SoC系統(tǒng)運(yùn)算速度和提高CPU資源利用率。
附圖說明
圖1可配置加速單元IP結(jié)構(gòu)簡(jiǎn)圖;
圖2運(yùn)算器電路內(nèi)部硬件結(jié)構(gòu)圖;
圖3 4點(diǎn)蝶算圖;
圖4實(shí)部運(yùn)算結(jié)構(gòu)流程圖;
圖5虛部運(yùn)算結(jié)構(gòu)流程圖;
圖6實(shí)部算法流程圖;
圖7虛部算法流程圖。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本實(shí)用新型作進(jìn)一步描述。以下實(shí)施例僅用于更加清楚地說明本實(shí)用新型的技術(shù)方案,而不能以此來限制本實(shí)用新型的保護(hù)范圍。
信號(hào)處理的基本結(jié)構(gòu)是矢量運(yùn)算,實(shí)數(shù)和復(fù)數(shù)矢量運(yùn)算功能包括乘法、乘法累加和幅度平方,結(jié)合其它各種信號(hào)處理的算法可以完成頻域?yàn)V波、信號(hào)分析和信號(hào)綜合等功能,這就是SoC系統(tǒng)中的可配置加速單元IP的核心運(yùn)算。通過對(duì)常用信號(hào)處理的分析,加速單元IP需要實(shí)現(xiàn)實(shí)數(shù)/復(fù)數(shù)的傅里葉變換、數(shù)字濾波、模平方、乘累加以及各種運(yùn)算的加窗運(yùn)算。在運(yùn)算結(jié)構(gòu)之外設(shè)置模式寄存器,可配置加速單元IP就是通過對(duì)模式寄存器的配置,產(chǎn)生相應(yīng)的控制信號(hào),實(shí)現(xiàn)各種運(yùn)算。
可配置加速單元IP結(jié)構(gòu)簡(jiǎn)圖如圖1所示,主要由數(shù)據(jù)存儲(chǔ)器(包括外部數(shù)據(jù)存儲(chǔ)器、內(nèi)部系數(shù)存儲(chǔ)器、窗系數(shù)存儲(chǔ)器)、運(yùn)算器、數(shù)據(jù)交換、模式寄存器部分組成,通過配置模式寄存器,產(chǎn)生各種相應(yīng)模式下的控制信號(hào)到可配置加速單元的數(shù)據(jù)存儲(chǔ)器、運(yùn)算器、數(shù)據(jù)交換模塊部分。內(nèi)部系數(shù)數(shù)據(jù)存儲(chǔ)器和窗系數(shù)存儲(chǔ)器把復(fù)數(shù)分為實(shí)部運(yùn)算數(shù)據(jù)和虛部運(yùn)算數(shù)據(jù)分別輸入到可配置加速單元的運(yùn)算器部分,實(shí)部運(yùn)算需要的數(shù)據(jù)進(jìn)入實(shí)部運(yùn)算器,虛部運(yùn)算需要的數(shù)據(jù)進(jìn)入虛部運(yùn)算器;而虛部運(yùn)算器的一部分中間運(yùn)算結(jié)果會(huì)通過外部系數(shù)數(shù)據(jù)存儲(chǔ)器把運(yùn)算的實(shí)數(shù)部分送入實(shí)部運(yùn)算器內(nèi),同理實(shí)部運(yùn)算器的一部分中間運(yùn)算結(jié)果會(huì)通過外部系數(shù)數(shù)據(jù)存儲(chǔ)器把運(yùn)算的虛數(shù)部分送入虛部運(yùn)算器內(nèi);實(shí)部數(shù)據(jù)和虛部數(shù)據(jù)運(yùn)算器內(nèi)部具有相同的運(yùn)算器硬件結(jié)構(gòu),并分為實(shí)部數(shù)據(jù)和虛部數(shù)據(jù)輸出和進(jìn)行相應(yīng)的數(shù)據(jù)交換。
整個(gè)可配置加速單元IP的核心是運(yùn)算器,所有的運(yùn)算都是通過這一部分結(jié)構(gòu)來完成。每個(gè)運(yùn)算器都是由陣列乘法器、累加器(即乘累器)或加法器和數(shù)據(jù)寄存器組成的。運(yùn)算器電路內(nèi)部硬件結(jié)構(gòu)圖及內(nèi)部硬件之間的連接關(guān)系如圖2所示。實(shí)部和虛部具有相同的內(nèi)部硬件資源結(jié)構(gòu),主要有寄存器、加法器、乘法器、MUX選擇器組成。其流水運(yùn)算及數(shù)據(jù)流水結(jié)構(gòu)關(guān)系是A1、A2、B1、B2的實(shí)部數(shù)據(jù)先后在時(shí)鐘周期clk1和時(shí)鐘周期clk2、clk3、clk4時(shí)刻進(jìn)入存入寄存器reg1中,后分別在相應(yīng)的下一個(gè)時(shí)鐘周期分別送入寄存器reg2、reg2、reg4、reg4中。虛部運(yùn)算器的中間一些運(yùn)算結(jié)果通過數(shù)據(jù)交換以及B1、B2的虛部也會(huì)進(jìn)入實(shí)部運(yùn)算器內(nèi)部并存入寄存器reg3中。窗系數(shù)存儲(chǔ)器的實(shí)部數(shù)據(jù)及內(nèi)部第一次碟算的部分實(shí)數(shù)結(jié)果通過MUX選擇與寄存器reg4中的數(shù)據(jù)進(jìn)行乘法運(yùn)算,并把乘法運(yùn)算結(jié)果送至寄存器reg5中。寄存器reg2、寄存器reg5及寄存器reg7中的數(shù)據(jù)經(jīng)MUX選擇送至寄存器reg6中。寄存器reg6中的數(shù)據(jù)進(jìn)行了累加運(yùn)算送到寄存器reg7中,reg7中的數(shù)據(jù)經(jīng)反相器后隨時(shí)鐘流水送至寄存器reg8和reg9,以及經(jīng)MUX選擇送回reg2中并進(jìn)行下一步流水運(yùn)算。同理第二次碟算A3、A4、B3、B4的實(shí)部數(shù)據(jù)進(jìn)入實(shí)部運(yùn)算器內(nèi)并也進(jìn)行相同的流水運(yùn)算,第二次碟算的窗系數(shù)進(jìn)入實(shí)部運(yùn)算器內(nèi)部進(jìn)行相同的串行流水運(yùn)算。最后在寄存器reg9讀取第二次碟算運(yùn)算的實(shí)部數(shù)據(jù)結(jié)果。硬件運(yùn)算器結(jié)構(gòu)實(shí)現(xiàn)簡(jiǎn)單,容易實(shí)現(xiàn),節(jié)約成本。
運(yùn)算器與數(shù)據(jù)存儲(chǔ)器模塊部分的外部數(shù)據(jù)存儲(chǔ)器和窗系數(shù)存儲(chǔ)器以及內(nèi)部的系數(shù)存儲(chǔ)器都有接口。在這些運(yùn)算中最復(fù)雜的是復(fù)數(shù)快速傅里葉變換(FFT)及其逆變換(IFFT)算法和復(fù)數(shù)數(shù)字濾波(FIR)算法,這兩個(gè)算法實(shí)現(xiàn)的同時(shí),所需用到的結(jié)構(gòu)可以滿足模平方、乘累加等運(yùn)算的需要。因此運(yùn)算器結(jié)構(gòu)的設(shè)計(jì)首先能夠?qū)崿F(xiàn)最復(fù)雜的FFT和FIR運(yùn)算以及實(shí)現(xiàn)比較高的運(yùn)算效率。
無窗快速傅里葉變換的算法是:
加窗快速傅里葉變換的算法為:
其中C(n)是窗系數(shù),
式(1)和(2)中,h(n)是輸入的數(shù)據(jù)流,N個(gè)點(diǎn),由實(shí)部RE(n)和虛部IM(n)構(gòu)成:
h(n)=RE(n)+iIM(n) (3)
FFT運(yùn)算的系數(shù)e-j2πkn/N也是復(fù)數(shù),可以表示為WnR+iWnI,WnR為該復(fù)數(shù)的實(shí)部,WnI為該復(fù)數(shù)的虛部。
FFT算法中最常用的是基2的蝶算,為了提高運(yùn)算速度,同時(shí)兼顧FIR等算法的需要,采用基4的尋址方式來完成基2的蝶算,即每次輸入4個(gè)數(shù)據(jù),完成4個(gè)點(diǎn)的4次蝶算,再輸出4個(gè)結(jié)果,并按照每個(gè)主時(shí)鐘周期輸入或輸出一個(gè)數(shù)據(jù)進(jìn)行流水。輸入的數(shù)據(jù)表示為A1,B1,A2,B2,……,系數(shù)表示為W1,W2,……,均為復(fù)數(shù),其實(shí)部以下標(biāo)R表示,虛部以下標(biāo)I表示。圖3所示為四點(diǎn)FFT的運(yùn)算過程,即蝶算過程。先以一個(gè)碟算過程為例進(jìn)行說明,復(fù)數(shù)A1可分為實(shí)部和虛部,即A1也可以表示為A1=AR+iAI,AR為復(fù)數(shù)A1的實(shí)部,AI為復(fù)數(shù)A1的虛部,同理B1可表示為B1=BR+iBI,W1可以表示為W1=WR+iWI。
根據(jù)復(fù)數(shù)運(yùn)算法則,一個(gè)蝶算的過程是:
A1+B1W1=(AR+iAI)+(BR+iBI)(WR+iWI)
=(AR+iAI)+[(BRWR-BIWI)+i(BRWI+BIWR)]
=[AR+(BRWR-BIWI)]+i[AI+(BRWI+BIWR)] (4)
通過對(duì)上述運(yùn)算的分析,將整個(gè)運(yùn)算器分為兩部分,實(shí)部運(yùn)算器(AE-RE)和虛部運(yùn)算器(AE-IM)。運(yùn)算器是這樣分工的:凡是產(chǎn)生實(shí)部的運(yùn)算都是在實(shí)部運(yùn)算器中進(jìn)行的,凡是產(chǎn)生虛部的運(yùn)算都是在虛部運(yùn)算器中進(jìn)行的。因此兩個(gè)運(yùn)算器結(jié)構(gòu)和時(shí)序都相同。這樣既降低了運(yùn)算器結(jié)構(gòu)設(shè)計(jì)的復(fù)雜性,又提高了運(yùn)算效率。具體的說來,式(4)中第一個(gè)括號(hào)內(nèi)的AR+(BRWR-BIWI)運(yùn)算是在實(shí)部運(yùn)算器中進(jìn)行,第二個(gè)括號(hào)內(nèi)的AI+(BRWI+BIWR)是在虛部運(yùn)算器中進(jìn)行,且二者同時(shí)同步進(jìn)行。從中可以看出,輸入實(shí)部運(yùn)算器的數(shù)據(jù)除了外部存貯器中存貯數(shù)據(jù)的實(shí)部之外,還需要與系數(shù)相乘的數(shù)據(jù)的虛部。輸入虛部運(yùn)算器的數(shù)據(jù)也是同樣,那么運(yùn)算器需要既能夠輸入外部數(shù)據(jù)存貯器中的數(shù)據(jù),實(shí)部和虛部運(yùn)算器相互之間還能夠進(jìn)行數(shù)據(jù)交換,以便完成復(fù)數(shù)運(yùn)算操作。
實(shí)部/虛部運(yùn)算器的結(jié)構(gòu)流程圖如圖4和圖5所示。實(shí)部和虛部具有相同的運(yùn)算流程和需要的硬件資源結(jié)構(gòu),主要有乘法器、加法器及邏輯門實(shí)現(xiàn),需要的硬件結(jié)構(gòu)簡(jiǎn)單,容易實(shí)現(xiàn)。實(shí)部和虛部完成的算法流程和寄存器數(shù)據(jù)流水也相同。在運(yùn)算過程中,實(shí)部和虛部同時(shí)進(jìn)行,并且運(yùn)算流程和硬件結(jié)構(gòu)形同,而其中的流水過程如圖6和圖7所示。通過圖6和圖7可以看出實(shí)部和虛部具有相同的運(yùn)算步驟和運(yùn)算時(shí)序。
支持16點(diǎn)~1024點(diǎn)的FFT運(yùn)算,采用200MHZ的時(shí)鐘執(zhí)行運(yùn)算速度如下表:
以上所述僅是本實(shí)用新型的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本實(shí)用新型技術(shù)原理的前提下,還可以做出若干改進(jìn)和變形,這些改進(jìn)和變形也應(yīng)視為本實(shí)用新型的保護(hù)范圍。