细说EADDSP系列DSP之演算法.docx
- 文档编号:8733088
- 上传时间:2023-05-14
- 格式:DOCX
- 页数:15
- 大小:265.07KB
细说EADDSP系列DSP之演算法.docx
《细说EADDSP系列DSP之演算法.docx》由会员分享,可在线阅读,更多相关《细说EADDSP系列DSP之演算法.docx(15页珍藏版)》请在冰点文库上搜索。
细说EADDSP系列DSP之演算法
細說EAD-DSP系列DSP之演算法
文/何志誠
在剛出現OverSampling技術的那幾年,專業級的數位/類比轉換器的價位是那麼地高不可攀;最近幾年隨著IC製程技術的進步,如果一部幾千元的CDplayer連最簡單的四倍OverSampling都沒有,似乎有點說不過去,除了CD/LD的解碼器之外,OverSampling也是THX、AC-3、MPEG2的基本技術之一。
老朽會拿EAD-DSP系列(為美國EnlightenedAudioDesigns公司所生產)來舉例說明乃是因為它們採用了日本Nippon(SEIKO)公司所生產的DSPASIC(ApplicationSpecificIC)NPC-SM5813(這一顆IC與Burr-Brown公司之DF-1700規格相同,目前有多家產品採用這一顆IC搭配Burr-Brown之PCM63PK之D/Aconverter。
例如國產的雅瑟音響之DA20ST即採用了與EAD-DSP7000幾乎完全相同之關鍵零組件),這一顆IC可以說是目前市面上所能看到之OverSamplingASIC之代表作,也就是說它們都採用了相同的數學(演算法)架構。
在這裡順便提一下,在準備本文之前,蒲總編曾經向我提及Crystal公司的CS-4303、CS-4328、……一系列的IC,希望我能寫一系列的文章來談這一系列用於MultichannelsAudioSystem與廣泛用途之OverSampling與D/AconverterIC。
其實Crystal這一系列IC的演算法架構與NPC-SM5813並沒有甚麼不同,只是基於成本的考量與音質的需求不太高的情況下,才將OverSampling與D/Aconverter做在一起。
當然,它們內部所用的數位濾波器長度也沒那麼長(這意味著計算結果的準確度亦較差),而且其D/Aconverter也採用了較廉價的△-Σ(唸Delta-Sigma)架構,也就是俗稱的one-bit或bit-stream。
至於NPC-SM5813或DF-1700沒有將D/Aconverter合併成一顆IC是為了Hi-End的考量,使其能搭配Burr-Brown的PCM63PK的緣故。
在談OverSampling的演算法之前,我們先假定看倌老爺您對DiscreteFourierTransform(DFT)或FastFourierTransform(FFT)、Convolution、Lowpassfilter與加權平均(WeightedAveragemethod這個方法,老朽在高傳真視聽第252期「淺談超取樣」一文中曾提及)有個基本概念;至於詳細內容我們將在後面或另闢文章討論。
首先,我們先來看一個例子。
圖1a為函數:
y=1.5e-2t.sin(6πt)之連續波形。
圖1b為圖1a之數位取樣的圖形,其取樣頻率為32Hz,也就是說圖1a波形之頻寬不高於16Hz。
圖1c為圖1b經過富利葉轉換(FourierTransform,其實是利用DiscreteFourierTransform算出來的)後之頻譜圖形,假如我們將圖1b中每兩個Sample間都「塞」入15個零,也就是說原來有33個Sample,現在則變成513個Sample,再將該513個取富利葉轉換,則可得到如圖1d之頻譜。
我們試著比較圖1c與1d,我們可以發現圖1c之頻譜重複出現了16次(這時取樣頻率為512Hz),相信這時候看倌老爺您已經了解,只要使用截止頻率為16Hz的低通濾波器就可以將圖1b變成圖1a的樣子;用相同的方法,我們也可以將圖2a“UpSample”成圖2b。
在這個例子裡我們可以用圖3a來描述“UpSample”的過程,然而,在實際產品應用的情況(RealTimeCase)卻不是這樣「硬幹」的,我們必須回到TimeDomain來處理,除了方便製作,更可以降低成本,其過程如圖3b所示。
接下來我們將深入探討如何實現該演算法,並將其簡化以使其更適合硬體製作與降低製作成本。
我們試著比較圖3a、3b與圖1a~1d的關係,很明顯的,在圖3a與3b中,Z=15,也就是“UpSample”16倍,有一點我們必須注意,當我們在frequencydomain(頻域)乘上一個低通濾波器,這就相當於在TimeDomain(時域)與一個低通濾波器作Convolution的運算,先來看一下DiscreteConvolution的定義。
(1)
習慣上,我們將上式表示為
(2)
我們舉一個例子來說明,圖4a與圖4b分別代表X(KT)與h(KT),根據Convolution的定義(即方程式
(1))知道要計算Convolution的結果y(KT)需要h[(0-i)T],h[(1-i)T],h[(2-i)T]…,故圖5a與圖5b分別表示h[(0-i)T],h[(2-i)T],即h(iT)反轉平移。
圖6則表示X(Ki)與h(KT)作convolution的過程,假如這時候看倌老爺您還不是很清楚,沒關係,其實Convolution的過程與兩個多項式相乘是一樣的;譬如說,我們要將a=[1,2,3]、b=[4,5,6,7]作convolution:
令
a=X2+2X+3
b=4X3+5X2+6X+7
所以
a*b=4X5+13X4+28X3+34X2+32X+21
因此
[1,2,3]*[4,5,6,7]=[4,13,28,34,32,21]
我們仔細分析多項式乘法的動作:
123
X4567
71421
61218
51015
4812
41328343221
也就是說
21=3X7
32=2X7+3X6
34=3X5+2X6+1X7
28=4X3+2X5+1X6
13=2X4+1X5
4=lX4
以上六個計算式,其實就是公式(l)的結果,也可以用圖7來說明,b=[7,6,5,4]為b之反向排列,當我們固定a,而將b從右向左推動,框內的數相乘,再求各框之和,即可得以上六個計算式。
圖7的過程與圖4~圖6是一樣的,如果我們將圖7的過程畫成一個通式,即如圖8a所示:
y=c*u,通常我們固定c,而推擠u,也就是說,視向量c為一個數位濾波器,u為“InputData”,一般說來,數位濾波器c之長度為有限,因此我們稱之為FIR(FiniteImpulseResponseFilter)或NonrecursiveDigitalFilter,言下之意也就是說,一串有限長度的資料經過FIR計算之後期長度為有限(設a與b之長度分別為M與N,則a*b之長度為M+N-l),而且其計算結果y(k)與其過去之輸出y(k-N)無關,反過來說,假如計算結果y(k)與其過去之輸出y(k-N)有關,即使InputData之長度為有限,亦將產生無限長度之輸出,如圖8b所示,這樣的濾波器我們稱為IIR(InfiniteImpulseResponseFilter)或是RecursiveDigitalFilter。
講完了convolution,咱們即將進入「實兵操演」的階段,為了方便咱們解說起見,我們舉一個四倍OverSampling的例子,並且假設所使用的LowPassfilter之長度為4N即InputData
u=[u10,0,0,u2,0,0,0,u3,0,0,0,u4,……]
LowPassfilter
w=[w1,w2,w3,w4……wn1,……w4n]
那麼Outputdatay=u*w
從圖9中,我們很清楚地看到整個convolution的過程,從圖中我們可以看到有75%的計算是0,也就是第一個計算式中只用到w1,w5,w9,‥‥,而第二個只用到w4,w8,w12,w16,……,第三個只用到w3,w7,w11,……,第四個只用到w2,w6,w10,wl4,而第五個用到w1,w5,w9,……卻與第一個完全相同,因此,我們除了可以使用查表法(LookUpTable)來降低成本之外,更可以將圖9簡化成下列之矩陣形式。
(3)
從上式我們很容易瞭解,每次只要將Inputdatau向上推擠一格,作一次矩陣乘法,即可獲得4個輸出,而達到OverSampling四倍的目的。
這樣的改進比起“補零然後作LowPass”的方法可節省75%的計算與記憶體,而像(3)式這樣由多個較短的filter所組成的filterBank,我們稱之為polyphasefilter。
如果您對filterBank的理論與發展有興趣,您可參考本文後面所附的書目(註二)。
至於Lowpassfilter是如何設計的,那就有待老朽另作專文再談,或者看倌老爺您自行翻閱一般DigitalSignalProcessing的書籍。
當然,您也可以不用如此辛苦而改用另一簡單的方法即可獲得與(3)式幾乎一模一樣的polyphasefilter。
老朽在拙作[淺談超取樣」(高傳真視聽225期)中曾經提及加權平均法(WeightedAverageMethod)
(4)
與NPC-SM5813使用了下列公式
(5)
(5)式即是訊號處理的老祖宗C.E.Shannon在1948年所提出的公式,其實公式(5)也是加權平均法的一種,假如您學過DSP或者是電路理論,相信您已經瞭解sinx/x在frequencydomain基本上就是一個低通濾波器,這也就是為什麼老朽會在「淺談超取樣」一文中提及NPCSM5813可用公式(5)的數學架構來實現的理由。
首先我們先來解釋公式(5),公式(5)中的f(ti)代表轉盤送出的Data,通常ti=1,2,3,4….為整數,t為我們要計算的時間點,例如四倍超取樣t=l,5/4,6/4,7/4,2,9/4,10/4,11/4,…,因此,我們可以將t代入W=sinπ(t-ti)/[π(t-ti)]以求得W之係數。
有一點我們必須注意,既然我們要用convolution來實現,那麼我們就必須遵從convolution中每個data之相距時間為1的要求(在圖4與圖5中,通常T=1),也就是說將t代人W=sinx/x中所獲得之Wi必須加以分類,亦即[W1/4,W5/4,W9/4,…],[W1/2,,W3/2,W5/2,…],[W3/4,W7/4,,W11/4,…],[W1,W2,W3,W4,.…]。
因此,我們亦可以獲得像式(3)一般的polyphasefilter的矩陣架構。
在圖l0a中,我們列出了用數學套裝軟體Matlab所寫的公式(5)之係數產生程式之程式原始碼(SourceCode),其中ii=2代表2倍OverSampling,N00=153代表filter長度,而圖10b中我們列出一個4倍OverSampling,filter長度為9之矩陣係數。
我們再回到式,我們曾說,每次將Inputdata推擠一格再作一次矩陣乘法即可獲得4個輸出,如圖10c所示,讀入標示為“0”之data,而產生標示為“X”之data。
有一點我們必須注意,標示為“0”的數據並不會因為計算而有所改變(否則聲音就不一樣了),這也就是為什麼圖10b中第一列之係數為[0,0,0,0,1,0,0,0,0]了。
因此,在實際製作時,我們只要計算其餘的三列即可,當然Table也可以儲存少一些。
再回到(4)式,依照加權平均的觀念,當我們想要計算的點之位置(圖10c中的“x”點愈靠近某一點輸入Data(“0”點),那麼該Inputdata的比重(即加權)會愈大(這一點我們看圖l0b即可瞭解),言下之意,其他點的比重就會比較小,也就是說,計算該點所需之filter之長度可以比較短,從圖10c中可知,“3”,“7”,“11”,“l5”所需的計算量為最高,“2”,“4”,“6”,“8”,“10”,“12”,“14”,“16”所需的計算量比較少。
因此,在NPC-SM5813的DataSheet中是這麼說的,先用長度為153的Digitalfilter“UpSample”2倍,再用長度為29的Digitalfilter“UpSample”成4倍,最後用長度為17之DigitalFilterUpSample成8倍(即“UpSample”2倍共3次)。
因此,其filter長度實際為153+29+17=199。
這一類型的IC(無論Burr-Brown,SEIKO,Crystal或YAMAHA……)都是用這樣的方法來達到“CostDown”的目的。
因此,您可能會發現,在本文裡所說的NPC-SM5813的規格與老朽在「淺談超取樣」中所描述之NPC-SM5813略有出入。
其實老朽是「故意」寫錯,原因是在「淺談超取樣」那樣的短文裡,實在無法將如此複雜之“分段式UpSample”說清楚,其實早在94‘年暑假時(即在撰寫「淺談超取樣」之前)老朽已有計劃撰寫本文,當然更有心理準備在此作“修正”,只是一直不知道該如何下筆才能在「高傳真視聽」這樣的雜誌裡描述如此複雜的Algorithm,加上研究工作繁忙,才會拖延至今。
廢話少說,接下來談本文的最後一個議題:
如何評估計算量需求。
我們回到(4)式,計算像(4)式這樣的filter,其中f(ti)為轉盤輸入之16bit的整數,Wi為32bit之小數(見圖10b),因此計算一個這樣的filter我們需要N個16bitX32bit的乘法,N-1個32bit+32bit的加法,仔細觀察圖10c我們很容易瞭解,從原始資料Upsample時,長度153之filter只用了一次;從二倍資料UpSample成四倍資料時,長度29之filter用了二次;而從四倍資料UpSample成八借資料時,長度17之filter用了四次。
1+2+4=7加上原始輸入資料剛好是8倍OverSampling。
因此,所需之總計算量為(設取樣率為48000Hz,兩個聲道)
乘法
16bitX32bit=32bit
48000X2X153X1=14688000┐
48000X2X29X2=5568000│26784000
48000X2Xl7X4=6528000┘
加法
32bit+32bit=32bit:
48000X2X152Xl=14592000┐
48000X2X28X2=5376000│26112000
48000X2Xl6X4=6144000┘
因此共需l6bitX32bit=32bit之乘法26784000次/sec,32bit+32bit=32bit之加法26112000次/sec
註一
例如CS-4328所用的三個Lowpassfilter的長度分別為125、24、4,比起NPC-SM5813的153、29、17稍短一些,難怪CS-4328的音質還不錯。
註二
R.E.Crochiere,L.R.Rabiner:
MultirateDigitalSignalProcessing,Prentice-Hall,1983(東南出版社)
P.P.Vailyanathon:
MultirateSystemsandFilterBanksPrentice-Hall,1993(台北圖書公司代理)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 细说 EADDSP 系列 DSP 演算法
![提示](https://static.bingdoc.com/images/bang_tan.gif)