① 在DSP中實現FFT演算法,C語言編寫,編譯成功,但是鏈接失敗,報錯為重復定義宏變數,請高手指教。
遇到過相同的問題,是調用的函數在dsp的編譯環境中不支持。
比如ITOA()等,編譯是沒有問題的,但是鏈接的時候就會出錯。
檢查一下使用的函數是不是可以被使用吧。
② 請教如何使用DSP裡面的DSP演算法庫FFT和IFFT
以TI的DSP2812測試,系統時鍾150M,程序調入RAM中運行。
分別測試512點FFT,256點FFT和128點FFT四個大步驟用時。
512點
用時(us)
1步倒序(RFFT32_brev)
42.4
2步計算(fft.cal)
223.8
3步實部虛部分離(fft.split)
13.1
4步計算幅值(fft.mag)
13.8...
③ 基於dsp的 f.i.r低通濾波器設計
題目:利用DSP的FIR濾波器設計
數字處理器(DSP)有很強的數據處理能力,它在高速數字信號處理領域有廣泛的應用,例如數字濾波、音頻處理、圖像處理等。相對於模擬濾波器,數字濾波器沒有漂移,能夠處理低頻信號,頻率響應特性可做成非常接近於理想的特性,且精度可以達到很高,容易集成等。使用可編程的DSP晶元實現數字濾波可以通過修改濾波器的參數十分方便地改變濾波器的特性,下面主要說明利用TMS320VC54x DSP晶元設計實現FIR數字濾波器。
設計目的意義
一個實際的應用系統中,總存在各種干擾,所以在系統設計中,濾波器的好壞將直接影響系統的性能。使用DSP進行數字處理,可以對一個具有雜訊和信號的混合信號源進行采樣,再經過數字濾波,濾除雜訊,就可以提取有用信號了。所以說,數字濾波器是DSP最基本的應用領域,熟悉基於DSP的數字濾波器能為DSP應用系統開發提供良好的基礎。
技術指標
1、數字濾波器的頻率參數主要有:①通帶截頻:為通帶與過渡帶的邊界點,在該點信號增益下降到規定的下限。②阻帶截頻:為阻帶與過渡帶的邊界點,在該點信號衰耗下降到規定的下限。③轉折頻率:為信號功率衰減到1/2(約3dB)時的頻率,在很多情況下,也常以fc作為通帶或阻帶截頻。④當電路沒有損耗時,固有頻率:就是其諧振頻率,復雜電路往往有多個固有頻率。
2、增益與衰耗
濾波器在通帶內的增益並非常數。①對低通濾波器通帶增益,一般指ω=0時的增益;高通指ω→∞時的增益;帶通則指中心頻率處的增益。②對帶阻濾波器,應給出阻帶衰耗,衰耗定義為增益的倒數。③通帶增益變化量指通帶內各點增益的最大變化量,如果通帶增益變化量以dB為單位,則指增益dB值的變化量。
3、阻尼系數與品質因數
阻尼系數α是表徵濾波器對角頻率為ω0信號的阻尼作用,是濾波器中表示能量衰耗的一項指標,它是與傳遞函數的極點實部大小相關的一項系數。
4、靈敏度
濾波電路由許多元件構成,每個元件參數值的變化都會影響濾波器的性能。
5、群時延函數
在濾波器設計中,常用群時延函數評價信號經濾波後相位失真程度。
以上的幾個技術指標是一般濾波器的特性,但在實際應用中,數字濾波器通常用來實現選頻操作,因此在利用DSP實現數字濾波器設計中要求的技術指標主要為在頻域中給出的幅頻響應和相頻響應。如下圖所示
幅頻響應和相頻響應特性曲線
對於幅頻響應,它的含義是信號通過系統之後的輸出信號的幅度與它輸入時的信號的幅度的比值,一般以分貝值表示。對於相頻響應,含義是信號通過系統之後的輸出信號的相位與它輸入時的信號的相位之差,在運用線性相頻響應指標進行濾波器設計具有如下優點:①只包含實數演算法,不涉及復數運算;②不存在延遲失真,只有固定數量的延遲;③可以採用FFT演算法,從而提高運行效率;④由於FIR濾波器的單位脈沖響應是有限長序列,故FIR濾波器沒有不穩定的問題,且誤差較小。
基本原理
利用DSP實現FIR濾波器的設計方法主要有窗函數法和頻率抽樣法,其中窗函數法是基本的設計方法,這里採用窗函數法設計FIR濾波器。設希望得到的濾波器理想響應為 ,那麼FIR濾波器的設計就在於尋找一個傳遞函數
去逼進 ,設
這里 就是傅立葉級數的系數。在這種逼近中,最直接的一種方法就是從單位脈沖響應 入手,使 逼近理想的單位脈沖響應 。由於 是一個無限長序列,因此,最簡單的方法就是對 做截尾處理,即得到一個近似的傳遞函數
上式中,Q就是最終確定FIR濾波器的階數,Q越大,近似程度就越高。對 截尾,實際上就是對 乘上一個矩形窗口 ,即
令z= ,則
其脈沖響應系數為 , ,…, , , ,…, , 。為使 具有因果性,延時Q個樣值,可得:
令n+Q=k,上式成為
令 ,N=2Q,得
式中, 是脈沖響應系數,這里 …, ,…, 。
一般來說,FIR數字濾波器輸出 的Z變換形式 與輸入 的Z變換形式之間的關系如下:
實現結構如下圖所示:
Z變換結構圖
從上面的Z變換和結構圖可以很容易得出FIR濾波器的差分方程表示形式,即對上式進行反Z變換得:
上式為FIR數字濾波器的時域表示方法,其中x(n)是在時間n的濾波器的輸入抽樣值,根據上式即可對濾波器進行設計。
硬體設計
1、DSP晶元
根據設計原理,實現的核心器件採用美國德州儀器公司生產的低功耗定點數字信號處理器晶元TMS320C5402。選擇該晶元主要是因為它是目前最常用的低成本DSP晶元,而且包括以下主要特點:
⑴運算速度快,最快可達532MIPS;
⑵多匯流排結構,片內共有8 條匯流排(1條程序存儲器匯流排、3條數據存儲匯流排和4條地址匯流排);
⑶CPU採用馮? 諾依曼並行結構設計,使其能在一條指令周期內,高速地完成多項算術運算;
⑷片內集成了4K×16bitROM和16K×16bit的雙存取RAM;
⑸豐富的片上外圍電路(通用I/O 引腳,定時器,時鍾發生器, HPI 介面,多通道緩沖串列口McBSP)使其與外部介面方便;
⑹3.3V I/O電壓,1.8V核點壓,工作電流平均值為75mA,其中核45mA,I/O約30mA;
⑺144腳BGA封裝,使體積減少,功耗降低。
2、AD和DA電路
在本數字濾波器系統中選擇了TI公司的TLV1570晶元作為模數轉換器件,8通道10位2.7到5.5 V低電壓模數轉換晶元。TLVl570在3V電壓下的采樣頻率為625KSPS,輸入信號最高頻率不能超過300K。
由於模數轉換選擇了10位器件,為了簡化程序代碼,減少DSP 的運算工作量,在本數字濾波器系統中選擇了TI公司的TLV5608晶元,它是一款8通道10位2.7到5.5V低電壓數模轉換晶元。
3、電源電路
根據DSP晶元工作的電壓電流需求,及晶元採用雙電源供電對加電順序的要求,考慮使用TI公司的電源轉換晶元TPS73HD318,其輸出電壓為一路3.3V、一路1.8V,每路電源的最大輸出電流為750mA,能滿足本系統的供電需求。而且TPS73xx具有非常低的靜態電流,能使穩壓器輸出穩定。
4、時鍾電路
C54xx系列的時鍾端子為X1和X2/CLKIN,採用無源晶振提供時鍾信號,由於DSP有一組端子可以用來調整其工作頻率的高低,故對晶振頻率大小的選定沒有特別的要求,這里選用10Mhz的晶振。
5、復位電路
為了克服DSP系統因時鍾頻率較高導致在運行時可能發生的干擾和被干擾的現象,最好是使用具有監視(Watchdog)功能的自動復位電路,於是採用專門的自動復位晶元MAX706。MAX706的電源為3.1V~5.0V,低電平復位輸出,復位門限為3.08V。
6、未用端子處理
根據使用DSP晶元的相關原則,以及晶元手冊具體決定未用端子是接上拉電阻還是懸空。
7、基於上述的各部分電路組成,可以得出DSP數字濾波器的整體硬體電路連線圖,如下所示
程序設計
1、設計思路
⑴在DSP進行數字濾波運算前首先要進行初始化,只有正確設置了DSP的初始狀態才能保證晶元能正常運行。本系統主要進行以下兩方面的初始化:
①寄存器初始化:狀態寄存器ST0、狀態寄存器ST1、處理器模式控制寄存器PMST、軟體等待狀態寄存器SWWSR、組交換控制寄存器BSCR和時鍾模式寄存器等。
②中斷矢量表初始化:根據DSP晶元對各中斷矢量的設置位置編寫一個子程序;設置PMST控制寄存器;連接時將矢量表重定位到IPTR指定的地址。
⑵其次就是FIR 數字濾波的子程序設計,主要步驟如下:
①查詢SPCR11寄存器的第二位,當為1時說明read ready,將DRR11的值讀入AR3所指向的地址,該值為最新的采樣值。
②將最新的采樣值減去200h,然後AR3的值減1。
③執行MAC指令。
④將累加器的值送給變數Y,並將Y加上200h。
⑤查詢SPCR20寄存器的第二位,當為1時說明writeready,將Y值賦給DXR10,該值為濾波器輸出值。
⑥循環執行上面步驟。
2、程序流程圖
依據上述程序設計思路可以得到利用DSP實現FIR濾波器設計的程序流程圖,如下
3、程序代碼
由於初始化程序部分過於龐大繁雜,這里只給出用MAC指令編程實現FIR低通濾波器的程序片斷:
FILT_task1
LD Store_SICX,A
STLM A,ar4
STM #1,ar0 ;間址
STM #28,bk
LD DEM_Out,A
STL A,*ar4+% ;輸入信號:實部
STM #Coef_Tab1,ar5 ;濾波器實部系數地址
LD #0,A
STM #27,brc
RPTB SICXU-1
MAC *AR4+0%,*AR5+,A
SICXU LD A,-16,A ;低通濾波結果
LD C7FFF,B
MIN A
NEG B
MAX A
STL A,DEM_Out
LDM AR4,A
STL A,Store_SICX
RET
Coef_Tab1
.word 100 ;h(0)
.word 7 ;h(1)
… ;脈沖響應系數
.word -248
.word -71 ;h(N-1)
.end
總結
通過利用DSP的FIR濾波器設計,對DSP晶元的使用,以及利用DSP晶元組成的基本系統的相關電路有了比較深的認識。熟悉DSP晶元的系統設計和應用開發流程,並利用圖書館、網路、詢問同學等方式查找資料和解決相關的難題,這是最基礎的工作,也是最關鍵的步驟。這樣做可以培養自己的動手解決問題的能力和獨立思考的處事方法,使自己具有技術人員的氣質和工作態度,為將來的就業增加優勢。
數字濾波器是DSP的典型應用,學會了有助於觸類旁通,利於進一步的學習研究,能做到理解其他基於DSP的系統的功能和工作原理。掌握了基於DSP的應用開發,開闊了視野,增長了知識,是進入現代數字信號處理領域重要技能,乃至大規模集成電路的開發也是會用到的基礎,今後要予以重視並積極努力去學習。