因此,對于汽車電子數(shù)字化產(chǎn)品的研究,完全可以吸取軟件無線電的以下主要思想:第一,要使汽車電子產(chǎn)品擺脫硬件結(jié)構(gòu)的束縛;第二,并不是不要硬件;第三,汽車電子產(chǎn)品應該具有開放性和兼容性,開放是指對使用的開放、對生產(chǎn)的開放和對研制的開放。下面,就基于軟件無線電的思想探討DSP和FPGA在汽車電子中的主要應用。
基于DSP和FPGA的車用語音信號處理
汽車電子產(chǎn)品中的語音處理主要涉及到語音的數(shù)字化處理、語音編解碼、語音壓縮和語音識別。國外比較熱門的汽車電子產(chǎn)品之一就是語音識別系統(tǒng),語音識別系統(tǒng)具有潛在的應用前景,包括聲控電話、語音操作導航、聲控選擇廣播頻道、防盜語音鑒別等。例如,一種基于隱式馬可夫模型(HMM)的與講話人無關(guān)、100條指令識別的應用,由文獻可知,那幺聲學HMM模型的大小將為。進行包括輸入語音采樣的細分/開窗、MFCC提取、概率計算和Viterbi搜尋等適時處理,對DSP的運算量要求一般為10000萬次乘加(MAC)運算。對于連續(xù)語音信號的識別,則要求更好的數(shù)字信號處理速度和更大的存儲空間。
由于語音識別系統(tǒng)要對聲音進行實時處理和采樣,需要大量的運算,如果以它們20%的計算資源分配用于1000萬次MAC語音識別應用,那么需要處理器能夠具有5000萬次MAC的能力。因此,必須采用DSP和FPGA才能完成其任務。DSP和FPGA的處理速度對語音信號處理應用系統(tǒng)的復雜性和性能起著決定性作用,高速DSP和FPGA的實現(xiàn)可實現(xiàn)聲道自適應和聲域自適應等現(xiàn)代語音處理和識別技術(shù)。從理論上講,DSP和FPGA處理速度越快,汽車語音處理和識別產(chǎn)品的應用性能就越好。
隨著應用日益多樣化,DSP和FPGA演變成不再是一塊獨立的芯片,而變成了構(gòu)件內(nèi)核。這使得設(shè)計師能選擇合適的內(nèi)核和專用邏輯“膠結(jié)”在一起形成專用DSP和FPGA方案,以滿足信號處理的需要。目前,還出現(xiàn)把DSP核和ASIC微控制器集成在一起的芯片。汽車電子系統(tǒng)使用通用DSP和FPGA來實現(xiàn)語音合成,糾錯編碼。而語音合成、語音壓縮與編碼是DSP最早和最廣泛的應用,矢量編碼器用于將語音信號壓縮到有限帶寬的信道中。
]]>ADSP-21xx
結(jié)構(gòu)特點
16-bit定點DSP
帶8-bit保護位的40-bit
ACC單周期執(zhí)行指令多數(shù)指令
可以條件執(zhí)行
尋址模式
立即數(shù)尋址、寄存器直接尋址、存儲器直接尋址、以及寄存器間接尋址。對于ADSP-219x,還有寄存器事后修改、立即修改、直接和間接偏移尋址模式。其程序序列具有內(nèi)部循環(huán)計數(shù)和循環(huán)堆棧,從而實現(xiàn)零開銷循環(huán)。每個地址發(fā)生器支持四個循環(huán)緩沖器,每個循環(huán)緩沖器又有三個寄存器,用來定義循環(huán)的終點、長度和訪問的地址。一個地址發(fā)生器支持位倒序?qū)ぶ贰DSP-219x支持十六個循環(huán)緩沖器,通過使用一個地址發(fā)生器影子寄存器和一組基寄存器,以增加循環(huán)緩沖的靈活性。
特殊指令
ADSP-219x可以有條件地執(zhí)行大多數(shù)指令。其do until命令可以建立任意長度的指令序列,作四層嵌套循環(huán)。ADSP-219x則支持八層嵌套。ADSP-21xx是非流水機型,因而不會對轉(zhuǎn)移或子程序調(diào)用帶來影響。
開發(fā)支持
ADI公司的軟件和硬件開發(fā)工具包括該公司的VisualDSP集成開發(fā)環(huán)境、在線仿真器和開發(fā)套件。VisualDSP提供對優(yōu)化的C編譯器、匯編器、連接器及調(diào)試器的接口。該公司的仿真器適用于通用的串口總線、PCI、以及以太網(wǎng)主機平臺。其EZ-Kit Lite包括一個評估板和有限的、但功能齊全的VisualDSP。
TigerSharc DSP
結(jié)構(gòu)特點
16-bit定點DSP
VLIW(超長指令字)結(jié)構(gòu)可以在一個機器周期內(nèi)執(zhí)行四條指令
該系列DSP具有SIMD(單條指令多個數(shù)據(jù))的能力
第一個TigerSharc DSP集成了6 Mbit的RAM
尋址模式
立即數(shù)尋址、位倒序?qū)ぶ贰K循環(huán)、寄存器直接尋址和寄存器間接尋址。其SIMD存儲器傳輸機制使單個取數(shù)和存儲指令在兩個存儲器塊和兩個計算單元之間作數(shù)據(jù)傳輸。
特殊指令
指令集直接支持高精度和低精度類型數(shù)據(jù)之間的轉(zhuǎn)換,如在單周期內(nèi)將定點數(shù)轉(zhuǎn)換成浮點數(shù),將16-bit數(shù)轉(zhuǎn)換為32-bit數(shù)。TigerSharc沒有硬件模式,其指令集支持算術(shù)功能,如帶符號的和不帶符號的整數(shù)和小數(shù)運算。這將簡化高級語言的編程。在各種情況下都提供優(yōu)化的飽和模式。
開發(fā)支持
ADI公司的軟件和硬件開發(fā)工具包括該公司的VisualDSP集成開發(fā)環(huán)境、在線仿真器和開發(fā)套件。VisualDSP提供對優(yōu)化的C編譯器、匯編器、連接器及調(diào)試器的接口。該公司的仿真器適用于通用的串口總線、PCI、以及以太網(wǎng)主機平臺。其EZ-Kit Lite包括一個評估板和有限的、但功能齊全的VisualDSP。
SHARC DSP
結(jié)構(gòu)特點
16-bit定點DSP
支持定點和浮點運算
新的SIMD錘頭運算(Hammer-head operates)
集成有大的SRAM
尋址模式
立即數(shù)尋址、索引尋址、位倒序?qū)ぶ贰K循環(huán)、寄存器直接尋址和寄存器間接尋址。(對于片外存儲器的訪問,必須采用間接尋址。)
特殊指令
SHARC提供位操作、平方根的倒數(shù)、條件子程序調(diào)用、零開銷單條指令和塊指令循環(huán)、定點數(shù)和浮點數(shù)的比較、以及大多數(shù)指令的條件執(zhí)行。SHARC支持IEEE-754單精度浮點數(shù)(23-bit尾數(shù)、8-bit指數(shù)以及符號位),40-bit擴展精度IEEE格式(32-bit尾數(shù))。
開發(fā)支持
ADI公司的軟件和硬件開發(fā)工具包括該公司的VisualDSP集成開發(fā)環(huán)境、在線仿真器和開發(fā)套件。VisualDSP提供對優(yōu)化的C編譯器、匯編器、連接器及調(diào)試器的接口。該公司的仿真器適用于通用的串口總線、PCI、以及以太網(wǎng)主機平臺。其EZ-Kit Lite包括一個評估板和有限的、但功能齊全的VisualDSP。其SHARC匯編語言以一種代數(shù)式語法為基礎(chǔ)。
Lucent
DSP-16xx
DSP 16000
DSP 16xx
結(jié)構(gòu)特點
16-bit定點DSP
具有16316-bit的乘法器
36-bit的ALU/移位器
所有片種都有片內(nèi)ROM
工作在2.7-4.75V
特殊指令
單條指令/塊指令的硬件循環(huán),條件子程序調(diào)用,比較,混合尋址,指數(shù)檢測,bit位提取、移位和替換。沒有旋轉(zhuǎn)指令。
開發(fā)支持
其硬件開發(fā)系統(tǒng)包括在線仿真器。評估板和演示板。軟件開發(fā)工具包括匯編器/連接器,調(diào)試器,軟仿真器和應用程序庫。EDA廠商還提供將DSP軟仿真器模塊插入的系統(tǒng)級的仿真工具。
DSP 16000
結(jié)構(gòu)特點
雙MAC單元
支持16332-和32332-bit的乘法ALU
支持16-、32-、40-bit運算
X和Y存儲器具有32-bit數(shù)據(jù)寬度
尋址模式
寄存器和存儲器直接尋址,寄存器間接尋址,立即數(shù)尋址以及寄存器+置換尋址。由于器件不提供位倒序?qū)ぶ罚荒苡密浖䜩韺崿F(xiàn)。支持兩個并發(fā)的循環(huán)緩沖器。尋址模式面向指針算術(shù)運算。
特殊指令
支持16-bit和32-bit的混合指令。因為轉(zhuǎn)移需要三個機器周期,許多指令的條件執(zhí)行可以避免轉(zhuǎn)移。Redo指令可以重新運行用do指令裝入cache的代碼。其追索編碼器將加速Viterbi比較指令的執(zhí)行,并產(chǎn)生模式控制的效果。此外,用戶可以使用比較指令來決定Viterbi處理的最小公共通道。其他的特殊指令還有旋轉(zhuǎn)、取負、取絕對值和定點算術(shù)運算。
開發(fā)支持
軟件工具包括ANSI C 編譯器、匯編器、連接器、調(diào)試器和軟仿真器。硬件工具包括在線仿真器和開發(fā)板。基于Gnu C的C編譯器進行局部和全局的優(yōu)化,以便進行C源代碼的調(diào)試,也可作C和匯編混合代碼的調(diào)試。匯編器支持ANSI C預處理,允許文件包含、宏置換、條件匯編,以及各種常數(shù)格式。該匯編器還允許表達式包含多個用戶定義的標號,并支持預處理偽指令,使匯編器與調(diào)試器共享宏運算。調(diào)試器支持單個或多個同類的或不同類的處理器的集成調(diào)試。支持數(shù)據(jù)和指令斷點、接近實時的軟件仿真、混合的C代碼和匯編代碼調(diào)試、廣泛的代碼分析、用TargetView通信系統(tǒng)通過JTAG來作獨立的或連網(wǎng)的硬件仿真、硬件跟蹤,以及片內(nèi)的周期計數(shù)。廣泛的片內(nèi)調(diào)試硬件可以實時監(jiān)視許多處理器。在調(diào)試器中單步運行代碼時,可以圖形化地顯示通過DSP的數(shù)據(jù)流。這樣,用戶可以觀察到處理器中沒有充分使用的部分,修改代碼來提高效率。Synopsys COSSAP, Cadence SPW, 以及 Mathworks Matlab 等第三方的工具也支持 DSP16000的仿真。軟件工具的價格為1500美圓,硬件工具的價格為5000至7000美圓。
Motorola
DSP-56800
DSP 563xx
DSP 56800
結(jié)構(gòu)特點
16-bit定點DSP
帶有控制功能的DSP
可以中斷的硬件do循環(huán)
工作于2.7V和70MHz
尋址模式
寄存器直接尋址、短的或長的存儲器直接尋址、七個存儲器間接尋址、以及立即數(shù)尋址。還支持短的轉(zhuǎn)移偏置和循環(huán)緩沖器的模數(shù)計算。
特殊指令
可以作單指令或塊指令的硬件do或repeat循環(huán)。與ALU運算并行的單個或雙的并行搬移指令,在取指令的同時允許作兩個存儲器訪問。允許對任何寄存器或存儲器作位操作。在作單周期乘法和MAC的同時,作取整、加、減、平方。使用一個條件轉(zhuǎn)移指令和比較指令,實現(xiàn)搜索和分類算法。如果特定的條件為真,則DSP執(zhí)行從一個寄存器到另一個的傳輸(例如,存儲一個數(shù)列里最大值的索引值)。
開發(fā)支持
使用OnCE口,通過JTAG接口作片上仿真。CodeWarrior提供集成的開發(fā)環(huán)境,其中包括C編譯器、匯編器、連接器、軟仿真器、以及圖形化的源代碼和匯編級的調(diào)試器。其評估模塊為DSP56824EVM,開發(fā)系統(tǒng)為DSP-56824ADS。
DSP 563xx
結(jié)構(gòu)特點
24-bit定點DSP
七級流水,包含兩個取指、一個解碼、兩個地址產(chǎn)生、以及兩個執(zhí)行
具有條件ALU指令
以寄存器為基礎(chǔ)的結(jié)構(gòu)
與核執(zhí)行單元并發(fā)的六通道DMA操作
多數(shù)器件工作于3.3V,并兼容5V的I/O;有些器件工作于1.8V,兼容3.3V的I/O
與核并行工作的濾波器協(xié)處理器
特殊指令
桶型移位器支持多bit移位指令,可以在兩個方向上移動任意多位。該移位器還支持bit流解析與產(chǎn)生。支持并行ALU指令的條件執(zhí)行。如果測試條件為假,則處理器執(zhí)行NOP指令。563xx執(zhí)行16-bit的算術(shù)運算,這對于諸如LD-CELP等壓縮算法非常有用。通常,用24-bit的結(jié)構(gòu)來作16-bit的運算時,性能會有所降低,因為必須用軟件對24-bit的數(shù)作舍入運算。
開發(fā)支持
開發(fā)系統(tǒng)可以用于評估芯片和目標系統(tǒng)。該系統(tǒng)包括應用開發(fā)模塊、主機接口卡、命令轉(zhuǎn)換器、匯編器、軟仿真器、以及C編譯器。以JTAG為基礎(chǔ)的OnCE口可用于實時檢查所有的內(nèi)部總線,記錄最后的十二條指令。MOTOROLA提供用于DSP563xx系列的套裝的56種硬件的和軟件的工具。第三方的工具包括Tasking的編譯器和調(diào)試器,Domain Technologies的調(diào)試器。
Lucent/Motorola
StarCore SC100
StarCore SC100
結(jié)構(gòu)特點
16-bit定點DSP核
DSP結(jié)構(gòu)可以升級
可變長度指令提高代碼的效率和并行性
更好的C程序編譯器
尋址模式
寄存器直接尋址、地址寄存器間接尋址、與程序計數(shù)器相關(guān)的尋址模式、以及用立即數(shù)來決定感興趣的數(shù)據(jù)或地址的特殊尋址模式。
特殊指令
SC140的多個乘法器支持帶符號的和無符號操作數(shù),包括小數(shù)與整數(shù)格式的運算及其各種組合。其MAC單元支持加、減、取負、取絕對值、以及清零。MAC單元還支持除法、比較、最大值/最小值運算,在寄存器、算術(shù)移位和取整之間轉(zhuǎn)移。通過將寄存器中的值看成是打包成對的16-bit的操作數(shù),支持單指令多數(shù)據(jù)(SIMD)的最大值/最小值、加、減(MAX2,ADD2,SUB2)。使用這些指令,可以在單個周期內(nèi)執(zhí)行八個加法,或最大值/最小值運算。SC140包括一個專門的最大值/最小值運算單元,和維特比(Viterbi)的左移指令一起工作,以便有效地實現(xiàn)維特比編碼算法。
開發(fā)支持
其開發(fā)工具包括匯編器、優(yōu)化器、連接器、軟仿真器、ANSI C編譯器及與C11兼容的C/C11編譯器。該編譯器支持ITU/ETSI標準。
Texas Instrument
TMS320C2000
TMS320C5000
TMS320C6000
TMS320C2000
結(jié)構(gòu)特點
16-bit定點DSP
哈佛結(jié)構(gòu)支持兩個分開的總線結(jié)構(gòu)
雙訪問RAM允許在同一個周期內(nèi)讀或?qū)慠AM兩次
工作于3.3V
綜合介紹
TI的TMS320C2000 DSP是基于320C2xLP核。C2xLP核具有4級流水,工作在40MHz。具有JTAG仿真模塊。
C2xLP有一個中心算術(shù)邏輯單元(CALU),及32-bit的累加器(Acc)。Acc也是CALU的一個輸入。Acc的其他輸入包括16316-bit的乘法器通過定標移位器,以及輸入數(shù)據(jù)定標移位器。軟件可以通過進位位旋轉(zhuǎn)Acc的內(nèi)容,來實施位操作和測試。
為了實現(xiàn)小數(shù)的算術(shù)運算和驗證小數(shù)的乘積,C2xLP的乘積寄存器的輸出通過乘積移位器,以抑制運算中產(chǎn)生的多出來的bit。該乘積定標移位器允許作128個乘積累加而不會產(chǎn)生溢出。基本的乘積累加(MAC)周期,包括將一個數(shù)據(jù)存儲器的值乘以一個程序存儲器的值,并將結(jié)果加給累加器。當C2000循環(huán)執(zhí)行MAC,則程序計數(shù)器自動增量,并將程序總線釋放給第二個操作數(shù),從而達到單周期執(zhí)行MAC。
C2xLP可以訪問64000個16-bit的I/O口。C2000的外設(shè),諸如串口、軟件等待狀態(tài)發(fā)生器等都映射為數(shù)據(jù)或I/O空間。用戶程序必須使用其他的I/O地址來訪問映射在I/O空間的片外外設(shè)。C2000系列中的多數(shù)芯片可以產(chǎn)生0-7個等待狀態(tài)。
C2000系列由C20x和C24x系列組成。C20x的目標是低性能的電信設(shè)備,而C24x的目標是數(shù)字化的馬達控制。
C24x系列的芯片具有事件管理器,以便支持馬達控制。該事件管理器具有三個加/減定時器和九個比較器,可以和波形產(chǎn)生邏輯配合產(chǎn)生12PWM的輸出。支持同步的和異步的PWM產(chǎn)生。它還支持一個空間向量PWM狀態(tài)機,用開關(guān)功率晶體管來實現(xiàn),以延長晶體管的壽命和降低功耗。一個關(guān)機段產(chǎn)生單元也有助于保護功率晶體管。此外,事件管理器還集成了四個采集輸入,其中的兩個用于光編碼器正交脈沖的直接輸入。
C24x系列的芯片還集成有10-bit的A/D變換器,在500ns的時間內(nèi)對模擬信號作變換。另外還有8個或16個復用輸入通道。有些新的C24x系列的芯片還有自動排序的能力,按順序作16個變換,一個獨立的采樣/保持(S/H)預定標器,通過支持不同的輸入阻抗,給用戶以極大的靈活性。有些C24x系列的芯片有8K-32K字的閃爍存儲器(flash)。
尋址模式
立即數(shù)尋址、分頁的存儲器直接尋址(指令里的7-bit和數(shù)據(jù)頁指針的9-bit形成數(shù)據(jù)存儲器的地址)、寄存器間接尋址(使用8個輔助寄存器中的一個)、輔助寄存器自動增量或減量尋址。沒有循環(huán)緩沖。
特殊指令
MAC和數(shù)據(jù)移動指令(MACD)增加了將片內(nèi)RAM的數(shù)據(jù)塊移向MAC單元。當CPU使用輸入的數(shù)據(jù)值時,CPU將該數(shù)據(jù)值移至下一個存儲器單元。MACD也是使用循環(huán)緩沖器的一個替代方法,對于卷積和橫向濾波器是很有用的。C2000可以作單指令循環(huán)、乘法并累加前一個積、乘法并減去前一個積、累加前一個積并移動數(shù)據(jù)、多條件轉(zhuǎn)移和調(diào)用、存長立即數(shù)到數(shù)據(jù)存儲器、向左或向右旋轉(zhuǎn)累加器、數(shù)據(jù)塊移動。
開發(fā)支持
TI的Code Composer4.10是一個集成的開發(fā)環(huán)境,支持編輯、建立、調(diào)試、分析和項目管理。這個價值為1995美圓的開發(fā)環(huán)境包括ANSI C編譯器、匯編器、連接器、軟仿真器、實時分析器,數(shù)據(jù)是可視化的。TI的仿真器支持JTAG非插入式的邊界掃描仿真。該公司也分別提供C編譯器、匯編器、連接器、軟仿真器、實時分析器和應用程序庫。第三方可以提供評估模塊、仿真器、以及應用算法。
TMS320C5000
結(jié)構(gòu)特點
16-bit定點DSP
C55x有雙MAC單元;C54x有單MAC單元
C55的指令長度可變,且沒有排隊的限制
C55x有12組總線;C54x有8組總線
工作于0.9V和300MHz
綜合介紹
C5000是16-bit定點DSP系列,包括舊有的C5x、當前主流的C54x和最新的C55x。
C55x和C54x源代碼兼容,而C5x和C2x源代碼兼容。C54x關(guān)注于低功耗,而C55x則將低功耗提到一個新水平:300MHz的C55x和120MHz的C54x相比,性能提高5倍,而功耗則降到六分之一。盡管C5x還在全線生產(chǎn),但公司已經(jīng)將新設(shè)計轉(zhuǎn)向C54x 和C55x。C54x 和C55x采用改進的哈佛結(jié)構(gòu)。
C55x 具有12組獨立的總線,而C54x則有8組。它們都有一組程序總線和相應的程序地址總線。C54x總線的寬度為16-bit,而C55x總線的寬度為32-bit。C55x有三組數(shù)據(jù)讀總線和兩組數(shù)據(jù)寫總線,而C54x有兩組數(shù)據(jù)讀總線和一組數(shù)據(jù)寫總線。每組數(shù)據(jù)總線都有其相應的地址總線。C55x的數(shù)據(jù)地址總線的寬度為24-bit,而C54x的數(shù)據(jù)地址總線的寬度為16-bit。
C54x使用兩個輔助寄存器算術(shù)單元,在每個周期內(nèi)產(chǎn)生一個或兩個數(shù)據(jù)存儲器地址。這四組內(nèi)部總線和兩個地址發(fā)生器使其可以進行多操作數(shù)運算。
C55x的地址-數(shù)據(jù)流單元(ADFU)包含了專門的硬件來管理五組數(shù)據(jù)總線。該ADFU也可以作為通用的16-bit ALU,用于簡單的算術(shù)運算。該ALU從指令緩沖單元(IU)接收立即數(shù),和存儲器、ADFU寄存器、數(shù)據(jù)計算單元(DCU)寄存器、程序流單元(PFU)寄存器作雙向通信。無論是ALU,還是三個地址寄存器ALU(ARAU)中的一個,都可以修改作間接尋址的九個地址寄存器。這三個ARAU為C55x的三組數(shù)據(jù)讀總線提供獨立的地址。這種并行性保證了在每個CPU周期內(nèi)DCU去讀兩個16-bit的操作數(shù)和一個16-bit的系數(shù)。
C55x的DCU包含了兩個MAC單元,在單周期內(nèi)作兩個17217-bit的MAC運算。它還包含了一個40-bit的ALU和四個40-bit的累加器寄存器、一個桶型移位器、以及專門的Viterbi算法硬件。每個MAC單元包含一個乘法器和帶32-或40-bit飽和邏輯的加法器。三個數(shù)據(jù)讀總線將兩個數(shù)據(jù)流和一個公共系數(shù)流送給兩個MAC單元。用戶可以用ALU作32-bit的運算,或分開作兩個16-bit的運算。除開接受從DCU的40-bit Acc寄存器來的輸入外,ALU還從IU接受立即數(shù),并和存儲器、ADFU寄存器、PFU寄存器作雙向通信。
C54x是單17217-bit MAC機器,有一個40-bit的加法器、兩個40-bit的Acc和一個分開的40-bit的ALU。與C55x相類似,C54x的ALU也可以作成兩個16-bit的配置,完成兩個單周期運算。乘法器輸出處的40-bit的加法器允許作非流水的MAC運算,以及并行的兩個加法和乘法。單周期歸一化和指數(shù)編碼支持浮點數(shù)運算。
兩個系列的結(jié)構(gòu)都支持一個桶型移位器,將40-bit的Acc的值左移或右移最多達31bit。該桶型移位器將移位后的值送給DCU的ALU,以便作進一步的運算。指令集中關(guān)于二操作數(shù)、三操作數(shù)和32-bit操作數(shù)的指令,支持結(jié)構(gòu)的并行性。八個可以獨立尋址的輔助寄存器和軟件堆棧提高了C編譯器的效率。
C55x可以執(zhí)行可變長度的指令,這和C54x有顯著的不同。C54x的指令長度為固定的16-bit,而C55x的指令長度則從8到48 bit。C55x的IU緩存64 byte的代碼,且有一個解碼邏輯來確認可變長度指令中各指令的區(qū)別。局部循環(huán)指令使用指令緩沖隊列來循環(huán)執(zhí)行代碼塊。指令緩沖隊列還可以在執(zhí)行條件程序流控制指令的條件測試時,推測性地提取指令。指令解碼器按排列順序?qū)χ噶罱獯a,而不是執(zhí)行動態(tài)時序,從而可以在預定的時間得到結(jié)果。
C55x的PFU跟蹤程序的執(zhí)行點,并為多達16Mbyte的程序存儲器產(chǎn)生24-bit的地址。該單元的硬件,可用于循環(huán)、靈活性轉(zhuǎn)移、條件執(zhí)行、以及流水保護。單獨的程序計數(shù)器可以保證從子程序或中斷服務子程序快速返回。該PFU還包括管理指令流水和四個CPU狀態(tài)寄存器的邏輯。它以硬件方式可以提供四層塊循環(huán)嵌套。其硬件還支持條件循環(huán)。PFU處理流水控制冒險,并對讀后寫及寫后讀提供保護。當在指令流中這種冒險發(fā)生時,流水保護邏輯就插入一些周期,保證程序的正確執(zhí)行。集成的軟件等待狀態(tài)發(fā)生器使用戶可以使用較慢的外部存儲器。
該系列的所有DSP都支持片內(nèi)雙訪問RAM(DARAM),用戶可以將其配置為程序存儲器或數(shù)據(jù)存儲器。C55x還有擴展的同步突發(fā)性RAM、同步DRAM和異步SRAM及DRAM。片內(nèi)的鎖相環(huán)(PLL)允許用戶抑制時鐘,但C55x核還可以激活與自動管理片內(nèi)外設(shè)和存儲器的功耗。當程序不再訪問片內(nèi)存儲器時,它們就會被切換到低功率模式。處理器對片內(nèi)外設(shè)也提供類似的控制。
C55x還設(shè)置了用戶可控的低功率IDLE域,包括CPU、DMA、外設(shè)、外部存儲器接口、指令隊列、以及時鐘發(fā)生電路。
尋址模式
C54x支持單數(shù)據(jù)存儲器操作數(shù)尋址和32-bit操作數(shù)尋址,還使用并行指令支持雙數(shù)據(jù)存儲器操作數(shù)尋址。它也提供立即數(shù)尋址、存儲器映射尋址、循環(huán)尋址和位倒序?qū)ぶ贰?/p>
在C54x的基礎(chǔ)上,C55x還支持絕對值尋址、寄存器間接尋址、直接尋址,即位移模式。C55x的ADFU包括專門的寄存器,支持使用間接尋址指令的循環(huán)尋址。可以同時使用五個獨立的循環(huán)緩沖器和三個獨立的緩沖器長度。這些循環(huán)緩沖器沒有地址排隊的限制。C54x支持兩個任意長度的循環(huán)緩沖器。
特殊指令
C54x有專門功能指令,如FIR濾波器、單指令或塊指令循環(huán)、八個并行指令(如并行存儲或乘加)、乘法累加和減(十個乘法指令)、八個雙操作數(shù)存儲器搬移。C55x還有專門的指令,充分利用增加的功能單元和并行能力的優(yōu)點。用戶定義的并行機制,允許將執(zhí)行兩個操作的指令加以組合。
開發(fā)支持
eXpressDSP軟件技術(shù)包括DSP集成開發(fā)工具:可升級的實時軟件基礎(chǔ)、可重復使用的應用軟件接口標準、以及不斷增加的第三方的軟件模塊。Code Composer Studio是一個集成的DSP開發(fā)工具套件,包括C5000的C編譯器、DSP/BIOS、實時數(shù)據(jù)交換技術(shù)等。
引言
現(xiàn)在,由于復雜的硬件功能已經(jīng)集成到標準集成電路中,系統(tǒng)開發(fā)人員首先應該知道如何選擇合適的芯片,然后基于此硬件結(jié)構(gòu)設(shè)計軟件。系統(tǒng)設(shè)計者有兩種選擇:使用專用集成電路或可編程DSP實現(xiàn)信號處理。相比之下,可編程DSP有兩個優(yōu)點:
可擴充性:設(shè)計者可以根據(jù)要求的處理效率,和需要的資源來量體選用DSP及所需的片數(shù)。
可升級性:將硬件的升級轉(zhuǎn)化成比較容易升級的軟件改動。
使用可編程DSP時,必須對芯片的各種資源(例如CPU,存儲區(qū),外設(shè)等)加以管理規(guī)劃,通過DSP/BIOS可以輕松的完成這些工作。
TI公司TMS320C5000系列都帶有嵌入式DSP/BIOS,它有很強的實時分析和任務實時管理能力,可以有效的提高項目的開發(fā)效率,尤其表現(xiàn)在需要實時多任務的大型系統(tǒng)中。圖1為DSP/BIOS的部件結(jié)構(gòu)。
DSP/BIOS II簡述
TI公司的DSP/BIOS II 是在DSP/BIOS I 基礎(chǔ)上的擴展。它支持更多的軟件模塊,通過修改內(nèi)核提供搶先式多任務服務;它把傳統(tǒng)并行處理系統(tǒng)的內(nèi)核服務集成為可測試內(nèi)核;它增加了設(shè)備獨立的I/O數(shù)據(jù)流模型,繼續(xù)保留已有的數(shù)據(jù)管道;它增加了動態(tài)內(nèi)存分配與內(nèi)存管理。
TI的開發(fā)平臺CCS IDE 2.0中集成了DSP/BIOS II,可以對程序進行實時跟蹤與分析,提高應用程序開發(fā)的可靠性。可以在CCS插件中實時觀察DSP/BIOS內(nèi)核中各線程的執(zhí)行狀態(tài)與對象的當前屬性。通過設(shè)置工具,開發(fā)者可以對各個模塊實行配置。
DSP/BIOS II 核心API技術(shù)
目標應用程序通過調(diào)用DSP/BIOS II的API來獲得運行時的服務。一個單個DSP/BIOS II 模塊可以管理多種類的內(nèi)核對象,并且依據(jù)全局參量的設(shè)定來控制整個行為。DSP/BIOS II 可以歸納為六大種類:
內(nèi)核執(zhí)行線程
圖1 DSP/BIOS 部件結(jié)構(gòu)圖
圖2 線程優(yōu)先級示意圖
圖3 數(shù)據(jù)流示意圖
圖4 數(shù)據(jù)管道示意圖
DSP/BIOS II提供四類不同的執(zhí)行線程。每一類線程又具有不同的執(zhí)行、搶先和懸掛特性。DSP/BIOS II 支持兩個高優(yōu)先級的中斷線程和事先備好的后臺空閑過程循環(huán)。內(nèi)核執(zhí)行線程通過HWI, SWI和IDL模塊進行管理。另外,DSP/BIOS II新提供了多任務線程類,能較好的完成任務間的同步,它由TSK模塊管理,在任何執(zhí)行時刻為懸掛和恢復執(zhí)行同步,包括調(diào)整自身或其他任務的優(yōu)先級。這種同步化的任務給并發(fā)系統(tǒng)設(shè)計提供了良好的基礎(chǔ)。
硬件抽象
DSP/BIOS II 提供硬件的邏輯接口。它獨立于硬件實現(xiàn)。它對硬件部分的訪問、配置,內(nèi)存映射、片內(nèi)定時器和硬件中斷等進行抽象,簡化了應用的移植。它通過可視化的設(shè)置工具定義內(nèi)存映射、中斷向量表,對定時器編程,和完成動態(tài)的內(nèi)存分配與釋放。
設(shè)備獨立I/O
設(shè)備獨立I/O模塊執(zhí)行數(shù)據(jù)傳輸服務,傳輸可以在DSP與外設(shè)之間和多線程之間進行。DSP/BIOS II 支持數(shù)據(jù)管道(pipe)和數(shù)據(jù)流(stream)兩種傳送方式。數(shù)據(jù)管道是在讀寫線程之間快速傳送數(shù)據(jù)的小型統(tǒng)一部件。數(shù)據(jù)流為緩沖方案增加了靈活性使之適應更廣的需求。數(shù)據(jù)流依靠多個潛在的設(shè)備驅(qū)動器,這種設(shè)備驅(qū)動器封裝了設(shè)備獨立的屬性與方法。在數(shù)據(jù)通過堆疊(stacking)機制傳送時,設(shè)備驅(qū)動器能夠執(zhí)行數(shù)據(jù)處理操作,驅(qū)動器在數(shù)據(jù)通道中實行流水線處理。PIP和SIO模塊分別管理目標應用中的數(shù)據(jù)管道和流的傳送服務。SIO同DEV模塊結(jié)合,使DEV通過SIO發(fā)送和接收數(shù)據(jù)。
線程間的通信和同步
DSP/BIOS II 中的線程間通信和同步模塊支持多任務。信號量(semaphores)是最主要的同步方式。任務運用信號量保持同步資源訪問的同步。訪問外設(shè)的數(shù)據(jù)緩沖區(qū),以及訪問共享存儲區(qū)都是資源同步的典型事例。信號量還控制著多任務執(zhí)行的同步。信號量由SEM模塊管理,而LCK模塊提供共享資源的判優(yōu)和互斥。數(shù)據(jù)隊列可用于線程間通信。郵箱(mailbox)類似于數(shù)據(jù)隊列,能夠理想的完成任務通信。數(shù)據(jù)隊列由QUE模塊管理,郵箱模塊由MBX管理。
實時分析
實時分析(TRA)模塊在應用程序執(zhí)行期間與DSP項目實時交互和診斷。LOG,STS和TRC模塊對這些功能進行管理。主機與目標板之間的數(shù)據(jù)傳輸能力對實施分析是非常關(guān)鍵的。DSP/BIOS提供HST和RTDX模塊來管理這些功能。CCS IDE中提供了以下六種實時分析工具:
—CPU負載圖
負載圖提供的是目標CPU的負載曲線。CPU負載的定義是除去執(zhí)行最低優(yōu)先級任務以外的時間量。最低優(yōu)先級任務是只在其他線程都不運行時才執(zhí)行的任務。因此,CPU負載包括從目標向主機傳送數(shù)據(jù)和執(zhí)行附加后臺任務所需的時間。
——執(zhí)行圖示
在執(zhí)行圖示窗口中,我們可以看到各個線程的活動方式。執(zhí)行圖的刷新速率可以通過RTA控制版設(shè)定。圖形中還包括了信號量的活動,周期性函數(shù)標記(tick),和時鐘模塊標記。執(zhí)行圖示能從整體上看到項目所有線程的活動狀態(tài)。
——主機通道控制
利用信道控制窗口可以把文件綁定在定義的主機通道上,啟動信道上的數(shù)據(jù)傳輸以及監(jiān)測數(shù)據(jù)傳輸流量。
——信息記錄
選定某一記錄名,從此窗口可看到程序運行的信息記錄。主機從目標板獲取DSP/BIOS數(shù)據(jù)期間的記錄信息將顯示在此窗口中。開發(fā)者定義的記錄信息也顯示在窗口中。
——統(tǒng)計觀察
統(tǒng)計觀察窗可以計算出事件、變量出現(xiàn)的次數(shù),給出其最大值,最小值和平均值,監(jiān)測定時時間和變量的增值的實際值和期望值差。
——實時控制面板
它對運行時間中不同類型進行追蹤控制,在默認情況下,所有類型的跟蹤都是允許的。為跟蹤任意一種類型,必須使能全局主機(GLOBAL HOST)。通過實時改變控制版的屬性,還可以設(shè)定實時分析工具的刷新頻率。
DSP-4000系列數(shù)字式電纜分析儀選購指南 | ||||
|
DSP-4300 |
DSP-4100 |
DSP-4000PL |
DSP-4000 |
標準DSP-4300系列包裝 |
● |
● |
● |
● |
Cat6/5e 永久鏈路適配器 |
● |
|
● |
|
Cat6/5e 通道適配器 |
● |
● |
● |
● |
Cat6/5e 通道/流量適配器 |
● |
|
|
|
主板集成存儲卡 可存儲多達300個測試結(jié)果 |
● |
|
(僅限于概要測試) | |
多媒體卡及讀卡器 |
● |
● |
|
|
與現(xiàn)行廣播相比,數(shù)字音頻廣播(digital audio broadcasting,簡稱dab)這種新的傳輸系統(tǒng)憑借其諸多優(yōu)點而引起了國際通信行業(yè)的矚目,并獲得了迅速的發(fā)展。我國廣播電影電視行業(yè)標準《30~3000mhz地面數(shù)字音頻廣播系統(tǒng)技術(shù)規(guī)范》自2006年6月1日起實施。 該標準是dab標準,適用于移動和固定接收機傳送高質(zhì)量數(shù)字音頻節(jié)目和數(shù)據(jù)業(yè)務。
由于手機電視將為2008北京奧運提供服務,國內(nèi)多家單位已積極致力于dab的研制開發(fā)。本文將介紹dab接收機的樣機設(shè)計。
系統(tǒng)的性能要求
歐洲dab系統(tǒng)規(guī)定了4種模式,本設(shè)計采用的是第1種模式,具體參數(shù)如表1所示。其中,l表示一幀的符號數(shù),k表示每個符號的子載波個數(shù),tf表示一幀的持續(xù)時間,tnull表示空符號持續(xù)時間,ts表示每個符號的持續(xù)時間,tu表示有效符號的持續(xù)時間,δ表示保護間隔的持續(xù)時間。
表1 第1種dab傳輸模式的具體參數(shù)
采用這一模式的設(shè)計要求為:帶寬1.536mhz,載波頻率174~240mhz,誤碼率不超過10-4。
方案原理及設(shè)計思路
1 方案原理框圖
dab接收機原理框圖如圖1所示。dab接收機將從天線接收到的信號經(jīng)過高頻頭轉(zhuǎn)為中頻模擬信號,放大后進行a/d變換,得到數(shù)字信號。其中a/d采樣時鐘受晶振vcxo的控制,采樣時鐘偏移由采樣時鐘同步部分估計得到。a/d轉(zhuǎn)換后的數(shù)據(jù)一路做agc檢測去控制高頻頭的輸出,另一路經(jīng)過r/c變換成fft所需要的兩路實虛部數(shù)據(jù)信號。時間同步部分估計得到一個時域符號的同步頭,并粗略地估計由于收發(fā)頻率不一致而引起的頻偏。經(jīng)過fft變換后,頻率同步單元定出fft的窗口位置,校正帶有頻偏的數(shù)據(jù)。校正后的數(shù)據(jù)經(jīng)過信道估計,得到當前實時的信道響應,經(jīng)過信道均衡處理以消除信道多徑衰落的影響,然后再經(jīng)過解映射軟判決譯碼和解擾,然后將音頻信號送入信道解碼器解碼,接著進行信源解碼和音頻綜合,最后經(jīng)d/a還原成模擬音頻?
圖1 接收機原理框圖
2 方案的設(shè)計思路
dab接收機主要由數(shù)字下變頻、同步、ofdm解調(diào)和viterbi譯碼四大部分構(gòu)成。
數(shù)字下變頻就是把adc輸出的中頻數(shù)字信號變?yōu)閿?shù)字基帶信號,也就是在數(shù)字上實現(xiàn)頻譜的下搬移,主要包括希爾伯特變換、頻譜下搬移及降采樣等。
同步部分按功能包括符號定時同步、載波頻率同步和采樣時鐘頻率同步,以fft為界可以分為時域同步和頻域同步兩部分。
ofdm解調(diào)包括fft和差分解調(diào)等,經(jīng)fft和差分解調(diào)后的數(shù)據(jù)再經(jīng)過頻域解交織后進行qpsk解映射及量化,送給后續(xù)viterbi譯碼器進行軟判決譯碼。
對ofdm解調(diào)送來的數(shù)據(jù)提取快速信息信道(fic)數(shù)據(jù)進行解收縮、viterbi譯碼、解擾,得到復合結(jié)構(gòu)信息(mci),再利用mci對主業(yè)務信道(msc)數(shù)據(jù)進行譯碼。
dab接收機硬件電路設(shè)計
1 方案結(jié)構(gòu)框圖
根據(jù)對dab接收機組成部分的分析,本次設(shè)計采用fpga+dsp的設(shè)計方案,dab接收機完整的結(jié)構(gòu)框圖如圖2所示。dab信號從天線接收后進入高頻頭部分,選出所需的頻率塊,然后將選出的高頻信號送入混頻器,變?yōu)橹行念l率為38.912mhz、帶寬為1.536 mhz的中頻信號,中頻信號濾掉無用的頻譜部分后再經(jīng)頻率變換和濾波,變?yōu)橹行念l率為2.048 mhz、帶寬為1.536mhz的基帶信號。然后進入adc,采樣速率為8.192mhz,轉(zhuǎn)換成數(shù)字信號后進入fpga。fpga完成并串轉(zhuǎn)換,同步和解調(diào), 以及vcxo所需的控制電路等。處理后的數(shù)據(jù)進入dsp,dsp外部時鐘為24.5mhz,所以dsp可進行4倍頻,工作于100mhz。dsp中完成解交織、viterbi譯碼、解擾以及音頻解碼,最后數(shù)據(jù)被送入dac,恢復出原始模擬信號,送入喇叭即可收聽。
圖2 接收機的結(jié)構(gòu)框圖
2 器件的選型
器件的選型要求在滿足系統(tǒng)需求的情況下力爭使成本最低,功耗最小,設(shè)計方便且易于調(diào)試,所以要全面兼顧芯片的運算速度、價格、硬件資源、運算精度、功耗以及芯片的封裝形式、質(zhì)量標準、供貨情況和生命周期等。綜合考慮以上幾方面因素,本次設(shè)計中adc選用tlv5535,dac選用akm4352,fpga選用ep1s40,dsp選用tms320vc5510。
tlv5535是一款性能優(yōu)良的8位adc,具有35msps的采樣速率,3.3v單電源供電,典型功耗只有90mw,模擬輸入帶寬達600mhz,很適合本設(shè)計。akm4352是非常適合便攜式音頻設(shè)備的dac,帶寬20khz,采樣速率8~50khz,工作電壓為1.8~3.6v,通帶波動只有±0.06db,阻帶衰減達43db,性能非常優(yōu)良。tms320vc5510是ti公司的一款高性能、低功耗dsp。它具有很高的代碼執(zhí)行效率,其最高指令執(zhí)行速度可達800mips,雙mac結(jié)構(gòu),可設(shè)置的指令高速緩沖存儲器容量為24kb,片上ram共160k×16b,此外還有3組多通道緩沖串行口和可編程的數(shù)字鎖相環(huán)發(fā)生器等,i/o電壓 3.3v,內(nèi)核電壓1.6v。ep1s40是altera公司stratix系列fpga,具有非常高的內(nèi)核性能、存儲能力、架構(gòu)效率,提供了專用的功能用于時鐘管理和數(shù)字信號處理應用及差分和單端i/o標準,此外還具有片內(nèi)匹配和遠程系統(tǒng)升級能力,功能豐富且功耗較小。ep1s40的片內(nèi)資源也足以滿足本設(shè)計所需。
3 主要模塊的電路設(shè)計
adc與fpga相連,并在fpga內(nèi)完成并串變換,譯碼電路也由fpga來完成。fpga與adc間的連接包括數(shù)據(jù)線和時鐘線,adc的時鐘由fpga來提供,數(shù)據(jù)線和時鐘線均與fpga的i/o引腳直接相連即可,如圖3所示。
圖3 adc與fpga連接原理圖
dsp通過異步串行口與dac連接,如圖4所示,dac輸出的模擬信號經(jīng)濾波后可直接輸出語音信號。
圖4 dsp與dac連接原理圖
現(xiàn)今的高速dsp內(nèi)存不再基于flash,而是采用存取速度更快的ram。dsp掉電后其內(nèi)部ram中的程序和數(shù)據(jù)將全部丟失,所以在脫離仿真器的環(huán)境中,dsp芯片每次上電后必須自舉,將外部存儲區(qū)的執(zhí)行代碼通過某種方式搬移到內(nèi)部存儲區(qū),并自動執(zhí)行。常用的自舉方式有并行自舉、串行自舉、主機接口(hpi)自舉和i/o自舉。hpi自舉需要有一個主機進行干預,雖然可以通過這個主機對dsp內(nèi)部工作情況進行監(jiān)控,但電路復雜、成本高;串行自舉代碼加載速度慢;i/o自舉僅占用一個端口地址,代碼加載速度快,但電路復雜,成本高;并行自舉加載速度快,雖然需要占用dsp數(shù)據(jù)區(qū)的部分地址,但無須增加其他接口芯片,電路簡單。因此在ti公司的5000系列dsp中得到了廣泛應用,本次設(shè)計也是采用并行自舉。與傳統(tǒng)的eeprom相比,flash具有支持在線擦寫且擦寫次數(shù)多、速度快、功耗低、容量大和價格低廉等優(yōu)點。目前在很多flash芯片采用3.3v單電源供電,與dsp連接時無須采用電平轉(zhuǎn)換芯片,因此電路連接簡單。在系統(tǒng)編程時,利用系統(tǒng)本身的dsp直接對外掛的flash編程,節(jié)省了編程器的費用和開發(fā)時間,使得dsp執(zhí)行代碼可以在線更新。圖5為外部程序數(shù)據(jù)存儲器flash的電路連接。
圖5 外部程序數(shù)據(jù)存儲器flash的電路連接
fpga與dsp通過mcbsp、gpio、emif和ehpi口相連,接口種類多,便于根據(jù)需要靈活使用。fpga內(nèi)的程序和數(shù)據(jù)掉電后也會全部丟失,所以為其配備了專用配置芯片epc16,上電后自動將程序下載到fpga中,簡單易用。
總結(jié)
為了方便調(diào)試,本次設(shè)計十分靈活,留的系統(tǒng)資源也比較多,不僅可以實現(xiàn)模式1,其他三種模式也可以在此硬件平臺上實現(xiàn)。用來存儲程序和數(shù)據(jù)的flash既可以用fpga來讀寫,也可以用dsp來讀寫。dsp和fpga分別配了jtag下載口用于下載程序和檢測芯片。dsp還連接rs232,用于發(fā)出控制指令以及監(jiān)控dsp內(nèi)部情況。fic解碼完成后可進行dab/dmb的業(yè)務選擇,依據(jù)選擇業(yè)務的不同進行不同的處理后分別產(chǎn)生聲音和圖像信號,并分別從喇叭或液晶顯示器輸出。
DMR-CP01寬帶網(wǎng)絡電話機
VOIP寬帶網(wǎng)絡電話機CP01鍵盤區(qū)設(shè)置.DOC
DMR-CN02寬帶網(wǎng)絡電話機
VOIP網(wǎng)絡電話機簡介:
VOIP網(wǎng)絡電話是指利用Internet打電話的接入設(shè)備。裝有終端設(shè)備的機構(gòu)間通話通過Internet完成,只有上網(wǎng)費,沒有電話費,可為用戶節(jié)約大量的長途通訊費用,電話音質(zhì)高清晰,功能豐富完備,不需與計算機連接,使通話可以在任何時候都能進行,非常適合企業(yè)辦公和家庭使用。
VOIP網(wǎng)絡電話機備注一:CM5000芯片方案
CM5000是一個高度集成的VoIP解決方案。它集成了32位RISC CPU、DSP及2個快速以太網(wǎng)地址。CM5000有效的起到控制VoIP網(wǎng)關(guān)和IP電話成本的作用。
CM5000集成的32位RISC CPU,頻率為125MHz,內(nèi)建了4K字節(jié)的指示緩存及4K字節(jié)的數(shù)據(jù)緩存。它支持系統(tǒng)管理、網(wǎng)絡管理、協(xié)議棧管理及應用程序。
CM5000集成的16位Fix-Point DSP,頻率為125MHz,支持32K×24的可編程存儲器,16K×16的系數(shù)存儲器,15K×16的數(shù)據(jù)存儲器。它提供2個串行端口支持2個聲音通道。DSP支持多個聲音壓縮模式(G.711,G.723.1,G.729A,G.729B),回音消除及多種普通電話技術(shù)。
CM5000提供2個10/100M快速以太網(wǎng)地址支持全/半雙工模式,端口基于VLAN,MII接口和2K字節(jié)的FIFO封包緩存器。用戶能通過MII接口與外部PHY或以太網(wǎng)交換芯片構(gòu)建VoIP網(wǎng)關(guān)和IP電話。
當CM5000作為IP電話芯片應用時,也提供對LCD控制、鍵區(qū)、UART串行接口和多個普通I/O接口的支持
產(chǎn)品介紹:
VoIP解決方案。CM5000集成了32位RISC CPU、DSP及2個快速以太網(wǎng)地址。CM5000能有效的起到控制VoIP網(wǎng)關(guān)和IP電話成本的作用。
CM5000芯片方案VOIP網(wǎng)絡電話機工作原理
RISC CPU
* 4Kbytes of direct mapped instruction cache
* 4Kbytes of direct mapped data cache with write-through policy
* Memory Controller:Flash/SDRAM
* 125MHz internal system clock
* JTAG support
16-bit fixed-point DSP
* Program SRAM 32K*24
* Coefficient SRAM 16K*16
* Data SRAM 15K*16
* Two Serial Port Interfaces
* DSP clock speed runs at 125MHz
Two 10/100 MACs
* IEEE802.3/802.3u compliant
* Half/Full duplex operation
* VLAN support
* MII interface to external PHY
* Scatter and gather transmit/receive DMA
* 4KB transmit/receive FIFO
隨著數(shù)字信號處理器 (DSP) 的應用范圍不斷擴大,對面向組件的軟件模塊的需求不斷增長。第三方提供的現(xiàn)成算法在基本層面上能夠響應上述需求。第三方算法使系統(tǒng)開放商不必再費力重新設(shè)計主要的軟件功能,從而能夠更快、更廉價地將系統(tǒng)與更多功能集成。因此,第三方算法在 DSP 系統(tǒng)開發(fā)中發(fā)揮著非常重要的作用。
為了使組件軟件方法順利工作,必須具備保證組件代碼互用性、一致性和便攜性的標準。DSP廠商認識到了上述需求,建立了管理不同算法與應用之間接口的算法標準。上述標準不是為了保證高效實施。針對代碼大小、特性及性能而選擇最佳算法的工作是由系統(tǒng)集成商進行的。而標準所作的,則是提供確保算法之間相互協(xié)作的一套規(guī)則,使他們更輕松地進行評估,然后在系統(tǒng)環(huán)境中進行集成。
算法標準的起源
20世紀90年代中期,算法標準的需求逐漸顯現(xiàn)出來,此時更為強大的 DSP 出現(xiàn)了,其可支持一個算法的多通道,或者同一 DSP 上的多個算法。盡管早期的 DSP 可能僅用作語音編碼器等,但像來自 TI TMS320C5000 平臺中 DSP 則能夠處理蜂窩電話所需的整個數(shù)字處理鏈,包括聲碼、音頻校正、回波消除等。諸如來自 TMS320C6000平臺的其他 DSP,則能夠開發(fā) DSL 線卡、視頻服務器及其他在單個設(shè)備上要求具有極高多通道性能的系統(tǒng)。
利用現(xiàn)有更高層次的性能,許多新興信號處理標準不斷涌現(xiàn),包括 JPEG、MPEG、電視會議、無線電話以及調(diào)制解調(diào)器與傳真改進等。開發(fā)商開始創(chuàng)建交互改變?nèi)蝿盏膭討B(tài)系統(tǒng),而不是一般基于 DSP 的具有固定功能的靜態(tài)系統(tǒng)。而且系統(tǒng)代碼規(guī)模也開始劇增,常常為了適應新型多功能系統(tǒng)的復雜性而大幅度增加。
DSP 系統(tǒng)開發(fā)商始終缺少經(jīng)驗豐富且掌握深入信號處理知識的 DSP 程序員。目前,這些開發(fā)商們開始集成更為復雜的系統(tǒng),一些剛剛進入 DSP 領(lǐng)域的其他開發(fā)商則已開始進行最初的 DSP 設(shè)計。不斷增長的業(yè)界系統(tǒng)集成商尋找各種方法來將日益復雜化的設(shè)備整合起來,而不必從頭設(shè)計所有軟件。幸運的是,一些具備業(yè)經(jīng)驗證軟件技術(shù)的開發(fā)商認識到新的市場商機,并開始作為第三方出售其知識產(chǎn)權(quán),包括算法。系統(tǒng)集成商將從第三方購買"黑盒子"目標代碼,并將其加載至系統(tǒng)中,以節(jié)省寶貴的開發(fā)時間。至少這就是假設(shè)的工作流程了。
然而,在實踐中事情并非如此直接。第三方開發(fā)商常常假定DSP用法,以便使其算法盡可能精簡,并獲得最佳性能效果。因此,一個算法可能需要占用所有內(nèi)存,在很長的時間中禁用出現(xiàn)中斷,并完全控制核心。此外,系統(tǒng)集成商可能無法了解開發(fā)商的事先假定是什么,因為不存在統(tǒng)一的方法指定算法的資源要求與性能效果。
顯然,如果有了上述假定的話,那么兩種或多種算法就不能在多功能系統(tǒng)中和平共處。這樣的問題在利用源代碼進行再設(shè)計時可能相當困難,但力圖集成目標代碼的系統(tǒng)開發(fā)商對改變算法無能為力。而且,如果算法來自不同的第三方(事實常常如此),集成商將面臨不兼容性難題以及不可避免的相互指摘。
到20世紀90年代末為止,很明顯如果不就算法建立行為規(guī)則,那么 DSP 開發(fā)將停滯不前。因此,DSP 廠商開始發(fā)布這種規(guī)則,將其編寫為第三方軟件開發(fā)商必須遵循的標準代碼,以便保證算法的兼容性。盡管這些標準是具有所有權(quán)的,但它們都具有相同的目標,并且許多規(guī)則都是一樣的。由于某些規(guī)則反映了硬件實施,并且僅針對某些個體廠商,因此對所有權(quán)而不是業(yè)界標準進行保留。此外,當標準出現(xiàn)時,廠商為了跟上 DSP 的開發(fā)步伐被迫響應當時的需求,而不是將問題交給漫長的業(yè)界標準化進程來解決。
示范標準
最初建立的標準之一是 TI 的 TMS320 DSP Algorithm Standard?,也稱作XDAIS。TI 推出了該標準作為其 eXpressDSP? 軟件戰(zhàn)略的基本元素,并同時推出了實施內(nèi)核、集成開發(fā)環(huán)境 (IDE) 及第三方網(wǎng)絡,這表明算法標準化將在 DSP 軟件開發(fā)中發(fā)揮關(guān)鍵性作用。TMS320 Algorithm Standard 是各種 DSP 算法標準的一個示范,事實上它成了隨后推出的某些標準的一個模型。
XDAIS 是在 TMS320 DSP 底層軟件架構(gòu)基礎(chǔ)之上建立起來的。圖1顯示了 DSP 系統(tǒng)的組織方式,這樣簡單數(shù)據(jù)傳感器算法從 I/O 功能以及底層核心運行時環(huán)境中分離出來。圖2顯示了 XpressDSP 環(huán)境中算法正常運行的必備系列事件。 <!-- 圖1. XDAIS 與 DSP 系統(tǒng) 圖2. XDAIS 算法事件 -->
XDAIS 算法規(guī)則
XDAIS 規(guī)則分外四組,具備基本的校驗機制以保證符合標準。
常識性編程規(guī)則。本組規(guī)則的作用在于加強算法的便攜性、可預測性及易用性。由于大多數(shù) DSP 系統(tǒng)運行于 C 環(huán)境中,因此頂層的算法必須能在C中調(diào)用。算法不得干擾應用程序的運行時狀態(tài),并且代碼必須在搶占式環(huán)境中進行重入以支持多個通道。必須對多實例共享的存儲器與全局變量進行保護。所有代碼引用必須完全可再定位,不得采用硬編碼存儲器尋址,否則將干擾其他代碼。由于資源可能因系統(tǒng)而異,因此算法不得直接訪問外設(shè)。
取消任意選擇。如果需要以單一強制方法進行某項工作的話,該標準指定了應在各種不同方法中采用何種方法(就好像交通法規(guī)指定了在路上應左行還是右行)。為避免命名沖突,信號命名必須遵循 DSP/BIOS? 規(guī)則,這是 TMS320 DSP 采用的實時內(nèi)核。為避免將代碼移植到不同操作系統(tǒng)環(huán)境中時發(fā)生沖突,算法必須封裝到遵循統(tǒng)一命名規(guī)則的檔案文件中。必須使外部引用符合來源,如C運行支持庫函數(shù)或其他符合 eXpressDSP 的模塊。算法實例必須根據(jù)指定的程序調(diào)用并刪除,并且它們必須能夠獨立地進行再定位。對 C6000? 平臺而言,算法必須至少支持由小到大的字節(jié)順序,或最好兩個都支持,以便為系統(tǒng)開發(fā)商提供選擇。
資源管理。由于算法一般比較貪婪,并且必須使其可以共享,因此本組位于該標準的核心。現(xiàn)在每個算法都有了強制的存儲器管理界面,而且所有算法都必須在設(shè)計時一次協(xié)調(diào)或在運行時交互協(xié)調(diào)使用存儲器。本規(guī)則適用于外部及內(nèi)部存儲器,以及 DMA 通道等外設(shè)。本應用同控制框架一樣收集所有存儲器請求,隨后向算法分配存儲器。算法可能不能獲得其全部請求,但應用框架能夠在競爭請求間進行很好的判斷,并優(yōu)化地劃分系統(tǒng)資源。
統(tǒng)一規(guī)范。本組規(guī)則有助于系統(tǒng)集成商衡量算法并評估其在系統(tǒng)中的兼容性。所有的兼容性算法必須表現(xiàn)最壞情況的中斷傳輸時間、典型與最壞情況的執(zhí)行,以及程序、堆陣、靜態(tài)和堆棧存儲器要求等方面的特點。例如,算法供應商可能不再隱瞞會讓算法獨占內(nèi)核幾秒鐘的中斷傳輸時間。現(xiàn)在,必須根據(jù)已確定的方式在算法技術(shù)描述中指定并包含傳輸時間要求。
校驗與 eXpressDSP 一致性。算法開發(fā)商不能簡單地說它滿足了 TMS320 Algorithm Standard 的要求。開發(fā)商必須通過 TI 的 XDAIS 一致性測試工具加以證明,該工具可校驗代碼是否符合規(guī)則。此外,第三方必須書面同意在開發(fā)算法時遵循了標準規(guī)定。當滿足了這些要求時,第三方可以聲明其算法符合 eXpressDSP,并在廣告宣傳中使用圖3所示的標志。一致性工具可適用于第三方及 DSP 客戶,以便使他們在開發(fā)自身軟件時對這些軟件進行檢查。系統(tǒng)集成商還可以利用該工具保證他們購買的代碼在獲得eXpressDSP一致性稱號后沒有經(jīng)過修改。 <!-- 圖3. eXpressDSP 一致性標志 -->
XDAIS 的發(fā)展
XDAIS 在5年前推出時,其規(guī)則還不到30條。現(xiàn)在它已有了46條規(guī)則,這反映出對標準的需求不斷發(fā)展,但其發(fā)展是以認真、受控的方式進行的。新規(guī)則的添加(以及一些改動)出于以下幾點原因:
新硬件功能。添加某些規(guī)則是為了涵蓋硅技術(shù)的開發(fā)。例如,隨著將高級 DMA 功能集成到芯片中,XDAIS 也添加了新的規(guī)則以涵蓋 DMA 通道的分配。未來,XDAIS還可能包括有關(guān)硬件加速器作為共享資源使用的規(guī)則。
性能優(yōu)化。為優(yōu)化性能,DMA規(guī)則已進行了修訂,在此,這些規(guī)則也展示了XDAIS 標準中的另一個變化領(lǐng)域。由于早期規(guī)則解決了重大沖突,因此一些較新的指導方針傾向于幫助開發(fā)商更好地發(fā)揮系統(tǒng)優(yōu)勢。
新應用領(lǐng)域。XDAIS的最初指導方針主要是為了處理帶有數(shù)據(jù)流應用的單功能DSP,如語音及音視頻等。但今天的多功能系統(tǒng)常常必須處理突發(fā)數(shù)據(jù),如 IP 數(shù)據(jù)包或更復雜的調(diào)制解調(diào)器標準中類似框架的編碼。這些應用的核心和系統(tǒng)要求有時與流應用的不同,而XDAIS 規(guī)則必須包括兩種類型的數(shù)據(jù)吞吐量。
有一個沒有改變的特性,即需要將開銷保持在較低水平。經(jīng)驗顯示,DSP 客戶與第三方將接受不超過一至兩個百分點的性能及存儲器干擾。這對于通用微處理器而言是一個較小的開銷百分比,該微處理器可通過中斷來驅(qū)動控制任務,并不十分受限于內(nèi)存的高效利用。但是,通常每個性能MIP對DSP都是非常關(guān)鍵的,因此 TI 已努力將 XDAIS 開銷保持在限定范圍內(nèi)。
算法標準的接受
盡管一直就軟件規(guī)則向第三方進行咨詢,但有些第三方最初對他們能否從算法標準中獲益是抱有懷疑態(tài)度的。許多第三方將算法的開發(fā)看作完全是其自身的業(yè)務,不歡迎 DSP 廠商參與,認為這是一種干擾。此外,為了使算法符合新的標準,一些重復工作是不可避免的,而第三方則反對承擔他們認為是不必要負擔的工作。而且,對與標準相關(guān)的開銷懲罰也有反對的聲音。
與第三方形成對比的是,DSP 系統(tǒng)集成商幾乎立即對標準表示歡迎。一些較大型DSP 開發(fā)商已經(jīng)在努力建立其自身規(guī)則,而 DSP 標準的到來節(jié)省了他們的工作。系統(tǒng)集成商還認識到,與算法標準相關(guān)的少量開銷能幫助他們避免大量時間耗費與麻煩,這種節(jié)約的價值大大超過了他們所必須接受的存儲器與性能權(quán)衡。
一旦他們熟悉了這些標準,DSP 系統(tǒng)集成商就開始要求算法一致性,這樣即便是最不情愿的第三方也不得不遵照行事。為了應付對額外開發(fā)工作的反對意見,出現(xiàn)了幫助第三方開發(fā)一致性算法的工具,圖4所示的 Hyperception Component Wizard 便是其中一個實例,它可幫助創(chuàng)建 XDAIS 算法。 <!-- 圖4. Hyperception Component Wizard -->
今天,標準已得到普遍接受,即便最不情愿的算法開發(fā)商也認同標準化使得出售軟件的商機大大增加。根據(jù)標準進行設(shè)計還意味著能夠最小化支持需求,從而節(jié)省第三方的開支。TMS320 Algorithm Standard 就是體現(xiàn)標準有多么成功的一個代表:目前,符合 eXpressDSP 算法的第三方開發(fā)商達110個,且數(shù)量還在不斷增加。其他 DSP 廠商也認識到算法標準的需求,并為其各自的平臺和第三方算法提供了相似的產(chǎn)品。由于標準涵蓋了可互操作性編程的基本問題,因此其規(guī)則在許多方面都與最初推出的標準 TMS320 Algorithm Standard 相似。
新興產(chǎn)業(yè)
事實上,DSP 算法標準帶來了一種前所未有的國際產(chǎn)業(yè)。今天,某個地區(qū)的系統(tǒng)集成商可以通過網(wǎng)站從另一個地區(qū)的第三方處購買 DSP 算法,只要該算法通過認證,符合算法標準,那么該系統(tǒng)開發(fā)商就知道此代碼在應用框架中可正常發(fā)揮作用。對 DSP 系統(tǒng)集成商而言,一致性算法已簡化了對第三方目標代碼進行評估并集成的工作,從而簡化了開發(fā)進程并縮短了產(chǎn)品上市時間 。
由于我們最終控制了算法,現(xiàn)在業(yè)界中存在的問題就在于對其他軟件組件(如庫、驅(qū)動程序、內(nèi)核以及通訊棧等)進行標準化會帶來什么優(yōu)勢。DSP 廠商甚至在改進現(xiàn)有算法標準的同時,就已經(jīng)在考慮有關(guān)對上述組件的標準化工作進行擴展的問題了。
隨著 DSP 產(chǎn)業(yè)繼續(xù)圍繞著組件軟件模型進行開發(fā),算法標準的價值正變得越來越明顯。標準提供了一系列規(guī)則,根據(jù)設(shè)計,實際上這些規(guī)則能夠保證組件在任何應用中與來自不同廠商的算法實現(xiàn)進行互操作。因此,代碼的便攜性與可重復使用性得到加強,而算法的衡量與評估更為直接,并且算法也更易于集成到系統(tǒng)之中。總體系統(tǒng)開發(fā)變得更快、更靈活,從而為市場中的最終用戶帶來了更健碩、更廉價的產(chǎn)品。
數(shù)字信號處理結(jié)構(gòu)穩(wěn)定性好,可重復性好,可以大規(guī)模集成,使得信號處理功能更復雜,手段更靈活,精度更高。
2.2 DSP芯片的結(jié)構(gòu)特點[2>
DSP處理芯片,為了適應信號處理運算的需要,結(jié)構(gòu)與通用的其他計算機或控制處理器相比,有較大的不同,主要的幾點為:
(1)具有專用的算術(shù)單元,如硬件乘法器,DSP內(nèi)部設(shè)有硬件乘法器來完成乘法操作,以提高乘法速度。
(2)具有特殊的總線結(jié)構(gòu)——哈佛結(jié)構(gòu)。這種結(jié)構(gòu)使DSP具有獨立的地址總線和數(shù)據(jù)總線,可以同時取地址和操作數(shù)。
(3)流水處理。流水技術(shù)使多個不同的操作可以同時執(zhí)行,處理器內(nèi)將每條指令的執(zhí)行分為取址、解碼、執(zhí)行等階段,不同的階段并行執(zhí)行,提高了程序執(zhí)行的效率和速度。
(4)高速的片內(nèi)存儲器。DSP芯片一般內(nèi)部集成有程序和數(shù)據(jù)存儲器,訪問速度快,緩解總線接口的壓力,提高程序執(zhí)行的速度。
一些其他特殊功能的DSP芯片還具有一些專用的設(shè)計結(jié)構(gòu),這里不一一列出。總之,DSP功能上的特點很大程度上是針對數(shù)字信號處理算法的特點,針對性地組成專用的結(jié)構(gòu),以滿足處理的需要。
3 DSP芯片的產(chǎn)品和市場
3.1 應用領(lǐng)域和市場
在近20多年的時間里,DSP芯片的應用已經(jīng)從軍事、航空航天領(lǐng)域擴大到信號處理、通信、雷達、消費等許多領(lǐng)域。主要應用有:信號處理、通信、語音、圖像、軍事、儀器儀表、自動控制、醫(yī)療、家用電器等。
DSP主要應用市場為3C(communication、computer、consumer——通信、計算機、消費類)領(lǐng)域,所占市場比例超過90%,并且總體市場規(guī)模在不斷擴大。在數(shù)字化、個人化和網(wǎng)絡化的推動下,預計未來的年均增長率高達40%。在全球的DSP市場中,TI公司獨占鰲頭,占世界市場的45%份額,其次是朗訊(28%)、ADI(12%)、摩托羅拉(12%)、其他公司(3%) [3> 。
3.2 世界主要的DSP芯片制造公司及其產(chǎn)品
(1)TI公司。
TI(Texas Instruments)公司在業(yè)界一直處于領(lǐng)先的地位。近年,TI在原來的TMS320C1X、TMS320C25、TMS320C3X/4X、TMS320C5X、TMS320C8X的基礎(chǔ)上又推出了3種高性價比的DSP系列:TMS320C2000、TMS320C5000和TMS320C6000系列。這3種芯片,在我國的信號處理硬件領(lǐng)域應用也是非常廣泛,下面作些簡要介紹:
TMS320C2000系列主要用于工業(yè)控制領(lǐng)域,提供了全系列的高性能控制芯片,代碼運行效率高。除了較強的控制功能之外,還提供了方便的接口與高性能外圍器件相連。主要型號有TMS320C24X和28X系列。
TMS320C5000系列為高性能的低功耗定點DSP芯片。處理速度最高可以達到900 MIPS,功耗很低,可以達到0.33 mA/MHz。非常適合移動和手持系統(tǒng)的應用。主要有TMS320C54X和55X系列。
TMS320C6000系列為新一代高性價比DSP芯片,是高端DSP處理器的代表。C6000系列的DSP定點運算可以達到1200到8 000 MIPS(百萬條指令/秒),浮點運算可以達到600到 1 800 MFLOPS(百萬次浮點操作/秒)的運算速度。主要有定點系列的TMS320C62X和浮點系列的TMS320C67X。TMS320C64X為TI最新推出的高性能定點DSP處理器,時鐘速度提高到1 GHz,單片處理能力可達到8 000 MIPS。
(2)Analog Device公司。
ADI公司的DSP目前主要分為3個系列:SHARC、Blackfin、TigerSHARC。
SHARC系列一直在雷達、聲納信號處理等領(lǐng)域享有很高的聲譽,很多商用、軍用的信號處理機中都可以看到SHARC的身影。單片處理能力有限的SHARC之所以能夠在通信信號處理領(lǐng)域有這么高的聲譽,完全是由于ADI優(yōu)秀的片間互連技術(shù)(LINK口),利用這個LINK口可以很方便地將幾片、幾十片SHARC連接起來組成DSP陣列,從而在單片處理能力達不到要求的場所利用DSP陣列就很容易達到了。
Blackfin是近幾年推出的針對性能要求比較高,同時功耗要求又比較低的場所。它所具備的優(yōu)點很適合在便攜式通信產(chǎn)品中應用。
TigerSHARC是從SHARC改進的高端DSP,它的出現(xiàn)是ADI公司的DSP在高端領(lǐng)域應用開創(chuàng)了歷史性的局面。新推出的第二代TigerSHARC ADSP-TS201S主頻高達600 MHz,處理能力高達14.4 GOPS,還有超大容量的RAM,使它一出世就在高端領(lǐng)域脫穎而出。尤其適合軟件無線電的應用。
DSP已經(jīng)發(fā)展成為了一種成熟的技術(shù),也是一種成熟的產(chǎn)品,它在數(shù)字信息時代占據(jù)越來越重要的位置,所以其市場的擴展還存在著巨大的空間。DSP的性能、價格和功耗是決定其市場的三個重要因素。挑戰(zhàn)更高的性能,盡可能降低價格和功耗,一直是DSP追求的目標。
4 DSP處理系統(tǒng)的發(fā)展現(xiàn)狀
4.1 國際發(fā)展現(xiàn)狀
簡略國際DSP處理發(fā)展的現(xiàn)狀,國外的商業(yè)化信號處理設(shè)備一直保持著快速的發(fā)展勢頭。歐美等科技大國保持著國際領(lǐng)先的地位。例如美國DSP research公司,Pentek公司,Motorola公司,加拿大Dy4公司等,他們很多已經(jīng)發(fā)展到相當大的規(guī)模,競爭也愈發(fā)激烈。我們從國際知名DSP技術(shù)公司發(fā)布的產(chǎn)品中就可以了解一些當今世界先進的數(shù)字信號處理系統(tǒng)的情況。
以Pentek公司一款處理板4293為例,使用8片TI公司 300 MHz的TMS320C6203芯片,具有19 200 MIPS的處理能力,同時集成了8片32 MB的SDRAM,數(shù)據(jù)吞吐600 MB/s。該公司另一款處理板4294集成了4片Motorola MPC7410 G4 PowerPC處理器,工作頻率400/500 MHz,兩級緩存256K×64 bit,最高具有16MB的SDRAM。
ADI公司的TigerSHARC芯片也由于其出色的協(xié)同工作能力,可以組成強大的處理器陣列,在諸多領(lǐng)域(特別是軍事領(lǐng)域)獲得了廣泛的應用。以英國Transtech DSP公司的TP-P36N為例,它由4~8片TS101b(TigerSharc)芯片構(gòu)成,時鐘 250 MHz,具有6~12 GFLOPS的處理能力。
DSP應用產(chǎn)品獲得成功的一個標志就是進入產(chǎn)業(yè)化。在以往的20年中,這一進程在不斷重復進行,而且周期在不斷縮小。在數(shù)字信息時代,更多的新技術(shù)和新產(chǎn)品需要快速地推上市場,因此,DSP的產(chǎn)業(yè)化進程還是需要加速進行。隨著競爭的加劇,DSP生產(chǎn)商隨時調(diào)整發(fā)展規(guī)劃,以全面的市場規(guī)劃和完善的解決方案,加上新的開發(fā)歷年,不斷深化產(chǎn)業(yè)化進程。
4.2 我國發(fā)展現(xiàn)狀
隨著我國信息產(chǎn)業(yè)的發(fā)展,近年來我國的數(shù)字信號處理學科發(fā)展較快。DSP處理器已經(jīng)在我國的數(shù)字通信、信號處理、雷達、電子對抗、圖像處理等方面得到了廣泛的應用,為科學技術(shù)和國民經(jīng)濟建設(shè)創(chuàng)造了很大價值。全國有很多高校、科研機構(gòu)的信號處理實驗室都在大力研究性能更高的數(shù)字信號處理設(shè)備,取得了很多研究成果。我國的科研人員通過對先進的DSP芯片的研究,已經(jīng)研制出一些高性能處理設(shè)備的解決方案,并且在板級PCB設(shè)計方面,也取得了寶貴的設(shè)計經(jīng)驗。
以我國某電子技術(shù)研究所研制的DSP雷達數(shù)字信號處理通用模塊為例,它使用了6片ADSP21060和大規(guī)模可編程器件構(gòu)成通用處理模塊。通過信號處理算法并行設(shè)計、系統(tǒng)多數(shù)據(jù)流設(shè)計、處理任務分配調(diào)度程序設(shè)計,實現(xiàn)高速實時雷達數(shù)字信號處理 [4> 。以FFT算法為例,將任務分為3個流水處理過程:FFT、復數(shù)乘法、IFFT,實現(xiàn)多片DSP組成并行處理。在33 MHz時鐘下,1 024點處理通過時間為0.7 ms,可以實現(xiàn)單通道數(shù)據(jù)率為1 MHz,雙通道并行工作為2 MHz。
國內(nèi)的某大學所研制的基于TMS320C6201的高速實時數(shù)字信號處理平臺,實現(xiàn)基-2的復數(shù)FFT,允許輸入數(shù)據(jù)的動態(tài)范圍16-bit,可以實現(xiàn)59 μs內(nèi)完成512點的FFT,130 μs內(nèi)可以完成1 024點的FFT。
但是,應該看到,我國在信號處理理論、高速高性能處理器設(shè)計和制造方面與國際先進水平還有較大差距。而且,主要的核心處理器件基本完全依賴進口,這也是我國半導體研究領(lǐng)域需要大力加強的工作之一。復雜的大型處理機PCB板級設(shè)計和制造也存在一定困難,也是需要我國科研人員發(fā)揚勇于拼搏的精神,繼續(xù)的刻苦努力。
5 DSP技術(shù)展望
5.1 向著集成DSP方向發(fā)展
目前的DSP多數(shù)基于RISC(精簡指令集)結(jié)構(gòu),這種結(jié)構(gòu)的優(yōu)點是尺寸小、功耗低、性能高。現(xiàn)在各DSP廠紛紛采用新工藝,將幾個DSP核、MPU核、專用處理單元、外圍電路單元和存儲單元集成在一個芯片上,成為DSP系統(tǒng)級集成電路。
5.2 內(nèi)核結(jié)構(gòu)進一步改善
多通道結(jié)構(gòu)和單指令多重數(shù)據(jù)(SIMD)、超長指令字結(jié)構(gòu)(VLIM)、超標量結(jié)構(gòu)、超流水結(jié)構(gòu)、多處理、多線程及可并行擴展的超級哈佛結(jié)構(gòu)在高性能處理器將占據(jù)主導地位。
5.3 進一步降低功耗和幾何尺寸
DSP的應用范圍已經(jīng)擴大到人們工作生活的各個領(lǐng)域,特別是便攜式手持產(chǎn)品對于低功耗和尺寸的要求很高,所以DSP有待于進一步降低功耗。隨著CMOS的發(fā)展,提高DSP的運算速度和降低功耗尺寸是完全可能的。
5.4 與可編程器件結(jié)合
DSP在許多新的領(lǐng)域的應用要求它借助PLD或FPGA來滿足日益增長的處理要求。與常規(guī)DSP器件相比,F(xiàn)PGA器件配合傳統(tǒng)DSP器件可以處理更多的信道,來滿足無線通信、多媒體等領(lǐng)域的多功能和高性能的需要。
如果使用“DSPF_sp_cfftr2_dit()”時不考慮到這些限制,就有可能導致程序運行異常。因此,庫函數(shù)的效率雖然高,但不能盲目的濫用,在程序開發(fā)時,必須根據(jù)實際情況在通用性和效率之間進行折衷,以合理的使用庫函數(shù)。
3 TMS320C67x Fast RTS Library的應用
在DSP進行數(shù)據(jù)處理時,除了一些典型的操作外,還存在大量常規(guī)的操作,如除法操作、對數(shù)運算、三角函數(shù)等,這些操作也是很費時的,提高這些操作的代碼效率,也能顯著提高整個軟件的效率。TMS320C67x FastRTS Library就是這樣的一個DSP Lib,它通常由Lib文件夾、include文件夾和doc文件夾組成。其中l(wèi)ib文件夾內(nèi)含庫文件fastrts67x.lib(Little Endian)、fastrts67xe.lib(Big Endian)和源文件fastrts67x.src;include文件夾內(nèi)含頭文件fastrts67x.h和recip.h;而doc文件夾內(nèi)含幫助文件。
3.1 TMS320C67x FastRTS Library的使用
TMS320C67x FastRTS Library(以下簡稱FastRTS Library)主要用于處理一些常規(guī)的操作。由于在通常情況下,CCS已經(jīng)有一個RTSLib-rary來完成這些操作(例如,“rts6700.lib”就是一個適用于TMS320C67x的RTS Library文件),因此,如果要使用FastRTS Library,就必須在編譯鏈接過程中先于“rts6700.lib”來編譯鏈接“fastrts67x.lib(或fastrts67xe.lib)”,相應的編譯鏈接命令選項為:
-l fastrts67x.lib - rts6700.lib或 -l fastrts67xe.lib - rts6700.lib
FastRTS Library同樣需要注意頭文件的使用,它有兩個頭文件: “fastrts67x.h”和“recip.h”。如果使用FastRTS Library中的特殊函數(shù)(三角函數(shù),對數(shù)函數(shù)等),則必須包含“fastrts67x.h”;而如果使用求倒數(shù)操作,則必須包含“recip.h”。FastRTS Library的使用方式如下:
3.2 性能分析
分別使用FastRTS Library和RTS Library可完成一些常用操作,使用剖析工具可得到各個操作所需的時鐘周期個數(shù),具體如表2所列(所有的操作均處理單精度浮點數(shù))。對比表2中的數(shù)據(jù)可以發(fā)現(xiàn),和RTS Library相比,F(xiàn)astRTS Library大大提高了程序的效率。
4 DSP Lib的編寫
事實上,程序員并非只能被動的使用DSP Lib。只要遵循相應的規(guī)則,程序員也可以自己編寫一個DSP Lib。編寫一個最簡單的DSP Lib的步驟如下:
(1)新建一個工程newLibrary,將其屬性設(shè)為“Library(.lib)”,圖l所示是新工程設(shè)置示意圖;
(2)編寫高效率代碼文件myLibl.a(chǎn)sm、myLib2.a(chǎn)sm、myLib3.a(chǎn)sm,……
(3)將myLibl.a(chǎn)sm、myLib2.a(chǎn)sm、myLib3.a(chǎn)sm,……等文件添加到工程new Library中;
(4)編譯鏈接工程new Library;
完成上面4步后,工程中就會出現(xiàn)庫文件newLibrary.lib,這樣,一個DSP Lib就制作成功了。為了使DSP Lib具有保密性,通常情況下,只需保留工程中的newLibrary.lib文件,而將其他文件,特別是源代碼文件*.a(chǎn)sm刪除或保密存放。這樣,用戶就只能使用庫文件,而無法從中得到源代碼的信息。
5 結(jié)束語
本文以TMS320C67x DSP Library和TMS320C67x FastRTS Library為例,詳細介紹了如何在程序開發(fā)中使用TI DSP Library,并分析了使用TI DSP Library所帶來的程序效率的提高。最后,還給出了編寫TI DSP Library的一個應用實例。
1 TMS320C542結(jié)構(gòu)及應用
TMS320C542是TI公司C5000系列DSP中的一種,C5000系列共有的特點如下:
·改進的哈佛結(jié)構(gòu),包含一條程序總線,三條數(shù)據(jù)總線和四條地址總線
·高度并行的CPU和針對應用優(yōu)化的硬件
·針對算法和高級語言優(yōu)化的指令集
·先進的IC技術(shù)使其既高性能又低功耗
C5000系列內(nèi)部硬件功能塊如圖1所示。其中,有:40bit算數(shù)邏輯單元(ALU);兩個40bit累加器A和B;17×17bit乘加單元(40bitMAC,可作64級FIR運算而不必考慮溢出;計算、選擇、存儲單元(CCSU),特別適合Viterbi等算法;40bit桶型移位寄存器;片上雙存取RAM,每機器周期可存取兩次;片上單存取RAM,可同時訪問兩塊片上存儲區(qū);片上外圍接口,包括串口、定時器、PLL、HPI接口等。
TMS320C542自身特點如下:
·25ns單周期定點指令執(zhí)行時間,5V供電
·10K Words16bit片上雙存取RAM
·64K Words程序,64K Words數(shù)據(jù),64K Words I/O存儲空間
·2K Words HPI接口,可通過此接口方便地與主設(shè)備進行信息交換,主設(shè)備也可通過此接口下載DSP程序
·一個自動緩沖的串口和一個TDM串口,且都可用作標準同步串口
此外,C5000系列DSP可使用JTAG接口進行調(diào)試,可完全控制DSP上的所有資源,使用方便可靠。
2 系統(tǒng)結(jié)構(gòu)
由TMS320C542構(gòu)成的數(shù)據(jù)采集處理系統(tǒng)的結(jié)構(gòu)如圖2所示,以DSP為中心,帶有64K程序RAM,64K數(shù)據(jù)RAM,并通過16K×16的FIFO將數(shù)據(jù)送到DA,16K×16的FIFO將AD采集的數(shù)據(jù)送到DSP。與主機通過HPI接口進行數(shù)據(jù)交換。對SRAM、FIFO、AD、DA的控制,DSP所需各種狀態(tài)信息的獲取,以及與主機的其它一些聯(lián)系,都通過CPLDA和CPLDB來實現(xiàn)。
C5000系列DSP關(guān)鍵的外部接口信號如下:
·A0~A15,地址總線
·D0~D15,數(shù)據(jù)總線
·/MSTRB,外部存儲器存取閘
·/IOSTRB,I/O存取閘
·R/W,讀寫信號
·/PS,程序空間選擇
·/DS,數(shù)據(jù)空間選擇
·/IS,I/O空間選擇
·READY,數(shù)據(jù)準備好
此外,還有/HOLD、/HOLDA等,本系統(tǒng)未用。
2.1 存儲器控制
程序存儲器和數(shù)據(jù)存儲器各使用一片64K×16的SRAM,為了使DSP對外存的操作盡量快,其速度等級為12ns。使用/PS作程序存儲器的片選,/DS作數(shù)據(jù)存儲器的片選,而兩片存儲器的讀寫信號如下:
/OE=not(not(/MSTRB) and not(R/W))
/WR=notnot(/MSTRB) and (R/W)
出于高速的需要,采用了Xilinx公司的XC9536生成邏輯(CPLDA)。XC9536管腳至管腳的延遲為5ns,內(nèi)部有36個宏單元,可用管腳34個,可在線編程,使用起來有很多優(yōu)點。通過這些措施,系統(tǒng)可零等待地存取程序和數(shù)據(jù)RAM,也就是說,存儲器讀可達40M×16bit,寫可達20M×16bit。
2.2 FIFO控制
用于DAFIFO的寫和ADFIFO的讀都由CPLDA產(chǎn)生,其邏輯方程為:
/ADFIFOR=not(not(/IOSTRB) and not(R/W) and ADDR0x0)
/DAFIFOW=not(not/IOSTRB) and R/W and ADDR0x0)
其中,ADDR0X0指DSP的A15~A13為零。
DIFIFO由兩片容量16K×9bit、速度10ns的FIFO構(gòu)成,ADFIFO亦如此。由于控制信號的低延遲和FIFO的高速,對FIFO的存取也達到了零等待,即:使用RPT或RPTZ指令時,可達20M×16bit/s。
2.3 A/D和D/A控制
A/D轉(zhuǎn)換器負責將外部模擬信號變換成DSP可處理的數(shù)字量,是DSP進行處理的基礎(chǔ),在系統(tǒng)中具有十分重要的地位,采用的是10M采樣率、12bit分辨率的AD9220,如果需要,可在不改板的情況下?lián)Q成20M或40M采樣率的A/D。而D/A則將DSP生成的數(shù)字信號變成模擬量,完成信號的輸出或?qū)ο到y(tǒng)其他部分的控制,采用了100M速度的AD9762。A/D和D/A的控制信號如下:
·ADCLK和DACLK,分別是A/D轉(zhuǎn)換器和D/A轉(zhuǎn)換器的時鐘
·ADFIFOW,將A/D轉(zhuǎn)換的數(shù)據(jù)寫入ADFIFO
·DAFIFOR,從DAFIFO讀出數(shù)據(jù)以供D/A轉(zhuǎn)換
·DAFIFOMR和DAFIFORT,用于DAFIFO的清零和重傳
·ADFIFOMR和ADFIFORT,用于ADFIFO的清零和重傳
此六個信號都由CPLDB產(chǎn)生,CPLDB采用的是Xilinx公司的XC95108,速度為10ns,有108個宏單元,可在線編程,因而有較高的靈活性。使用24MHz的晶振為CPLDB提供時鐘,由DSP通過I/O口向CPLDB寫入數(shù)據(jù)以控制ADCLK和DACLK的開關(guān)和頻率,并以I/O寫的方式產(chǎn)生FIFO的清零和重傳信號。
2.4 CPLDA和CPLDB的應用
由以上介紹可以看出,整個系統(tǒng)的邏輯都由CPLDA和CPLDB產(chǎn)生。此外,它還有以下功能:
·FIFO的所有狀態(tài)信號,系統(tǒng)外部送入的各種控制和狀態(tài)信號,都送入了CPLDB,可由DSP通過I/O方式讀取
·DSP的四個外部中斷、NMI中斷都連至CPLDB,可通過I/O口實時控制哪個信號接入哪個中斷,具有較大的靈活性
·DSP的通用I/O管腳BIO和XF連至CPLDA,可以查詢方式快速響應外部信號
·主機對DSP的復位和其它一些特征的控制,對DSP的某些信息的讀取
·DSP對其它一些外圍電路的控制
由于在硬件設(shè)計時,對實際應用的要求并不能完全了解,因此需要使系統(tǒng)有足夠的冗余和靈活性,使用CPLD可以達到這一要求。通過將可能需要的各種控制和狀態(tài)信號引入CPLD,并利用CPLD的大容量和現(xiàn)場可編程性,可根據(jù)不同的要求進行現(xiàn)場修改,從而使系統(tǒng)設(shè)計的成功率更大,并且有很大的靈活性。
系統(tǒng)中使用了兩片CPLD,而沒有用一片大容量的CPLD代替,是出于系統(tǒng)性能的考慮。因為存儲器和FIFO的讀寫信號需要較低的延遲才可滿足零等待的要求,而大容量的CPLD延遲大且價格高,因而用XC9536滿足系統(tǒng)對速度的要求,而用XC95108滿足系統(tǒng)復雜邏輯對容量的要求。
2.5 HPI接口
DSP可使用HPI(Host Port Interface接口方便地與主設(shè)備或主處理器交換數(shù)據(jù),而幾乎不需增加額外的器件。對40MHz主頻的320C542而言,通信速度最快可達64Mbps。而且C5000系列DSP通過某種連線方式,可利用HPI接口下載程序,從而使系統(tǒng)具有更大的靈活性。HPI接口的框圖如圖3所示,有HPIA(HPI地址寄存器)、HPID(數(shù)據(jù)寄存器)、HPIC(控制寄存器)三個16bit寄存器,主設(shè)備就是通過這些專用寄存器與HPI通信。在C542的10K內(nèi)部RAM中,有2K字屬于HPI存儲塊。系統(tǒng)框圖如圖4所示,HD0~HD7是8位數(shù)據(jù)線,直接連到主設(shè)備的數(shù)據(jù)線上;HCS為片選信號;HDS1和HDS2為數(shù)據(jù)鎖存信號,在主設(shè)備的存取周期控制數(shù)據(jù)的傳輸,一般連至主設(shè)備的數(shù)據(jù)選通;HR/W決定當前操作是讀還是寫,可根據(jù)主設(shè)備的具體情況決定與何種信號相連;HCNTL0/1用于主設(shè)備選擇存取HPI的哪一個寄存器和對寄存器的存取類型,連至主設(shè)備的地址線;由于HPI寄存器是16位,而HPI與主設(shè)備僅以8位數(shù)據(jù)線相連,因而用HBIL決定當前存取的是一個字的第一還是第二字節(jié),連至主設(shè)備的地址線。
對HPI進行操作,首先要將控制字寫入HPIC,然后將要存取的地址寫入HPIA,最后存取HPID,就可從HPI存儲塊讀數(shù)或?qū)?shù)據(jù)寫入HPI存儲塊。此外,還可選擇HPIA自動增加方式,將初始地址寫入HPIA后,可不再操作HPIA,每存取一次數(shù)據(jù),地址都會自動加一,因而大大加快了存取速度。
在本系統(tǒng)中,主設(shè)備是AMD186構(gòu)成的嵌入式系統(tǒng),AMD與HPI的連接如圖5所示。由以上介紹可以看出,使用HPI也可與PC機的ISA總線方便地連接,用PC機作為主設(shè)備,通過PC機向DSP下載程序完成各種功能。
要使用HPI下載程序,只需在DSP復位時將程序通過HPI接口寫入HPI存儲塊從0X1000開始的存儲區(qū),并在上電復位后的一段時間將HINT管腳的信號引至INT2管腳,DSP在Boot程序中檢測到后,就會自動跳轉(zhuǎn)至0X1000處開始執(zhí)行。
3 系統(tǒng)工作流程及設(shè)計注意事項
系統(tǒng)通過實際測試,運行速度為40MIPS,程序和數(shù)據(jù)存儲器、所有I/O口都能全速運行,工作穩(wěn)定可靠。其工作流程如下:
(1)根據(jù)要求編寫DSP程序并調(diào)試通過。
(2)復位DSP,并由主設(shè)備通過HPI接口向DSP下載程序。
(3)復位信號失效,DSP在主設(shè)備的控制下開始工作。
由于系統(tǒng)工作于較高的頻率下(CPU為40MHz,外圍設(shè)備一般為20MHz,最高為40MHz),因而在系統(tǒng)設(shè)計中,必須注意高頻影響。
首先,系統(tǒng)要盡量簡單,要選擇大容量、表面封裝的元器件,以使元件數(shù)量少、體積小,降低信號反射并有利于布線。
其次,在設(shè)計PCB板時,要采用四層板,中間兩層作電源和地,并多加一些去耦電容。布線時不可用90度的拐彎,過孔要盡量少。數(shù)據(jù)和地址最好成組布線,以降低對其它信號的影響。一些關(guān)鍵的控制線,如存儲器讀寫信號和FIFO讀寫信號,最好在其兩邊加地線保護。特別是FIFO的讀寫信號,由于其對干擾特別敏感,要特別注意。對一些較長的引線,可串接一個30Ω的小電阻或加終端匹配以減小反射。
4 C5000系列DSP的軟件編程和調(diào)試
C5000系列DSP的編程工具,有C語言和匯編語言兩種,而匯編語言又有兩種指令集,一種叫記憶指令集(Mnemonic Instruction Set,類似8086的匯編語言;一種叫代數(shù)指令集(Algebraic Instruction Set,類似于C語言,使用起來比記憶指令集方便很多。
實際應用中,一般都是C和匯編混合編程,混合編程的方法,可查閱C5000系列DSP的手冊得到。TI公司還提供了一個運行庫(Runtime Lib,用TI公司的JTAG調(diào)試器進行調(diào)試時,在DSP程序中調(diào)用運行庫的函數(shù),可以打開PC機上的文件獲取數(shù)據(jù),或?qū)ⅲ模樱械臄?shù)據(jù)傳入PC機并存入文件,或通過PC機鍵盤向DSP傳遞信息和發(fā)送命令,總之,可以為調(diào)試帶來極大的方便。
在本系統(tǒng)中,由于既有A/D,又有D/A,構(gòu)成了一個閉環(huán),自發(fā)自收。可以由D/A生成模擬波形,由A/D實時采集,由DSP處理,對算法的設(shè)計和調(diào)試可帶來很大的幫助。
]]>聲音信號無處不在,同時也包含著大量的信息。在日常的生產(chǎn)生活中,我們分析聲音信號,便可以簡化過程,得到我們想要的結(jié)果。隨著 DSP芯片的性價比不斷攀升,使 DSP得以從軍用領(lǐng)域拓展到民用領(lǐng)域,由于 TI公司 DSP5000系列強大的音頻壓縮能力,語音應用得到了較大的發(fā)展。因此,基于 DSP的聲音采集系統(tǒng)的設(shè)計與開發(fā)具有重要的現(xiàn)實意義。
1系統(tǒng)總體介紹
該系統(tǒng)主要應用于工業(yè)生產(chǎn)中,通過采集的聲音信號與數(shù)據(jù)庫中的數(shù)據(jù)相比較,來檢測生產(chǎn)設(shè)備的運行狀態(tài)等。本系統(tǒng)主要分為以下幾個部分:電平轉(zhuǎn)換電路、 AD轉(zhuǎn)換電路、靜態(tài)存儲與動態(tài)存儲、USB接口以及 JTAG部分。
該系統(tǒng)通過采集聲音信號來檢測器械的裂紋、密合度等。將 DSP高速處理數(shù)字信號的能力與 USB高速傳輸數(shù)據(jù)的能力結(jié)合起來,使其服務于工業(yè)生產(chǎn),是該系統(tǒng)的主要設(shè)計目的。系統(tǒng)選用了 TI公司的TMS320VC5402作為該塊 PCB的 CPU,并將 PHILIPS公司的 PDIUSBD12作為接口芯片,使用 USB1.1協(xié)議進行 DSP與電腦的通信。 2硬件設(shè)計思想人類可以聽到的聲音信號是范圍在 20-20kHz的模擬信號,所以首先需要傳感器接收該聲音信號,接著需要進行轉(zhuǎn)換,使聲音信號由模擬信號變?yōu)閿?shù)字信號。之后通過分析噪聲產(chǎn)生的原因和規(guī)律,利用被測信號的特點和相干性,檢測被覆蓋的聲音信號。在檢測方法上有頻域信號的相干檢測、時域信號的積累平均、離散信號的計數(shù)技術(shù)、并行檢測等方法。
由于 5402片內(nèi)的 ROM和 DRAM資源有限,所以該系統(tǒng)需要外部存儲設(shè)備,本設(shè)計選擇一片 SRAM作為靜態(tài)存儲器,一片 FLASH作為動態(tài)存儲設(shè)備。5402的 CPU電壓為 3.3伏,外設(shè)電壓為 1.8伏,所以該系統(tǒng)還需要一個供電的電源模塊,可以將一般的輸入電壓 5伏轉(zhuǎn)化為 3.3與 1.8伏的電壓為 DSP供電,該 5V電壓還可為除 DSP以外的其他設(shè)備供電。
DSP與計算機的通信,通常采用 USB、RS232、PCI或 ISA卡等方式。RS232的主要缺點是:速度慢,不支持熱插拔; PCI與 ISA卡的主要缺點是:受計算機卡槽數(shù)量、地址等資源的限制,可擴展性差。而利用 USB通訊的主要優(yōu)點,便是傳輸速度快,支持熱插拔,占用資源少,可擴展性強。該設(shè)計利用 USB接口芯片直接與 DSP相連,通過 DSP的程序?qū)崿F(xiàn) USB的協(xié)議,最大的優(yōu)點就是可以保障數(shù)據(jù)交換的速度。綜上,在本系統(tǒng)中,幾個基本環(huán)節(jié)就是:電平轉(zhuǎn)換電路:將 5V電源轉(zhuǎn)換為 3.3V與 1.8V,分別為 DSP芯片的片上外設(shè)以及 CPU供電; AD信號轉(zhuǎn)換電路:將傳感器接收到的模擬信號轉(zhuǎn)換為數(shù)字信號,供 DSP進行處理;信號的存儲電路:儲存 DSP處理的信號;信號傳輸電路:將經(jīng)過處理的信號上傳至電腦;仿真電路:用于測試 DSP芯片。整體架構(gòu)如圖 1所示。
3模塊介紹
3.1 DSP
1、 DSP技術(shù)簡介
數(shù)字信號處理器,簡稱 DSP,是專業(yè)進行信號處理的芯片,目前在通信、自控領(lǐng)域具有廣泛的應用。在信息資源大大豐富的今天,數(shù)字化程度已經(jīng)越來越高。而 DSP作為這一技術(shù)的重要組成部分,對我們的生活已經(jīng)產(chǎn)生了越來越深刻的影響。自從 1978年 AMI公司發(fā)布了“單處理設(shè)備”開始,從基于 Harvard結(jié)構(gòu)但使用不同數(shù)據(jù)與程序總線的第一代通用DSP,到進行了改進的第二代增強型通用DSP,再到包含了 GPP結(jié)構(gòu)的第三代DSP,今天的DSP的發(fā)展趨勢已經(jīng)趨向于混合結(jié)構(gòu),DSP產(chǎn)品與計算機之間的差別已經(jīng)越來越模糊。在數(shù)字化時代背景下,DSP已成為各種電子產(chǎn)品等領(lǐng)域的基礎(chǔ)器件,而其在電機控制、聲音識別與圖像識別領(lǐng)域中的應用則是更為廣泛。
2、聲音采集系統(tǒng)中采用的 DSP
本系統(tǒng)中 DSP采用的是 TI公司的 TMS320VC5402(以下簡稱 5402),其操作速率達 100 MIPS,由于其具有改進的哈佛結(jié)構(gòu),所以它可以在一個指令周期內(nèi)完成 32x32bit的乘法,亦可以迅速完成數(shù)學運算最常用的乘加運算。它有 4條地址總線、3條 16位數(shù)據(jù)存儲器總線和 1條程序存儲器總線, 40位算術(shù)邏輯單元 (AIU),一個 17×17乘法器和一個 40位專用加法器。8個輔助寄存器及一個軟件棧,允許使用最先進的定點 DSP的 C語言編譯器,內(nèi)置可編程等待狀態(tài)發(fā)生器、鎖相環(huán)(PLL)時鐘產(chǎn)生器、兩個多通道緩沖串行口、一個 8位并行與外部處理器通信的 HPI口、2個 16位定時器以及 6通道 DMA控制器,特別適合電池供電設(shè)備.
]]>TMS320系列的同一代芯片具有相同的CPU結(jié)構(gòu),但根據(jù)市場的不同需要,形成新的存儲器與外設(shè)的不同組合,產(chǎn)生了多種派生器件。
TMS320C54x關(guān)鍵特性
圖2是C54x功能結(jié)構(gòu)圖,它的主要性能如下:
圖2 TMS320C54x功能結(jié)構(gòu)框圖
⒈ CPU
先進的多總線結(jié)構(gòu):一組程序總線(PAB、PB),三組數(shù)據(jù)總線(CAB、CB,DAB、DB,EAB、EB)
40位的數(shù)學邏輯單元(ALU):包括40位的桶形移位寄存器和兩個獨立的40位累加器
17 17位并行乘法器和40位專用加法器,單周期完成乘法/累加(MAC)
適于Viterbi運算的比較、選擇、存儲單元(CSSU)
指數(shù)編碼器,可在單周期內(nèi)計算(40位)累加器中數(shù)值的指數(shù)
兩個地址產(chǎn)生器,包括八個輔助寄存器和兩個的算術(shù)單元
⒉ 存儲器
可尋址存儲空間達192K字(程序、數(shù)據(jù)及I/O各64 64bit),C548還可擴展程序存儲器(8兆字)
典型C5400芯片存儲器
⒊ 片內(nèi)外設(shè)
軟件可編程等待狀態(tài)產(chǎn)生器
可編程的塊交換
片內(nèi)鎖相環(huán)時鐘產(chǎn)生器
禁止外部總線的控制機制
⒋ 指令集
重復單條指令與重復指令塊
&nbs
p; 存儲器塊移動指令32位數(shù)運算指令
可同時讀取2或3個操作數(shù)的指令
具有并行保存和并行加載的算術(shù)指令
條件保存指令
⒌ 功耗控制
IDLE1、IDLE2和IDLE3指令可控制其進入降功耗模式
可控制是否輸出CLKOUT信號
⒍ IEEE標準的1149.1邊界掃描邏輯接口
TMS320C54x結(jié)構(gòu)概述
''C54x由中央處理器CPU、存儲器和片內(nèi)外設(shè)組成,采用哈佛結(jié)構(gòu),有獨立的程序空間、數(shù)據(jù)空間和I/O空間。圖3是''C54x的內(nèi)部硬件框圖。
對所有的''C54x器件來說,圖中下半部所示的中央處理單元(CPU)是通用的。
總線結(jié)構(gòu)
一組程序總線(PAB、PB)和三組數(shù)據(jù)總線CAB、CB,DAB、DB,EAB、EB)將內(nèi)部各部件聯(lián)系起來。
圖3 TMS320C54x內(nèi)部硬件框圖
PB- 程序總線,傳送程序代碼或存在程序空間的數(shù)據(jù);
CB、DB、EB- 數(shù)據(jù)總線,連接CPU、數(shù)據(jù)地址產(chǎn)生邏輯、程序地址產(chǎn)生邏輯、片內(nèi)外設(shè)及存儲器等各部件;
CB和DB- 傳送從存儲器讀出的數(shù)據(jù),即“讀”操作使用的數(shù)據(jù)總線;
EB-傳送向存儲器寫入的數(shù)據(jù),即"寫"操作使用的數(shù)據(jù)總線;
PAB、CAB、DAB、EAB- 各對應的地址總線;
圖4 ALU功能框圖
中央處理單元(CPU)
ALU:算術(shù)邏輯運算單元
主要由40位ALU和兩個40位累加器(ACCA和ACCB)組成,如圖4所示。
&
nbsp; ALU和兩個累加器用來完成40位二進制補碼的算術(shù)運算,也能完成布爾運算。當狀態(tài)寄存儲器ST1的C16位置1時,可做兩個16位ALU,同時完成兩個16位運算。輸入:
16位立即數(shù);
來自數(shù)據(jù)存儲器的16位數(shù);
來自暫存器T的16位數(shù);
來自數(shù)據(jù)存儲器讀出的兩個16位數(shù);
來自數(shù)據(jù)存儲器讀出的一個32位數(shù);
來自累加器(A和B)的40位數(shù);
圖5 桶形移位器功能框圖
輸出:ALU的40位輸出被送往累加器A或B。
圖6 乘/加模塊功能方框圖
桶形移位器:將輸入數(shù)據(jù)左移0~31位或右移0~16位,經(jīng)常用作數(shù)字定標、位提取、擴展算術(shù)和溢出保護等操作。 輸入40位:來自累加器或經(jīng)DB、CB的 數(shù)據(jù)存儲器;
輸出40位:連到ALU或經(jīng)EB連到數(shù)據(jù)存儲器;
所移位數(shù)由指令中移位字段、ST1的ASM字段或T寄存器指定移位位數(shù)決定。
圖7 比較、選擇與保存單元(CSSU)功能框圖
乘/加模塊:由乘法器、加法器、輸入數(shù)據(jù)的符號控制邏輯、小數(shù)控制邏輯、零檢測、舍入、溢出/飽和邏輯和16位暫存寄存器T等組成。乘法器和ALU在一個指令周期內(nèi)共同完成(17 17補碼)乘/加(40位)運算,且可并行地作ALU運算,這些功能可用來做Euclidean距離及LMS濾波等復雜運算。乘/加模塊功能方框圖如圖6所示。
比較、選擇與保存單元(CSSU):可以完成累加器的高位字和低位字之間的最大值比較(CMPS指令)。另一功能是利用優(yōu)化的片內(nèi)硬件資源完成數(shù)據(jù)通信、模式識別等領(lǐng)域中經(jīng)常用到的Viterbi蝶形運算。
&
nbsp;圖8 指數(shù)編碼器
指數(shù)編碼器:用于支持單周期指令EXP的專用硬件,如圖8所示。
累加器中數(shù)值的指數(shù)值,以二進制補碼形式(-8~31)存放于暫存器T中;
CPU狀態(tài)和控制寄存器:
''C54x共有3個16位狀態(tài)和控制寄存器(PMST、ST0、ST1)它們都是存儲器映象寄存器,可以方便地寫入數(shù)據(jù)、或由數(shù)據(jù)存儲器對它們加載。
內(nèi)部存儲器
·''C54x的存儲器分為三個可獨立選擇的空間:程序空間、數(shù)據(jù)空間和I/O空間;
·''C54x的片內(nèi)存儲器包括ROM和RAM,其中RAM又可分為SARAM和DARAM:SARAM為單尋址寄存儲器,DARAM為雙尋址寄存儲器(一周期內(nèi)可以訪問兩次)。
ROM一般配置成程序存儲空間,用于存放要執(zhí)行的指令、系數(shù)表等固定操作數(shù)。也可以部分地安排到數(shù)據(jù)存儲空間,由PMST的狀態(tài)位 和DROM決定;RAM 一般安排到數(shù)據(jù)存儲空間,存放執(zhí)行指令所要用的數(shù)據(jù)。但也可以安排到程序空間,由PMST的狀態(tài)位OVLY決定。不同''C54x系列內(nèi)部存儲器配置各不相同。
''C54x的尋址方式
TMS320C54x的指令可能含有1個存儲器操作數(shù)(指令說明中用Smem表示),也可能有2個存儲器操作數(shù)(指令說明中用Xmem、Ymem表示),分別稱為單存儲器操作數(shù)和雙存儲器操作數(shù)。單存儲器操作數(shù)有7種尋址方式,它們是:
立即尋址: 操作數(shù)(常數(shù))含在指令中;
絕對尋址: 指令中含有操作數(shù)的16位地址;
累加器尋址: 操作數(shù)地址在累加器中(A);
直接尋址: 指令中含有操作數(shù)地址的低7 位;
間接尋址: 操作數(shù)的地址在輔助寄存器中,支持倒位序?qū)ぶ贰⒀h(huán)尋址等功能;
存儲器映像的寄存器尋址:
訪問存儲器映像寄存器,
又不影響DP或SP;
堆棧尋址: 訪問堆棧;
雙存儲器操作數(shù)支持一些特殊指令:
如MAC、FIR等復雜指令。
''C54x的六級指令流水線
&nb
sp; ''C54x CPU的指令流水線有六級,每個周期有六條指令在工作,它們處于整個執(zhí)行過程的不同階段,如圖9所示。
圖9 流水線不同工作階段操作內(nèi)容
流水線的工作全部為單字指令連續(xù)執(zhí)行時(理想情況)如圖10 所示。
圖10 流水線正常工作時做業(yè)情況
]]>
1引言
TI 公司的5000系列低功耗16 b定點DSP,因其良好的性價比,在國內(nèi)獲得了很大的普及。如何對5000系列DSP進行軟件開發(fā)也一直是業(yè)界關(guān)注的熱點。5000系列DSP的軟件設(shè)計通常有3種方法。
1.1用C/C++語言開發(fā)
TI公司提供了用于C/C++語言開發(fā)的CCS平臺。該平臺包括優(yōu)化ANSI C/C++ 編譯器,從而可以在源程序級進行開發(fā)調(diào)試。這種方法大大提高了軟件的開發(fā)速度和可讀性,方便了軟件的修改和移植。但是,C/C++代碼的效率還是無法與手工編寫的匯編代碼效率相比,如FFT程序。因為即使是最佳的C/C++編譯器,也無法在所有的情況下都能合理的利用DSP芯片提供的各種資源。此外,用C/C++語言實現(xiàn)DSP芯片某些硬件控制也不如匯編方便,有些甚至無法用C/C++語言實現(xiàn)。
1.2全匯編語言開發(fā)
TI公司提供了用于匯編語言開發(fā)的針對5000系列DSP的匯編語言。用戶可以用他進行軟件開發(fā)。這種方式可以更為合理的利用芯片提供的硬件資源,其代碼效率高,程序執(zhí)行速度快。但是用匯編語言編寫程序是比較復雜的,一般來說,不同公司的芯片匯編語言是不同的,即使是同一公司的芯片,由于芯片的類型不同(如定點和浮點)、芯片的升級換代,其匯編語言也不同。因此,用匯編語言開發(fā)基于某種芯片的產(chǎn)品周期較長,并且軟件的修改和升級較困難。而且匯編語言的可讀性和可移植性較差。
1.3C/C++語言和匯編語言混合編程開發(fā)
為了充分利用DSP芯片的硬件資源,更好發(fā)揮C/C++語言和匯編語言進行軟件開發(fā)的各自優(yōu)點,可以將兩者有機的結(jié)合起來,兼顧兩者優(yōu)點,避免其弊端。因此,在很多情況下,采用混合編程方法能更好地達到設(shè)計要求,完成設(shè)計任務。
2 C/C++語言和匯編語言混合編程方法討論
C/C++語言和匯編語言混合編程的具體方法有以下幾種:
(1)獨立編寫C/C++程序和匯編程序,分開編譯或匯編形成各自的目標模塊,再用鏈接器將C/C++模塊和匯編模塊鏈接起來,這是一種靈活性較大的方法。但用戶必須自己維護各匯編模塊的入口和出口代碼,自己計算傳遞參數(shù)在堆棧中的偏移量,工作量稍大,但能做到對程序的絕對控制,也能滿足軟件設(shè)計結(jié)構(gòu)化的要求。這是本文主要講述的方法。
(2)在C/C++程序中使用匯編程序中定義的變量和常量。
(3)在C/C++程序中直接內(nèi)嵌匯編語句。這種方法可以在C/C++程序中實現(xiàn)C/C++語言無法實現(xiàn)的硬件控制功能,如修改中斷控制寄存器、中斷標志寄存器等。
(4)在C/C++源程序中使用內(nèi)部函數(shù)直接調(diào)用匯編語言語句。
后3種方法由于在C/C++語言中直接嵌入了匯編語言的成分,容易造成程序混亂,C/C++環(huán)境被破壞,甚至導致程序崩潰,而編程者又很難對不良結(jié)果進行預期和有效控制。而如果采用第一種方法,只要遵循有關(guān)C/C++語言函數(shù)調(diào)用規(guī)則和寄存器規(guī)則,就能預見到程序運行的結(jié)果,保證程序正確。下面分別講述函數(shù)調(diào)用規(guī)則和寄存器規(guī)則,最后給出編程實例。
3函數(shù)調(diào)用規(guī)則
C/C++編譯器對函數(shù)調(diào)用強加了一組嚴格的原則。除了特殊的運行時間支持庫函數(shù)外,任何調(diào)用函數(shù)和被C/C++函數(shù)調(diào)用的函數(shù)都必須遵守這些原則。不遵守這些原則可能破壞C/C++環(huán)境并導致程序失敗。
圖1說明了典型的函數(shù)調(diào)用。在這個例子中,參數(shù)被傳遞到堆棧中調(diào)用者的參數(shù)塊,函數(shù)再使用這些參數(shù)調(diào)用被調(diào)用函數(shù)。注意,第一個參數(shù)是在A累加器中傳遞的。這個例子還說明了匯編器對被調(diào)用函數(shù)的局部幀的分配。局部幀包括局部變量塊和局部參數(shù)塊兩部分,其中局部參數(shù)塊是局部幀中用來傳遞參數(shù)到其他函數(shù)的部分。如果被調(diào)用函數(shù)沒有局部變量并且不再調(diào)用其他函數(shù)或需要調(diào)用的函數(shù)沒有參數(shù),則不分配局部幀。對于混合編程而言,由于被調(diào)用函數(shù)是手工編寫的匯編程序,則局部幀由編程者自己完成分配,也不需要在堆棧中進行,而編譯器分配局部幀。
(1)函數(shù)如何調(diào)用
函數(shù)(調(diào)用者)在調(diào)用被調(diào)用函數(shù)時執(zhí)行以下任務。
①調(diào)用者將第一個(最左邊)的參數(shù)值放進累加器A。調(diào)用者將剩下的參數(shù)按相反的順序傳進參數(shù)塊,剩下的最左邊的參數(shù)在最低的地址。
②若函數(shù)返回一個結(jié)構(gòu),則調(diào)用者為該結(jié)構(gòu)分配空間,然后用累加器A傳遞返回空間的地址給調(diào)用的函數(shù)。
③調(diào)用者調(diào)用函數(shù)。
(2)被調(diào)用函數(shù)如何響應。
被調(diào)用函數(shù)執(zhí)行以下任務:
注意:如果被調(diào)用函數(shù)是C/C++函數(shù),則下面步驟都是由匯編器自動完成。如果是混合編程,則如下步驟都是由編程者在被調(diào)用的匯編函數(shù)中完成的。
①若被調(diào)用函數(shù)修改AR1,AR2或AR7,則將他們壓入堆棧。
②被調(diào)用函數(shù)通過從SP減去一個常數(shù),為局部變量塊和局部參數(shù)塊分配存儲器。該常數(shù)按以下公式計算,即:
局部變量塊的大小+局部參數(shù)塊的大小+padding
padding值是為了保證SP對準偶數(shù)邊界而可能要求補充的一個字。之所以SP要對準偶數(shù)邊界,是因為5000系列DSP指令可一次讀寫存儲器的32 b,例如DLD,DADD等。這樣,編譯器必須保證所有32 b的目標都駐留在偶數(shù)邊界。
對于混合編程而言可以在匯編函數(shù)中,按本步驟的方法在堆棧中分配局部幀,但本方法相對比較麻煩,尤其該匯編函數(shù)還要調(diào)用其他函數(shù)時,所以,一般而言編程者通常用其他方法分配局部幀,比如用bss偽指令定義局部變量供函數(shù)使用。
③被調(diào)用函數(shù)為調(diào)用函數(shù)執(zhí)行代碼。
④若函數(shù)返回一個值,則被調(diào)用函數(shù)將該值放在累加器A中;若函數(shù)返回一個結(jié)構(gòu),則被 調(diào)用函數(shù)將該結(jié)構(gòu)復制到累加器A指到的存儲器塊;若調(diào)用者不返回函數(shù)值,則A被置0。
⑤被調(diào)用函數(shù)給SP上加上第二步計算的常數(shù),釋放為局部變量和局部參數(shù)分配的存儲空間。對混合編程而言,如果編程者沒有在堆棧中分配局部幀,則本步驟省略。
⑥被調(diào)用函數(shù)恢復所有保存的寄存器。
⑦被調(diào)用函數(shù)執(zhí)行返回。
4寄存器規(guī)則
(1)必須保存任何被函數(shù)修正的專用寄存器。專用寄存器包括:
①AR1,AR6,AR7
②堆棧指針(SP)
若對SP正常使用,不需要明顯的保存。換句話說,只要任何壓入堆棧的東西在函數(shù)返回之 前被彈回(因而保存了SP),匯編函數(shù)就可以自由的使用堆棧。任何非專用的寄存器都可以自由地使用而無需將他們保存。
(2)中斷函數(shù)必須保存他使用的所有寄存器。
(3)ARP在函數(shù)進入和返回時,必須為0,即當前輔助寄存器為AR0。函數(shù)執(zhí)行時可以為其 他值。
(4)在默認的情況下,編譯器總是認為OVM為0。因此,若在匯編程序中將OVM置為1,則返回C/C++環(huán)境時,必須將其恢復為0。
(5)在默認的情況下,編譯器總是認為CPL為1。因此,若在匯編程序中將CPL清0,則在返回C/C++環(huán)境時,必須將其恢復為1。
(6)長整數(shù)和浮點數(shù)存儲在存儲器中的方法是最高有效字在低位地址。
(7)函數(shù)必須按前面有關(guān)被調(diào)用函數(shù)響應中所述的方法返回值。
(8)除了全局變量的初始化外,匯編語言模塊不能以任何目的使用cinit段。在boot asm中的C/C++啟動程序假定cinit段完全由初始化表組成。將其他的信息放入cin it中將使初始化表產(chǎn)生混亂,并將產(chǎn)生不可預期的結(jié)果。
(9)在匯編語言模塊中,對可以從C/C++中訪問的變量和函數(shù)名需加上前綴“_”。對于僅用于匯編語言模塊中的標識符,應不得用下劃線開始。
(10)任何在匯編語言模塊中聲明的將要從C/C++訪問或調(diào)用的對象或函數(shù),都必須在匯編語言中用global偽指令聲明為全局變量。
5編程實例
以32 b乘法運算為例。雖然用C/C++語言表達32 b乘法運算較為方便和明了,但由于C/C++語言無法很好利用DSP匯編語言為實現(xiàn)各種乘法運算而提供的指令,而使得C/C++程序效率低下。所以這里用匯編語言完成32 b乘法運算,再用C/C++程序調(diào)用他。
5.1算法簡介
由于16 b定點DSP中沒有32 b乘法指令,所以一定要用幾種16 b乘法指令結(jié)合一定算法來進行32 b乘法運算。一個32 b數(shù)在存儲器中是分開存儲的。高16位存放在低地址,他在進行乘法運算是可以看作一個16 b有符號數(shù);低16位存放在相鄰的低地址,他進行乘法運算時可以看作一個16 b無符號數(shù)。于是算式如下:
其中:S代表符號數(shù);U代表無符號數(shù)。
由上算式可見,在32 b乘法運算中,實際上包含了3種乘法運算:U*U,S*U和S*S 。一般的乘法運算指令都是兩個帶符號數(shù)相乘,即S*S。所以在編程時,還要用到以下兩條乘法指令:
5.2C語言主程序
在主程序中進行MPY32函數(shù)調(diào)用時,函數(shù)傳遞情形如圖2所示。
從圖2可以看出,函數(shù)MPY32的第一參數(shù)存放在A累加器中,第二個參數(shù)在堆棧中,高16位在堆棧中的低地址,低16位在堆棧中的高地址。由于MPY32是匯編語言函數(shù),所以編譯器不為其分配局部幀,局部幀的分配在匯編程序中進行。
5.3匯編程序
可以看出,在匯編程序中至少要為局部幀分配8個單元,其中4個單元用來存放參數(shù)值,4個單元用來存放運算結(jié)果,如圖3所示。
匯編函數(shù):
6結(jié)語
本文介紹的混合編程方法不但適用于TI 5000系列DSP,同樣也適用于TI其他系列的DSP,如2000系列、6000系列,甚至對其他芯片,如51系列單片機,實現(xiàn)混合編程也有很大參考價值。值得注意的是,為了使混合編程不破壞C語言的結(jié)構(gòu)性,在匯編語言中不要設(shè)置除函數(shù)名之外的任何全局變量。