這次我們將演示 RF Data Converter IP 設(shè)計(jì)仿真測試激勵文件示例。
本篇博文旨在演示其構(gòu)建方式及其用于實(shí)踐 IP 的機(jī)制。我覺得這部分內(nèi)容值得講一講,因?yàn)橹灰軌虺浞掷斫鉁y試激勵文件,就可以將其作為有效的模板來用于將 RF Data Converter IP 構(gòu)建到自己的仿真設(shè)置中。
我并不會細(xì)講這里的所有內(nèi)容,只是為了演示一下仿真的機(jī)制。當(dāng)然,您也可以自行深入分析測試激勵文件 RTL。
您可能已經(jīng)知道,IP 設(shè)計(jì)示例隨附有完整的測試激勵文件。此測試激勵文件可在仿真中提供激勵生成和采集,用于 ADC 和 DAC 實(shí)踐。仿真具有內(nèi)置自檢功能,因此它可用于檢驗(yàn)?zāi)?IP 設(shè)置。
讓我們來簡單了解下設(shè)計(jì)測試激勵文件示例。
從 IP 設(shè)計(jì)示例層面上來看,不僅有 IP,還有激勵塊和采集塊(均為大型塊 RAM 數(shù)組)。
此外還有 1 個 SmartConnect 塊用于連接到 IP 的 AXI4-Lite 端口。
因此,測試激勵文件需提供的是:
時鐘生成,用于設(shè)計(jì)中的所有時鐘。ADC 和 DAC Tile 的輸入、AXI 流傳輸接口和 1 個 AXI4-Lite 接口。
加載激勵塊或源代碼塊的方法。
將“實(shí)數(shù)”信號應(yīng)用于模擬輸入的方法,以及將實(shí)數(shù)信號從 DAC 轉(zhuǎn)換為數(shù)字總線以便檢查的方法。
最重要的是,需要 1 個定序器 (sequencer) 用于管理仿真。
檢驗(yàn)采集塊或接收端 (sink) 塊的方法。
讓我們來看看測試激勵文件。測試激勵文件的所有源文件都包含在設(shè)計(jì)工程示例中的導(dǎo)入 (imports) 目錄中。
頂層測試激勵文件包含在 demo_tb.sv SystemVerilog 文件中。我們不會逐行詳細(xì)分析其中所有內(nèi)容。在此級別只需連接各主要塊即可。讓我們來看下仿真功能的最重要的部分。
時鐘生成
有一個非常簡單的模塊可用于在仿真中創(chuàng)建所有必要的時鐘信號。其中的輸入帶有_phase后綴,支持用戶為時鐘設(shè)置高低時間。它用于為每個 Tile 和 AXI Stream 時鐘創(chuàng)建所期望的頻率。
我們可在仿真中對此進(jìn)行檢查,確保它按我們期望的方式運(yùn)行。
在此情況下可以看到,DAC 采樣時鐘以 6.4GSPS 運(yùn)行,而 AXI stream 傳輸時鐘的運(yùn)行速率為該速率除以 16。
激勵生成
在仿真中,ADC 和 DAC 將分別單獨(dú)處理。在此情況下并不執(zhí)行環(huán)回。
DAC 與 ADC 來源相同。
ADC 包含demo_tb_rfadc_data_source.sv,其中包含demo_tb_rfadc_tile_source.sv。在代碼中,我們提供的是正弦查找表 (LUT)。在此情況下,將循環(huán)此 LUT 并生成正弦波輸出。
此正弦波將輸出到測試激勵文件的頂層。我們可將其轉(zhuǎn)換為實(shí)數(shù),以便將其強(qiáng)制添加到demo_tb中的 Tile 的 UNISIM 模型層的模擬信號輸入中。
對于 DAC,只需將此數(shù)據(jù)寫入設(shè)計(jì)示例中的 DAC 源塊上的 AXI 接口即可。在demo_tb層級上,我們可將 DAC 模擬信號從實(shí)數(shù)轉(zhuǎn)換為位數(shù),并將其應(yīng)用于 DAC 接收端輸入。
測試激勵文件定序器
鑒于時鐘正在運(yùn)行仿真,并且先前已經(jīng)講解過數(shù)據(jù)源相關(guān)內(nèi)容,因此我們可以繼續(xù)講解測試激勵文件的主要部分。
在demo_tb_axi4l_nano_seq.sv文件中可以了解到仿真的設(shè)置和控制方式。此文件使用部分 SystemVerilog 任務(wù)以便于我們訪問 RF 的 Tile,并對其執(zhí)行部分設(shè)置。此外還有其它任務(wù)可用來控制仿真。我們將演示仿真的整個過程,并根據(jù)需要來探討這些任務(wù)。
通過觀察此文件可以發(fā)現(xiàn),它使用參數(shù)化尋址來允許我們處理測試激勵文件中 AXI4-Lite 上的各個子塊。各項(xiàng)任務(wù)將通過這些子塊來控制仿真。
定序器 (Sequencer) 首先會對測試激勵文件中的所有一切都應(yīng)用復(fù)位。然后它會對 Tile 執(zhí)行寫入以啟用仿真加速。這樣即可縮短 Tile 的啟動時間,因?yàn)樗煽s短電源微調(diào)時間以及 ADC 校準(zhǔn)時間。仿真僅允許 Tile 達(dá)到 IP 的啟動狀態(tài)機(jī)的狀態(tài) 1。
在此步驟后,它會對 Tile 執(zhí)行某些設(shè)置,然后開始在測試激勵文件中開啟源端和接收端。它還會開始加載 DAC 源內(nèi)存。
最好在執(zhí)行每個步驟時都打印仿真時間。這樣即可根據(jù)需要檢查波形。
可以看到,IP 設(shè)置完成后,就會于 169us 附近開始寫入 DAC 激勵數(shù)據(jù)。DAC 源內(nèi)存位于基址 0x300000000 處。
下一步,啟動 Tile 時鐘,并運(yùn)行 ADC 和 DAC 直至?xí)r鐘檢測步驟為止。
完成此步驟后,即可啟動 DAC 源并運(yùn)行 DAC,直至啟動 FSM 結(jié)束為止:
通過觀察波形可知,音調(diào)已傳入,而 DAC 輸出總線正在運(yùn)行。
此處可看到 25Mhz/50Mhz/100Mhz/200Mhz。
然后,針對 ADC 重復(fù)此過程:
運(yùn)行后,可在波形中查看結(jié)果。在此情況下,vout_00和vout02總線即為仿真中 ADC 源的輸出。
我在此處還附上了 AXI Stream 傳輸?shù)?8 個采樣之一的截屏,以顯示 ADC 能正常轉(zhuǎn)換單音信號。
數(shù)據(jù)接收端和檢查器
ADC 和 DAC 在demo_tb中具有一組接收端塊。
在這些塊中,將對數(shù)據(jù)進(jìn)行縮放,并且將執(zhí)行 FFT。這樣即可確認(rèn)信號能以正確方式進(jìn)行轉(zhuǎn)換。
這些塊用于管理錯誤計(jì)數(shù)器。如果全部正確,那么定序器 (Sequencer) 就會停止仿真。
我希望本篇博文能夠幫助您更進(jìn)一步了解 IP 仿真示例。此外還有很多內(nèi)容值得分享,但本文應(yīng)該能夠?yàn)榇蠹姨峁┮粋€良好的起點(diǎn),以便大家了解仿真的工作原理,并且您可能還可以將其中部分技巧用于您自己的仿真測試激勵文件。
編輯:hfy
-
adc
+關(guān)注
關(guān)注
98文章
6501瀏覽量
544773 -
dac
+關(guān)注
關(guān)注
43文章
2296瀏覽量
191118 -
模擬信號
+關(guān)注
關(guān)注
8文章
1130瀏覽量
52469
發(fā)布評論請先 登錄
相關(guān)推薦
評論