|
|
| <!--插入廣告JS代碼--> |
過去幾年以來,產(chǎn)品與系統(tǒng)在軟件方面的強度不斷加大,高強度的實時要求增多。對設計工程師而言,為與競爭對手展開競賽,爭取更快地向市場投放新產(chǎn)品,高效的系統(tǒng)開發(fā)方法已成為重中之重。而就開發(fā)數(shù)字信號處理器 (DSP) 算法的工程師而言,為了滿足市場需求,此項工作則更屬切中要害。此外,諸如產(chǎn)品開發(fā)周期和生命周期不斷縮短等因素也促使工程師和設計經(jīng)理對其開發(fā)方法和軟件工具進程進行全面的再評估。
產(chǎn)品漏洞會導致市場份額的迅速下降,如果公司犧牲了質(zhì)量,那么其聲譽也會馬上受到影響。產(chǎn)品工程師在實施由研發(fā)工程師設計的算法時,會遇到若干難題。難題之一就是將系統(tǒng)參數(shù)、測試向量以及其他數(shù)據(jù)從基于主機 PC 的概念開發(fā)工具手工轉(zhuǎn)化為基于目標硬件的DSP代碼開發(fā)工具。上述規(guī)范的手工轉(zhuǎn)化常常會導致錯誤,這在確認和測試中會有所發(fā)現(xiàn),也會導致開發(fā)時間的減緩。市場調(diào)研顯示,客戶產(chǎn)品開發(fā)計劃時間中超過50% 的部分都常常用于產(chǎn)品開發(fā)周期中的集成與測試階段。在此階段中,省時的工具對產(chǎn)品的功能可靠性、上市時間以及能否最終取得成功都具有實質(zhì)性的影響。
在今天的市場環(huán)境中,要將工程師的開發(fā)流程從概念發(fā)展至算法并最終推出產(chǎn)品,傳統(tǒng)的產(chǎn)品開發(fā)流程在此方面已經(jīng)力不從心。新的開發(fā)流程需要廣泛的工具集成,其中要保證數(shù)據(jù)以及其他信息能夠動態(tài)共享才能實現(xiàn)更高的工作效率。
傳統(tǒng)的 DSP 開發(fā)流程
嵌入式DSP系統(tǒng)的傳統(tǒng)設計流程通常包括兩個主要周期,即概念到算法周期(由研發(fā)小組執(zhí)行,其間會出現(xiàn)算法開發(fā)與系統(tǒng)設計)以及算法到產(chǎn)品周期(由產(chǎn)品開發(fā)小組執(zhí)行,此周期中會出現(xiàn)實際的產(chǎn)品實施、目標編程和測試)。請見圖 1 所示。
由于上述二周期常常是彼此獨立的,并由不同的設計小組完成,而且各小組的目標不見得一致,因此結(jié)構(gòu)中存在內(nèi)在的挑戰(zhàn)。設計小組使用的工具又可能是彼此不兼容的,不能加以整合。
在許多情況下,研發(fā)工程師使用數(shù)字計算環(huán)境,其可在算法開發(fā)、分析以及各種科學、數(shù)學或工程應用的可視化方面得到充分的利用。研發(fā)工程師常常以M或C代碼創(chuàng)建算法。他們也會為其算法創(chuàng)建測試向量(通常是文本或二進制格式的數(shù)據(jù)文件)。他們隨后會在主機 PC上運行算法作為模擬,以便進行分析并使算法響應可視化。目標則在于確保算法不僅能夠獨立于特定的平臺進行工作,也能獨立于任何物理存儲器、速度或是實時限制而工作。當他們希望將設計轉(zhuǎn)給產(chǎn)品開發(fā)小組時,他們會提交書面規(guī)范或?qū)嶋H的C或M代碼,并請小組就具體的DSP目標實施算法。
在產(chǎn)品開發(fā)方面,大多數(shù)采用DSP開展工作的小組都使用集成開發(fā)環(huán)境 (IDE)。小組的目標則在于使用書面規(guī)范實施算法、測試算法,并在最終產(chǎn)品中進行確認,以保證其滿足系統(tǒng)的實時、速度、功率及內(nèi)存等限制條件。產(chǎn)品開發(fā)小組常常依靠手工方法來從事上述任務,因為直接就規(guī)范甚或算法測試向量進行產(chǎn)品測試通常都是無便捷路徑可循的。在遇到復雜系統(tǒng)的情況下,上述手動轉(zhuǎn)換和確認最終會延緩產(chǎn)品開發(fā),這就會影響產(chǎn)品的成敗。
當前的手工方法效率低下,并容易導致錯誤
產(chǎn)品工程師為防止連接斷開而采取上述某些手動方法,我們這里將其列出:
- 手工復制并粘貼M文件測試向量(如100個值的陣列)至IDE中的C代碼(或匯編)文件。但是,工程師必須注意,應復制所有數(shù)據(jù)(如果他只復制了99個值怎么辦?),還必須添加正確的語法以保證兼容性(如逗號、方括號、圓括號等);
- 使用典型IDE中的"載入數(shù)據(jù)"命令手動從PC的硬盤中向DSP存儲器載入整個數(shù)據(jù)文件。工程師還必須注意應手動或通過腳本(需要編寫并調(diào)試)對數(shù)據(jù)進行重新格式化,以保證文件格式和隨后的語法能夠匹配;
- 使用IDE的文件I/O功能(如 fscanf() 功能),以便以更自動化的方式向上述第二種方法一樣載入文件。但是,有關(guān)文件格式與語法的同樣類型的問題仍然存在。傳統(tǒng)文件I/O帶來的另一大主要問題在于,工程師必須在DSP本身上運行龐大而低效的C庫,會導致代碼膨脹,這不僅浪費內(nèi)存,也會拖慢DSP的速度,導致其喪失實時工作的性能;
- 利用外部硬件生成信號,使其作為到該系統(tǒng)的輸入(如音樂或正弦波),以便觀察系統(tǒng)是否能夠?qū)崟r響應。與上述例子中測試向量和數(shù)據(jù)已經(jīng)成為數(shù)字化的情況不同,這里的數(shù)據(jù)是模擬的,其必須通過A/D轉(zhuǎn)換器。但是,這就會帶來更多的錯誤和不一致性,因為它不再是純粹的數(shù)字信號,會導致內(nèi)在的模擬失真和模擬特點。這還會帶來另一個變量,并導致問題更多的不確定性,也使找到問題根源的任務更加困難重重。
集成工具提高效率與生產(chǎn)率
集成度更高的開發(fā)流程能以更動態(tài)的方式自動執(zhí)行上述任務。
我們不妨給出真實情況的例子之一:在DSP上實施適應性噪音消除系統(tǒng)。設計第一步就是設計一個適應性過濾器(即過濾器系數(shù)、過濾器響應等)。開發(fā)工程師以通常采用的DSP算法設計和分析工具(諸如MathWorks 公司提供的MATLAB)開發(fā)C代碼,并在DSP上運行,而后綜合輸入信號并測試已設計過濾器的行為。
通過將MATLAB與通用 DSP IDE(如德州儀器公司 (TI) 推出的Code Composer Studio™)進行集成,工程師可使用相同的前端工具在模擬環(huán)境下進行算法的設計、可視化、分析與優(yōu)化。他們隨后可在DSP目標上實施設計,對其進行再次運行,并采用模擬設計對實際結(jié)果進行比較。
在我們給出的例子中,開發(fā)工程師可使用 MATLAB 來直接訪問DSP目標的存儲器,當DSP程序在目標上運行時對其進行控制,同時還可以獲得MATLAB的可視化、模擬和優(yōu)化功能。該連接由高速、實時的雙向數(shù)據(jù)通訊機制加以實現(xiàn),如TI的高速實時數(shù)據(jù)交換 (RTDX)™。圖2顯示了MATLAB代碼,展示了如何使用MATLAB對信號進行綜合測試,通過RTDX實時連接可執(zhí)行過濾器的DSP實施,并使結(jié)果可視化。
運行于目標 DSP上的算法接收噪音信號與白信號作為輸入,并執(zhí)行LMS算法以消除噪音。圖 3 顯示了通過RTDX實時發(fā)回至MATLAB 的DSP輸出信號、過濾器閥 (filter tap) 和過濾器響應。這意味著在代碼執(zhí)行時,我們在Matlab中便可以動態(tài)優(yōu)化參數(shù),適應性地調(diào)節(jié)過濾器,并運行蒙特卡洛模擬法并使結(jié)果可視化。在算法運行于 DSP上的同時,用戶還可以直接從MATLAB調(diào)用DSP上特定的函數(shù),并以批處理模式或互動模式對其加以執(zhí)行。
因此,測試與驗證小組可以使用原始的、基于MATLAB的設計或規(guī)范,直接以其作為測試設置的一部分。測試小組可直接將實際的系統(tǒng)輸出與原始MATLAB設計生成的、所希望的輸出進行比較,并就此進行適當?shù)膶崟r改變。
結(jié)論
通過將研發(fā)小組與產(chǎn)品開發(fā)小組所用的工具進行集成,我們可以極大地提高生產(chǎn)率,從而使設計與驗證測試不僅更加自動化,而且具有更高的效率。進行DSP算法以及在真實目標上對那些算法進行實施工作的設計小組毋需改變開發(fā)流程方法即可采用與IDE以及硬件后端集成的設計環(huán)境前端。他們也可以自動而實時地轉(zhuǎn)移數(shù)據(jù)。實施與測試小組也可以更迅速、更高效地重復產(chǎn)品設計,而不會導致新的錯誤。
因此,設計與開發(fā)工具集成能夠推動開發(fā)周期中較早的測試與驗證,從而可幫助工程師以更高的效率確認并解決問題。工程師要以更快的速度構(gòu)建并向市場推出新型、具有更強大功能的DSP產(chǎn)品,最重要的是要保證減少產(chǎn)品缺陷,工具集成也會為最終成功助其一臂之力。