使用MATLAB和Simulink算法創(chuàng)建FPGA原型
芯片設(shè)計和驗證工程師通常要為在硅片上實現(xiàn)的每一行RTL代碼寫出多達(dá)10行測試平臺代碼。驗證任務(wù)在設(shè)計周期內(nèi)可能會占用50%或更多的時間。盡管如此辛苦,仍有接近60%的芯片存在功能瑕疵,需要返工。由于HDL仿真不足以發(fā)現(xiàn)系統(tǒng)級錯誤,芯片設(shè)計人員正利用FPGA來加速算法創(chuàng)建和原型設(shè)計。
利用FPGA處理大型測試數(shù)據(jù)集可以使工程師快速評估算法和架構(gòu)并迅速做出權(quán)衡。工程師也可以在實際環(huán)境下測試設(shè)計,避免因使用HDL仿真器消耗大量時間。系統(tǒng)級設(shè)計和驗證工具(如MATLAB和Simulink)通過在FPGA上快速建立算法原型,可以幫助工程師實現(xiàn)這些優(yōu)勢。
本文將介紹使用MATLAB和Simulink創(chuàng)建FPGA原型的最佳方法。這些最佳方法包括:在設(shè)計過程初期分析定點量化的效應(yīng)并優(yōu)化字長,產(chǎn)生更小、更高效的實現(xiàn)方案;利用自動HDL代碼生成功能,更快生成FPGA原型;重用具有HDL協(xié)同仿真功能的系統(tǒng)級測試平臺,采用系統(tǒng)級指標(biāo)分析HDL實現(xiàn)方案;通過FPGA在環(huán)仿真加速驗證(圖1)。
為什么在FPGA上建立原型?
在 FPGA上建立算法原型可以增強工程師的信心,使他們相信自己的算法在實際環(huán)境中的表現(xiàn)能夠與預(yù)期相符。除了高速運行測試向量和仿真方案,工程師還可以利用FPGA原型試驗軟件功能以及諸如RF和模擬子系統(tǒng)的相關(guān)系統(tǒng)級功能。此外,由于FPGA原型運行速度更快,可以使用大型數(shù)據(jù)集,暴露出仿真模型未能發(fā)現(xiàn)的缺陷。
采用HDL代碼生成功能的基于模型的設(shè)計可以使工程師有效地建立FPGA原型,如圖2所示。該圖向我們展示了這樣一種現(xiàn)實情況:工程師經(jīng)??s短詳細(xì)設(shè)計階段,試圖通過盡快開始硬件開發(fā)階段以符合開發(fā)周期的要求?,F(xiàn)實中,當(dāng)工程師發(fā)現(xiàn)定點算法達(dá)不到系統(tǒng)要求時,就得在 HDL創(chuàng)建階段重新審視詳細(xì)設(shè)計階段。這樣的重疊工作將使HDL創(chuàng)建階段延長(如紫色長條所示),并可能引發(fā)各種設(shè)計問題(如膠合邏輯或設(shè)計補?。?。
由于自動HDL代碼生成流程比手工編碼快,工程師得以把節(jié)省下來的時間投入到詳細(xì)設(shè)計階段,生成更優(yōu)質(zhì)的定點算法。與手動的工作流程相比,這種方法使工程師能夠以更快的速度生成質(zhì)量更佳的FPGA原型。
數(shù)字下變頻器案例研究
為了說明采用基于模型的設(shè)計建立FPGA原型的最佳方法,可借助數(shù)字下變頻器(DDC)來進(jìn)行案例研究。在眾多的通信系統(tǒng)中,DDC是一種普通的構(gòu)建塊(圖 3)。該構(gòu)建塊用于將高速通帶輸入轉(zhuǎn)換為低速基帶輸出,以便使用較低采樣率時鐘進(jìn)行處理。這樣,在硬件實施階段便可降低功耗、節(jié)約資源。DDC的主要部件包括:數(shù)控振蕩器(NCO)、混頻器和數(shù)字濾波器鏈路(圖4)。
在設(shè)計過程初期分析定點量化的效應(yīng)
工程師通常使用浮點數(shù)據(jù)類型來測試新的構(gòu)想和開發(fā)初始算法。然而,F(xiàn)PGA和 ASIC硬件實現(xiàn)要求轉(zhuǎn)換為定點數(shù)據(jù)類型,而這往往會造成量化誤差。使用手動工作流程時,通常在HDL編碼過程中執(zhí)行定點量化。在該工作流程中,工程師無法輕易地通過比較定點表示形式和浮點參考值量化定點量化的效應(yīng),而分析針對溢出的HDL實現(xiàn)也同樣不易。
評論