HDL設(shè)計(jì)和驗(yàn)證與System Generator相結(jié)合
Xilinx®SystemGeneratoRForDSP是用來協(xié)助系統(tǒng)設(shè)計(jì)的MATLABSimulink模塊集。SystemGeneratorforDSP在熟悉的MATLAB環(huán)境中引入XilinxFPGA對象,讓您能夠?qū)υO(shè)計(jì)進(jìn)行功能仿真,并且使用MATLAB環(huán)境對照理想?yún)⒖冀Y(jié)果驗(yàn)證位精度和時(shí)序精度模型。這些參考結(jié)果可以在MATLAB環(huán)境外部生成,也可以在其內(nèi)部生成,在這兩種情況下您均可從MATLAB環(huán)境中引用XilinxFPGA硬件平臺(tái)。
SystemGenerator為功能仿真和硬件驗(yàn)證提供容易配置的測試平臺(tái),以此來輔助完成HDL設(shè)計(jì)任務(wù)。您可以連接ModelSim之類HDL仿真器的內(nèi)置接口在MATLAB內(nèi)部仿真HDL代碼。圍繞HDL代碼所構(gòu)建的SystemGeneratorforDSP測試平臺(tái)提供強(qiáng)大而快捷的仿真環(huán)境,并與ModelSim無縫互動(dòng),而且這種環(huán)境很容易設(shè)置。
我們還可以用同樣的環(huán)境測試實(shí)際硬件中運(yùn)行的HDL代碼,且無需任何修改。硬件協(xié)同仿真系統(tǒng)可以使用之前支持的FPGA平臺(tái)(如XilinxML506開發(fā)板)由Simulink來執(zhí)行單步時(shí)鐘硬件操作或?qū)崟r(shí)數(shù)據(jù)突發(fā)操作。
CABAC模塊的系統(tǒng)化設(shè)計(jì)和驗(yàn)證
H.264/AVC視頻編碼器是多年來群策群力的成果,所形成的標(biāo)準(zhǔn)以顯著低于以前標(biāo)準(zhǔn)的比特率提供優(yōu)良的視頻品質(zhì)。開發(fā)人員可以使用一種稱為H.264/AVCJointModel(JM)的參考C源代碼。并且可以用此源代碼作為HDL中所實(shí)現(xiàn)功能的參考起點(diǎn)。
上下文自適應(yīng)二進(jìn)制算術(shù)編碼(CABAC)是H.264視頻標(biāo)準(zhǔn)的組成部分。CABAC模塊的功能是用標(biāo)準(zhǔn)通訊組件在HDL中手工轉(zhuǎn)換的。在這種驗(yàn)證中使用最多的組件是FIFO接口。原始JM源代碼還可以用來生成模塊的測試矢量文件。
我們還構(gòu)建了另外一種測試環(huán)境,它使用JM模型生成CABACHDL模塊的輸入激勵(lì)并依據(jù)JM參考模型產(chǎn)生的結(jié)果來驗(yàn)證HDL的輸出結(jié)果。這是對傳統(tǒng)HDL測試平臺(tái)基礎(chǔ)上的重大改進(jìn)。
模塊驗(yàn)證過程包括以下三個(gè)步驟:
1.HDL功能仿真。帶有輸入和輸出測試矢量的MATLAB驗(yàn)證可以分別輸入到ModelSim中進(jìn)行仿真然后比較結(jié)果。
2.硬件功能驗(yàn)證。這是一個(gè)中間步驟,其目的是找出在HDL功能仿真過程中未發(fā)現(xiàn)的所有漏洞。此階段通過SystemGeneratorforDSP控制單步時(shí)鐘。在JM源模型生成的文件中我們可以提取輸入和輸出測試矢量。在SystemGeneratorforDSP中構(gòu)建文件接口時(shí)大家應(yīng)特別慎重,以防出錯(cuò)。
3.硬件實(shí)時(shí)驗(yàn)證。使用HDL功能仿真的輸入測試矢量以實(shí)際的輸入速率和時(shí)鐘輸入到硬件中運(yùn)行,同時(shí)采集硬件的輸出,并將其輸入到MATLAB中與輸出測試矢量進(jìn)行比較。
HDL功能仿真
在此步驟中,我們可以將ModelSim仿真與SystemGeneratorforDSP仿真相結(jié)合,如圖1所示。
為了在SystemGeneratorforDSP中仿真HDL模塊,我們可以通過在邊界處插入轉(zhuǎn)換器,以此來創(chuàng)建一個(gè)黑匣子來代表VHDL的頂層文件,亦如圖1所示。這些轉(zhuǎn)換器將ModelSim的未知“X”狀態(tài)轉(zhuǎn)換成Simulink仿真中的零。圖2所示為整體仿真的測試平臺(tái)設(shè)置。
在圖2中,“Slice_inputsubsystem”模塊和“MB_inputsubsystem”模塊通過使用專用接口代碼來讀取JM源代碼創(chuàng)建的包含激勵(lì)的文件?!癘utput_compare”子系統(tǒng)是特殊模塊,該模塊將仿真的結(jié)果與JM源代碼產(chǎn)生的原始測試矢量結(jié)果進(jìn)行比較。此仿真是以單步執(zhí)行的。
使用ChipScope分析器用硬件進(jìn)行功能仿真
下一步我們可以使用熟悉的環(huán)境,在這個(gè)環(huán)境中將整個(gè)HDL模塊映射到硬件上,同時(shí)還需要帶有以太網(wǎng)和JTAG的ML506開發(fā)板。以太網(wǎng)連接用來提供并讀取激勵(lì)數(shù)據(jù),而JTAG端口則用來連接ChipScope分析器。盡管這給用戶的感受是一樣的,但現(xiàn)在HDL是完全在硬件中實(shí)現(xiàn)。圖3所示為系統(tǒng)設(shè)置。
這種環(huán)境設(shè)置的優(yōu)點(diǎn)是您可以完全從特定接口的細(xì)節(jié)中抽象出來,而不必再去了解如何用以太網(wǎng)提供輸入激勵(lì)或從CABAC模塊中如何讀取輸出。圖3所示專用網(wǎng)關(guān)模塊就是完全從這些細(xì)節(jié)中抽象出來的。
實(shí)時(shí)硬件驗(yàn)證
前述仿真和操作為在時(shí)間層上進(jìn)行模塊的詳細(xì)執(zhí)行提供了良好的環(huán)境。在完整的設(shè)計(jì)中,我們通常希望使用代表真實(shí)測試情況的大型測試集。顯然單周期或單步接口操作不適合這種驗(yàn)證方式。
現(xiàn)在,使用與ML506開發(fā)板相同的硬件設(shè)置,可以用通過一種稱為M-HWcosim的新型MATLAB接口所提供的大型數(shù)據(jù)集進(jìn)行驗(yàn)證。M-HWcosim是MATLABM文件向硬件傳輸數(shù)據(jù)的API?,F(xiàn)在,MATLAB腳本編寫環(huán)境可以向在硬件中運(yùn)行的實(shí)際CABAC模塊提供所有數(shù)據(jù)。
具有流程控制的FIFO允許在運(yùn)行MATLAB的計(jì)算機(jī)和全速運(yùn)行CABAC模塊的硬件之間進(jìn)行異步通訊。這種環(huán)境抽象出該接口的細(xì)節(jié),在CABAC模塊的大型數(shù)據(jù)集驗(yàn)證中起著重要作用。有關(guān)這種環(huán)境的詳情,請見www.xilinx.com/cn上的白皮書《用SystemGenerator進(jìn)行系統(tǒng)化HDL設(shè)計(jì)、驗(yàn)證和鑒定》。
結(jié)論
在完整的系統(tǒng)設(shè)計(jì)中,驗(yàn)證的工作量常常不亞于實(shí)際設(shè)計(jì)。符合H.264標(biāo)準(zhǔn)的CABAC模塊設(shè)計(jì)借助JM源代碼模型從高級語言生成測試矢量。其中,HDL設(shè)計(jì)驗(yàn)證與SystemGeneratoRForDSP和MATLAB相結(jié)合。另外,與高速運(yùn)行CABAC模塊的開發(fā)板相結(jié)合則是對傳統(tǒng)環(huán)境的重大改進(jìn)。這顯著縮短了構(gòu)建驗(yàn)證環(huán)境所需的時(shí)間,從而使您能集中精力于手頭的實(shí)際模塊。
來源:miaomi0次