在我的職業(yè)生涯中,我一直從事模擬和混合信號(hào)系統(tǒng)、FPGA架構(gòu)、I/O和信號(hào)完整性方面的工作。所以我真的是一個(gè)搞硬件的人,讓我有時(shí)有一點(diǎn)負(fù)罪感的是我曾認(rèn)為嵌入式軟件適合其他人來(lái)做。
隨著射頻(RF)數(shù)據(jù)轉(zhuǎn)換器的問(wèn)世,情況發(fā)生了變化。我們現(xiàn)在已經(jīng)將世界一流的RF ADC和DAC集成到Zynq UltraScale +架構(gòu)中了。因此,傳統(tǒng)的射頻和模擬工程師不可避免地以前所未有的方式接觸到了嵌入式系統(tǒng)。
射頻數(shù)據(jù)轉(zhuǎn)換器解決方案
如果您對(duì)數(shù)據(jù)轉(zhuǎn)換器解決方案很熟悉,那您就會(huì)知道它是以IP核的形式被封裝到Vivado Design Suite中的。這讓您可以通過(guò)賽靈思提供的軟件驅(qū)動(dòng)來(lái)管理射頻模數(shù)轉(zhuǎn)換器(RF-ADC)和射頻數(shù)模轉(zhuǎn)換器(RF-DAC)塊的狀態(tài)和控制。
《Zynq UltraScale + RFSoC RF數(shù)據(jù)轉(zhuǎn)換器IP產(chǎn)品指南》(PG269)提供了有關(guān)此IP的所有詳情,并且還提供了有關(guān)該驅(qū)動(dòng)的詳細(xì)附錄。
開(kāi)始在RF-ADC和RF-DAC上進(jìn)行調(diào)試
RF分析儀工具是一個(gè)不錯(cuò)的起點(diǎn)。
RF分析儀是基于MicroBlaze的設(shè)計(jì),具有通信層,可以部署到任何電路板上的任何器件上。它還帶有一個(gè)GUI,讓您可以將RF-ADC接收的內(nèi)容可視化,并可通過(guò)RF-DAC來(lái)實(shí)現(xiàn)激勵(lì)生成和發(fā)射函數(shù)。至關(guān)重要的是,該應(yīng)用是通過(guò)軟件驅(qū)動(dòng)構(gòu)建的。
如果您試圖追蹤RF系統(tǒng)中的問(wèn)題,RF分析儀非常強(qiáng)大,而且由于它獨(dú)立工作,不依賴(lài)于設(shè)計(jì)或電路板,因此可以用來(lái)驗(yàn)證系統(tǒng)的RF部分。
一個(gè)常見(jiàn)的用例是您希望在系統(tǒng)中調(diào)試RF-ADC和RF-DAC,并需要編寫(xiě)一個(gè)小應(yīng)用以在運(yùn)行時(shí)進(jìn)行測(cè)試。鑒于RF分析儀和定制設(shè)計(jì)都需要使用軟件驅(qū)動(dòng),我決定編寫(xiě)一個(gè)博客幫助您了解驅(qū)動(dòng),并展示一下如何開(kāi)始用它來(lái)進(jìn)行調(diào)試。在下一個(gè)博客中,我會(huì)展示一次拆箱,帶您一起來(lái)看看RF分析儀工具。
有可能您對(duì)RF數(shù)據(jù)轉(zhuǎn)換器系統(tǒng)已經(jīng)很熟悉了,那就把了解驅(qū)動(dòng)想成是在您的知識(shí)基礎(chǔ)上再增添一點(diǎn)知識(shí),而不是去了解完全未知的事物吧。
在這篇博客中,我會(huì)介紹以下內(nèi)容:
如何構(gòu)建驅(qū)動(dòng)
數(shù)據(jù)結(jié)構(gòu)
使用應(yīng)用編程接口(API)來(lái)制作一個(gè)簡(jiǎn)單的應(yīng)用
我們現(xiàn)在還是來(lái)制作一個(gè)Baremetal應(yīng)用吧。在稍后的博客中,我們會(huì)在此基礎(chǔ)上介紹如何制作Linux應(yīng)用。
構(gòu)建驅(qū)動(dòng):
RFDC驅(qū)動(dòng)的一個(gè)優(yōu)點(diǎn)是它是使用Libmetal構(gòu)建的。Libmetal是賽靈思開(kāi)發(fā)的開(kāi)源軟件堆棧,提供用來(lái)訪(fǎng)問(wèn)器件的、處理器件中斷、請(qǐng)求跨Linux、Realtime OS和baremetal內(nèi)存的通用用戶(hù)API。
這對(duì)我們來(lái)說(shuō)意味著什么?嗯,這意味著我們真正感興趣的驅(qū)動(dòng)部分是在用戶(hù)空間實(shí)現(xiàn)的,因此我們不必?fù)?dān)心與硬件交談的機(jī)制。這還意味著API在Linux和Baremetal應(yīng)用中很常見(jiàn),因此您不需要了解兩組API調(diào)用,也不用擔(dān)心如何將代碼從Baremetal移植到Linux。
XRFdc驅(qū)動(dòng)程序源代碼在下圖中顯示得更詳細(xì)。驅(qū)動(dòng)的源代碼可以在賽靈思的SDK安裝中找到,也可以在Github上單擊這里找到。
在這個(gè)圖中,在底部您會(huì)看到xrfdc_hw.h文件。這個(gè)報(bào)頭文件包含您可能會(huì)認(rèn)為是RF ADC和DAC塊的寄存器地址映射。這個(gè)文件并不是編寫(xiě)來(lái)供用戶(hù)使用的,而是用于驅(qū)動(dòng)的內(nèi)部機(jī)制。應(yīng)該不需要用到此文件中的標(biāo)識(shí)符,甚至不需要研究它們,因?yàn)樗鼈冊(cè)诰帉?xiě)應(yīng)用時(shí)無(wú)法真正幫到您。
其他報(bào)頭文件(例如xrfdc.h和xrfdc_mts.h)更重要,因?yàn)樗鼈儍?nèi)含以下內(nèi)容:
API調(diào)用所需的所有數(shù)據(jù)結(jié)構(gòu)。
用于實(shí)現(xiàn)API調(diào)用的代碼中的內(nèi)聯(lián)(輔助)函數(shù)。
用于應(yīng)用的宏(這很有用,因?yàn)槟梢栽谶m當(dāng)?shù)臅r(shí)候使用宏XRFDC_ADC_TILE/XRFDC_DAC_TILE,而不是將ADC塊的值0或DAC塊的值1傳遞給API。這讓讀取和理解代碼變得易如反掌。)
最重要的是,這些文件顯示的是將用于您的應(yīng)用的API調(diào)用原型。
接下來(lái),您將看到的是API調(diào)用的源代碼。這是我們實(shí)現(xiàn)用戶(hù)API調(diào)用功能的地方。通常,不需要非常詳細(xì)地研究各個(gè)API調(diào)用是如何實(shí)現(xiàn)的。
xrfdc.c:這是用于應(yīng)用的API的主體。
xrfdc_intr.c:用于實(shí)現(xiàn)管理RF數(shù)據(jù)轉(zhuǎn)換器中斷所需的API調(diào)用。
xrfdc_mixer.c:包含XRFdc驅(qū)動(dòng)中混頻器設(shè)置的接口函數(shù)。
xrfdc_mts.c:包含XRFdc驅(qū)動(dòng)的多塊同步函數(shù)。
XRFdc軟件驅(qū)動(dòng)的工作原理
我們已經(jīng)看到了驅(qū)動(dòng)源中包含的內(nèi)容,現(xiàn)在我們來(lái)談?wù)勀枰盟鼇?lái)做什么。
如上所述,xrfdc.h報(bào)頭文件應(yīng)該是您最常引用的文件。這個(gè)文件中提供了數(shù)據(jù)結(jié)構(gòu)和API函數(shù)原型。數(shù)據(jù)結(jié)構(gòu)和API調(diào)用在(PG269)的附錄D中也有詳細(xì)記錄。
我們先來(lái)談?wù)剶?shù)據(jù)結(jié)構(gòu)。
數(shù)據(jù)結(jié)構(gòu)是一種信息組織方法,用于將有關(guān)RF數(shù)據(jù)轉(zhuǎn)換器的信息組織成有意義的組。我喜歡將數(shù)據(jù)結(jié)構(gòu)看成是一個(gè)“容器”。一個(gè)全職軟件開(kāi)發(fā)者可能會(huì)說(shuō)這是一個(gè)C ++術(shù)語(yǔ),不應(yīng)該這樣使用,但這個(gè)比喻對(duì)我有用。
我想指向的示例數(shù)據(jù)結(jié)構(gòu)是RF-ADC或RF-DAC塊中的鎖相環(huán)(PLL)??匆幌?,我們可以看到它描述了我們可能需要知道的關(guān)于PLL的一切,例如,它是否已啟用、它的輸入時(shí)鐘、它輸出的示例時(shí)鐘等。
一旦這樣的結(jié)構(gòu)存在,我們就可以在API之間輕松地來(lái)回傳遞它,并且可能還可以從一個(gè)API中讀取,或在另一個(gè)API中進(jìn)行修改。
您還可以在另一個(gè)結(jié)構(gòu)中找到結(jié)構(gòu)。例如,XRFdc_PLL_Settings是XRFdc_DAC_Tile的一個(gè)成員。
由于結(jié)構(gòu)是透明的,因此您可以在代碼中單獨(dú)對(duì)它的一個(gè)成員進(jìn)行修改。一個(gè)例子是復(fù)雜混頻器中數(shù)控振蕩器頻率的變化。
MixerSettings結(jié)構(gòu)有一個(gè)稱(chēng)為Freq(表示頻率)的成員,因此我們可以按如下方式在代碼中對(duì)它進(jìn)行更改。
MixerSettings.Freq = 2000;//MHz
一旦理解了數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)知識(shí),我們就需要掌握可以使用的API調(diào)用了。這些是應(yīng)用的構(gòu)建塊。
各個(gè)API調(diào)用機(jī)制被抽取并傳遞給用戶(hù)。它們?cè)赬RFdc.c文件中被實(shí)現(xiàn)。如果您想使用調(diào)用,只需要知道三件事。
要使用的ADC或DAC塊中的函數(shù)。
您需要將其作為輸入傳遞。
這通常意味著您可以告訴它您在塊中需要的RF塊類(lèi)型、塊ID和單個(gè)塊。
API可能需要被傳遞一個(gè)結(jié)構(gòu)才能使用。
您會(huì)得到什么作為輸出。
例如,它可能會(huì)返回結(jié)構(gòu)的內(nèi)容。
此驅(qū)動(dòng)中只使用了幾種不同類(lèi)型的API:
有些管理調(diào)用可以用來(lái)控制塊,例如XRFdc_StartUp/XRFdc_Shutdown。這些塊用來(lái)啟動(dòng)或關(guān)閉單個(gè)RF-ADC或RF-DAC塊。
有些API調(diào)用可以啟用高級(jí)狀態(tài)報(bào)告,例如,XRFdc_GetIPStatus/XRFdc_GetBlockStatus。
還有針對(duì)各個(gè)子塊的Get和Set API調(diào)用。例如,您可以分別使用XRFdc_GetMixerSettings和XRFdc_SetMixerSettings同時(shí)用get和set來(lái)進(jìn)行復(fù)雜的混頻器設(shè)置。
請(qǐng)務(wù)必注意,在IP中也會(huì)配置一些Get和Set調(diào)用,例如復(fù)雜的混頻器設(shè)置。有些調(diào)用只能在運(yùn)行時(shí)完成。一個(gè)例子是RF-ADC閾值標(biāo)志和正交調(diào)制校正(QMC)。
最后,其中一些更改將需要重新啟動(dòng)塊。更改PLL設(shè)置就是一個(gè)這樣的例子。
你好,RFDC
我們現(xiàn)在對(duì)驅(qū)動(dòng)已經(jīng)有所了解,可以為Zynq UltraScale + RFSoC ZCU111評(píng)估板制作第一個(gè)非常簡(jiǎn)單的應(yīng)用了。
在本示例中,我打算只捕獲一些ADC數(shù)據(jù)。我們可以隨時(shí)擴(kuò)展對(duì)以后的博客的設(shè)計(jì)。我正在發(fā)送一些IQ數(shù)據(jù)模式,我將用混頻器將其混合到基帶并將其輸出到設(shè)計(jì)中的系統(tǒng)集成邏輯分析器塊。
在本示例中,我們只想展示一些高級(jí)狀態(tài)和管理API以及我們先前討論過(guò)的一些get和set API。我們只檢查IP的狀態(tài),并確保啟動(dòng)塊的方法正確無(wú)誤。然后我們將回讀數(shù)據(jù)路徑的狀態(tài)。最后,我們要檢查一下混頻器的設(shè)置。
在我們實(shí)現(xiàn)此設(shè)計(jì)并獲得比特流之后,我們可以導(dǎo)出硬件切換文件(HDF)并啟動(dòng)SDK。如果您想了解有關(guān)嵌入式設(shè)計(jì)和SDK的更多信息,也許值得花點(diǎn)時(shí)間查看本教程。
HDF文件在SDK中創(chuàng)建硬件平臺(tái),因此它知道設(shè)計(jì)中使用的所有外設(shè)及其地址。接下來(lái)要做的是制作一個(gè)電路板支持包。這需要硬件定義,并提供您需要的所有相關(guān)驅(qū)動(dòng)和庫(kù)。
操作演示
單擊“File > New > Board Support Package”。
選擇剛剛創(chuàng)建的硬件平臺(tái),然后單擊“下一步”。
系統(tǒng)會(huì)提示您包含某些庫(kù)。確保您勾選包含libmetal,然后單擊“OK”。在這個(gè)階段,我們擁有制作我們的應(yīng)用所需的一切。
現(xiàn)在,您可以單擊“File > New > Application Project”創(chuàng)建示例。
確保指向硬件平臺(tái)和剛剛創(chuàng)建的BSP。
單擊“Next”,然后選擇一個(gè)空白工程。
我在這篇博客中已提供了我的應(yīng)用的源代碼。您可以導(dǎo)入我的應(yīng)用并將其用作模板。
我們一起來(lái)看看一些主要功能。
我們需要先包含xparameters.h文件(這個(gè)文件中有我們需要的所有硬件參數(shù))和我們前面提到的xrfdc.h文件(這個(gè)文件中有API調(diào)用的驅(qū)動(dòng)結(jié)構(gòu)和函數(shù)原型)。
在本示例中,我有一個(gè)ZCU111電路板,而且我需要在啟動(dòng)時(shí)對(duì)時(shí)鐘進(jìn)行編程。為了實(shí)現(xiàn)這一點(diǎn),我添加了一些文件(這些文件來(lái)自驅(qū)動(dòng)程序源中的“examples”文件夾)。
您將看到我創(chuàng)建XRFdc頂層結(jié)構(gòu)的靜態(tài)實(shí)例。這里的想法是我們有一個(gè)結(jié)構(gòu)實(shí)例,而且我們可以從任何我們可能需要的API或函數(shù)指向它。
static XRFdc RFdcInst; /* RFdc driver instance */
在main函數(shù)中,我們聲明了我們需要的所有結(jié)構(gòu):
int Status;
XRFdc_Config *ConfigPtr;
XRFdc *RFdcInstPtr = &RFdcInst;
XRFdc_BlockStatus BlockStatus;
XRFdc_IPStatus myIPStatus;
XRFdc_Mixer_Settings MixerSettings = {0};
請(qǐng)注意,我們只是指向我們剛剛創(chuàng)建的驅(qū)動(dòng)的靜態(tài)實(shí)例。
下一步是初始化驅(qū)動(dòng)。這一步每次都必須做。簡(jiǎn)單說(shuō)來(lái),我們將獲得xrfdc_g文件中的配置表,并通過(guò)XRFdc_LookupConfig函數(shù)使用xparameters中的值和設(shè)置來(lái)填充表。然后我們將其存儲(chǔ)在配置指針ConfigPtr中。完成此操作后,我們調(diào)用XRFdc_CfgInitialize API并通過(guò)配置填充RFdcInstPtr。
現(xiàn)在我們就可以在我們的應(yīng)用中使用該驅(qū)動(dòng)了。
您會(huì)看到我將輸入時(shí)鐘編程到ADC塊。
我用XRFdc_GetIPStatus來(lái)檢查我啟用的ADC塊的狀態(tài)。
Status = XRFdc_GetIPStatus(RFdcInstPtr, &myIPStatus);
if (Status != XRFDC_SUCCESS) {
return XRFDC_FAILURE;
}
int powerup_status;
int tile_state;
powerup_status = myIPStatus.ADCTileStatus[0].PowerUpState;
tile_state = myIPStatus.ADCTileStatus[0].TileState;
printf("ADC PowerUp Status: %u\n", powerup_status);
printf("ADC Tile State: %u\n", tile_state);
在本示例中,我希望看到塊狀態(tài)為15。這表示該塊已到達(dá)其啟動(dòng)狀態(tài)機(jī)的末尾,并且加電狀態(tài)為1,這意味著它已啟用并處于活動(dòng)狀態(tài)。
我使用的下一個(gè)API調(diào)用是XRFdc_GetBlockStatus。這應(yīng)該告訴我們采樣頻率的設(shè)置,以及數(shù)字?jǐn)?shù)據(jù)路徑的配置方式。請(qǐng)注意,我現(xiàn)在在用XRFDC_ADC_TILE抽取此API調(diào)用的塊類(lèi)型。
Status = XRFdc_GetBlockStatus(RFdcInstPtr, XRFDC_ADC_TILE, 0, 0, &BlockStatus);
if (Status != XRFDC_SUCCESS) {
return XRFDC_FAILURE;
}
最后,我會(huì)使用XRFdc_GetMixerSettings并在混頻器上打印一些細(xì)節(jié)。
我進(jìn)行了更改,然后用XRFdc_SetMixerSettings來(lái)寫(xiě)入新設(shè)置。
在此之后,我會(huì)生成一個(gè)塊事件并將所做的更改應(yīng)用到硬件。
隨后,XRFdc_GetMixerSettings應(yīng)該會(huì)顯示我們已在硬件中將混頻器比例從0更改為2或從AUTO更改為1.0,并且我的混頻器設(shè)置也已更改。
那現(xiàn)在我們?cè)赟DK中的調(diào)試器里來(lái)運(yùn)行一下這個(gè)應(yīng)用。
右鍵單擊應(yīng)用程序,然后選擇“運(yùn)行方式...”,然后選擇“運(yùn)行配置”。我使用系統(tǒng)調(diào)試器,然后也選擇對(duì)FPGA進(jìn)行編程的選項(xiàng)。
您也可以選擇“Debug As”,這將啟用調(diào)試透視圖并適應(yīng)代碼的步進(jìn)等。
我們現(xiàn)在來(lái)看看UART串行控制臺(tái)出來(lái)的結(jié)果。
(我使用內(nèi)置的SDK終端進(jìn)行連接,但可以使用任何終端仿真器。)
您可以看到它執(zhí)行以下操作:
說(shuō)“Hello!”
對(duì)ZCU111電路板上的時(shí)鐘進(jìn)行編程。
將塊狀態(tài)設(shè)置為15,這意味著塊已完全啟動(dòng),并且AXI流上有有效數(shù)據(jù)出來(lái)。
報(bào)告數(shù)字?jǐn)?shù)據(jù)路徑的阻止?fàn)顟B(tài)。
顯示混頻器設(shè)置的讀取,并確認(rèn)修改。
最后一次檢查顯示RF-ADC的數(shù)據(jù)正傳遞給系統(tǒng)ILA。
總結(jié)語(yǔ)
現(xiàn)在您可以開(kāi)始編寫(xiě)一些應(yīng)用了。我已經(jīng)附上了用來(lái)構(gòu)建我的硬件塊設(shè)計(jì)的Tcl腳本和用于我的ZCU111工程的XDC文件。而且,還附上了該應(yīng)用的C代碼。
如果您有可能想要編寫(xiě)來(lái)與RF數(shù)據(jù)轉(zhuǎn)換器通信的任何應(yīng)用,它應(yīng)該是一個(gè)很好的起點(diǎn)。我會(huì)鼓勵(lì)您用自己的裸機(jī)應(yīng)用進(jìn)行練習(xí)。
我打算在這篇博客的基礎(chǔ)添加一些內(nèi)容,并突出顯示RFSoC的其他一些不錯(cuò)的設(shè)計(jì)和調(diào)試功能。接下來(lái),我打算展示拆箱并瀏覽RF分析儀工具(這個(gè)工具允許您在任何平臺(tái)上對(duì)任何RFSoC器件進(jìn)行調(diào)試)。
下次見(jiàn)!
-
射頻
+關(guān)注
關(guān)注
104文章
5622瀏覽量
168283 -
嵌入式系統(tǒng)
+關(guān)注
關(guān)注
41文章
3630瀏覽量
129792 -
模擬工程師
+關(guān)注
關(guān)注
1文章
19瀏覽量
13576
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
[求助]視頻轉(zhuǎn)換器解決方案
具有輸入過(guò)壓保護(hù)的降壓轉(zhuǎn)換器小型解決方案
基于Xilinx FPGA的系統(tǒng)的雙輸出DC/DC轉(zhuǎn)換器解決方案
ADI發(fā)布最快四通道中頻數(shù)模轉(zhuǎn)換器
基于AD9957實(shí)現(xiàn)射頻數(shù)字化變頻模塊和AD轉(zhuǎn)換模塊的方案詳細(xì)教程
![基于AD9957實(shí)現(xiàn)<b class='flag-5'>射頻數(shù)</b>字化變頻模塊和AD<b class='flag-5'>轉(zhuǎn)換</b>模塊的<b class='flag-5'>方案</b>詳細(xì)教程](https://file1.elecfans.com//web2/M00/A7/2C/wKgZomUMQs-AbZNOAAATj4-D1U8392.jpg)
HDG-0407/HDG-0807:混合視頻數(shù)模轉(zhuǎn)換器廢棄數(shù)據(jù)表
![HDG-0407/HDG-0807:混合視<b class='flag-5'>頻數(shù)模轉(zhuǎn)換器</b>廢棄<b class='flag-5'>數(shù)據(jù)</b>表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
HDL-3806:混合視頻數(shù)模轉(zhuǎn)換器廢棄數(shù)據(jù)表
![HDL-3806:混合視<b class='flag-5'>頻數(shù)模轉(zhuǎn)換器</b>廢棄<b class='flag-5'>數(shù)據(jù)</b>表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
設(shè)計(jì)解決方案41-基于Xilinx FPGA系統(tǒng)的雙輸出DC/DC轉(zhuǎn)換器解決方案
![設(shè)計(jì)<b class='flag-5'>解決方案</b>41-基于Xilinx FPGA系統(tǒng)的雙輸出DC/DC<b class='flag-5'>轉(zhuǎn)換器</b><b class='flag-5'>解決方案</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
HDL-3805:混合視頻數(shù)模轉(zhuǎn)換器廢棄數(shù)據(jù)表
![HDL-3805:混合視<b class='flag-5'>頻數(shù)模轉(zhuǎn)換器</b>廢棄<b class='flag-5'>數(shù)據(jù)</b>表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
HDG-0405:混合視頻數(shù)模轉(zhuǎn)換器過(guò)時(shí)數(shù)據(jù)表
![HDG-0405:混合視<b class='flag-5'>頻數(shù)模轉(zhuǎn)換器</b>過(guò)時(shí)<b class='flag-5'>數(shù)據(jù)</b>表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
HDG-0605/HDG-0805:混合視頻數(shù)模轉(zhuǎn)換器廢棄數(shù)據(jù)表
![HDG-0605/HDG-0805:混合視<b class='flag-5'>頻數(shù)模轉(zhuǎn)換器</b>廢棄<b class='flag-5'>數(shù)據(jù)</b>表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
使用Vitis加速RFSoC解決方案
![使用Vitis加速RFSoC<b class='flag-5'>解決方案</b>](https://file.elecfans.com/web2/M00/88/63/poYBAGO07imAD83YAAC9to6elos199.png)
多個(gè)射頻數(shù)據(jù)轉(zhuǎn)換器子系統(tǒng)中的信號(hào)處理同步化應(yīng)用說(shuō)明
![多個(gè)<b class='flag-5'>射頻數(shù)據(jù)</b><b class='flag-5'>轉(zhuǎn)換器</b>子系統(tǒng)中的信號(hào)處理同步化應(yīng)用說(shuō)明](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
Zynq UltraScale+射頻ZCU216射頻數(shù)據(jù)轉(zhuǎn)換器評(píng)估工具
![Zynq UltraScale+<b class='flag-5'>射頻</b>ZCU216<b class='flag-5'>射頻數(shù)據(jù)</b><b class='flag-5'>轉(zhuǎn)換器</b>評(píng)估工具](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論