如何選用數(shù)字信號處理器
(作者未知) 2009/7/30
隨著大規(guī)模集成電路和計算機(jī)技術(shù)的飛速發(fā)展,數(shù)字信號處理(DSP)技術(shù)已經(jīng)滲透到幾乎各個領(lǐng)域,包括計算機(jī)語音學(xué)、計算機(jī)視覺、計算機(jī)多媒體技術(shù)、超文本數(shù)據(jù)傳輸?shù)雀鱾領(lǐng)域,而用于進(jìn)行數(shù)字信號處理的專用DSP 芯片的性能價格比也在驚人地增加。目前DSP的主要生產(chǎn)廠家有Analog Devices, Inc.公司、Texas Instruments公司、AT&T、Motorala公司、NEC 公司等,而筆者認(rèn)為在諸多DSP 生產(chǎn)廠家中,TI公司和ADI公司是比較突出的,他們將以其產(chǎn)品的獨(dú)特性而成為DSP 芯片市場的主要領(lǐng)導(dǎo)者之一。
從事DSP 研究和設(shè)計的工程師在工作中面臨的主要問題就是如何選用DSP 芯片。這既需要對具體產(chǎn)品規(guī)格有清楚的了解,又需要對各種DSP 芯片的性能和特長有比較全面的了解,才能選用適合于特定任務(wù)的芯片。在很多情況下,DSP 處理器的特性主要由其MIPS 速度來描述,但由于一種DSP器件的指令并不一定等同于另一種DSP 器件,因此僅考慮MIPS 常常會導(dǎo)致不正確的結(jié)論。與DSP 器件能力有關(guān)的其它一些結(jié)構(gòu)及其性能要求,如運(yùn)算、尋址、程序定序和I/O吞吐能力等,往往會更重要。下面將從幾個方面介紹選用DSP 芯片必須注意的幾個因素,希望能對讀者選用芯片有一定的幫助。
一、DSP 的算法特點(diǎn)和硬件要求
數(shù)字信號處理的算法有這樣一些特點(diǎn):(1)信號處理以算術(shù)運(yùn)算為主。比如數(shù)字濾波器以Z變換為基礎(chǔ),其差分方程完全可以用算術(shù)運(yùn)算來實(shí)現(xiàn);又如FFT算法中除指數(shù)運(yùn)算可以用速查表外,其余運(yùn)算全為乘法和加法。(2)信號處理算法運(yùn)算量大,要求速度快。不論是一維的語音信號,還是二維的圖象信號,一般地算法的運(yùn)算量都很大,且算法的實(shí)現(xiàn)都必須實(shí)時。(3)信號處理算法常具有某些特定模式。比較典型的有卷積運(yùn)算中的乘積和以及數(shù)字濾波器中的連續(xù)遞推移位。(4)信號處理要求專門的接口。一個非常重要的接口是把模擬信號與數(shù)字信號相互轉(zhuǎn)換的ADC 和DAC,另外大量的數(shù)據(jù)交換需要有高速的數(shù)據(jù)吞吐能力。數(shù)字信號處理的特點(diǎn)要求DSP 芯片必須是專門設(shè)計的。DSP 芯片的設(shè)計必須滿足數(shù)字信號處理的這樣一些要求:(1)快速靈活的運(yùn)算:單周期;允許任意計算次序。
(2)乘/累加的動態(tài)擴(kuò)展范圍:保證卷積運(yùn)算(乘積和)不發(fā)生中間溢出。(3)單周期內(nèi)取兩個操作數(shù):保證快速乘積和運(yùn)算。(4)硬件循環(huán)緩沖區(qū):由硬件處理地址指針的跳轉(zhuǎn)和回繞(取模尋址)。(5)無額外開銷的循環(huán)和轉(zhuǎn)移:條件判斷與跳轉(zhuǎn)僅占一個周期。ADI的ADSP-21xx 系列和TI的TMS320xx 系列無疑正是按照這樣的要求設(shè)計的,它們都是定點(diǎn)的DSP 處理器芯片中的驕驕者,但兩者之間也有一些差異。下面介紹一下ADSP-21xx 芯片。
二、ADSP-21xx 系列處理器的結(jié)構(gòu)特點(diǎn)
ADI公司的ADSP-21xx 系列處理器(代表器件是ADSP-2101)是基于修改的Harvard 結(jié)構(gòu)的16bit 定點(diǎn)系列處理器,這樣的結(jié)構(gòu)可以將操作數(shù)的數(shù)據(jù)從程序存儲器和數(shù)據(jù)存儲器送到運(yùn)算部分。
1. 匯編語言的所有指令都是單字、單周期指令,并使用代數(shù)語法進(jìn)行書寫,可讀性強(qiáng)。比如MR=MX0*MY0(SS)指令,它把取自寄存器MX0 和MY0 的兩個有符號數(shù)乘起來后存到MR 寄存器上,該指令看起來直觀、方便。
2. 匯編語言中有大量的(單周期)并行指令,這些并行指令從功能上可分為兩部分,一部分進(jìn)行計算,另一部分進(jìn)行操作數(shù)存取。處理器采用修改的Harvard 結(jié)構(gòu),數(shù)據(jù)和程序存儲器的數(shù)據(jù)和地址總線(共4條)是分離的,保證可同時從程序和數(shù)據(jù)存儲器中各取一個數(shù)據(jù)。另外“操作數(shù)讀操作發(fā)生在指令周期開始時、寫操作發(fā)生在周期結(jié)束時”的讀寫規(guī)則保證了在并行指令中一個操作的源可以是另一個操作的目的,節(jié)省指令條數(shù)。一個典型的并行指令的例子是,MR=MR+MX0*MY0(SS),MX0=DM(I0,M1), MY0=PM(I4, M5),該指令把乘累加及取兩個操作數(shù)集中在一個周期內(nèi)完成,它使得常見的乘積和運(yùn)算只用一個單指令循環(huán)體就可以實(shí)現(xiàn),可謂高效。
3. 乘/累加的動態(tài)擴(kuò)展范圍大,兩個16 位的數(shù)據(jù)相乘,其結(jié)果保存在40 位寬的MR 寄存器中,該寄存器既可以做累加用,又可以分為三個小存儲器單獨(dú)使用。這么大的動態(tài)范圍保證在一定循環(huán)次數(shù)的乘累加運(yùn)算不至于發(fā)生中間溢出。
4. 單周期的條件指令是另一個有用的指令形式,該指令允許根據(jù)上次運(yùn)算或測試的結(jié)果決定是否進(jìn)行運(yùn)算或跳轉(zhuǎn),這種形式保證了條件判斷無需額外的周期開銷。不僅如此,循環(huán)啟動指令(僅占一個周期)一旦執(zhí)行,循環(huán)的主要周期開銷就在循環(huán)體的指令上,而條件判斷和分支跳轉(zhuǎn)(未完,下一頁)
|