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