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