一個(gè)DSP開(kāi)發(fā)者的感受
一個(gè)DSP開(kāi)發(fā)者的感受
我是已經(jīng)從事DSP開(kāi)發(fā)有幾年了,看到許多朋友對DSP的開(kāi)發(fā)非常感興取,我結合這幾年對DSP的開(kāi)發(fā)寫(xiě)一寫(xiě)自己的感受,一家之言,歡迎指教。我上研究生的第一天起根據老板的安排就開(kāi)始接觸DSP,那時(shí)DSP開(kāi)發(fā)在國內高校剛剛開(kāi)始,一臺DSP開(kāi)發(fā)器接近一萬(wàn)還是ISA總線(xiàn)的,我從206開(kāi)始240、2407A都作過(guò)產(chǎn)品,對5402、2812、5471在產(chǎn)品方案規劃制定和論證時(shí)也研究過(guò)。由于方向所限對6X、8X系列沒(méi)有接觸。
我發(fā)現在國內無(wú)論在公司或高校許多地方為了加快開(kāi)發(fā)周期往往把一個(gè)產(chǎn)品開(kāi)發(fā)分為硬件和軟件兩個(gè)相對獨立部分,由不同的人完成。這在具有一定技術(shù)和管理基礎的公司,由總設計師統一規劃協(xié)調,分任務(wù)并行完成的情況下是可行的,也是符合現代產(chǎn)品開(kāi)發(fā)規律的。但是在高校人員的流動(dòng)很大,研究生的有效科研時(shí)間很短、基礎差(許多研究生起步時(shí)對電熔、電阻、三極管的分類(lèi)和選型都很困難,我也是這樣過(guò)來(lái)的)更不用說(shuō)系統規劃設計了,況且許多老板自己也不太懂,師兄有自己的任務(wù),他們搞明白時(shí)也畢業(yè)了。在許多高校做DSP就是找一個(gè)算法加到自己的主程序里,在板子上跑一下,基本達到效果就可以了,至于可靠性是次要的,產(chǎn)業(yè)化無(wú)從談起,這已經(jīng)算不錯的了。其實(shí)我覺(jué)得一個(gè)系統的完成,系統的規劃是最重要的,在規劃時(shí)對硬件設計的知識和認識是決定性的,它可以讓你知道什么是可行的,什么是不可行的,當你同時(shí)具有軟件設計能力時(shí),就可以合理的分配系統功能,完成使用VHDL進(jìn)行系統行為描述-—系統功能劃分—— 系統子結構設計這樣的自頂向下的設計規劃流程,成為系統設計專(zhuān)家、項目經(jīng)理,否則只是硬件工程師、軟件工程師。無(wú)論作51、196、還是DSP都是這樣。
下面分別談?wù)勎覍τ布蛙浖O計的感受 硬件設計是系統設計的關(guān)鍵,國內和國外產(chǎn)品的差距往往是硬件設計水平高低決定的,任何軟件設計思想沒(méi)有可靠的物理載體都是空中樓閣,紙上談兵。學(xué)校的研究生很多都想避開(kāi)硬件設計,對于一個(gè)全新的設計與其說(shuō)不屑不如說(shuō)不敢。試想一下燒幾個(gè)片子的壓力要比跑飛幾段程序的壓力大的多,尤其是功率器件,一旦燒掉,弄不好火光沖天,人的自信都沒(méi)了。況且改一次板周期長(cháng),經(jīng)費高,還不知行不行。其實(shí)在國外實(shí)力一般的公司也是盡量避免硬件的更新設計,產(chǎn)品一旦定型往往通過(guò)軟件升級,這是公司的發(fā)展策略,對個(gè)人而言物以希為貴,培養一個(gè)硬件設計師往往要比軟件設計師時(shí)間長(cháng)花費多。在設計dsp硬件時(shí),開(kāi)始設計最小系統板,系統按功能分板設計調試,注意分板電路的穩定性可能不如整板電路,要多加入抗干擾環(huán)節,分板間的引線(xiàn)包括電源線(xiàn)地線(xiàn)要短,盡量在10公分以?xún)?,?shí)在不行加入光耦隔離、采用隔離電源。切記電源線(xiàn)、地線(xiàn)的干擾遠比信號干擾對系統的危害大得多,又常常被人忽視。電路板工作正常的先決條件就是電源正常!當分板電路正常后再更居情況設計整板電路。在調試時(shí)發(fā)現的問(wèn)題一定要找到原因解決,即使是飛線(xiàn),割線(xiàn),不要寄希望于下一板改了再看,除非原理性錯誤。每一個(gè)功能環(huán)節多準備幾套方案。 DSP的選型要根據系統功能而定,2000是一個(gè)功能比較全的控制器,但運算性能相對低,但目前大部分控制類(lèi)、家電類(lèi)包括中低層次的工業(yè)總線(xiàn)通信產(chǎn)品足夠了,281X不錯但太貴,而且開(kāi)發(fā)技術(shù)不成熟。54XX更像一個(gè)協(xié)處理器,其實(shí)高端產(chǎn)品5471就很好,功能完*,但BGA封裝對產(chǎn)品的開(kāi)發(fā)有一定難度。如果沒(méi)有從事過(guò)嵌入式系統開(kāi)發(fā)的朋友其實(shí)可以從51看起,許多思想是共通的,51很經(jīng)典沒(méi)有哪一款微處理器像51那樣使用持久和普遍。在硬件設計時(shí)更多的精力放在外圍電路設計上,外圍電路設計的靈活性要比DSP本身高得多,難度大得多。建議多考慮CPLD。
軟件設計上,著(zhù)眼點(diǎn)不要僅局限于某種算法和控制策略,而是軟件系統框架的制定,即操作系統的選擇和實(shí)現,算法和控制策略只是其中技巧性很強的子程序和子程序間參數相互關(guān)系,建議設計軟件時(shí)能具有操作系統、數據結構和編譯原理方面的知識,特別是使用C。
對DSP的內部硬件結構一定要掌握,特別是中斷結構和流程、流水線(xiàn)操作,不然飛都不知道怎么飛的。在語(yǔ)言選擇上我當時(shí)是這么給自己規定的先編20個(gè)左右的匯編程序,每個(gè)代碼量超過(guò)4K,使用語(yǔ)句范圍覆蓋全部語(yǔ)句的60%-70%,在此基礎上使用C?,F在發(fā)現用C構建程序的主體框架(操作系統)比較快而其不容易出錯,(我現在正在用ASM根據UCOSII的思想重寫(xiě)自己的操作系統)但對系統實(shí)時(shí)性影響比較大的運算算法一般采用MATLAB——C——ASM的辦法仿真調試優(yōu)化,這里的優(yōu)化不單單是利用優(yōu)化器優(yōu)化,而是根據數據的特點(diǎn)改變運算方法,以除法為例C里的/號其實(shí)掩蓋了許多技巧,當除數為常數時(shí)就可以放大倒數移位相乘移位的辦法進(jìn)行,精度高速度快。這些辦法只有掌握了ASM語(yǔ)言并用ASM語(yǔ)言思考才會(huì )熟練應用。另外我想告訴一些作算法特別是控制算法的朋友,千萬(wàn)不要隨意評判一個(gè)算法的優(yōu)劣,在程序中程序和代碼優(yōu)化的程度往往影響了控制效果好壞,而不是算法本身的思想。其實(shí)在實(shí)際中往往PID甚至PI、PD就夠了,神經(jīng)元、模糊、小波適用于研究和寫(xiě)論文,模糊在實(shí)際中用的多一點(diǎn),主要是小日本用的比較成熟,我再恨日本人,這點(diǎn)也服氣,小日本就是滑,許多物理現象搞不透,就用這法,還管用,題外話(huà)。
最后我想說(shuō)的是,當我們面對市場(chǎng)要求時(shí),產(chǎn)品往往考慮的是可靠性、性能、價(jià)格而不是你用的什么芯片,在滿(mǎn)足性能的基礎上結構越簡(jiǎn)單就越可靠,芯片越通用價(jià)格就越低,能用51就不用196,能用2407就不用2812,除非把芯片本身作買(mǎi)點(diǎn)利用高成本贏(yíng)取高利潤。無(wú)論2000還是5000、6000系列都有市場(chǎng)前景,關(guān)鍵是要做深做透獲取知識的方法、處理項目的能力是相通的,具體的說(shuō)就是不要把目光盯在做硬件還是做軟件上,用ASM還是C,要勤動(dòng)手打好基礎,提高自己對系統總體設計的能力,從系統的眼光看問(wèn)題。為什么都是做DSP的有的畢業(yè)拿3000,有的5000、8000,除了運氣和關(guān)系外,重要的是你對事物的認識深度和高度。我一直都記住這句話(huà):有前途的人做什么都有前途,沒(méi)前途的人做什么都沒(méi)前途。
評論