作者:MathWorks行業(yè)經(jīng)理 Graham Reith 在復(fù)雜信號處理與通信技術(shù)的開發(fā)中,設(shè)計流程的不連續(xù)越來越具有破壞性,并且代價越來越高昂。同時,縮短設(shè)計和驗證周期的需求使設(shè)計不連續(xù)的影響被進一步被放大。本文通過介紹算法設(shè)計、系統(tǒng)架構(gòu)和硬件設(shè)計中的幾個用例,來展示最近在建模、仿真和代碼生成工具及方法上的重要技術(shù)發(fā)展。 流系統(tǒng)的算法設(shè)計 現(xiàn)在越來越多的工程師開始用MATLAB中的浮點運算來開發(fā)信號處理與通信系統(tǒng)算法。這些算法開發(fā)人員可以利用MATLAB強大的信號采集和分析功能,以及多個工具箱的內(nèi)置算法庫。但是,在有些團隊中,為了算法的優(yōu)化實現(xiàn),工程師會用C代碼重寫這些算法,將其轉(zhuǎn)換為定點或整數(shù)運算,或?qū)⑺鼈兣c其他設(shè)計元素集成。該重寫步驟就是設(shè)計流程中一個潛在的,成本高昂且具有破壞性的典型不連續(xù)。 MATLAB提供的數(shù)百個用于信號處理、通信、圖像和視頻處理的新組件,都可作為System對象庫。在MATLAB中,System對象庫是為設(shè)計實時系統(tǒng)設(shè)計的,是即用型打包的算法實現(xiàn)。它們隱式地處理著流、索引、緩沖和狀態(tài)管理,使編寫、調(diào)試和維護代碼變得更簡單。 圖1顯示的是帶發(fā)射器、信道和接收器組件的基本通信系統(tǒng)的框圖表示形式。為了對這樣一個系統(tǒng)進行建模和仿真,工程師需要寫數(shù)千行的C代碼,然后,尋找各種方法,以便將設(shè)計與測試設(shè)備進行集成,或者分析仿真結(jié)果。 圖1:典型通信系統(tǒng)物理層的框圖。 與這數(shù)千行C代碼(一般情況下為實施此通信系統(tǒng)而寫入的)相比,圖2中顯示的MATLAB代碼使用了來自DSP System Toolbox和Communications System Toolbox的若干個System對象。 圖2:部分MATLAB代碼,展示來自DSP System Toolbox和Communications System Toolbox的System對象的使用。 例如,要對發(fā)射器進行建模,工程師可以按順序?qū)嵗驼{(diào)用Communications System Toolbox中的Reed-Solomon編碼器、卷積編碼器、區(qū)塊交織器、矩形QAM調(diào)制器和正交空時分組碼System對象(如圖2所示)。這種代碼結(jié)構(gòu)讓工程師可以輕松地將其與原始規(guī)格或框圖進行對比。算法設(shè)計師則可以快速地將此代碼與其現(xiàn)有的MATLAB代碼相結(jié)合,并使用從測試儀器獲取的實時流數(shù)據(jù)來測試這些算法。 MATLAB與C/C++相結(jié)合 使用System對象編碼的算法可促進系統(tǒng)設(shè)計流程中的代碼重用。浮點或定點型的MATLAB代碼可以作為系統(tǒng)架構(gòu)、建模和設(shè)計流程的一部分直接包含在Simulink模型中。工程師也可以使用MATLAB Coder從MATLAB代碼自動生成C代碼,這包括System對象,在正確驗證后,使用該C代碼進行仿真,或與其他C/C++設(shè)計元素進行集成。 圖3展示的是工程流程中使用MATLAB與C/C++的集成而實現(xiàn)的幾個重要用例。例如,工程師可以從C程序直接觸發(fā)MATLAB,以利用MATLAB的信號處理庫或可視化功能;可以在MATLAB中將現(xiàn)有的C/C++設(shè)計直接用作外部庫;也可使用MATLAB Compiler部署MATLAB算法, 甚至可使用MATLAB Coder從MATLAB自動生成C代碼。 圖3:將MATLAB與C/C++相結(jié)合為信號處理應(yīng)用提供了強大而靈活的算法及系統(tǒng)設(shè)計平臺。 RF和數(shù)字系統(tǒng)架構(gòu) 在基于LTE 、藍牙、ZigBee、Wi-Fi或其他技術(shù)規(guī)范的RF設(shè)計中,第一個步驟通常是靜態(tài)鏈接預(yù)算計算。這些計算提供了良好的起點,但是它們未將輸入信號調(diào)制、鏡像效應(yīng)、干擾以及其他真實的現(xiàn)象考慮在內(nèi)。為了對通信系統(tǒng)的RF損失效果進行有效的建模和仿真,系統(tǒng)架構(gòu)師會同時采用多個不相關(guān)聯(lián)的工具,它們可支持數(shù)字或模擬/RF設(shè)計,但不能同時支持兩者。 SimRF工具箱與Simulink集成,為 RF收發(fā)器中的多頻動態(tài)系統(tǒng)的仿真提供電路包絡(luò)引擎。SimRF工具箱包含非線性放大器、三端口混頻器、S參數(shù)模塊和其他基本模塊的行為模型,用于設(shè)計含任意拓撲的架構(gòu),并對RF前端進行系統(tǒng)級仿真。借助SimRF,您可以仿真RF放大器以預(yù)估增益、噪聲、奇偶階互調(diào)失真。混合器的仿真使您可以預(yù)測鏡像抑制、倒易混頻(Reciprocal mixing)、本地振蕩器相位偏移和DC轉(zhuǎn)換。您也可以在時域和頻域,對線性與非線性組件之間的頻率相關(guān)失配進行仿真。 SimRF與Simulink相結(jié)合,為在統(tǒng)一設(shè)計設(shè)計中對RF及基帶子系統(tǒng)進行建模和仿真提供了通用環(huán)境。通過結(jié)合使用這些工具,系統(tǒng)架構(gòu)師可以在開發(fā)過程的早期完成真實的仿真,并在包含數(shù)字和模擬/RF組件的設(shè)計中做出合理的權(quán)衡決策。 圖4顯示工作在ISM頻段上的低IF接收器的整體系統(tǒng)模型,包含數(shù)字信號處理組件和RF接收器子系統(tǒng)。圖中也顯示了采用Hartley IF接收器的RF子系統(tǒng)的詳細信息。與使用兩端口單元相級聯(lián)以及單頻近似值的傳統(tǒng)建模方法不同,使用三端口單元可簡化接收器模型。該模型也會使用電路包絡(luò)仿真技術(shù),并支持多頻建模來估算干擾器和鏡像信號對非線性接收器的影響。 圖4:一個統(tǒng)一模型中的ISM頻段低IF接收器(含數(shù)字和RF子系統(tǒng))(上圖),以及在SimRF中建模的Hartley接收器RF子系統(tǒng)的詳圖(下圖)。 系統(tǒng)架構(gòu)師還可以在這統(tǒng)一的環(huán)境下來研究諸如超外差接收或直接變頻這樣的鏡像抑制方法的可行性和性能提升價值。除了對RF損失效果進行仿真外,系統(tǒng)架構(gòu)師還可以使用設(shè)計中使用過的相同模型,來執(zhí)行仿真中的驗證任務(wù),而這些任務(wù)通常需要在試驗臺才能完成。 圖5:顯示低IF鏡像抑制結(jié)果的輸入(左側(cè))和輸出(右側(cè))功率譜密度圖形。 硬件設(shè)計 在完成算法設(shè)計和系統(tǒng)架構(gòu)后,許多開發(fā)周期的下一步是FPGA實現(xiàn)和數(shù)字部分的驗證,有時候會作為ASIC進入最終開發(fā)。FPGA原型和實現(xiàn)中低效率的主要原因是耗時的設(shè)計迭代(這是尋求功耗、性能和區(qū)域達到恰當平衡所必需的)。 圖6顯示的是一個以定點算法來實現(xiàn)的對稱FIR濾波器。為實現(xiàn)硬件中的濾波器,工程師必須謹慎地平衡吞吐能力和延遲,并監(jiān)控所用的硬件資源量。“關(guān)鍵路徑突出顯示”是一項新功能,能針對系統(tǒng)中的潛在瓶頸提供可操作的信息。 圖6:在Simulink中建模的對稱定點FIR濾波器。 使用綜合工具生成的后綜合信息,HDL Coder可以在Simulink模型中對關(guān)鍵路徑時間進行注釋。工程師可以利用該信息與流水線技術(shù),對他們的設(shè)計進行劃分,以減少關(guān)鍵路徑延遲,并推斷出大部分FPGA上專用DSP可用資源的使用情況。圖7展示了關(guān)鍵路徑自動突出顯示和針對每個路徑段估算延遲的相同的濾波器設(shè)計。 圖7:對稱的定點FIR濾波器,展示關(guān)鍵路徑和估算的延遲。 如上所述,流水線技術(shù)是工程師用來解決關(guān)鍵路徑延遲的主要技術(shù)之一。對于流水線技術(shù),眾所周知的挑戰(zhàn)之一是并行路徑可能存在不匹配延遲,這會導(dǎo)致意外的系統(tǒng)行為。令人高興的是,用以解決這一問題的分布式流水線技術(shù)現(xiàn)在已實現(xiàn)了自動化。通過選擇該方案,工程師可以自動重定時模型,并在相關(guān)的并行路徑中平衡流水線寄存器所引入的延遲。 在過去,這些類型的設(shè)計迭代和權(quán)衡評估要求我們投入大量的時間和精力。最近,包括Workflow Advisor控制臺在內(nèi)的增強,使工程師能夠以直觀的方式更快地完成設(shè)計迭代。對于那些不是特別熟悉HDL編程卻需要利用FPGA處理的人員來說,這特別有幫助。 除了使用關(guān)鍵路徑突出顯示和分布式流水線技術(shù)外,工程師還可以查看一份自動生成的資源使用報告,來監(jiān)控所用的關(guān)鍵硬件組件的類型和數(shù)量,并通過對多個可行的設(shè)計方案進行快速迭代,為給定的情況確定最佳架構(gòu)選擇。 加速跨團隊的設(shè)計 今天的工程經(jīng)理面臨協(xié)調(diào)處理整個系統(tǒng)不同部分的團隊的挑戰(zhàn),這些團隊位于不同地方、使用不同的工具。在許多情況下,系統(tǒng)級設(shè)計最好在圖形環(huán)境中完成,而某些較低級別的細節(jié)設(shè)計最好在MATLAB或C中最好以文本的形式表示。本文展示了一些提升跨設(shè)計流程各個階段的效率的最新技術(shù)發(fā)展。 對于算法設(shè)計,在建模、仿真信號處理,以及通信系統(tǒng)中,System對象庫是一個重要的新開發(fā)工具。現(xiàn)在,MATLAB中可提供數(shù)百個即用型信號處理與通信System對象。此外,System對象支持定點算法,它們可以與Simulink集成或用于自動生成C代碼。SimRF采用電路包絡(luò)仿真技術(shù),是面向更高效系統(tǒng)架構(gòu)流程的重要新工具。它使工程師可以在一個統(tǒng)一的環(huán)境中對RF和基帶系統(tǒng)組件進行建模,并執(zhí)行真正的多頻仿真。 為了縮短硬件設(shè)計的設(shè)計迭代循環(huán)時間,HDL Coder中有多個最新的開發(fā)工具,包括Workflow Advisor、關(guān)鍵路徑突出顯示、分布式流水線技術(shù)、回注及資源利用情況報告,這提供了有關(guān)系統(tǒng)性能的可操作信息,并為硬件開發(fā)人員簡化工作流框架。 無論團隊是小是大,地理位置分散還是位于同一個辦公室,工程部門可以應(yīng)用部分這些技術(shù)來消除其工作流程中的不連續(xù),并借此簡化和加速復(fù)雜信號處理與通信系統(tǒng)的開發(fā)。 |