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