M序列的產(chǎn)生和性能分析_第1頁
M序列的產(chǎn)生和性能分析_第2頁
M序列的產(chǎn)生和性能分析_第3頁
M序列的產(chǎn)生和性能分析_第4頁
M序列的產(chǎn)生和性能分析_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

#外文資料譯文第29章開啟DSP設(shè)計(jì)之路一旦你覺得數(shù)字信號處理能滿足你的應(yīng)用要求,你需要一個(gè)開始進(jìn)行的方式。許多制造商會(huì)賣給你一個(gè)廉價(jià)的工具包,讓你直接體驗(yàn)他們的產(chǎn)品。這些是偉大的教育工具,而不管你是新手還是提高者,這是熟悉DSP細(xì)節(jié)的最好的方法。例如,AnalogDevice公司提供了EZ-KITLIT讓未來的客戶了解數(shù)字信號處理的SHARC系列。僅僅179美元,你就能得到所有DSP所需的硬件和軟件。這包括軟件包的那些“罐裝”的程序,也包括你可以自己用匯編或者C語言編寫的應(yīng)用程序,假設(shè)你在AnalogDevice公司買了這些工具包的一種并用了幾天的話。本章是你所希望找到和學(xué)習(xí)的知識(shí)的一個(gè)總括。ADSP-2106x系列上一章我們了解了數(shù)字信號處理的ADSP-2106x“SHARC”系列大體的操作過程。表29-1顯示了這一系列的不同成員。所有這些設(shè)計(jì)都有相同的體系結(jié)構(gòu),但是集成存儲(chǔ)器的區(qū)域是不同的,這是決定使用哪一片存儲(chǔ)器的關(guān)鍵因素。內(nèi)存通道是DSP系統(tǒng)共同的一個(gè)瓶頸。SHARCDSPs忙于向集成存儲(chǔ)器提供足夠的雙重SRAM接口。然而,你想做的最后一件事就是買一個(gè)你實(shí)際并不需要那么大的內(nèi)存。DSPs經(jīng)常用于敏感的產(chǎn)品,如蜂窩電話,CD播放器等。換句話說,這個(gè)家族的機(jī)構(gòu)取決于市場和技術(shù)。這個(gè)家族最早的產(chǎn)品是ADSP-21020。這種芯片包括體系結(jié)構(gòu)的核心,但是不包括集成的存儲(chǔ)器和I/O接口。這就意味著它單機(jī)狀態(tài)下不能運(yùn)行。它需要有擴(kuò)展的操作系統(tǒng)部分。其它的產(chǎn)品單片都是一個(gè)完整的計(jì)算機(jī)。它們的運(yùn)行僅僅需要開啟電源,把程序裝入內(nèi)存,就像一個(gè)擴(kuò)展的PROM或者數(shù)據(jù)連接。注意在表29-1中即使抵擋的產(chǎn)品也有一個(gè)相當(dāng)大的內(nèi)存。例如,ADSP-21065L有544kbit的內(nèi)部SRAM。這就足夠存儲(chǔ)一個(gè)6到8秒的數(shù)字語音文件(每秒8k字節(jié),每字節(jié)有8bit)。對于高檔的產(chǎn)品,如ADSP—21060有4兆的內(nèi)存。這對于存儲(chǔ)一整張數(shù)字圖像綽綽有余(512x512象素,每象素8bit)。如果你要求更大的內(nèi)存,你可以方便的在任意產(chǎn)品上擴(kuò)展存儲(chǔ)器。PRODUCTXlejiion7KatesAD14^04MlJjrk4Qiiad-SHARC.F=iirADSP-21:=t加gamemodule:prc^desincredible—£01FL-OPSinc-ii:y"”0.^".ADSP-21160M斗MbitNew!Feacnie=iSingleIn^tnictionMultipleDaca(SINID)corearchitectiii-e;opdisrizedfornmlciprocessing\iitblinkports;.64bitexteruHlbuSpand14chaonehofDMAADSP-21060斗MbitF^jwerbou&&oftlie沁lily;rsiostrneinon.';linkportsforhighspeeddn怡transferandmulti-processingADSP-2101522MbitSaruefeaTiues陰dimADSP-21D6D.Wt\iitli1?^iBTenialmenion'(forleaver"TtADSP-210611MbitLowcostversioiitl經(jīng)dinclueEZ-KITLite;lessmesnory&nolioiiports;uaddidoualfeitmecjnf)MAforthesenaljoitADSP-21065L544kbit%rec亡ntadditiontotbefamily:fastamiverylawcosi{SIO^.WillattractmanyfixedpcintapplicatioiistotbeSHARCfamilyADSP-21020-0-OldestmemberofdiefaLnilv.CoutaiiL^thecoreprocessorbucmoon-<fiipm亡ihotvorIOioterface.NotquiteaSHARCD5PTABLE29-:hleirbei-c:tieSHARCfaniLh-.補(bǔ)充說明一下存儲(chǔ)器,這個(gè)家族的成員中I/O部件是存在差異的。ADSP-21060和ADSP-21062(高端)都有六個(gè)端口。多線程系統(tǒng)的綜合DSPs都有4bit寬的并行總線,其它應(yīng)用要求有復(fù)雜的高速I/O接口。ADSP-21061和ADSP-21065L(低端)沒有連接口,但是在連續(xù)的端口操作中提供了更多的直接存儲(chǔ)通道。你將看到這些系列成員名稱后綴中都有“L”或“M”,如“ADSP—21060L”。這表明了這些產(chǎn)品運(yùn)行電壓比傳統(tǒng)電壓5.0伏低。比如,ADSP—21060L運(yùn)行電壓為3.3伏,ADSP—21160M只有2.2伏。1998年六月,隨著ADSP—21160的發(fā)布,AnalogDevice公司宣布誕生了第二代SHARC體系。它配備了單指令多數(shù)據(jù)系統(tǒng)內(nèi)核(SIMD或者“sim-dee”),工作頻率為100兆赫,有一個(gè)帶寬為每秒1600兆赫的加速存儲(chǔ)總線,兩個(gè)64比特的數(shù)據(jù)總線,四個(gè)80比特的固定點(diǎn)計(jì)算器堆棧??傊?,新的ADSP—21160M在46微妙期間就運(yùn)行了1024個(gè)快速傅立葉變換。SIMDDSP包括另一個(gè)計(jì)算單元(算術(shù)和邏輯單元,轉(zhuǎn)換開關(guān),數(shù)據(jù)注冊文件,和乘法器),允許ADI向老一代ADSP—2106x產(chǎn)品兼容的代碼,有一份路徑表提供十倍的上行速度。

■audioinJLfludioour”:—■audioinJLfludioour”:—■工?cableSHARCAD5P-21061FIGLT<E29-:、、toyourpersonalcomputer,andpower.Th已serialcableSHARCDSPp的一切資料,包括:硬件,軟件,和相關(guān)的SHARCIEZ優(yōu)KITLi隹二語言心】:L?l/.'■■:■■.<■yl:.1::<e二哉上:1:.iuIldl::audioout.a&erifj]EZ^KIT;Lite■給指南。圖29—1顯示了一張EZ—toyourpersonalcomputer,andpower.Th已serialcableSHARCDSPp的一切資料,包括:硬件,軟件,和相關(guān)的數(shù)字信號處理。這是一張4.5X6.5英寸的印刷電路板,裝了一個(gè)塑料支架使之可以站在你的桌子上。(它也有另一種翻譯叫做EZ—LAB,使用ADSP—21062,裝在你電腦內(nèi)部的插槽里)。只有四個(gè)連接電路你需要操心的:DC電源,你電腦上一個(gè)連續(xù)的連接電路,輸入和輸出信號。一個(gè)DC電源和一些電纜甚至在那個(gè)工具箱里面也有。輸入輸出信號在音頻的范圍,振幅大概為一伏。二選一,一個(gè)連接器允許一個(gè)話筒直接插入到輸入端里。這種想法就是將麥克風(fēng)插入輸入端,連接一系列的擴(kuò)音器(就像用個(gè)人電腦)到輸出端。這是你可以聽到DSP各種運(yùn)算法則的效果。模數(shù)轉(zhuǎn)換和數(shù)模轉(zhuǎn)換可以熟練的在AD1847模擬信號譯碼器中實(shí)現(xiàn)。這是一個(gè)十六位的累加轉(zhuǎn)換器,能夠以每秒48K的速率數(shù)字化雙通道,同時(shí)以上述速率輸出雙通道。雖然這快芯片主要用來處理音頻信號,輸入和輸出是交流電,頻率為20赫茲。芯片上三個(gè)按鈕可以讓用戶使用中斷,復(fù)位處理器,設(shè)置一個(gè)系統(tǒng)可以辨識(shí)的標(biāo)志位。四個(gè)芯片上的發(fā)光二極管由標(biāo)志位控制其閃爍。如果你覺得還不夠,芯片上的一些區(qū)域使你可以訪問連續(xù)的端口,連接端口(只在EZ—LAB的ADSP—21062),和處理器總線。然而,沒有人可以幫你,你得自己連接連接器和其它部件。面告訴你它是怎么工作的。上電后,處理器從一個(gè)芯片上的可編程儲(chǔ)存器開始導(dǎo)入(512k),裝載程序確定你電腦內(nèi)部各組件之間的聯(lián)系。下一步,在你機(jī)器上裝載EZ-LiteHost程序,使你可以在DSP下載程序或上傳數(shù)據(jù)。一些程序隨著EZ-KITLite的打開而預(yù)存;你只需點(diǎn)擊相關(guān)圖標(biāo),這些程序隨之運(yùn)行。例如,一個(gè)帶通程序使你可以對麥克風(fēng)說話,且聽聽聲音經(jīng)過處理從擴(kuò)音器出來的效果。這種程序有用的原因有兩個(gè):(1)它們使你可以迅速了解系統(tǒng)正在進(jìn)行的工作,且讓你可以確定系統(tǒng)正在工作。(2)它們?yōu)槟阕约涸O(shè)計(jì)程序提供了一個(gè)模板。下面,一個(gè)EZ-KITLite的例子引導(dǎo)我們進(jìn)入下一個(gè)話題。例:音頻濾波器設(shè)備檢查當(dāng)你用預(yù)存程序試驗(yàn)一會(huì)后,你就會(huì)想改編程序以增加你的經(jīng)驗(yàn)。程序可以用匯編或者C語言編寫,EZ-KITLite語言提供了一些軟件工具來支持這兩種語言。待會(huì)本章將為你介紹幾種先進(jìn)的程序,如:仿真工具,調(diào)試工具,且運(yùn)行在完整的發(fā)展環(huán)境。目前,我們集中注意運(yùn)行一個(gè)現(xiàn)有的程序。小腳小步伐***(538頁)***一旦源代碼是以ASCII碼的形式,所有現(xiàn)有文件夾的基本的文本文件都必需重新編輯,或者重新編寫程序。表29-2說明了一個(gè)用匯編編寫的FIR濾波程序的例子。這只是你現(xiàn)在需要考慮的程序代碼,但必需注意還有其它的程序與它一起組合才是一個(gè)完整的程序。這包括一個(gè)“體系描述文件”(它定義了硬件結(jié)構(gòu)和存儲(chǔ)空間配置),設(shè)置了中斷向量表,和一個(gè)初始程序數(shù)字編碼器。最后,你需要理解這些組件在干什么,但現(xiàn)在你只需從預(yù)寫程序復(fù)制它們。就像表29-2頂部顯示的那樣,在進(jìn)入程序主代碼之前,有三個(gè)變量需要定義。這些是濾波器核心代碼的關(guān)鍵字,NR-COFF;一個(gè)存儲(chǔ)輸入代碼的循環(huán)緩沖器,dline[]濾波器核心的循環(huán)緩沖器,coef[]。我們還需給出這個(gè)程序另外兩點(diǎn)信息:編碼器的取樣速率,包含濾波器核心的文件夾名,這樣才能讀到coef[]。所有這些步驟都很簡單;每步只不過是一句簡短的代碼。在本例中我們沒有顯示它,因?yàn)樗谖覀優(yōu)榱撕啽愣÷缘牟糠执a中。圖29-2顯示了我們將用來做程序?qū)嶒?yàn)的濾波器核心,和我們在17章設(shè)計(jì)的濾波器一樣。就像你想起來的一樣,這濾波器將做一個(gè)非周期的頻率響應(yīng),再強(qiáng)調(diào)一個(gè)概念FIR數(shù)字濾波器最終提供一個(gè)你期望的周期性的響應(yīng)。圖(a)顯示了我們實(shí)驗(yàn)的濾波器周期性響應(yīng),(b)顯示了相應(yīng)的脈沖響應(yīng)。(也就是濾波器核心)。這種301濾波器核心存儲(chǔ)在ASCII碼文件夾里,且鏈接到其它部分的代碼以組成一個(gè)簡單的可執(zhí)行程序。程序的主要部分完成兩個(gè)功能。在6至13行中,數(shù)據(jù)地址發(fā)生器(DAGs)用來處理循環(huán)緩沖:dline[]和coef[]。就像上一章所述,每個(gè)緩沖區(qū)需要三個(gè)參數(shù):存儲(chǔ)器里緩沖區(qū)的起始位置(b0和b8),緩沖區(qū)的長度(10到18),緩沖區(qū)里每個(gè)數(shù)據(jù)存儲(chǔ)的字長(m0和m8)。這些控制循環(huán)緩沖區(qū)的參數(shù)裝載在DAGs的硬件寄存器里,使它們存儲(chǔ)和處理數(shù)據(jù)效率很高。主程序的第二功能是所謂“繞拇指”運(yùn)動(dòng),在15至19行執(zhí)行。這其實(shí)什么也不做,只是等待有要求輸入的中斷信號。所有這種程序的處理過程只發(fā)生在瞬時(shí)值-瞬時(shí)值模式。每次一個(gè)瞬時(shí)值從輸入讀入,輸出的瞬時(shí)值信號經(jīng)過計(jì)算發(fā)送到信號譯碼器。大多時(shí)域算法,就像FIR和IIR濾波器,都屬于這種類別??蛇x擇模式如幀-幀處理方式,要求時(shí)域變換。在幀-幀模式中,一組實(shí)時(shí)信號從輸入讀入,經(jīng)過計(jì)算,再寫到輸出口輸出。處理就緒中斷的服務(wù)子程序分為三部分。第一部分(27到33行)以定點(diǎn)數(shù)的形式接收來自譯碼器的信號,把它轉(zhuǎn)化成浮點(diǎn)數(shù)。在SHARC匯編語言中,每個(gè)數(shù)據(jù)寄存器儲(chǔ)存一個(gè)定點(diǎn)數(shù)在“r”(就像r0,r8,r15等等)和“f”(儲(chǔ)存一個(gè)浮點(diǎn)數(shù)在fl,f8,f15等等)里。例如,在32行中,在寄存器0(r0)里儲(chǔ)存的定點(diǎn)數(shù)轉(zhuǎn)化成浮點(diǎn)數(shù)后覆蓋寄存器0(f0)里的數(shù)。這種轉(zhuǎn)換根據(jù)寄存器1(r1)里的定點(diǎn)數(shù)按比例進(jìn)行。在第三部分,(47到53行),采取相反的步驟,將輸出的浮點(diǎn)數(shù)轉(zhuǎn)換成定點(diǎn)數(shù),發(fā)送到編碼器中。FIR濾波器將輸入信號轉(zhuǎn)換成輸出信號在35到45行之間提到。所有計(jì)算都以浮點(diǎn)數(shù)方式進(jìn)行,避免擔(dān)心比例和溢出問題。就像上一章提到的那樣,代碼的這部分被最優(yōu)化以便充分利用SHARCDSP的運(yùn)算能力在每個(gè)時(shí)鐘周期運(yùn)行多任務(wù)。編寫好匯編語言和設(shè)計(jì)好濾波器核心后,我們已經(jīng)準(zhǔn)備好編寫一個(gè)能在SHARCDSP上運(yùn)行的程序。執(zhí)行這部分包括運(yùn)行編譯器,匯編程序,連接器,三部分由EZ-KITLite提供。編譯器把C語言轉(zhuǎn)換成SHARC匯編語言。如果你直接用匯編語言編寫程序,就像本例一樣,可以直接跳過這一步。匯編程序和連接程序?qū)⒊绦蚝屯獠课募ū热缦到y(tǒng)文件,譯碼器初始化程序,濾波器核心等)轉(zhuǎn)化成最終的可執(zhí)行文件。所有這一切大概需要三十秒,直到最終的結(jié)果保留在你計(jì)算機(jī)的硬盤里。EZ-KITLite主程序這時(shí)用來運(yùn)行EZ—KITLite的程序。只需點(diǎn)擊你想讓DSP運(yùn)行的文件夾,EZ—KITLite主程序完成余下的工作,下載程序且運(yùn)行它。它帶給我們兩個(gè)問題。第一,我們怎樣測試音頻濾波器來確定它按照我們預(yù)先設(shè)定的那樣工作;第二,世上確實(shí)有一個(gè)叫AnalogDevices的公司在生產(chǎn)數(shù)字信號處理器?DSP系統(tǒng)的模擬測量有一段時(shí)間,忘記你正在學(xué)習(xí)數(shù)字技術(shù)。讓我們從一個(gè)專攻模擬電子技術(shù)的工程師的立場出發(fā)來看待這個(gè)問題。他不在乎EZ—KITLite里面是什么,只在乎模擬輸入,模擬輸出。就像圖29—3顯示的那樣,他會(huì)引用傳統(tǒng)的模擬方法來分析“黑盒子”,在輸入端附加一個(gè)信號發(fā)生器,在示波器上觀察輸出情況。我們的模擬教練發(fā)現(xiàn)了什么?第一,系統(tǒng)是線形的(從這個(gè)簡單的測試只能了解這么多)。一個(gè)正弦波輸入,輸出也是一個(gè)正弦波。如果輸入信號的振幅或者頻率改變了,相應(yīng)的改變將在輸出得到體現(xiàn)。當(dāng)輸入的頻率慢慢增加,存在一個(gè)點(diǎn)使輸出的正弦波振幅迅速減少到零。這事發(fā)生在取樣速率剛減少一半時(shí),這是由于ADO上濾波器的影響。現(xiàn)在我們的工程師注意到了一些模擬世界未知的事:系統(tǒng)是完美的線形相位。換句話說,在輸入信號和輸出結(jié)果的事件之間有一個(gè)確切存在的延遲。例如,看看圖29—2的濾波器核心例子,當(dāng)對陣中心在瞬時(shí)值150單位的時(shí)候,輸出信號相對于輸入信號將延時(shí)150單位。例如,當(dāng)系統(tǒng)取樣速率在8千赫時(shí),這種延時(shí)將達(dá)到18.75毫秒。進(jìn)一步說,累加轉(zhuǎn)換器也將附加一個(gè)固定的延時(shí)。NRCOEFdlii^[NRCOEF]coef[NRCOEF]Taenumberofcoefficientsiu?liefilterterne!(30'inthisexnmple;1AcircularbufzerHwldingthein^utsample7;,iudat^meiroryAcircularbufferlioldio^Thefi'tercoefticieiits.mprogrammemoryBeforeenteringthemainproEiain.tlimfollowmgcon;:tautwd■.'triabletmu&7bedefinedOC-1OC-2OC-3004OCc0D60070D8009010Oil01201301401201601?018019020021022O23024Q2i026027028Q2903003103203303403?03603703803904004104204304404?0460470480490?00?l0j20?3***z*x*********xiPROGPA.'1x****x**x*******x#***x#***x#***x#***x#***x#***x#***x#***x#x**x#x**x#x**x#x**x#x***#x*main:IN7TLALIEETHEDAGSTOCONTROLTHECZRCUL_\RBUFFERSbC1=dime:1Htlipd^ine[].:liebufferhidingthepa&7inpii:samples也ID=\i-dime:''uiO=1:b8=coef:1=ietlipcoef{].thebuzferholdingthefiltercoefzisien:7:118=cicoez:'''ui8=1:ENTERALOOP.V.'AITINGFOR.THESAMPLE-RE.\DYINTERRUPT<wait:idle:jumpwait:SUBROUTINETOPROCESSONESAL4PLE***********sample_ready:川ACQUIRETHEINPUTSAMPLE.CONVERTTOFLOATINGPOINT和rO=dm(m_bnf+1);rO=lshiftrC1bv16:t:=-31:'fl)=floatiObyrl;dm(;C.m0i=i^:mo1.-?theinputsampleiiiyorC1Kshifttothehighest16bit?topreservetbesign*&etthescalingfortheconversion1■'*convertfromfixedtofloatinzpoint*&yorethenewsampleiudline[].andzerofl2**CALCULATETHEOUTPUTSAMPLEFROMTHEFIRFILTER*f'2=0;prime?liere^i^ter;;f2=drniiD.ir0);=4=pni(i8.mS):'fS=f2*f4.f2=dmCiO.mQ).f4=pin(i8,m8X1efzicien?mainloop也Iciitt=NRCOEF-2.deiDc.buoti''ceifS=f2*f4.712=fS-fl2.f2=dirdO.mC').f4=pin(i8:m8);fS=z2*f-.=12=f8+zl2:注L-omplete?lielastloop擴(kuò)fl?=f?-fl2;*CONVERTTHEOUTPUTSAtiPLEIOFIXEDP07JI&OUTPUT<rl=51:rS==lxfl2byrl:rti(<lb〕;rS=IshiftrSb耳-16:dm血Jmf+lj=r8:Httne丸alingfsrtneconversion4cinverttTomTloitiii^tofixedpc:in:*reTumtroirintemjpt.bu:executenext2Illlee*mhifttothe'ewes:1^bi:m*tns-.etbesamplets:lieoutput*7I.\BLE29-2FZFLniterpr^ETiminassembly.OscillgLQp*OscillgLQp*■SignalGexueracor吧■■■=?〕EZ-EITmitp'AtFIGURE29-3Te:tmztjeEZ-KILLite.Ahsi'oeeDgiiiKi:=逬:]ieperzonuiiiceofi^ystem?ycciiHectmEaee-Derntoitoit-input.idJrmoicilLoicapetoits.output.WheniD^Phu凸躬t^eEE-KlT1/VMeasuredficequeocyresponseL-Lt^)isTeuedlqThistyav.Ltappearstobeivirtuallyp^rfest^llfiIc?systemMeasuredficequeocyresponseFIGURE29-4MeasuredzequeDcyre^poDse.Thi?srapliiIiot'.smeasuredpointscm:liezrequencyresponseoftheexampleFIR.filter.Theselrea^iiedpoLiit;:havefar匕活accuracythantriedesignedfrequencyre&poii&eofFi?.29-C20CO40306030SXCltKKX)Ffeqjueficy我們的模擬工程師看到這種線形相位時(shí)將會(huì)激動(dòng)異常。信號沒有像他預(yù)期的那樣出現(xiàn),他也會(huì)飛快的扭動(dòng)旋鈕。他會(huì)抱怨觸發(fā)器沒有正常工作,嘟噥著說:“這根本沒有意義,這到底發(fā)生了什么事?”,“誰動(dòng)了我的示波器?”DSP系統(tǒng)工作得非常優(yōu)秀,這將花掉他幾分鐘時(shí)間來明白他看到得一切。將給他留下深印象的是,我們將會(huì)要求我們的工程師用手來測量系統(tǒng)的頻率響應(yīng)。為了完成這件事,他將在125赫茲和10千赫茲之間每次增加125赫茲調(diào)遍整個(gè)量程。他測量每個(gè)頻率的輸出信號的幅度,用輸入信號的幅度來劃分它。(當(dāng)然,這樣做最簡單的方法是使輸入信號的幅度保持一個(gè)固定的值)。這次試驗(yàn)中我們把EZ-KITLite的采樣頻率設(shè)置在22千赫。換句話說,圖29—2a中0到0.5數(shù)字頻率對應(yīng)于現(xiàn)實(shí)生活中測量的直流電11千赫。圖29—4顯示了EZ—KITLite實(shí)際的測量情況;沒有比這更好的了。測量的數(shù)據(jù)在誤差允許的范圍內(nèi)與理論的曲線相符。這是我們的模擬工程師在用電阻,電容和感應(yīng)器做成的濾波器中從未發(fā)現(xiàn)的現(xiàn)象。然而,即使這樣也沒有讓DSP獲得應(yīng)有的榮譽(yù)。模擬方法使用示波器和數(shù)字伏安

表有一個(gè)典型的大概0.1%到1%的正確度和精確度。相比之下,16位譯碼器的DSP系統(tǒng)四舍五入引起的誤差大約限制在0.001%,內(nèi)部計(jì)算以浮點(diǎn)數(shù)方式進(jìn)行。換句話說,這種裝置的精度大約是所用的測量工具的精度的100倍。對頻率響應(yīng)適當(dāng)?shù)墓烙?jì)需要一個(gè)專門的設(shè)備,就像一個(gè)20bit的數(shù)模轉(zhuǎn)換器處理過的數(shù)據(jù)。事實(shí)就是,DSPs被用來處理要求高精度的測量裝備一點(diǎn)都不奇怪。***(543頁)***現(xiàn)在我們來回答這樣的問題:為什么AnalogDevices公司銷售數(shù)字信號處理。就在十年前,自動(dòng)距離跟蹤的信號處理技術(shù)就在精密的高級移動(dòng)電話業(yè)務(wù)和類似晶體管的回路中得到應(yīng)用。今天,最高質(zhì)量的模擬處理過程都能用數(shù)字技術(shù)來操作。AnalogDevices公司是個(gè)人和單位的一個(gè)偉大的典范;保持你的視野和目標(biāo),但是不要危懼技術(shù)的革新。定點(diǎn)數(shù)和浮點(diǎn)數(shù)的對比在上一例中,我們充分利用了SHARCDSP的一項(xiàng)核心特征,它能勝任浮點(diǎn)數(shù)的運(yùn)算。甚至輸入或輸出譯碼器的瞬時(shí)值是定點(diǎn)數(shù)格式的數(shù)據(jù),在將它們轉(zhuǎn)換成浮點(diǎn)數(shù)格式的FIR濾波器算法上我們遇到了難題。就像上一章所討論的那樣,有兩個(gè)原因使我們必需將數(shù)據(jù)轉(zhuǎn)換成浮點(diǎn)數(shù)格式:便于程序設(shè)計(jì),執(zhí)行。它確實(shí)有什么不同嗎?對于程序師,它確實(shí)有很大不同。浮點(diǎn)數(shù)代碼更容易編寫?;仡檲D29-2的匯編程序。在主FIR濾波器里只有兩行(41和42行)。相比之下,在定點(diǎn)數(shù)情況下程序員必需為每一步數(shù)學(xué)計(jì)算編寫處理代碼。為了避免溢出和下溢,必需核實(shí)值的大小,如果需要的話,還要核實(shí)相應(yīng)的刻度。中間結(jié)果需要用一個(gè)擴(kuò)展的高性能的電池來維持以避免重復(fù)的四舍五入錯(cuò)誤產(chǎn)生的結(jié)果混亂。運(yùn)行的問題相對來說要小得多。例如,圖29-5a顯示了一個(gè)帶有實(shí)時(shí)中斷的FIR低通濾波器,就像16章敘述的那樣。這種“大尺度”曲線無論是用定點(diǎn)數(shù)或者浮點(diǎn)數(shù)計(jì)算看起來都一樣。為了看出這兩種方法的區(qū)別,我們必需通過倍增器將幅度放大幾百倍,就像(b)(c)(d)顯示的那樣。這時(shí),我們看到了明顯的區(qū)別。浮點(diǎn)數(shù)運(yùn)行的結(jié)果,如(b),在我們設(shè)計(jì)的方法下通過濾波器核心的限制實(shí)現(xiàn)其噪音的平滑過渡。那個(gè)過渡旁邊0.02%的越界是因?yàn)闉V波器使用的是布萊克窗體。要點(diǎn)是,如果想改善程序,重點(diǎn)在于運(yùn)算法則,而不是運(yùn)行。(c)和(d)中的曲線顯示了在濾波器核心內(nèi)每16bit和14bit單獨(dú)描繪一個(gè)點(diǎn)時(shí)會(huì)引起那個(gè)噪音。在好的運(yùn)算法則也無法優(yōu)化這條曲線;頻率響應(yīng)的的準(zhǔn)確形狀將被噪音吞沒。圖29—6顯示了定點(diǎn)數(shù)和浮點(diǎn)數(shù)在時(shí)域范圍的不同。圖(a)顯示了一個(gè)波動(dòng)信號的幅度以指數(shù)下降。這也許會(huì)再現(xiàn),例如,播線發(fā)出來的聲波,或者遠(yuǎn)處爆炸而引起的大地?fù)u晃。就像從前一樣,這種“大尺度”波形的不管是以定點(diǎn)數(shù)還是浮點(diǎn)數(shù)采樣的瞬

時(shí)值看起來都是一樣的。為了看出來不同,我們必需對幅度進(jìn)行放大。就像(b),(c)和(d)顯示的那樣。如第3章所述,這種量化顯示了很多額外噪音,限制了區(qū)別信號不同組成的能力。FxequeojcyFieqpencyFxequeojcyFieqpencyFIGLTtE23-5_Roiind-o5fiLiiieldthetequeu^'re習(xí)嚴(yán)li&e.Figure(a)tjenieqneDCYieipomeofaivindowed-siii:?kv.-pais□Iter,iisin?aBhckina口windowand1?Dpsiirtiinthefilter1;emel.Figures(b);(cland(d)diowamoredetailed說已丫wfthihnespotiEEbyzooiriueinon±ieamplitude.W/ien±eniterkemelisrepresentedinzloaniL^point.(b).tlieroiind-itfnoisei&in:igmncan7compared:otheurperfetTiodiiofthe計(jì)indmved-EincdesignAsshovniin[心and(d).repre^eiitLD?thealterkernelinfixedpiiutmalleiroiuid-offDOL\:ethedominateiiiipeiiectiDn.這些定點(diǎn)數(shù)和浮點(diǎn)數(shù)運(yùn)行之間的不同常常不是重點(diǎn);例如,就像圖29-5a和圖29-6a大尺度顯示的那樣,它們一般不能被區(qū)別出來。然而,一些運(yùn)用如浮點(diǎn)數(shù)的額外功能卻是非常有用的,有時(shí)甚至是關(guān)鍵問題。例如,高保真度的消費(fèi)者音頻系統(tǒng),就像CD唱機(jī),以16bit定點(diǎn)數(shù)再現(xiàn)原始信號。大多數(shù)情況下,它超過了人類聽覺的識(shí)別能力。然而,最好的個(gè)人音頻系統(tǒng)采樣信號達(dá)到了20到24bit,使我們的音樂儲(chǔ)存達(dá)到了完美的境界。浮點(diǎn)數(shù)運(yùn)算是處理高精度數(shù)字信號近乎完美的運(yùn)算法則。浮點(diǎn)數(shù)優(yōu)秀表現(xiàn)的另一個(gè)例子在當(dāng)運(yùn)算法則對噪聲很敏感的時(shí)候。例如,F(xiàn)IR濾波器對于四舍五入引起的結(jié)果很敏感。如圖29-5所示,四舍五入噪聲并沒有改變頻率響應(yīng)

曲線的形狀,但是整個(gè)曲線都充滿了噪音。IIR濾波器不同;四舍五入可以引起各種各樣的災(zāi)難,包括是它們本身不穩(wěn)定。浮點(diǎn)數(shù)可以讓這些算法通過消除頻率曲線銳度,減小衰減帶,跳變響應(yīng)越界來實(shí)現(xiàn)更好的性能。Schi^Ie-nufliberSchi^Ie-nufliberFIGURZ2£-6Rcuod-offnoi汩int^etimedomain.Figure(a)iliowianexampleii|Dalwl±esp^nentiallYdecaymeamplitude.Figures〔?,i:c〕.and(d)mil□認(rèn)amored&taLled'i'iewbyzoouilh?in□口±enniplimde.UTi亡口±esignal正representediofloatiiiFpoint.匕工theround-offuoiielovtIih?Ltcannotbeleenio山技ernpli.Asshawnio(c〕iod(dj.repre^eDnoe:lieSLenalinfixedpointproduce?farluelierlevelscfrcund-offncise.先進(jìn)的軟件工具我們最想檢驗(yàn)的是C語言編譯器。就像上一章討論的那樣,匯編和C語言通常都用來為DSPs編程。

LI.iTHOPERATIONSCHARACTER&STRINGM^JhlPULATION血absolute丁艮]n亡atoicod-.ertSTTL115toLiite^erarcso&Liiebsearchbioan7searchofarrayarcrin亡i^alnumderectalpjanuoeriscliaras:eratidaxtangenti皿phade?ectalphabeticcliru込c:亡:<171D2axtangentofquotienti^nzrlde?ectcontrol^jaiactercabsfcomplexibsolntevaluei血且:detec?decimal辦gitcexpfcomplexexponentiali^Eiaphde?ectprintablecharacterCMco&Liieidowerde?ectlov.ercaiecharaL-terco&nli^erbohcL-o&Loeimprintde?ectprintablecharacterco?cotauzeot琦UllCtde?ectpuiiL-niidoncharacterdi\-divisioni^spacede?ectwliLtespaceL-haracterexpexponential正ngp町de?ectuppercasechiracyerfmodmodulusi^disi?detec?hexadecimaldisi?loslianual應(yīng)燦dmlueinclirfindtir&tccciirreiiceofcharlog10ba&elOlogaiitrimmemspycopycliara^yersLLLHtHddmntns^ddLtLousTreatcoDciyeDAteitriu3&LLLHtnilllmntnsmuldplicationSTTCUipcompareMtnn護(hù)pC'rtrai^etoaSTrerrcr5e?errormessageuJraodrandomoiiiLbergenera??rs?rlenstnuzlengthsin=]ine'STrncirpcomparesaaiacter^siunli^erbohc^inesnrcliriiodlasTa^cinTenseof2^arsqrtsquarerootSTT^triiod&T1D5witrim^triugsrindrandomniiniber^eedsnlokcoo-.erts^tluetoTetenstantangentsystemsenttooperadoisystemtanlili^erbolktangentto^ov.erchangeuppercaseto'c'.verca^echangeloweycasetouppercasetoupperabortabooinialproeramendSIGNALPR0CESS2<GcallocallocAteidtLalizememorya_compre^?A-law20mpre&\:iDgtreedeaEocateHenoiya_expandA-lawespan^iaaiid'e^roce1;ioridlemsTmctLcmautoeorr^UT^some'^tioHin左miFtdefineinyemiptaaud'in^biquadbiquad"Liter^ecdonpoll_flag_iuteGtinputflaz'cfrcNcorjplexFFTsetfla^—J爼出:lieprocessorflasscro^scorrCT05w?orTelatioiitmier_;ffdisablepraces^^rtimerfirFIRfiltertimer^DDenablepr;cenortiineThi^tosTim■_*hi&toETniiLtLiner_ie7initializeprocessortimeriffNinveneL-omplesFFIiirI衛(wèi)iL:ermeanhl亡anofanarray丄RLE29-3mu_c0mpressmulawL-ompressiinlibrniyfuoctiom.Tinsi&mpartiallimtw:themu~expandmulawexpansiona'.'aiLib'eivli亡口Ciiu^edtoprosramrffiNrealFFTeAoaloeDencesSHARCDSPt.'wna*nr&valueofannm-.-PROG^biCONTROL使用C語言的一個(gè)很大的好處就是能利用函數(shù)庫,這也是C語言和DSP算法的一個(gè)基本的操作。圖29—3顯示了部分應(yīng)用于這也是C語言和DSP算法的一個(gè)基了很多DSP的通用功能,如三角函數(shù)(正弦,余弦,正切,等等),對數(shù),指數(shù)。如果你的程序里需要用到這些函數(shù),就有足夠的理由用C語言來編程而不是匯編。對圖29—3的“信號處理”程序應(yīng)引起足夠重視?,F(xiàn)在,你將發(fā)現(xiàn)DSP的關(guān)鍵算法,包括:和統(tǒng)計(jì)學(xué)函數(shù)如平均值,均方根,和實(shí)數(shù)和復(fù)數(shù)快速傅立葉變換,F(xiàn)IR和IIR濾波器,和統(tǒng)計(jì)學(xué)函數(shù)如平均值,均方根,和方差。當(dāng)然,所有這些程序都是用匯編語言編寫的,使它們運(yùn)行起來在速度和儲(chǔ)存上CIP.CULAR_BUFFEP.(f.oat.l.ec^CIP.CULAR_BUFFEP.(f.oat.l.ec^defmeesbs21kDAG1re^l1*:aDMpointeracircularbuffer*川CIRCBUF.C*Thi^inanechoproEiam^TitteiiioCf=rti]eADSP-21061EZ-fCTLite.Tne1echoproE:am?nkeithe淀Ikdiniprogramnud衛(wèi)廿血acircularbuzferiDescheme.Theciiriihibufferndefinedby?liefunctioQsCIRCULAR_BUFFER.BASE,andLENGTH.TheeL-li;:hpeTzcnredbyaddingtheL-iirreDtiiipu?t;?lieoldestinput.Thedelayintheec^ocanbemodifiedbyclian^iQ^BUFF_LENGTE.1嚴(yán)fiqelude-21020.2*」zortheidleCcommaiidKFioclude<\:LEDal.ah?*zorthemteiruptciizmiaQd*^include<iracres.li>-KforCIRCULARBUFFERandseamen:functisDS也J.^defmeBUFFLENGTH400Dliip_re?0andliLp-re^?areliip_re?0andliLp-re^?areKn&edinthearcliiresturefile*■.■o'atLlefloatin_porteminent(jip_reg0):■.■o'atLlefloatout_por7segmen:(hip_reg2:oldpnxME_inpii:i:itit):oidmain(void^{Maketlinnvariable'en^Tliarray.ZfeuiuU:;:isstoppedatlrain?*and_BUFF_LENGTHindmimmodifietl.theechode'ay*ismodified.DanotmaieBUFF_LENGTHgreatertjao^tacksize!floatdata_bnff[BUFF_LENGTH]:iiiTeiriip:(SIG_IRQ3.pr;cess_Liipiitj:BASE(echoj=data_bnff:LENGTH(echo)=BUFF_LENGTH:Load;:a'andl'認(rèn)i:libuff&ynr?adr也LoadiL1with?lielen^ylioftaebuffer床asthearrayisfilled,thenthlocatioDcwutLniiE?lienev.estA'alue.while*thehtIi-l'losationcontaiostheilde\:tv^lne.Kwhile(1)floatolde&7.uev.est:idleO:theecho^endstheriinioftheraws:*■'recentvalueandtnei'de^tva'lie*Ecn;:hp;Ln7Liistothentli1ol-j7l;iiaftertheinterruptroutine.=Placethenew'Aluein'.'nniblenewest'.Af?er?lienet己譏.update-*thepointerbyonep=mtatlocation□-!.*CIR.C_R.EAD(erho,1.newest,dm);N;wechoispointington-1.ReidthelicatLonandplacemineiovariableoldest1.Donotupdatethepointer,sinceitisnowpoiDtiDe70taenew'ocatioDforTheintemiptnandler.=CIR._READ;ecjo.0.oldes:.dm):addtneaideitwdmostrecentand\:end;utonp;rt*out_p0rt=oldeit-newest:■,cldproce;:\:_iDput(intint_ninnber;{"_*Thenewestinputvaluenivri:怙口o'.'er:lieoldest^'alnein:lieDtn審嚴(yán)locatisDandtbepointerisnotupdaTed.CIR.C_WRZTE(echo.0.m_psr7.dm):TABLE29-4r.uisirniinrr.uisirniinr-iisourcefileMoveevillybe7,veeuEdi7.Biuld.nndDebugacn-.itLestfixAs&eizab'vandCldaVl^.v'build"re&iilTiPmverfiieditorimder?以口血mvtrax-■Easyacse^sthrcuplilisckirarksFIGUKE29-?_Example亍凱己亡口frcmVi^iui'DSP.Thisproviderin?e?:^teddevelopmenteD-iioLmeotforcre^tiu^p:o^ramicdtheSHARC.AJofthefollov.iii?fnnctKmrcanbeacL-e^edft=mthi^sin^'einterface:edinD^.compi'in?.aiseirbliDe.hiikiD^.siiEiilanD^.debummiiim-do^Dl^adui^.andPROMcreation.jJJ'■*wrJ—JCpjuvk*-I-圖29-4舉了一個(gè)C程序的例子,來自AnalogDevices公司的“C語言編程導(dǎo)讀和參考手冊”。這個(gè)程序通過附加一個(gè)編譯的延遲相對它本身產(chǎn)生了一個(gè)回音。從輸入獲得的最新的4000個(gè)瞬時(shí)信號被儲(chǔ)存在一個(gè)循環(huán)緩沖器中。每個(gè)信號需要時(shí),緩沖器就更新,新數(shù)據(jù)信號覆蓋最早的信號,結(jié)果值直接輸出。下一個(gè)你將尋找的先進(jìn)軟件工具有一個(gè)完整的開發(fā)環(huán)境。這是一個(gè)奇特的要求,意味著DSP編程和測試的全部需求都將集成在一個(gè)迷人的工具包里。AnalogD

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論