從事多年DSP開發工程師——全方位剖析DSP
發布時間:2015-04-17 責任編輯:sherry
【導讀】本篇文章講解的是一位從事多年DSP開發的工程師根據自己的經驗分享的在DSP技術設計中的一些感受和技巧,這些東西很多事對於現在剛入門DSP技術的菜鳥是“未知領域”,先來學習學習做到“未雨綢繆”總沒有壞處。
說起來自己已經從事DSP技術開發有幾年了,看到許多朋友對DSP的開發非常感興取,結合這幾年對DSP的開發寫一寫自己的感受,一家之言,歡迎指教。自己上研究生的第一天起根據老板的安排就開始接觸DSP,那時DSP開發在國內高校剛剛開始,一台DSP開發器接近一萬還是ISA總線的,從206開始240、2407A都作過產品,對5402、2812、5471在產品方案規劃製定和論證時也研究過。由於方向所限對6X、8X係列沒有接觸。
在zai國guo內nei無wu論lun在zai公gong司si或huo高gao校xiao許xu多duo地di方fang為wei了le加jia快kuai開kai發fa周zhou期qi往wang往wang把ba一yi個ge產chan品pin開kai發fa分fen為wei硬ying件jian和he軟ruan件jian兩liang個ge相xiang對dui獨du立li部bu分fen,由you不bu同tong的de人ren完wan成cheng。這zhe在zai具ju有you一yi定ding技ji術shu和he管guan理li基ji礎chu的de公gong司si,由you總zong設she計ji師shi統tong一yi規gui劃hua協xie調tiao,分fen任ren務wu並bing行xing完wan成cheng的de情qing況kuang下xia是shi可ke行xing的de,也ye是shi符fu合he現xian代dai產chan品pin開kai發fa規gui律lv的de。但dan是shi在zai高gao校xiao人ren員yuan的de流liu動dong很hen大da,研yan究jiu生sheng的de有you效xiao科ke研yan時shi間jian很hen短duan、基礎差(許多研究生起步時對電熔、電阻、三極管的分類和選型都很困難)更不用說係統規劃設計了,況且許多老板自己也不太懂,師兄有自己的任務,他們搞明白時也畢業了。在許多高校做DSP就(jiu)是(shi)找(zhao)一(yi)個(ge)算(suan)法(fa)加(jia)到(dao)自(zi)己(ji)的(de)主(zhu)程(cheng)序(xu)裏(li),在(zai)板(ban)子(zi)上(shang)跑(pao)一(yi)下(xia),基(ji)本(ben)達(da)到(dao)效(xiao)果(guo)就(jiu)可(ke)以(yi)了(le),至(zhi)於(yu)可(ke)靠(kao)性(xing)是(shi)次(ci)要(yao)的(de),產(chan)業(ye)化(hua)無(wu)從(cong)談(tan)起(qi),這(zhe)已(yi)經(jing)算(suan)不(bu)錯(cuo)的(de)了(le)。
qishiyigexitongdewancheng,xitongdeguihuashizuizhongyaode,zaiguihuashiduiyingjianshejidezhishiherenshishijuedingxingde,takeyirangnizhidaoshenmeshikexingde,shenmeshibukexingde,dangnitongshijuyouruanjianshejinenglishi,jiukeyihelidefenpeixitonggongneng,wanchengshiyongVHDL進行係統行為描述-—係統功能劃分—— 係統子結構設計這樣的自頂向下的設計規劃流程,成為係統設計專家、項目經理,否則隻是硬件工程師、軟件工程師。無論作51、196、還是DSP都是這樣。
下麵分別談談對硬件和軟件設計的感受
yingjianshejishixitongshejideguanjian,guoneiheguowaichanpindechajuwangwangshiyingjianshejishuipinggaodijuedingde,renheruanjianshejisixiangmeiyoukekaodewulizaitidoushikongzhonglouge,zhishangtanbing。xuexiaodeyanjiushenghenduodouxiangbikaiyingjiansheji,duiyuyigequanxindeshejiyuqishuobuxieburushuobugan。shixiangyixiashaojigepianzideyaliyaobipaofeijiduanchengxudeyalidadeduo,youqishigonglvqijian,yidanshaodiao,nongbuhaohuoguangchongtian,rendezixindoumeile。kuangqiegaiyicibanzhouqichang,jingfeigao,haibuzhixingbuxing。qishizaiguowaishiliyibandegongsiyeshijinliangbimianyingjiandegengxinsheji,chanpinyidandingxingwangwangtongguoruanjianshengji,zheshigongsidefazhancelve,duigereneryanwuyixiweigui,peiyangyigeyingjianshejishiwangwangyaobiruanjianshejishishijianchanghuafeiduo。zaishejidspyingjianshi,kaishishejizuixiaoxitongban,xitongangongnengfenbanshejitiaoshi,zhuyifenbandianludewendingxingkenengburuzhengbandianlu,yaoduojiarukangganraohuanjie,fenbanjiandeyinxianbaokuodianyuanxiandixianyaoduan,jinliangzai10公分以內,實在不行加入光耦隔離、采用隔離電源。切記電源線、地線的幹擾遠比信號幹擾對係統的危害大得多,又常常被人忽視。電路板工作正常的先決條件就是電源正常!當(dang)分(fen)板(ban)電(dian)路(lu)正(zheng)常(chang)後(hou)再(zai)更(geng)居(ju)情(qing)況(kuang)設(she)計(ji)整(zheng)板(ban)電(dian)路(lu)。在(zai)調(tiao)試(shi)時(shi)發(fa)現(xian)的(de)問(wen)題(ti)一(yi)定(ding)要(yao)找(zhao)到(dao)原(yuan)因(yin)解(jie)決(jue),即(ji)使(shi)是(shi)飛(fei)線(xian),割(ge)線(xian),不(bu)要(yao)寄(ji)希(xi)望(wang)於(yu)下(xia)一(yi)板(ban)改(gai)了(le)再(zai)看(kan),除(chu)非(fei)原(yuan)理(li)性(xing)錯(cuo)誤(wu)。每(mei)一(yi)個(ge)功(gong)能(neng)環(huan)節(jie)多(duo)準(zhun)備(bei)幾(ji)套(tao)方(fang)案(an)。DSP的選型要根據係統功能而定,2000是一個功能比較全的控製器,但運算性能相對低,但目前大部分控製類、家電類包括中低層次的工業總線通信產品足夠了,281X不錯但太貴,而且開發技術不成熟。54XX更像一個協處理器,其實高端產品5471就很好,功能完善,但BGA封裝對產品的開發有一定難度。如果沒有從事過嵌入式係統開發的朋友其實可以從51看起,許多思想是共通的,51很經典沒有哪一款微處理器像51那樣使用持久和普遍。在硬件設計時更多的精力放在外圍電路設計上,外圍電路設計的靈活性要比DSP本身高得多,難度大得多。建議多考慮CPLD。

軟ruan件jian設she計ji上shang,著zhe眼yan點dian不bu要yao僅jin局ju限xian於yu某mou種zhong算suan法fa和he控kong製zhi策ce略lve,而er是shi軟ruan件jian係xi統tong框kuang架jia的de製zhi定ding,即ji操cao作zuo係xi統tong的de選xuan擇ze和he實shi現xian,算suan法fa和he控kong製zhi策ce略lve隻zhi是shi其qi中zhong技ji巧qiao性xing很hen強qiang的de子zi程cheng序xu和he子zi程cheng序xu間jian參can數shu相xiang互hu關guan係xi,建jian議yi設she計ji軟ruan件jian時shi能neng具ju有you操cao作zuo係xi統tong、數據結構和編譯原理方麵的知識,特別是使用C。對DSP的內部硬件結構一定要掌握,特別是中斷結構和流程、流水線操作,不然飛都不知道怎麼飛的。在語言選擇上當時是這麼給自己規定的:先編20個左右的彙編程序,每個代碼量超過4K,使用語句範圍覆蓋全部語句的60%-70%,在此基礎上使用C。現在發現用C構建程序的主體框架(操作係統)比較快而其不容易出錯,(現在正在用ASM根據UCOSII的思想重寫自己的操作係統)但對係統實時性影響比較大的運算算法一般采用MATLAB——C——ASM的辦法仿真調試優化,這裏的優化不單單是利用優化器優化,而是根據數據的特點改變運算方法,以除法為例C裏的/號其實掩蓋了許多技巧,當除數為常數時就可以放大倒數移位相乘移位的辦法進行,精度高速度快。這些辦法隻有掌握了ASM語言並用ASM語(yu)言(yan)思(si)考(kao)才(cai)會(hui)熟(shu)練(lian)應(ying)用(yong)。另(ling)外(wai)想(xiang)告(gao)訴(su)一(yi)些(xie)作(zuo)算(suan)法(fa)特(te)別(bie)是(shi)控(kong)製(zhi)算(suan)法(fa)的(de)朋(peng)友(you),千(qian)萬(wan)不(bu)要(yao)隨(sui)意(yi)評(ping)判(pan)一(yi)個(ge)算(suan)法(fa)的(de)優(you)劣(lie),在(zai)程(cheng)序(xu)中(zhong)程(cheng)序(xu)和(he)代(dai)碼(ma)優(you)化(hua)的(de)程(cheng)度(du)往(wang)往(wang)影(ying)響(xiang)了(le)控(kong)製(zhi)效(xiao)果(guo)好(hao)壞(huai),而(er)不(bu)是(shi)算(suan)法(fa)本(ben)身(shen)的(de)思(si)想(xiang)。其(qi)實(shi)在(zai)實(shi)際(ji)中(zhong)往(wang)往(wang)PID甚至PI、PD就夠了,神經元、模糊、小(xiao)波(bo)適(shi)用(yong)於(yu)研(yan)究(jiu)和(he)寫(xie)論(lun)文(wen),模(mo)糊(hu)在(zai)實(shi)際(ji)中(zhong)用(yong)的(de)多(duo)一(yi)點(dian),主(zhu)要(yao)是(shi)小(xiao)日(ri)本(ben)用(yong)的(de)比(bi)較(jiao)成(cheng)熟(shu),再(zai)恨(hen)日(ri)本(ben)人(ren),這(zhe)點(dian)也(ye)服(fu)氣(qi),小(xiao)日(ri)本(ben)就(jiu)是(shi)滑(hua),許(xu)多(duo)物(wu)理(li)現(xian)象(xiang)搞(gao)不(bu)透(tou),就(jiu)用(yong)這(zhe)法(fa),還(hai)管(guan)用(yong),題(ti)外(wai)話(hua)。
最後想說的是當麵對市場要求時,產品往往考慮的是可靠性、性能、價格而不是你用的什麼芯片,在滿足性能的基礎上結構越簡單就越可靠,芯片越通用價格就越低,能用51就不用196,能用2407就不用2812,除非把芯片本身作買點利用高成本贏取高利潤。無論2000還是5000、6000係列都有市場前景,關鍵是要做深做透。
獲取知識的方法、處理項目的能力是相通的,具體的說就是不要把目光盯在做硬件還是做軟件上,用ASM還是C,要勤動手打好基礎,提高自己對係統總體設計的能力,從係統的眼光看問題。為什麼都是做DSP的有的畢業拿3000,有的5000、8000,除了運氣和關係外,重要的是你對事物的認識深度和高度。自己一直都記住這句話:有前途的人做什麼都有前途,沒前途的人做什麼都沒前途。
與其說是鑽在裏麵,畢業設計是搞240,在老師的壓力下做出了一點東西,這期間主要是對DSP的各種基礎知識的熟悉與理解,對DSP的真正深入是在公司工作以後。當初進公司,因為正有一個項目需要用5410接手。說實話,在學校期間自己5000的書都沒有看過一眼,可沒辦法,隻能靠自己了。不過好的是自己2000DSP的基礎很好。接過項目後,第一個星期就全部看的是5000的指令,DSP的(de)結(jie)構(gou)倒(dao)沒(mei)怎(zen)麼(me)看(kan),因(yin)為(wei)項(xiang)目(mu)硬(ying)件(jian)已(yi)成(cheng)型(xing),主(zhu)要(yao)是(shi)算(suan)法(fa)。這(zhe)樣(yang),花(hua)了(le)一(yi)個(ge)星(xing)期(qi)熟(shu)悉(xi)指(zhi)令(ling)與(yu)項(xiang)目(mu)相(xiang)關(guan)的(de)程(cheng)序(xu),第(di)二(er)個(ge)星(xing)期(qi)也(ye)就(jiu)開(kai)始(shi)編(bian)程(cheng)了(le)。半(ban)個(ge)月(yue)以(yi)後(hou)對(dui)5410也就用很熟了的,當然主要還是講在算法方麵。這個項目太概做了四個月吧,係統程序是自己編寫的,主要有如64位加減乘除乘方開方、及時域方麵的一些算法。現在又做一個控製係統,用2407開發的,硬件主要有直交變頻,並把2407的所有外設資源全部用到了。現在自己可以這樣自誇一句吧:TI的2000係列與5000係列的自己都熟悉,要以此做個係統,沒問題。上麵是把自己搞DSP的經曆簡單說了一下的吧,在這裏想對正在學及想學DSP的難兄們說一句的是,DSP並不是很難。當然,這個前提是你的基礎要好,自己本身單片機,接口都還行,當初就是從單片機改成DSP的。有了單片機的基礎再去學2000第列的DSP(下麵的DSP單指2000係列,另有說明為止),你就可以把DSP看成一個super microcontroller了。相比之下,DSP除了比單片機多了更豐的外設接口(SPI,SCI、CAN、PWM、CAP、QEP等等),他就是一塊單片機,隻不過在單片機來說你要另加芯片的工作,DSP全部把它做在一塊芯片去了,現在看DSP也真就這麼簡單。前麵有人提到DSP主要是做算法,這句話有一定的片麵性: TI有很多係列的DSP,現在主流的DSP主要為2000係列、3000係列、4000係列、5000係列、6000係列。除了2000與5000係列是定點DSP外,其餘的均為浮點係列。 TI的2000係列主要長處是在用於控製係統,因為它的資源非常豐富,前麵提到,在控製係統中用到的一些外設2000係列均在片內集成了。 TI的5000係列主要長處是用於數字信號的算法處理,這裏所講算法處理主要是指在數字信號處理時的一些算法,如FIR、IIR、FFT等等。5000係列的DSP的速度比2000快,2407最快隻能到40M,2800係列除外,5410的DSP可以達到160M,如現在我們主要用來做數字信號方麵的處理以及簡單的靜態圖像處理等這樣一些在資源需要處於中等的一些算法。 TI的6000係列主要是用在實時圖像處理,這個就更則重於算法處理。一般的硬件很少自製,我們是用TI的DSK板再加上自主板相結合。
[page]
使用C/C++語言編寫基於DSP程序的注意事項
1、 不影響執行速度的情況下,可以使用c或c/c++語言提供的函數庫,也可以自己設計函數,這樣更易於使用“裁縫師”優化處理,例如:進行絕對值運算,可以調用fabs()或abs()函數,也可以使用if...else...判斷語句來替代。
2、 要非常謹慎地使用局部變量,根據自己項目開發的需要,應盡可能多地使用全局變量和靜態變量。
3、 一定要非常重視中斷向量表的問題,很多朋友對中斷向量表的調用方式不清楚。其實中斷向量表中的中斷名是任意取定的,dsp是不認名字的,它隻認地址。中斷向量表要重新定位。這一點很重要。
4、 要明確dsp軟件開發的第一步是對可用存儲空間的分析,存儲空間分配好壞關係到一個dsp程序員的水平。對於dsp,我們有兩種名稱的存儲空間,一種是物理空間,另一種是映射空間。物理空間是dsp上可以存放數據和程序的實際空間(包括外部存儲器),我wo們men的de數shu據ju和he程cheng序xu最zui終zhong放fang到dao物wu理li空kong間jian上shang,但dan我wo們men並bing不bu能neng直zhi接jie訪fang問wen它ta們men。我wo們men要yao訪fang問wen物wu理li空kong間jian,必bi須xu借jie助zhu於yu映ying射she空kong間jian才cai行xing。但dan是shi映ying射she空kong間jian本ben身shen是shi個ge“虛”空間,是個不存在的空間。所以,往往是映射空間遠遠大於實際的物理空間,有些映射空間,如io映射空間,它本身還代表了一種接口。隻有那些物理空間映射到的映射空間才是我們真正可訪問(讀或寫)的存儲空間。
5、 盡可能地減少除法運算,而盡可能多地使用乘法和加法運算代替。
6、 如果ti公司或第三方軟件合作商提供了dsplib或其他的合法子程序庫供調用,應盡可能地調用使用。這些子程序均使用用彙編寫成,更為重要之處是通過了tms320算法標準測試。而且,常用的數字信號處理算法均有包括。
7、 盡可能地采用內聯函數。而不用一般的函數。可以提高代碼的集成度。
8、 編程風格力求簡煉。盡可能用c語言而不用c++語言。個人感到雖然c++終代碼長了一些,好象對執行速度沒有影響。
9、 因為在c5000中double型和float型均占有2個字,所以都可以使用,而且,可以直接將int型賦給float型或double型,但,盡可能地多使用int數據類型代替。這一點需要注意。
10、 程序最後至少要加上一個空行,編譯器當這個空行為結尾提示符。
11、 大膽使用位運算符,非常好用。
特別推薦
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
技術文章更多>>
- 算力爆發遇上電源革新,大聯大世平集團攜手晶豐明源線上研討會解鎖應用落地
- 築基AI4S:摩爾線程全功能GPU加速中國生命科學自主生態
- 一秒檢測,成本降至萬分之一,光引科技把幾十萬的台式光譜儀“搬”到了手腕上
- AI服務器電源機櫃Power Rack HVDC MW級測試方案
- 突破工藝邊界,奎芯科技LPDDR5X IP矽驗證通過,速率達9600Mbps
技術白皮書下載更多>>
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索






