<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于DES5402PP的IIR濾波器設(shè)計(jì)與實(shí)現(xiàn)

          基于DES5402PP的IIR濾波器設(shè)計(jì)與實(shí)現(xiàn)

          作者: 時(shí)間:2008-05-21 來源:網(wǎng)絡(luò) 收藏
          摘要:簡(jiǎn)單介紹了數(shù)字的原理及方法,分析了TMS320C5402的串口工作方式和TLC320AC01的特點(diǎn),介紹了C5402和AC01的連接方法,使系統(tǒng)既可以處理數(shù)字信號(hào)也可以處理模擬信號(hào)。最后在CCS環(huán)境和開發(fā)板的基礎(chǔ)上,給出了系統(tǒng)具體的方案,的功能。
          關(guān)鍵詞:TMS320C5402;TLC320AC01;;CCS

          Abstract: This article lists the theory of IIR filter and how to design it. It analyzed how the Serial Interface of TMS320C5402 work and the specialty of TLC320AC01. Then list a link between C5402 and AC01, so that the system can both process digital signals and analog signals. In the end, it provides the material way of system design and implement IIR filter base on CCS and board.

          Key Words: TMS320C5402; TLC320AC01; IIR Filter; CCS

          0 引言

          在許多實(shí)際應(yīng)用DSP系統(tǒng)中,輸入信號(hào)既可以是語音信號(hào)、調(diào)制的電話信號(hào)、編碼的數(shù)字信號(hào)、壓縮后的圖像信號(hào),也可以是各種傳感器輸出的模擬信號(hào),這就需要DSP通過A/D和D/A轉(zhuǎn)換完成數(shù)字信號(hào)和模擬信號(hào)之間的轉(zhuǎn)換,從而能使DSP處理模擬信號(hào)和將數(shù)字信號(hào)轉(zhuǎn)換成易于人機(jī)交互的聲、光、電等信號(hào)。是一個(gè)采用TI公司的TMS320C5402為核心處理器的實(shí)驗(yàn)開發(fā)板,它提供的TLC320AC01能很好的完成這一功能。

          1 IIR濾波器的MATLAB

          盡管IIR濾波器的算法比FIR濾波器要復(fù)雜,且不是因果穩(wěn)定的,但I(xiàn)IR濾波器也具有多種優(yōu)越性,它可充分利用模擬濾波器的設(shè)計(jì)成果,工作量相對(duì)較??;在相同的設(shè)計(jì)指標(biāo)下,可以用較低的階數(shù)獲得較好的性能;所用的存儲(chǔ)單元少,因此對(duì)于硬件來說,在相同時(shí)鐘速率和存儲(chǔ)空間下可以提供更好的帶外衰減特性[1]http://www.51kaifa.com

          設(shè)低通IIR切比雪夫?yàn)V波器的采樣點(diǎn)為256個(gè),采樣頻率為600Hz,輸入為兩個(gè)頻率分別為100Hz和300Hz的正弦信號(hào)的合成信號(hào)。設(shè)定截止頻率為200Hz,可以預(yù)料,將保留100Hz的信號(hào),300Hz的信號(hào)基本被濾掉。

          根據(jù)系統(tǒng)的設(shè)計(jì)流程,先在MATLAB中求得IIR濾波器的系數(shù)。主要分為三個(gè)步驟:產(chǎn)生本系統(tǒng)的測(cè)試信號(hào);調(diào)用MATLAB中的濾波器函數(shù),求出濾波器的系數(shù);調(diào)用filter函數(shù)進(jìn)行濾波,輸出濾波后的信號(hào)。驗(yàn)證濾波器的性能后,將濾波器的系數(shù)通過程序?qū)懗?inc的文件,通過.include語句將其寫入DSP匯編程序中。

          2 C5402的緩沖串口(BSP)工作方式

          TMS320C5402是TI公司生產(chǎn)的16位定點(diǎn)、速度為100MIPS、RAM為1616位、ROM為4K16位、可編程、低功耗和高性能的DSP。它提供的各種類型的串口都可以在全雙工方式下通信,其串口信號(hào)與許多符合工業(yè)標(biāo)準(zhǔn)的串行設(shè)備兼容,可以直接連接。當(dāng)串口復(fù)位時(shí),可通過DSP來關(guān)閉或打開串口工作時(shí)鐘,并允許串口運(yùn)行在低功耗模式下[2]

          緩沖串口在BSP在標(biāo)準(zhǔn)串口的基礎(chǔ)上增加一個(gè)自動(dòng)緩沖單元ABU,是一種增強(qiáng)型標(biāo)準(zhǔn)串口。允許8、10、12、16、20、24或32位的數(shù)據(jù)傳輸。由于ABU是一個(gè)附加邏輯電路,它允許串口單元直接將數(shù)據(jù)讀寫到C5402的內(nèi)部獨(dú)立存儲(chǔ)器,不需要CPU參與,從而使BSP傳輸速度更快。表1給出了BSP發(fā)送和接收數(shù)據(jù)初始化的操作步驟。

          表1 BSP的發(fā)送和接收初始化步驟

          發(fā)送操作

          接收操作

          (1)寫0008h到SPC,復(fù)位和初始化BSP

          (1)寫0000h到SPC,復(fù)位和初始化BSP

          (2)寫0020h到IFR,清除未使用的BSP中斷

          (2)寫0010h到IFR,清除未使用的BSP中斷

          (3)用0020h與IMR進(jìn)行或運(yùn)算以激活BSP中斷

          (3)用0010h與IMR進(jìn)行或運(yùn)算以激活BSP中斷

          (4)如果可能,清ST1的INTM位恢復(fù)全局中斷

          (4)如果可能,清ST1的INTM位恢復(fù)全局中斷

          (5)寫1400h到BSPCE,初始化ABU發(fā)送

          (5)寫0A000h到BSPCE,初始化ABU傳輸

          (6)寫緩沖啟動(dòng)地址到AXR

          (6)寫緩沖啟動(dòng)地址到ARR

          (7)寫緩沖區(qū)大小到BKX

          (7)寫緩沖區(qū)大小到BKR

          (8)寫0048h到SPC,啟動(dòng)BSP運(yùn)行

          (8)寫0088h到SPC,啟動(dòng)BSP

          3 AC01的特點(diǎn)[3][4]

          TLC320AC01也是TI公司生產(chǎn)的一款集成有A/D和D/A的芯片,通過串口與DSP或其他設(shè)備通信。AC01的最高采樣頻率為25kHz,其數(shù)據(jù)精度為16位,采用單一5V電源供電。C5402與AC01連接后,可以只使用一個(gè)緩沖通道串口來同時(shí)數(shù)據(jù)的采集和輸出,從而節(jié)省了DSP的硬件開銷。因此,DSP與AC01的連接使用在信號(hào)處理中得到了廣泛的應(yīng)用。

          實(shí)驗(yàn)系統(tǒng)DES5402PP使用AC01作為模擬信號(hào)接口,有兩個(gè)AC01,分別工作于“主”、“從”模式。利用“主AC01”產(chǎn)生合成的輸入信號(hào),“從AC01”將該信號(hào)轉(zhuǎn)換成濾波的數(shù)據(jù)信號(hào)并輸入到DSP芯片。其中,DSP還可以通過讀寫AC01的寄存器,控制AC01的采樣頻率、增益、低通、高通濾波器的截止頻率等參數(shù)。AC01的九個(gè)控制寄存器如表2。

          表2 TLC320AC01的數(shù)據(jù)存儲(chǔ)器功能

          R0

          一般為0

          R3

          相移控制

          R6

          控制操作模式

          R1

          采樣頻率

          R4

          模擬輸入輸出的增益控制

          R7

          控制從模式的串行通信

          R2

          低通濾波器的截止頻率

          R5

          使能高通濾波器

          R8

          控制生成的幀同步脈沖數(shù)

          在AC01正常工作前,必須對(duì)它進(jìn)行正確的初始化。初始化的操作主要工作是配置AC01的以上各個(gè)數(shù)據(jù)存儲(chǔ)器。采樣頻率Fs=MCLK/2AB,其中,MCLK為DSP的工作頻率,A,B分別為A,B寄存器的內(nèi)容。由于實(shí)驗(yàn)設(shè)置采樣頻率為600Hz,因此設(shè)A,B寄存器的內(nèi)容分別為5和4。即:

          LD #00105h,a;送05h到AC01的數(shù)據(jù)寄存器1

          IDLE 1

          LD #00204h,a;送04h到AC01的數(shù)據(jù)寄存器2

          IDLE 1

          4 C5402和AC01的連接方式

          4.1 C5402和AC01的硬件連接

          在主/從模式下,DSP可以不通過其他器件而直接與兩個(gè)AC01相連。其硬件連接如圖1所示:

          圖1 主/從TLC320AC01和TMS320C5402的連接

          4.2 C5402和AC01的軟件連接

          先在C5402的數(shù)據(jù)存儲(chǔ)空間寫入256個(gè)數(shù)據(jù)(即三個(gè)正弦信號(hào)混合而成的測(cè)試信號(hào)的離散表示),然后通過緩沖串口將數(shù)據(jù)發(fā)送到“主AC01”,利用“主AC01”的D/A通道產(chǎn)生一個(gè)模擬信號(hào)作為IIR濾波器的輸入信號(hào)。由于實(shí)驗(yàn)中DES5402PP的信號(hào)輸出通道與輸入通道相連,即“主AC01”的輸出作為“從AC01”的輸入,“從AC01”的DOUT端口與DSP芯片的DR端相連。另外,在串口通訊中,因?yàn)閿?shù)據(jù)時(shí)鐘和幀同步信號(hào)都由AC01產(chǎn)生,所以C5402將使用外部時(shí)鐘和幀同步信號(hào)。在使用串口前,需要對(duì)它進(jìn)行初始化,包括串口收發(fā)中斷設(shè)置和串口寄存器的初始化,主要代碼如下:

          STM #0,spsa() ;spsa()為串口0的子地址寄存器

          STM #2000h,spcr10;

          ……

          STM #0C1h

          LD #603h,a ;開始串口發(fā)送

          ……

          LDM drr10,a ;將串口要輸入到數(shù)據(jù)寄存器的內(nèi)容轉(zhuǎn)送到累加器A

          CALL filter ;調(diào)用濾波子程序

          ……

          STH a,dxr10 ;數(shù)據(jù)送到AC01的D/A,轉(zhuǎn)換成模擬信號(hào)輸出

          同時(shí),要修改中斷向量表以便正確響應(yīng)串口的接收和發(fā)送中斷請(qǐng)求,其中發(fā)送中斷產(chǎn)生測(cè)試信號(hào)和完成對(duì)AC01的初始化。實(shí)際上對(duì)信號(hào)濾波的,就是指從A/D讀到一個(gè)數(shù)據(jù)后調(diào)用濾波程序,然后輸出數(shù)據(jù)到D/A。

          5 實(shí)驗(yàn)過程與結(jié)果分析

          實(shí)驗(yàn)程序主要包括以下幾個(gè)步驟:

          (1),對(duì)DSP的寄存器、緩沖串口以及定時(shí)器初始化,確保能提供AC01正確的時(shí)鐘信號(hào)。完成該步驟后,檢測(cè)DSP的CLKR和FSR引腳可以看到連續(xù)輸出的信號(hào)。

          (2),同過DSP的緩沖串口對(duì)AC01進(jìn)行初始化,正確設(shè)置AC01的采樣率控制寄存器(表2中的R1),設(shè)置其采樣頻率。完成該步驟后,檢測(cè)AC01的DOUT引腳可以發(fā)現(xiàn)有連續(xù)輸出的信號(hào)。

          (3),設(shè)置DSP的中斷,從緩沖串口讀取數(shù)據(jù)。這一步可以通過CCS環(huán)境查看讀取的數(shù)據(jù)是否正確。如果正確,將采樣數(shù)據(jù)送到濾波程序中,進(jìn)行濾波處理,得到結(jié)果后,直接送到AC01的D/A單元輸出。否則,返回步驟(1)。

          濾波前后的波形如圖2和圖3所示??梢钥吹?,比起濾波前的(a)圖,(b)圖的時(shí)域和頻域波形得到明顯改善,300Hz的信號(hào)基本被濾除。

          (a)濾波前的信號(hào)波形 (b)濾波后的信號(hào)波形

          圖2 濾波前后信號(hào)的時(shí)域波形

          (a)濾波前的信號(hào)頻率 (b)濾波后的信號(hào)頻率

          圖3 濾波前后信號(hào)的頻域波形

          在圖2(b)中,可以看到,只剩下一種頻率的正弦信號(hào)。從頻域來看,在圖3(b)中,高頻部分已經(jīng)基本削弱,同時(shí)低頻也有少量損失,只要將濾波器的階數(shù)高一些或者截止頻率稍微定低一些,便能更大程度的保留低頻信號(hào)、消除高頻信號(hào)。

          6 結(jié)語

          在信號(hào)與信息的過濾、檢測(cè)和預(yù)測(cè)等處理中,都要使用濾波器,數(shù)字濾波器是數(shù)字信號(hào)處理中使用最廣泛的一種方法。IIR數(shù)字濾波器的設(shè)計(jì)過程中,可以借助模擬濾波器的設(shè)計(jì)成果或直接采用典型的濾波器類型,減少工作量。而在信號(hào)的輸入輸出過程中,往往需要A/D和D/A轉(zhuǎn)換,TLC320AC01模擬接口電路便可方便的實(shí)現(xiàn)這一轉(zhuǎn)換。此外,DSP芯片本身具有并行的硬件乘法器、流水線結(jié)構(gòu)以及快速片內(nèi)RAM等資源,容易實(shí)現(xiàn)濾波運(yùn)算,且程序可移植性好,不同性能的濾波器只需要修改濾波器的參數(shù)即可。

          本文作者創(chuàng)新點(diǎn):在DES5402PP開發(fā)板的基礎(chǔ)上,通過輸入一組兩個(gè)不同頻率的正弦混合信號(hào),設(shè)計(jì)并實(shí)現(xiàn)了IIR濾波器。同時(shí)介紹串口和TLC320AC01的工作方式,給出了與DSP的連接方法,并通過程序?qū)崿F(xiàn)。不論處理的是模擬信號(hào)還是數(shù)字信號(hào),系統(tǒng)都可以通過TLC320AC01在信號(hào)形式上進(jìn)行匹配轉(zhuǎn)換,完成對(duì)信號(hào)的濾波處理。由于TLC320AC01最高采樣頻率為25kHz(高于語音采樣頻率8kHz),因此該系統(tǒng)也可用于音頻信號(hào)濾波。

          參考文獻(xiàn)

          [1]齊海兵,平冠軍,陶文超.無限沖激響應(yīng)濾波器的設(shè)計(jì)與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2006,10-2:84-85.

          [2]汪安民,陳明欣,朱明.TMS320C54xxDSP實(shí)用技術(shù)[M].北京:清華大學(xué)出版社,2007:48-204.

          [3] Texas Instrument. TLC320AC01C Data Manual.

          [4] Texas Instrument. Interfacing TMS320C54x DSPs to TLC320AC01/02 Analog Interface circuits.



          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();