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