Blackfin ADSP-BF533在音頻處理系統(tǒng)中的應(yīng)用
掃描二維碼
隨時(shí)隨地手機(jī)看文章
0 引言
隨著數(shù)字電子技術(shù)的普及,廣播領(lǐng)域的數(shù)字信號(hào)也逐步取代了傳統(tǒng)的模擬信號(hào)。近年來,隨著DSP技術(shù)的普及和高性能DSP芯片的出現(xiàn),DSP已越來越多地被廣大的工程師所接受,并被越來越廣泛地應(yīng)用于語音處理、圖像處理、模式識(shí)別及工業(yè)控制等各個(gè)領(lǐng)域,并已日益顯示出其巨大的優(yōu)越性。DSP可利用專門或通用的數(shù)字信號(hào)處理技術(shù),以數(shù)字計(jì)算的方法對(duì)信號(hào)進(jìn)行處理,具有處理速度快、靈活、精確、抗干擾能力強(qiáng)、體積小及可靠性高等優(yōu)點(diǎn),可以滿足對(duì)信號(hào)快速、精確、實(shí)時(shí)處理及控制的要求。
1 ADSP-BF533芯片簡(jiǎn)介
ADSP-BF533處理器是Blackfin系列中的高性能產(chǎn)品,專門針對(duì)多媒體(特別是視頻處理)和通信方面的各種應(yīng)用。該處理器內(nèi)核包含2個(gè)16位乘法器(MAC),2個(gè)40位的累加器,2個(gè)40位的ALU,4個(gè)視頻ALU和1個(gè)40位移位器。BF533內(nèi)核的工作時(shí)鐘高達(dá)600MHz,運(yùn)算單元可處理來自寄存器組的8位、16位或者32位數(shù)據(jù)。
Blackfin處理器這種體系結(jié)構(gòu)將藝術(shù)級(jí)的dual-MAC信號(hào)處理引擎、簡(jiǎn)潔的RISC式微處理器指令集的優(yōu)點(diǎn)以及單指令多數(shù)據(jù)(SIMD)多媒體能力結(jié)合起來,從而形成了一套獨(dú)特的指令集結(jié)構(gòu)。
該處理器包含豐富的外設(shè),可通過不同的高速寬帶總線與內(nèi)核相連,從而使系統(tǒng)不但配置靈活而且具有極好的性能。通用外設(shè)如UART、帶有PWM (脈沖寬度調(diào)制)和脈沖測(cè)量能力的定時(shí)器、通用的I/O標(biāo)志引腳、以及一個(gè)實(shí)時(shí)時(shí)鐘和一個(gè)“看門狗”定時(shí)器。
該處理器有多個(gè)獨(dú)立的DMA控制器,能夠以最小的處理器內(nèi)核開銷完成自動(dòng)的數(shù)據(jù)傳輸。DMA傳輸可以發(fā)生在ADSP-BF533處理器的內(nèi)部存儲(chǔ)器和任何有DMA能力的外設(shè)之間。此外,DMA傳輸也可以在任何有DMA能力的外設(shè)和已連接到外部存儲(chǔ)器接口的外部設(shè)備之間完成(包括SDRAM控制器、異步存儲(chǔ)器控制器)。具有DMA傳輸能力的外設(shè)包括SPORTS、SPI端口、UART和PPI端口。每個(gè)獨(dú)立的有DMA能力的外設(shè)至少有一個(gè)專用DMA通道。
BF533處理器有16個(gè)雙向通用可編程I/O引腳(PF15-0)。每一個(gè)可編程引腳都能通過編程標(biāo)志控制寄存器、標(biāo)志狀態(tài)寄存器和標(biāo)志中斷寄存器被獨(dú)立控制。每個(gè)獨(dú)立的PFx引腳都可為處理器提供中斷。與用于設(shè)置和清除標(biāo)志的2個(gè)標(biāo)志控制寄存器類似,一個(gè)標(biāo)志屏蔽寄存器可通過設(shè)置相應(yīng)的位來使能中斷,另一個(gè)標(biāo)志屏蔽寄存器則通過清除相應(yīng)的位來禁止中斷功能。當(dāng)PFx引腳定義為輸入時(shí),能夠設(shè)置為產(chǎn)生硬件中斷;定義為輸出時(shí),能夠設(shè)置為軟件中斷觸發(fā)。標(biāo)志中斷敏感寄存器可用于規(guī)定每個(gè)PFx引腳是電平還是邊沿敏感,如果是邊沿敏感,還規(guī)定是僅上升沿敏感,還是信號(hào)的上升沿和下降沿都敏感。
該處理器提供有1個(gè)全雙工的通用異步接收/發(fā)送(UART)端口,它與PC標(biāo)準(zhǔn)的UART完全兼容。UART端口可為其它外設(shè)或主機(jī)提供一個(gè)簡(jiǎn)化的UART接口,可支持全雙工、有DMA能力的異步串行數(shù)據(jù)傳輸。UART端口支持5~8個(gè)數(shù)據(jù)位、1或2個(gè)停止位以及無校驗(yàn)、奇校驗(yàn)、偶校驗(yàn)位。UART端口的波特率、串行數(shù)據(jù)格式、錯(cuò)誤代碼的產(chǎn)生和狀態(tài)及中斷均可編程。
該處理器包含有一個(gè)32位定時(shí)器,可用于執(zhí)行軟件的“看門狗”功能。軟件“看門狗”可以提高系統(tǒng)的可靠性,如果在軟件復(fù)位前定時(shí)器溢出,軟件“看門狗”則可通過產(chǎn)生一個(gè)硬件復(fù)位、不可屏蔽中斷(NMI)或通用中斷來強(qiáng)迫處理器進(jìn)人一個(gè)已知狀態(tài)。[!--empirenews.page--]
2 系統(tǒng)硬件設(shè)計(jì)
該系統(tǒng)設(shè)計(jì)是以ADSP-BF533為核心的音頻信號(hào)處理系統(tǒng),其主要硬件單元有ADSP-BF533、flash、SDRAM、總線接口、以及電源、時(shí)鐘、JTAG調(diào)制器。此外還有CPLD芯片輔助處理。該系統(tǒng)的電源模塊選用TPS70302,外圍設(shè)備有不同的RC值,以構(gòu)成不同的電壓,這里需要產(chǎn)生3.3V和1.2V兩種電壓,此外,還有JTAG調(diào)試端口。整個(gè)處理器系統(tǒng)的硬件框圖如圖1所示。
2.1 SDRAM存儲(chǔ)器
SDRAM存儲(chǔ)器選用HY57V281620,其存儲(chǔ)容量為4×2 Mx16位(16MB),工作電壓為3.3 V,具有16位數(shù)據(jù)寬度,可以滿足存儲(chǔ)要求。HY57V281620的時(shí)鐘由DSP的系統(tǒng)時(shí)鐘提供。數(shù)據(jù)總線D[15:0]連接到DSP的16位數(shù)據(jù)總線。其接口電路連接如圖2所示。
2.2 外部FLASH
由于BF-533內(nèi)部的存儲(chǔ)容量有限,因此必須外接FLASH以用于存儲(chǔ)程序,F(xiàn)LASH芯片可選用AT49BV322AT,每次上電復(fù)位后,BF-533首先將FLASH中的程序引導(dǎo)到內(nèi)核中,其電路連接如圖3所示。
2.3 以太網(wǎng)芯片LAN91C111
由于LAN91C111是按通用標(biāo)準(zhǔn)時(shí)序設(shè)計(jì)的高速芯片,又是專為嵌入式系統(tǒng)設(shè)計(jì)的,因此,其外圍電路相對(duì)比較簡(jiǎn)單。圖4所示是LAN91C111與BF533的接口電路,圖中,BF533的地址總線ADDR0~ADDR14與LAN91C111和A1~A15相連。A0沒有被LAN91C111使用而懸空;數(shù)據(jù)總線則與D0~D15相連,用于16位數(shù)據(jù)傳輸。LAN91C111端的D16~D32懸空;LAN91C111的片選信號(hào)AEN由DSP提供。
[!--empirenews.page--]
2.4 CPLD部分
控制模塊與選擇分配板卡的數(shù)據(jù)通信可在CPLD中實(shí)現(xiàn)。在并口轉(zhuǎn)串口時(shí),BF533每次通信都向CPLD發(fā)送16位并行數(shù)據(jù),其中低8位為串口數(shù)據(jù),可通過觸發(fā)器將數(shù)據(jù)發(fā)出。高8位中的低4位決定發(fā)送到第幾號(hào)分配板,并由此判斷選通信號(hào),同時(shí)按一定波特率將串口數(shù)據(jù)發(fā)送至相應(yīng)通道。在串口轉(zhuǎn)并口時(shí),首先模擬出相應(yīng)的波特率時(shí)鐘,并以此時(shí)鐘對(duì)管腳進(jìn)行采樣,當(dāng)檢測(cè)到串口起始位后,即存儲(chǔ)采樣數(shù)據(jù),同時(shí)將數(shù)據(jù)及通道狀態(tài)送入與BF533并口相連的引腳。之后,再將與BF533的PF相連的引腳置位,以引起B(yǎng)F533中斷,讀取并口數(shù)據(jù)。這樣,就可通過DSP的并行數(shù)據(jù)總線來控制10路異步串口的數(shù)據(jù)收發(fā)。EPM7160采用24.576NHz的晶振輸入,并根據(jù)外部的串口的波特率在內(nèi)部通過編程對(duì)此輸入時(shí)鐘進(jìn)行相應(yīng)的分頻。其CPLD接口電路連接如圖5所示。
3 系統(tǒng)軟件設(shè)計(jì)
Blackfin系列DSP在軟件方面可支持C語言和匯編語言,同時(shí)支持兩者的混合編程。C語言程序結(jié)構(gòu)好、可讀性強(qiáng)、易移植,但處理速度慢。而匯編語言處理速度快,但是可讀性差,不容易調(diào)試。C語言和匯編語言混合編程可結(jié)合各自優(yōu)勢(shì),能構(gòu)造出結(jié)構(gòu)好且執(zhí)行速度快的程序。但在編程過程中應(yīng)注意以下事項(xiàng):第一,無論是用C語言還是匯編語言,系統(tǒng)中只有一組相同的寄存器可供使用,因此在使用寄存器之前,子函數(shù)必須先保存,并在返回之前恢復(fù)。第二,要嚴(yán)格按照寄存器的類型使用,不同類型的寄存器不可混用。第三,為了提高代碼的運(yùn)行速度,要善于使用并行指令。
本系統(tǒng)在對(duì)BF533程序初始化后,主程序?qū)㈦S時(shí)接受由SPORT口送人的解析后的音頻信號(hào),并存儲(chǔ)對(duì)應(yīng)的最大電平值,同時(shí)打開UART中斷和TIMER0中斷。在TIMER0中斷中(本系統(tǒng)初始化設(shè)置為10 ms),可對(duì)存儲(chǔ)的數(shù)據(jù)進(jìn)行處理并提取狀態(tài)。如不滿足要求,則打開TIMER1中斷(本系統(tǒng)初始化設(shè)置為6 s),并跳回主程序繼續(xù)檢測(cè),如在相應(yīng)TIMER1中斷時(shí)還不符合要求,則進(jìn)行切換。UART中斷可完成與控制板和上位機(jī)的數(shù)據(jù)交換。
各程序模塊中,主程序模塊main()主要完成系統(tǒng)與各種接口的初始化工作,檢測(cè)記錄電平、監(jiān)控狀態(tài)、等待中斷發(fā)生等,其中Timer0中斷子程序模塊EX_INTERRUPT_HANDLER(Timer0_ISR)可完成對(duì)存儲(chǔ)的數(shù)據(jù)進(jìn)行處理并提取狀態(tài)功能。Timer1中斷子程序模塊EX_INTERRUPT_HANDLER(Timerl_ISR)則可在設(shè)定的延時(shí)中,完成電平檢測(cè)以判斷是否切換。異步串口中斷子程序模塊EX_INTERRUPT_HANDLER(Uart_ISR)用于完成接收上位機(jī)及板卡信號(hào)控制功能。
4 結(jié)束語
采用ADI公司的BF533可實(shí)現(xiàn)新品信號(hào)的處理,并可擴(kuò)展SDRAM作為大容量存儲(chǔ)器。該系統(tǒng)成本低,效率高,實(shí)時(shí)性好,性能十分優(yōu)越。