你的位置:首頁(yè) > 測(cè)試測(cè)量 > 正文
從事多年DSP開(kāi)發(fā)工程師——全方位剖析DSP
發(fā)布時(shí)間:2015-04-17 責(zé)任編輯:sherry
【導(dǎo)讀】本篇文章講解的是一位從事多年DSP開(kāi)發(fā)的工程師根據(jù)自己的經(jīng)驗(yàn)分享的在DSP技術(shù)設(shè)計(jì)中的一些感受和技巧,這些東西很多事對(duì)于現(xiàn)在剛?cè)腴TDSP技術(shù)的菜鳥(niǎo)是“未知領(lǐng)域”,先來(lái)學(xué)習(xí)學(xué)習(xí)做到“未雨綢繆”總沒(méi)有壞處。
說(shuō)起來(lái)自己已經(jīng)從事DSP技術(shù)開(kāi)發(fā)有幾年了,看到許多朋友對(duì)DSP的開(kāi)發(fā)非常感興取,結(jié)合這幾年對(duì)DSP的開(kāi)發(fā)寫一寫自己的感受,一家之言,歡迎指教。自己上研究生的第一天起根據(jù)老板的安排就開(kāi)始接觸DSP,那時(shí)DSP開(kāi)發(fā)在國(guó)內(nèi)高校剛剛開(kāi)始,一臺(tái)DSP開(kāi)發(fā)器接近一萬(wàn)還是ISA總線的,從206開(kāi)始240、2407A都作過(guò)產(chǎn)品,對(duì)5402、2812、5471在產(chǎn)品方案規(guī)劃制定和論證時(shí)也研究過(guò)。由于方向所限對(duì)6X、8X系列沒(méi)有接觸。
在國(guó)內(nèi)無(wú)論在公司或高校許多地方為了加快開(kāi)發(fā)周期往往把一個(gè)產(chǎn)品開(kāi)發(fā)分為硬件和軟件兩個(gè)相對(duì)獨(dú)立部分,由不同的人完成。這在具有一定技術(shù)和管理基礎(chǔ)的公司,由總設(shè)計(jì)師統(tǒng)一規(guī)劃協(xié)調(diào),分任務(wù)并行完成的情況下是可行的,也是符合現(xiàn)代產(chǎn)品開(kāi)發(fā)規(guī)律的。但是在高校人員的流動(dòng)很大,研究生的有效科研時(shí)間很短、基礎(chǔ)差(許多研究生起步時(shí)對(duì)電熔、電阻、三極管的分類和選型都很困難)更不用說(shuō)系統(tǒng)規(guī)劃設(shè)計(jì)了,況且許多老板自己也不太懂,師兄有自己的任務(wù),他們搞明白時(shí)也畢業(yè)了。在許多高校做DSP就是找一個(gè)算法加到自己的主程序里,在板子上跑一下,基本達(dá)到效果就可以了,至于可靠性是次要的,產(chǎn)業(yè)化無(wú)從談起,這已經(jīng)算不錯(cuò)的了。
其實(shí)一個(gè)系統(tǒng)的完成,系統(tǒng)的規(guī)劃是最重要的,在規(guī)劃時(shí)對(duì)硬件設(shè)計(jì)的知識(shí)和認(rèn)識(shí)是決定性的,它可以讓你知道什么是可行的,什么是不可行的,當(dāng)你同時(shí)具有軟件設(shè)計(jì)能力時(shí),就可以合理的分配系統(tǒng)功能,完成使用VHDL進(jìn)行系統(tǒng)行為描述-—系統(tǒng)功能劃分—— 系統(tǒng)子結(jié)構(gòu)設(shè)計(jì)這樣的自頂向下的設(shè)計(jì)規(guī)劃流程,成為系統(tǒng)設(shè)計(jì)專家、項(xiàng)目經(jīng)理,否則只是硬件工程師、軟件工程師。無(wú)論作51、196、還是DSP都是這樣。
下面分別談?wù)剬?duì)硬件和軟件設(shè)計(jì)的感受
硬件設(shè)計(jì)是系統(tǒng)設(shè)計(jì)的關(guān)鍵,國(guó)內(nèi)和國(guó)外產(chǎn)品的差距往往是硬件設(shè)計(jì)水平高低決定的,任何軟件設(shè)計(jì)思想沒(méi)有可靠的物理載體都是空中樓閣,紙上談兵。學(xué)校的研究生很多都想避開(kāi)硬件設(shè)計(jì),對(duì)于一個(gè)全新的設(shè)計(jì)與其說(shuō)不屑不如說(shuō)不敢。試想一下燒幾個(gè)片子的壓力要比跑飛幾段程序的壓力大的多,尤其是功率器件,一旦燒掉,弄不好火光沖天,人的自信都沒(méi)了。況且改一次板周期長(zhǎng),經(jīng)費(fèi)高,還不知行不行。其實(shí)在國(guó)外實(shí)力一般的公司也是盡量避免硬件的更新設(shè)計(jì),產(chǎn)品一旦定型往往通過(guò)軟件升級(jí),這是公司的發(fā)展策略,對(duì)個(gè)人而言物以希為貴,培養(yǎng)一個(gè)硬件設(shè)計(jì)師往往要比軟件設(shè)計(jì)師時(shí)間長(zhǎng)花費(fèi)多。在設(shè)計(jì)dsp硬件時(shí),開(kāi)始設(shè)計(jì)最小系統(tǒng)板,系統(tǒng)按功能分板設(shè)計(jì)調(diào)試,注意分板電路的穩(wěn)定性可能不如整板電路,要多加入抗干擾環(huán)節(jié),分板間的引線包括電源線地線要短,盡量在10公分以內(nèi),實(shí)在不行加入光耦隔離、采用隔離電源。切記電源線、地線的干擾遠(yuǎn)比信號(hào)干擾對(duì)系統(tǒng)的危害大得多,又常常被人忽視。電路板工作正常的先決條件就是電源正常!當(dāng)分板電路正常后再更居情況設(shè)計(jì)整板電路。在調(diào)試時(shí)發(fā)現(xiàn)的問(wèn)題一定要找到原因解決,即使是飛線,割線,不要寄希望于下一板改了再看,除非原理性錯(cuò)誤。每一個(gè)功能環(huán)節(jié)多準(zhǔn)備幾套方案。DSP的選型要根據(jù)系統(tǒng)功能而定,2000是一個(gè)功能比較全的控制器,但運(yùn)算性能相對(duì)低,但目前大部分控制類、家電類包括中低層次的工業(yè)總線通信產(chǎn)品足夠了,281X不錯(cuò)但太貴,而且開(kāi)發(fā)技術(shù)不成熟。54XX更像一個(gè)協(xié)處理器,其實(shí)高端產(chǎn)品5471就很好,功能完善,但BGA封裝對(duì)產(chǎn)品的開(kāi)發(fā)有一定難度。如果沒(méi)有從事過(guò)嵌入式系統(tǒng)開(kāi)發(fā)的朋友其實(shí)可以從51看起,許多思想是共通的,51很經(jīng)典沒(méi)有哪一款微處理器像51那樣使用持久和普遍。在硬件設(shè)計(jì)時(shí)更多的精力放在外圍電路設(shè)計(jì)上,外圍電路設(shè)計(jì)的靈活性要比DSP本身高得多,難度大得多。建議多考慮CPLD。
軟件設(shè)計(jì)上,著眼點(diǎn)不要僅局限于某種算法和控制策略,而是軟件系統(tǒng)框架的制定,即操作系統(tǒng)的選擇和實(shí)現(xiàn),算法和控制策略只是其中技巧性很強(qiáng)的子程序和子程序間參數(shù)相互關(guān)系,建議設(shè)計(jì)軟件時(shí)能具有操作系統(tǒng)、數(shù)據(jù)結(jié)構(gòu)和編譯原理方面的知識(shí),特別是使用C。對(duì)DSP的內(nèi)部硬件結(jié)構(gòu)一定要掌握,特別是中斷結(jié)構(gòu)和流程、流水線操作,不然飛都不知道怎么飛的。在語(yǔ)言選擇上當(dāng)時(shí)是這么給自己規(guī)定的:先編20個(gè)左右的匯編程序,每個(gè)代碼量超過(guò)4K,使用語(yǔ)句范圍覆蓋全部語(yǔ)句的60%-70%,在此基礎(chǔ)上使用C?,F(xiàn)在發(fā)現(xiàn)用C構(gòu)建程序的主體框架(操作系統(tǒng))比較快而其不容易出錯(cuò),(現(xiàn)在正在用ASM根據(jù)UCOSII的思想重寫自己的操作系統(tǒng))但對(duì)系統(tǒng)實(shí)時(shí)性影響比較大的運(yùn)算算法一般采用MATLAB——C——ASM的辦法仿真調(diào)試優(yōu)化,這里的優(yōu)化不單單是利用優(yōu)化器優(yōu)化,而是根據(jù)數(shù)據(jù)的特點(diǎn)改變運(yùn)算方法,以除法為例C里的/號(hào)其實(shí)掩蓋了許多技巧,當(dāng)除數(shù)為常數(shù)時(shí)就可以放大倒數(shù)移位相乘移位的辦法進(jìn)行,精度高速度快。這些辦法只有掌握了ASM語(yǔ)言并用ASM語(yǔ)言思考才會(huì)熟練應(yīng)用。另外想告訴一些作算法特別是控制算法的朋友,千萬(wàn)不要隨意評(píng)判一個(gè)算法的優(yōu)劣,在程序中程序和代碼優(yōu)化的程度往往影響了控制效果好壞,而不是算法本身的思想。其實(shí)在實(shí)際中往往PID甚至PI、PD就夠了,神經(jīng)元、模糊、小波適用于研究和寫論文,模糊在實(shí)際中用的多一點(diǎn),主要是小日本用的比較成熟,再恨日本人,這點(diǎn)也服氣,小日本就是滑,許多物理現(xiàn)象搞不透,就用這法,還管用,題外話。
最后想說(shuō)的是當(dāng)面對(duì)市場(chǎng)要求時(shí),產(chǎn)品往往考慮的是可靠性、性能、價(jià)格而不是你用的什么芯片,在滿足性能的基礎(chǔ)上結(jié)構(gòu)越簡(jiǎn)單就越可靠,芯片越通用價(jià)格就越低,能用51就不用196,能用2407就不用2812,除非把芯片本身作買點(diǎn)利用高成本贏取高利潤(rùn)。無(wú)論2000還是5000、6000系列都有市場(chǎng)前景,關(guān)鍵是要做深做透。
獲取知識(shí)的方法、處理項(xiàng)目的能力是相通的,具體的說(shuō)就是不要把目光盯在做硬件還是做軟件上,用ASM還是C,要勤動(dòng)手打好基礎(chǔ),提高自己對(duì)系統(tǒng)總體設(shè)計(jì)的能力,從系統(tǒng)的眼光看問(wèn)題。為什么都是做DSP的有的畢業(yè)拿3000,有的5000、8000,除了運(yùn)氣和關(guān)系外,重要的是你對(duì)事物的認(rèn)識(shí)深度和高度。自己一直都記住這句話:有前途的人做什么都有前途,沒(méi)前途的人做什么都沒(méi)前途。
與其說(shuō)是鉆在里面,畢業(yè)設(shè)計(jì)是搞240,在老師的壓力下做出了一點(diǎn)東西,這期間主要是對(duì)DSP的各種基礎(chǔ)知識(shí)的熟悉與理解,對(duì)DSP的真正深入是在公司工作以后。當(dāng)初進(jìn)公司,因?yàn)檎幸粋€(gè)項(xiàng)目需要用5410接手。說(shuō)實(shí)話,在學(xué)校期間自己5000的書都沒(méi)有看過(guò)一眼,可沒(méi)辦法,只能靠自己了。不過(guò)好的是自己2000DSP的基礎(chǔ)很好。接過(guò)項(xiàng)目后,第一個(gè)星期就全部看的是5000的指令,DSP的結(jié)構(gòu)倒沒(méi)怎么看,因?yàn)轫?xiàng)目硬件已成型,主要是算法。這樣,花了一個(gè)星期熟悉指令與項(xiàng)目相關(guān)的程序,第二個(gè)星期也就開(kāi)始編程了。半個(gè)月以后對(duì)5410也就用很熟了的,當(dāng)然主要還是講在算法方面。這個(gè)項(xiàng)目太概做了四個(gè)月吧,系統(tǒng)程序是自己編寫的,主要有如64位加減乘除乘方開(kāi)方、及時(shí)域方面的一些算法?,F(xiàn)在又做一個(gè)控制系統(tǒng),用2407開(kāi)發(fā)的,硬件主要有直交變頻,并把2407的所有外設(shè)資源全部用到了。現(xiàn)在自己可以這樣自夸一句吧:TI的2000系列與5000系列的自己都熟悉,要以此做個(gè)系統(tǒng),沒(méi)問(wèn)題。上面是把自己搞DSP的經(jīng)歷簡(jiǎn)單說(shuō)了一下的吧,在這里想對(duì)正在學(xué)及想學(xué)DSP的難兄們說(shuō)一句的是,DSP并不是很難。當(dāng)然,這個(gè)前提是你的基礎(chǔ)要好,自己本身單片機(jī),接口都還行,當(dāng)初就是從單片機(jī)改成DSP的。有了單片機(jī)的基礎(chǔ)再去學(xué)2000第列的DSP(下面的DSP單指2000系列,另有說(shuō)明為止),你就可以把DSP看成一個(gè)super microcontroller了。相比之下,DSP除了比單片機(jī)多了更豐的外設(shè)接口(SPI,SCI、CAN、PWM、CAP、QEP等等),他就是一塊單片機(jī),只不過(guò)在單片機(jī)來(lái)說(shuō)你要另加芯片的工作,DSP全部把它做在一塊芯片去了,現(xiàn)在看DSP也真就這么簡(jiǎn)單。前面有人提到DSP主要是做算法,這句話有一定的片面性: TI有很多系列的DSP,現(xiàn)在主流的DSP主要為2000系列、3000系列、4000系列、5000系列、6000系列。除了2000與5000系列是定點(diǎn)DSP外,其余的均為浮點(diǎn)系列。 TI的2000系列主要長(zhǎng)處是在用于控制系統(tǒng),因?yàn)樗馁Y源非常豐富,前面提到,在控制系統(tǒng)中用到的一些外設(shè)2000系列均在片內(nèi)集成了。 TI的5000系列主要長(zhǎng)處是用于數(shù)字信號(hào)的算法處理,這里所講算法處理主要是指在數(shù)字信號(hào)處理時(shí)的一些算法,如FIR、IIR、FFT等等。5000系列的DSP的速度比2000快,2407最快只能到40M,2800系列除外,5410的DSP可以達(dá)到160M,如現(xiàn)在我們主要用來(lái)做數(shù)字信號(hào)方面的處理以及簡(jiǎn)單的靜態(tài)圖像處理等這樣一些在資源需要處于中等的一些算法。 TI的6000系列主要是用在實(shí)時(shí)圖像處理,這個(gè)就更則重于算法處理。一般的硬件很少自制,我們是用TI的DSK板再加上自主板相結(jié)合。
[page]
使用C/C++語(yǔ)言編寫基于DSP程序的注意事項(xiàng)
1、 不影響執(zhí)行速度的情況下,可以使用c或c/c++語(yǔ)言提供的函數(shù)庫(kù),也可以自己設(shè)計(jì)函數(shù),這樣更易于使用“裁縫師”優(yōu)化處理,例如:進(jìn)行絕對(duì)值運(yùn)算,可以調(diào)用fabs()或abs()函數(shù),也可以使用if...else...判斷語(yǔ)句來(lái)替代。
2、 要非常謹(jǐn)慎地使用局部變量,根據(jù)自己項(xiàng)目開(kāi)發(fā)的需要,應(yīng)盡可能多地使用全局變量和靜態(tài)變量。
3、 一定要非常重視中斷向量表的問(wèn)題,很多朋友對(duì)中斷向量表的調(diào)用方式不清楚。其實(shí)中斷向量表中的中斷名是任意取定的,dsp是不認(rèn)名字的,它只認(rèn)地址。中斷向量表要重新定位。這一點(diǎn)很重要。
4、 要明確dsp軟件開(kāi)發(fā)的第一步是對(duì)可用存儲(chǔ)空間的分析,存儲(chǔ)空間分配好壞關(guān)系到一個(gè)dsp程序員的水平。對(duì)于dsp,我們有兩種名稱的存儲(chǔ)空間,一種是物理空間,另一種是映射空間。物理空間是dsp上可以存放數(shù)據(jù)和程序的實(shí)際空間(包括外部存儲(chǔ)器),我們的數(shù)據(jù)和程序最終放到物理空間上,但我們并不能直接訪問(wèn)它們。我們要訪問(wèn)物理空間,必須借助于映射空間才行。但是映射空間本身是個(gè)“虛”空間,是個(gè)不存在的空間。所以,往往是映射空間遠(yuǎn)遠(yuǎn)大于實(shí)際的物理空間,有些映射空間,如io映射空間,它本身還代表了一種接口。只有那些物理空間映射到的映射空間才是我們真正可訪問(wèn)(讀或?qū)?的存儲(chǔ)空間。
5、 盡可能地減少除法運(yùn)算,而盡可能多地使用乘法和加法運(yùn)算代替。
6、 如果ti公司或第三方軟件合作商提供了dsplib或其他的合法子程序庫(kù)供調(diào)用,應(yīng)盡可能地調(diào)用使用。這些子程序均使用用匯編寫成,更為重要之處是通過(guò)了tms320算法標(biāo)準(zhǔn)測(cè)試。而且,常用的數(shù)字信號(hào)處理算法均有包括。
7、 盡可能地采用內(nèi)聯(lián)函數(shù)。而不用一般的函數(shù)。可以提高代碼的集成度。
8、 編程風(fēng)格力求簡(jiǎn)煉。盡可能用c語(yǔ)言而不用c++語(yǔ)言。個(gè)人感到雖然c++終代碼長(zhǎng)了一些,好象對(duì)執(zhí)行速度沒(méi)有影響。
9、 因?yàn)樵赾5000中double型和float型均占有2個(gè)字,所以都可以使用,而且,可以直接將int型賦給float型或double型,但,盡可能地多使用int數(shù)據(jù)類型代替。這一點(diǎn)需要注意。
10、 程序最后至少要加上一個(gè)空行,編譯器當(dāng)這個(gè)空行為結(jié)尾提示符。
11、 大膽使用位運(yùn)算符,非常好用。
特別推薦
- 克服碳化硅制造挑戰(zhàn),助力未來(lái)電力電子應(yīng)用
- 了解交流電壓的產(chǎn)生
- 單結(jié)晶體管符號(hào)和結(jié)構(gòu)
- 英飛凌推出用于汽車應(yīng)用識(shí)別和認(rèn)證的新型指紋傳感器IC
- Vishay推出負(fù)載電壓達(dá)100 V的業(yè)內(nèi)先進(jìn)的1 Form A固態(tài)繼電器
- 康佳特推出搭載AMD 銳龍嵌入式 8000系列的COM Express緊湊型模塊
- 村田推出3225尺寸車載PoC電感器LQW32FT_8H系列
技術(shù)文章更多>>
- “扒開(kāi)”超級(jí)電容的“外衣”,看看超級(jí)電容“超級(jí)”在哪兒
- DigiKey 誠(chéng)邀各位參會(huì)者蒞臨SPS 2024?展會(huì)參觀交流,體驗(yàn)最新自動(dòng)化產(chǎn)品
- 提前圍觀第104屆中國(guó)電子展高端元器件展區(qū)
- 高性能碳化硅隔離柵極驅(qū)動(dòng)器如何選型,一文告訴您
- 貿(mào)澤電子新品推薦:2024年第三季度推出將近7000個(gè)新物料
技術(shù)白皮書下載更多>>
- 車規(guī)與基于V2X的車輛協(xié)同主動(dòng)避撞技術(shù)展望
- 數(shù)字隔離助力新能源汽車安全隔離的新挑戰(zhàn)
- 汽車模塊拋負(fù)載的解決方案
- 車用連接器的安全創(chuàng)新應(yīng)用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
濾波電感
濾波器
路由器設(shè)置
鋁電解電容
鋁殼電阻
邏輯IC
馬達(dá)控制
麥克風(fēng)
脈沖變壓器
鉚接設(shè)備
夢(mèng)想電子
模擬鎖相環(huán)
耐壓測(cè)試儀
逆變器
逆導(dǎo)可控硅
鎳鎘電池
鎳氫電池
紐扣電池
歐勝
耦合技術(shù)
排電阻
排母連接器
排針連接器
片狀電感
偏光片
偏轉(zhuǎn)線圈
頻率測(cè)量?jī)x
頻率器件
頻譜測(cè)試儀
平板電腦