<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 浮點(diǎn)計算的動(dòng)態(tài)范圍適合更多應用

浮點(diǎn)計算的動(dòng)態(tài)范圍適合更多應用

——
作者:美國模擬器件公司 Boris Lerner博士 時(shí)間:2007-04-23 來(lái)源:電子產(chǎn)品世界 收藏

  迄今為止浮點(diǎn)數字信號處理器(DSP)的成本比定點(diǎn)DSP急劇下降。隨著(zhù)價(jià)格差距開(kāi)始消失,你什么時(shí)候應該重新考慮浮點(diǎn)DSP是否更適合你的應用?如果定點(diǎn)DSP為已經(jīng)成功的設計提供了最好的結果,那么就沒(méi)有什么要重新考慮了。如果不是這樣,這種“權衡”可能會(huì )向浮點(diǎn)DSP傾斜,因為它擴大動(dòng)態(tài)范圍(而且它對提高應用性能和簡(jiǎn)化編程具有重要意義),縮短面市時(shí)間并且節約成本。

動(dòng)態(tài)范圍:寬廣的優(yōu)勢

  工程師選擇浮點(diǎn)處理器的主要原因就是它們能夠擴大的動(dòng)態(tài)范圍,這樣或者滿(mǎn)足多種算法的需要,或者有利于多種算法。常見(jiàn)的例子包括由方程系統構成的解決方案,例如矩陣求逆、快速傅立葉變換(FFT)、濾波、自適應濾波、運動(dòng)估計、最優(yōu)控制、模式檢測、算法編碼數據壓縮,以及計算機圖形學(xué)等。這些算法支持各種各樣的產(chǎn)品:從高性能的音頻到雷達、工業(yè)控制,再到醫學(xué)和軍事應用必需的高端圖像處理。

  過(guò)去,性能與價(jià)格的折衷意味著(zhù)具有浮點(diǎn)運算能力的DSP只能專(zhuān)門(mén)用于非寬動(dòng)態(tài)范圍不可的高端的應用。對于希望有大動(dòng)態(tài)范圍但不是非常必須的大多數應用,開(kāi)發(fā)商可以在提高應用性能和(或)簡(jiǎn)化編程方面從浮點(diǎn)DSP中得到好處。

  定點(diǎn)處理器和浮點(diǎn)處理器的可用動(dòng)態(tài)范圍之間有多大差別呢?用數字對比可提供清晰的描述。例如,一個(gè)16 bit的定點(diǎn)處理器具有96 dB的動(dòng)態(tài)范圍,支持65,536個(gè)量化步長(cháng)。(在信號處理中,量化是用一個(gè)有限精度的數字表示的一個(gè)值??商峁┑牧炕燃壴蕉?,表示結果的精度就越高。)一個(gè)32 bit的定點(diǎn)處理器具有192 dB的動(dòng)態(tài)范圍,支持4,294,967,296個(gè)量化步長(cháng)。

  與此不同的是,一個(gè)32 bit的IEEE格式的浮點(diǎn)處理器具有1536 dB的動(dòng)態(tài)范圍,它可能導致推出支持115,792,089,237,316,195,423,570,985,008,687,907,853,269,
984,665,640,564,039,457,584,007,913,129,639,936個(gè)量化步長(cháng)。雖然這么大的量化步長(cháng)數是不可能的,因為需要256 bit才能將它們全部編碼,但是像這種程度的分辨率對于非常小的數字是有可能的。而且小數字的用處就在于它能精確地表示信號,因為隨著(zhù)數字增大,分辨率就會(huì )變得越來(lái)越粗。

  在某些情況下這樣程度的分辨率可能會(huì )認為過(guò)分。但是,幾乎可以肯定如果換成減小動(dòng)態(tài)范圍的16 bit和32 bit定點(diǎn)處理器完全不能充分地讓工程師高效而輕松地完成工作。

  讓我們舉一個(gè)在定點(diǎn)處理器上進(jìn)行矩陣求逆算法的簡(jiǎn)單例子。如果假設輸入數字具有16 bit的精度,輸出數字可能需要擴展16 bit的動(dòng)態(tài)范圍,取決于輸入的小數形式。最壞情況下按照16.0形式(16 bit整數,0 bit小數)輸入,那么輸出必定為0.16形式(0 bit整數,16 bit小數)。因此它必需將處理器的總動(dòng)態(tài)范圍擴展到32 bit以便處理這兩種數字,或者采用塊浮點(diǎn)算法——該方法將指數相同而尾數不同的一組數據作為數據塊進(jìn)行處理來(lái)補償有限動(dòng)態(tài)范圍的定點(diǎn)處理技術(shù)

  采用塊浮點(diǎn)將數據分成組,組內的數據相對彼此按比例縮放,但是不能與其它組的成員按相同的比例縮放,即使諸如加法這樣簡(jiǎn)單的數學(xué)運算。在比較復雜的矩陣求逆情況中,分組之間需要比較復雜的數學(xué)運算,即使是中等的矩陣求逆運算如果采用定點(diǎn)處理器而不是浮點(diǎn)處理器也很難實(shí)現,。

  為了更好地理解浮點(diǎn)處理器能夠提供寬動(dòng)態(tài)范圍的意義,讓我們來(lái)分析幾種其它的廣泛使用的DSP算法,看它們如何采用定點(diǎn)和浮點(diǎn)運算的。

FFT,FIR濾波和相關(guān)

  快速傅立葉變換(FFT)是另一類(lèi)不適用于定點(diǎn)處理器的算法。其原因是:FFT分級實(shí)現,每一級都要經(jīng)歷所謂的“位增長(cháng)”率。每一級的最大值可能會(huì )逐級加倍。(實(shí)際上這些值幾乎增加到三倍,但是這樣的增長(cháng)率并不是每一級都會(huì )持續發(fā)生的。)如果不精心地規劃設計,這些值就會(huì )溢出,結果產(chǎn)生的FFT不是噪聲就是精度不夠而無(wú)法使用。

  浮點(diǎn)處理器克服了這些問(wèn)題,因為它具有極大的動(dòng)態(tài)范圍不可能發(fā)生溢出,還因為它可以自動(dòng)地縮放。工程師只需要寫(xiě)代碼,而無(wú)需擔心數值會(huì )溢出或者當算法需要縮放時(shí)會(huì )丟失尾數位的問(wèn)題。

  當然,可提供許多算法可抵消定點(diǎn)運算中的位增長(cháng)。但是它們對于某些應用需求還不是令人滿(mǎn)意的。這些算法中最簡(jiǎn)單的一種就是在進(jìn)行FFT的每一級運算之前將所有數值減半,如果這樣做,每一級都會(huì )損失許多寶貴的動(dòng)態(tài)范圍的bit位。一種比較復雜的方法是實(shí)現塊浮點(diǎn)(在前面部分介紹),它會(huì )檢查位增長(cháng)而且僅當位增長(cháng)需要時(shí)才將數值減半。其缺點(diǎn)就是塊浮點(diǎn)耗費性能周期——而且更重要的是——有時(shí)候仍然需要在每一級減半,這取決于輸入信號。

  無(wú)論哪一種方法,用定點(diǎn)處理器完成一次8192點(diǎn)FFT都會(huì )損失13 bit的動(dòng)態(tài)范圍,因為要計算其13級中的每一級。當輸入為16 bit時(shí),這樣只剩下3 bit的有效分辨率,其中1 bit為符號位。如果FFT只是用來(lái)測量信號的頻譜,那么就只能提供8個(gè)量化等級——這對于測量主諧波往往都不夠用,更別說(shuō)其它了。如果對于大于8192點(diǎn)的FFT采用16 bit的定點(diǎn)運算,結果就更加不夠用了。

  下面考慮一種更加嚴重的情況,其中FFT用于實(shí)現一個(gè)有限沖擊響應(FIR)濾波器或相關(guān)器。FFT的結果需要乘以一個(gè)向量,而且必須完成8192點(diǎn)的反FFT(IFFT)變換以便回到時(shí)域。好情況是信號只有3 bit,所以位增長(cháng)不會(huì )給IFFT變換造成問(wèn)題。壞情況是IFFT變換的結果只有3 bit的動(dòng)態(tài)范圍,即使在有無(wú)限精度可能的情況下。記住采用更多的bit數來(lái)表示一個(gè)樣值可以更接近信號并減小量化誤差(噪聲),這樣可以合乎要求地提高噪比(SNR)。如果這個(gè)FIR濾波器是一種16 bit的CD質(zhì)量音頻產(chǎn)品的器件,該器件應該具有18 dB的SNR——不可能達到高銷(xiāo)售量的產(chǎn)品。

  采用FFT和定點(diǎn)數學(xué)運算來(lái)實(shí)現高保真音頻產(chǎn)品的FIR濾波器可能會(huì )導致更差的結果。音頻混響的實(shí)現通常需要延時(shí)為1 s或者更長(cháng)的FIR濾波器。當今高端的音頻產(chǎn)品采用192 kHz采樣速率,必須要120 dB的SNR值。以192 kHz采樣速率采集1 s長(cháng)的數據需要一個(gè)容納192,000個(gè)音頻采樣值的緩沖器。

  傳統的FFT方法需要用2的冪指數表示的緩沖器,它需要256K 點(diǎn)的FFT。損失的動(dòng)態(tài)范圍將達到18 bit,從而去掉16 bit的定點(diǎn)處理器,就沒(méi)有可用的數據位。一個(gè)32 bit的處理器只能留下14 bit的數據,產(chǎn)生84 dB的SNR值——遠遠達不到需要的性能。另外一種方法就是采用64 bit的處理,但是性能會(huì )受到嚴重的沖擊,因為一個(gè)64 bit的乘法運算需要16次16 bit乘法和少量的移位運算。

  在雷達、聲納和醫學(xué)圖像處理等相關(guān)計算和濾波器長(cháng)度可能達上百萬(wàn)樣點(diǎn)的應用中,浮點(diǎn)處理和定點(diǎn)處理方法之間的區別仍然比較明顯。因為這些應用需要如此之大的FFT,所以它們一直都采用浮點(diǎn)處理器。

最優(yōu)控制

  最優(yōu)控制問(wèn)題,它包括一些自適應的濾波技術(shù),可以看成是方程組系統的一種解決方案(通常令最小化函數的偏導數等于零)。最優(yōu)控制算法用于根據動(dòng)態(tài)變化的輸入特性自動(dòng)完成系統控制某種行為的任何場(chǎng)合;典型實(shí)例包括諸如防抱死制動(dòng)系統的工業(yè)設備和汽車(chē)系統。

  即使是在最簡(jiǎn)單的最小均方值(LMS)濾波器算法中(方程是線(xiàn)性的,因為它們是二次方程式的導數),解決系統問(wèn)題也需要對矩陣求逆。如果矩陣非?!耙巹t”——即特征值都一樣大小——可以采用定點(diǎn)運算完成求逆,但是實(shí)現起來(lái)還是有很困難。

  如果矩陣不是很規則(通常情況都是這樣),矩陣求逆所需的數學(xué)運算開(kāi)始同時(shí)處理小的和大的數字。將大的數字縮小以便防止它們溢出,同時(shí)損失了小的數字,這樣會(huì )嚴重降低結果的精度。相比之下,浮點(diǎn)算法能同時(shí)處理小的和大的數字,因為可用動(dòng)態(tài)范圍很大,而且浮點(diǎn)縮放不會(huì )損失較小的數字。

C語(yǔ)言, 匯編,或二者均可

  讓我們將動(dòng)態(tài)范圍和瞬時(shí)的數學(xué)精度放在一邊,面市時(shí)間和系統成本是任何系統設計工程的決定性因素。顯然,加快開(kāi)發(fā)周期可以縮短面市時(shí)間。許多開(kāi)發(fā)商都因為這個(gè)原因很喜愛(ài)C語(yǔ)言的生產(chǎn)力和易編程性,而且他們都已經(jīng)很精通這種高級語(yǔ)言。目前一代的浮點(diǎn)DSP支持高級C語(yǔ)言和匯編語(yǔ)言?xún)煞N語(yǔ)言的開(kāi)發(fā)。

  對于項目中的這些部分,可能從手工優(yōu)化的匯編代碼中獲得額外的性能優(yōu)勢,最好的DSP還能通過(guò)一種為喜愛(ài)采用C語(yǔ)言編碼的工程師所熟悉的代數匯編語(yǔ)法,簡(jiǎn)化了匯編程序設計?;ユi流水線(xiàn)保護是一種相關(guān)的功能,它允許正如C語(yǔ)言那樣順序地寫(xiě)匯編代碼。執行的順序不會(huì )改變,所有的代碼都是可中斷的。

  再回到動(dòng)態(tài)范圍,因為浮點(diǎn)數學(xué)運算減輕了影響精度的某些計算問(wèn)題——溢出、縮放、同時(shí)處理小數字和大數字——它有助于縮短面市時(shí)間,因為程序設計變得簡(jiǎn)單了。

成本“方程式”

  與定點(diǎn)DSP相比,浮點(diǎn)DSP的單位成本正變得越來(lái)越低,這都多虧了技術(shù)和封裝的進(jìn)步。但是,無(wú)論原始單位成本看起來(lái)多么吸引人,如果系統總成本可以滿(mǎn)足設計的價(jià)格目標,外圍設備和存儲器等方面是不能忽視的。

  例如,選擇一種具有每美元最高性能密度但是沒(méi)有適合于應用的外圍設備的處理器,就需要在印制電路板(PCB)上增加外部邏輯電路。選擇一種具有每美元最高性能密度以及適當的外圍設備但是板內存儲器不夠的處理器,該設計就需要外部存儲器。在兩種情況下,起初看起來(lái)很有吸引力的系統性能和成本都很可能打折扣。

  根據需要擴展到增加計算能力的功能也會(huì )影響系統總成本(以及面市時(shí)間)。但是這個(gè)屬性對于浮點(diǎn)處理器來(lái)說(shuō)不受限制,當今市場(chǎng)上的領(lǐng)先浮點(diǎn)處理器,例如ADI公司的SHARC和TigerSHARC系列處理器,都是無(wú)需外接電路的。也就是說(shuō),它們使得開(kāi)發(fā)商僅僅在系統中增加處理器的數量就可以提高性能。

為你自己算一算

  隨著(zhù)浮點(diǎn)處理器相對于定點(diǎn)處理器的成本差距的下降,浮點(diǎn)DSP的寬動(dòng)態(tài)范圍和高計算精度的特性正在被越來(lái)越多的應用所采用并且從中獲益。應該根據對你特定的設計關(guān)系最大的參數提供的信息做出選擇決定。如今,這種選擇就是關(guān)于相對于你對應用性能和容易編程的需求能達到怎樣的滿(mǎn)意程度。

作者簡(jiǎn)介

  Boris Lerner現任美國模擬器件公司(Analog Devices, Inc.,簡(jiǎn)稱(chēng)ADI)的高級DSP應用工程師(boris.lerner@analog.com),工作在馬薩諸塞州諾伍德市。動(dòng)態(tài)范圍是作者所精通的領(lǐng)域。Lerner是一位有12年工作經(jīng)驗的應用電子工程師,獲得數學(xué)博士學(xué)位,而且在大學(xué)任教。他擁有兩項專(zhuān)利,而且與他人合作完成的自適應均衡器獲得《Discover Magazine(發(fā)現)》雜志1996年技術(shù)創(chuàng )新獎決賽選手的榮譽(yù)。

  SHARC和TigerSHARC是ADI公司的注冊商標。

http://www.analog.com/processors/china/pr141



關(guān)鍵詞: 浮點(diǎn)計算

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>