電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>關(guān)于Ultra96的Xilinx DDS編譯器IP教程

關(guān)于Ultra96的Xilinx DDS編譯器IP教程

2022-12-13 | zip | 2.65 MB | 次下載 | 2積分

資料介紹

描述

直接數(shù)字合成器 (DDS) 是軟件定義無線電和數(shù)字通信系統(tǒng)中的關(guān)鍵工具,因為它們提供了一種在數(shù)字域中生成復(fù)雜信號的方法,該信號也是可變的。雖然 DDS 背后的理論相當簡單,但第一次在 FPGA 中實現(xiàn)它可能有點挑戰(zhàn)性,這就是為什么我想創(chuàng)建這個項目作為一個非常簡單的示例,說明如何采用 Xilinx DDS 編譯器 IP 并獲得它在 Ultra96 板的可編程邏輯中運行。

也稱為數(shù)控振蕩器 (NCO),DDS 包含一個正弦曲線數(shù)據(jù)值的查找表,該表采用給定的相位值并輸出正弦曲線的適當數(shù)據(jù)/幅度值。該輸入值決定了輸出波形的頻率,該值越小,DDS 通過正弦查找表的速度越慢,輸出波形的頻率越低。相反,輸入值越高,DDS 通過查找表的速度越快,輸出波形的頻率越高。這個輸入值通常被稱為調(diào)諧字,但在賽靈思 DDS 編譯器 IP 中,它被稱為相位增量。

pYYBAGOX1LWARV_QAABNVcEHZzg768.jpg
16 位相位累加器示例。
?

如上圖所示,該相位增量值 (Δθ) 越大,代表復(fù)雜波形的單位圓周圍的 DDS 步長越快。當 M 加倍時,產(chǎn)生的復(fù)雜波形的頻率也加倍,因為它繞單位圓的速度是原來的兩倍。與該單位圓的相位值相關(guān)的數(shù)據(jù)點存儲在 DDS 的查找表中。

在這一點上,我們可以看到 DDS 的主要優(yōu)勢之一:我們可以通過改變告訴 DDS 多快通過查找表的輸入值(又名 - 多快繞單位圓移動)。

輸入相位增量值不斷添加到自身 (A1 和 D1) 以生成所需輸出波形的每個瞬時值,從而從查找表 (T1) 中獲取該瞬時相位值的適當數(shù)據(jù)值/幅度。

poYBAGOX1LqAK50xAACqPYrOqig591.png
DDS 內(nèi)核的簡化框圖。
?

為了演示 DDS 及其輸出波形頻率變化的容易程度,我決定一個簡單的啁啾波形是合適的。啁啾是正弦曲線以一個頻率開始,然后在一段時間內(nèi)線性增加或減少(這有時也稱為掃描)。

pYYBAGOX1MeAdGTJAAN8SsjycK0125.png
隨著正弦波頻率增加的簡單啁啾聲
?

我決定在 26 微秒內(nèi)以 1MHz 的步長從 1MHz 到 25MHz 做一個簡單的啁啾(我的結(jié)構(gòu)時鐘是 100MHz,即每個時鐘周期 10 納秒,我隨機選擇讓 DDS 編譯器輸出每個頻率 1 微秒以便在邏輯分析儀窗口中輕松查看)。

poYBAGOX1NOAE4_2AASGOC9bzbw501.png
?

通過遞歸地將 1MHz 的相位增量值添加到自身,然后將其作為輸入饋送到 DDS 編譯器,這實現(xiàn)了我的啁啾從 1MHz 到 FPGA 結(jié)構(gòu)時鐘的一半(在 ILA 中采樣時保持奈奎斯特規(guī)則)以 1MHz 步長。我選擇只提高到 25MHz,這樣整個啁啾聲就可以立即顯示在我的屏幕上以進行截圖,但是我的結(jié)構(gòu)時鐘設(shè)置為 100MHz,所以我可以提高到 50MHz。

我使用來自 PG141 的以下等式計算了 B 列中每個輸出波形頻率的 C 列中的相位增量值:

pYYBAGOX1NaAWlYrAAAieBAIJxI312.png
DDS 標準操作模式計算輸出頻率/相位增量值。
?

然后我將 C 列中的相位增量值轉(zhuǎn)換為十六進制以去掉小數(shù)位,因為我是在 Verilog 中編寫這段代碼的。我創(chuàng)建了 E 列和 F 列來表明相位增量的差異確實導(dǎo)致了與 1MHz 相同的十六進制值。

從我在之前的一個項目中為 Ultra96 生成的 Vivado 項目開始,需要將三件事添加到此 DDS 啁啾的頂層包裝器中:

1 - Xilinx DDS 編譯器。2 - 與 DDS 的 AXI Stream slave 和 master 接口的邏輯。3 - 一個集成邏輯分析儀 (ILA) IP,用于查看 DDS 的輸出波形。

在 Vivado 的 Flow Navigator 列下,打開 IP 存儲庫并搜索“DDS”。當 DDS 編譯器 IP 出現(xiàn)在 IP 存儲庫的列表中時,雙擊它后,將彈出一個對話框。單擊“自定義 IP”按鈕,將出現(xiàn) DDS 編譯器的配置窗口。

poYBAGOX1NuAVayUAABNhC3iQZg605.png
DDS 編譯器的主系統(tǒng)設(shè)置選項卡。
?

在如上所示的第一個選項卡中,出于我們的目的,所有默認設(shè)置都可以保留。

在第二個選項卡下,為相位增量和偏移可編程性選擇流式傳輸。我發(fā)現(xiàn)這使得從 AXI Stream 接口變得最簡單。

poYBAGOX1N6ANcXoAABO5CJ8uP4769.png
DDS 編譯器的相位和輸出波形設(shè)置選項卡。
?

此外,對于 DDS 編譯器的 AXI Stream 接口,在詳細實現(xiàn)選項卡下,選中“輸出 TREADY”框。我發(fā)現(xiàn)在處理 AXI Stream 時,TREADY 信號幾乎總是一個必要的信號。

poYBAGOX1OqAHj6kAABSC4qazAk352.png
DDS 編譯器的 AXI 流設(shè)置選項卡。
?

在添加 ILA 時,我總共添加了 4 個探針,用于監(jiān)控 DDS 從接口上的輸入相位增量值以及 DDS 在其主接口上的輸出數(shù)據(jù)和相位值。我將 Ultra96 上的 UltraScale 芯片設(shè)置的深度盡可能大,以方便我的設(shè)計,即 65536。我建議始終嘗試設(shè)置 ILA 以捕獲盡可能多的數(shù)據(jù)。

poYBAGOX1PCAZwgEAAIZ6FNmWNA206.png
在我的 Ultra96 頂級包裝器中實例化 DDS、ILA 和 AXI 流接口。
?

例化 ILA 和 DDS IP 模塊后,我編寫了自己的簡單狀態(tài)機來創(chuàng)建 AXI Stream 接口,將相位增量值輸入到 DDS,然后等待 1 微秒,然后將 1MHz 步長添加到相位增量值并輸入到DDS。該狀態(tài)機還保持計數(shù),因此在達到 25MHz 的相位增量值后,它會在下一次迭代中回到 1MHz。

我發(fā)現(xiàn)這個簡單的 AXI Stream 接口狀態(tài)機在許多不同的應(yīng)用程序中都非常方便。主要的邏輯步驟是:1 - 設(shè)置初始值。2 - 將目標 IP 的從接口上的 Tvalid 信號設(shè)置為高電平。3 - 設(shè)置要在目標 IP 的從接口上輸入的數(shù)據(jù)值(相位增量值到 DDS 編譯器)。4 - 檢查來自目標 IP 的從接口的 Tready 信號,以驗證它是否已準備好接收下一個數(shù)據(jù)值。

poYBAGOX1POABqwtAAHADMMS8xM057.png
我的狀態(tài)機突出顯示了每個周期將 1MHz 添加到相位增量的步驟。
?

我的所有文件都在鏈接的 Github 存儲庫中,以及這里狀態(tài)機的完整代碼。

poYBAGOX1P2Aez8fAAIC74Z_wB8074.png
我的帶有 JTAG/UART 轉(zhuǎn) USB pod 的 Ultra96 V2。
?

生成新的比特流后,打開 Ultra96 的電源并連接到其 JTAG 端口(您可以使用飛線完成此操作,但 Ultra96 的 JTAG 到 USB 接口將使您的生活變得更輕松)。

從 Vivado 的 Flow Navigator 中,選擇Open Hardware Manager ,然后選擇Open TargetAutodetect選項。一旦硬件管理器與 Ultra96 建立連接,選擇Program Device選項并指定剛剛使用 DDS 邏輯創(chuàng)建的新比特流。

成功閃光后,ILA 窗口將出現(xiàn),如果您單擊即時捕捉按鈕(帶有 >> 字符的藍色按鈕),您將看到 DDS 不斷循環(huán)的啁啾聲。

poYBAGOX1Q6ACsn_AAOyukliF1U144.png
從 1MHz 到 25MHz 的單啁啾
?

ILA 頂部的圖是 DDS 編譯器輸出的實際正弦波形,下圖是其瞬時相位值。向下的第三個圖是輸入到 DDS 編譯器的相位增量值。

底部的十六進制值只是狀態(tài)機狀態(tài),用于演示每個狀態(tài)如何與 DDS 編譯器的控制相關(guān)。

pYYBAGOX1RyAWevDAAPkKJ4Fyss295.png
啁啾的兩個周期。
?

我希望這個簡單的 DDS 編譯器示例對您有所幫助。如果您想進一步閱讀,我附上了 Xilinx 的 DDS 編譯器 (PG141) 產(chǎn)品指南,其中深入解釋了其操作理論。


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應(yīng)用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關(guān)電源設(shè)計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅(qū)動電路設(shè)計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學(xué)會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費