RM新时代网站-首页

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

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

3天內(nèi)不再提示

在AMD FPGA上簡單實現(xiàn)Xilinx DDS IP

OpenFPGA ? 來源:OpenFPGA ? 2023-01-09 09:31 ? 次閱讀

介紹

直接數(shù)字合成器 (DDS) 是軟件定義無線電和數(shù)字通信系統(tǒng)中的關(guān)鍵工具,因為它們提供了一種在數(shù)字域中生成復雜信號的方法,該信號也是可變的。

雖然 DDS 背后的理論相當簡單,但第一次在 FPGA 中實現(xiàn)它可能有點挑戰(zhàn),這就是為什么我想創(chuàng)建這個項目作為一個簡單的示例,說明如何使用Xilinx DDS Compiler IP并把它運行在 Ultra96 板上的可編程邏輯中。

DDS 也稱為數(shù)控振蕩器 (NCO),包含正弦波數(shù)據(jù)值的查找表,該表接收給定的相位值并輸出正弦波的適當數(shù)據(jù)/幅度值。

該輸入值決定了輸出波形的頻率,值越小,DDS 通過正弦查找表的步進越慢,輸出波形的頻率越低。

相反,輸入值越高,DDS 步進查找表的速度越快,輸出波形的頻率也越高。此輸入值通常稱為調(diào)諧字,但在 Xilinx DDS Compiler IP 中,它稱為相位增量。

c0e2bcac-8fba-11ed-bfe3-dac502259ad0.gif

c1100356-8fba-11ed-bfe3-dac502259ad0.png

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

在這一點上,我們可以看到 DDS 的主要優(yōu)勢之一:我們可以快速、平滑地改變輸出波形的頻率,只需告訴 DDS 多快步進查找表的輸入值(又名 - 多快繞單位圓移動)。

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

c1263298-8fba-11ed-bfe3-dac502259ad0.png

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

c13a2abe-8fba-11ed-bfe3-dac502259ad0.png

決定在 26 us的時間內(nèi)以 1MHz 的步長從 1MHz 到 25MHz 進行簡單的線性調(diào)頻(時鐘是 100MHz,每個時鐘周期 10 ns,我隨機選擇讓 DDS 編譯器輸出每個頻率 1 us只是為了在邏輯分析器窗口中容易看到它)。

c16e3052-8fba-11ed-bfe3-dac502259ad0.png

通過遞歸地將 1MHz 的相位增量值添加到自身,然后將其作為輸入提供給 Xilinx DDS Compiler IP ,這實現(xiàn)了從 1MHz 到 FPGA 結(jié)構(gòu)時鐘一半的線性調(diào)頻(在 ILA 中采樣時保留奈奎斯特規(guī)則)以 1MHz 為步長。選擇只提高到 25MHz,這樣整個 chirp 就可以立即顯示在我的屏幕上進行截圖,但我的結(jié)構(gòu)時鐘設(shè)置為 100MHz,所以可以降低到 50MHz。

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

c1bf42c6-8fba-11ed-bfe3-dac502259ad0.png

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

接下來就是搭建工程進行驗證,詳細的搭建過程就不展示了,可以在最后的工程中找到,在工程中主要有以下IP:

1 - Xilinx DDS Compiler IP;

2 - 連接 DDS 的 AXI Stream 從設(shè)備和主設(shè)備的邏輯;

3 - 一個集成邏輯分析儀 (ILA) IP,用于查看 DDS 的輸出波形。

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

c1db44f8-8fba-11ed-bfe3-dac502259ad0.png

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

在第二個選項卡下,為相位增量和偏移可編程性選擇AXI Stream 接口。

c1f6d402-8fba-11ed-bfe3-dac502259ad0.png

同樣關(guān)于 DDS 編譯器的 AXI Stream 接口,在詳細實施選項卡下,選中“Output TREADY”框。在處理 AXI Stream 時,TREADY 信號是一個必要的信號。

c2143a7e-8fba-11ed-bfe3-dac502259ad0.png

在加ILA的時候,一共加了4個探頭監(jiān)測DDS從接口的輸入相位增量值和DDS主接口的輸出數(shù)據(jù)和相位值。將芯片的深度設(shè)置為 65536。

c23584d6-8fba-11ed-bfe3-dac502259ad0.png

實例化 ILA 和 DDS IP 后,編寫了簡單狀態(tài)機來創(chuàng)建 AXI Stream 接口,將相位增量值輸入到 DDS,然后等待 1 us,然后將 1MHz 步長添加到相位增量值并將其輸入到DDS。

該狀態(tài)機還保持計數(shù),在達到 25MHz 的相位增量值后,在下一次迭代中從 1MHz 開始返回。

這個簡單的 AXI Stream 接口狀態(tài)機在許多不同的應用程序中都非常方便。主要邏輯步驟是:

1 - 設(shè)置初始值。

2 - 在目標 IP 的從屬接口上將 Tvalid 信號設(shè)置為高電平。

3 - 設(shè)置要在目標 IP 的從接口上輸入的數(shù)據(jù)值(DDS 的相位增量值)。

4 - 檢查來自目標 IP 從接口的 Tready 信號,驗證它已準備好接收下一個數(shù)據(jù)值。

c2569630-8fba-11ed-bfe3-dac502259ad0.png

生成新的比特流后,打開 FPGA 開發(fā)板的電源并連接到其 JTAG 端口。

在 Vivado 的 Flow Navigator 中,選擇Open Hardware Manager ,然后選擇Open Target和Autodetect選項。Hardware Manager與 FPGA 建立連接后,選擇Program Device選項并指定剛剛生成的比特流。

成功下載后,ILA 窗口將出現(xiàn),單擊即時捕獲按鈕(帶有 >> 字符的藍色按鈕),將看到 DDS 的波形。

c28604e2-8fba-11ed-bfe3-dac502259ad0.png

ILA 頂部的圖是 DDS 輸出的實際正弦波形,下面的圖是它的瞬時相位值。第三張圖是輸入到 DDS 的相位增量值。

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

c2a8a5ec-8fba-11ed-bfe3-dac502259ad0.png







審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1629

    文章

    21729

    瀏覽量

    602977
  • DDS
    DDS
    +關(guān)注

    關(guān)注

    21

    文章

    633

    瀏覽量

    152630
  • NCO
    NCO
    +關(guān)注

    關(guān)注

    0

    文章

    22

    瀏覽量

    24663
  • 數(shù)字合成器
    +關(guān)注

    關(guān)注

    1

    文章

    9

    瀏覽量

    7478

原文標題:Xilinx DDS Compiler IP 使用教程

文章出處:【微信號:Open_FPGA,微信公眾號:OpenFPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    AMD Xilinx 7系列FPGA的Multiboot多bit配置

    Multiboot是一種AMD Xilinx 7系列FPGA實現(xiàn)雙鏡像(或多鏡像)切換的方案
    的頭像 發(fā)表于 02-25 10:54 ?1249次閱讀
    <b class='flag-5'>AMD</b> <b class='flag-5'>Xilinx</b> 7系列<b class='flag-5'>FPGA</b>的Multiboot多bit配置

    #硬聲創(chuàng)作季 #FPGA Xilinx入門-22B DDS結(jié)構(gòu)的FPGA實現(xiàn)-2

    fpgaXilinxDDS
    水管工
    發(fā)布于 :2022年10月09日 02:07:56

    SoPC實現(xiàn)的波形發(fā)生器

    基于FPGA的嵌入式系統(tǒng)的開發(fā)工具包。本文介紹基于SoPC的波形發(fā)生器EDK工具包下的設(shè)計與實現(xiàn)。本設(shè)計采用嵌入式軟處理器核 MicroBlaze以及自主編寫的包括實現(xiàn)
    發(fā)表于 06-25 08:12

    如何使用Xilinx DDS Compiler IP并把它運行在Ultra96板的可編程邏輯中?

    實現(xiàn)它可能有點挑戰(zhàn),這就是為什么我想創(chuàng)建這個項目作為一個簡單的示例,說明如何使用Xilinx DDS Compiler IP并把它運行在
    發(fā)表于 02-08 15:39

    基于FPGADDS信號源設(shè)計與實現(xiàn)

    基于FPGADDS信號源設(shè)計與實現(xiàn) 利用DDSFPGA 技術(shù)設(shè)計一種信號發(fā)生器.介紹了該信號發(fā)生器的工作原理、 設(shè)計思路及
    發(fā)表于 02-11 08:48 ?225次下載

    Xilinx_FPGA快速實現(xiàn)_JESD204B協(xié)議

    Xilinx FPGA快速實現(xiàn) JESD204B
    發(fā)表于 01-04 18:03 ?0次下載

    Xilinx TCP_IP協(xié)議實現(xiàn)

    Xilinx FPGA工程例子源碼:Xilinx TCP_IP協(xié)議實現(xiàn)
    發(fā)表于 06-07 14:54 ?32次下載

    FPGA實現(xiàn)CRC算法的程序

    Xilinx FPGA工程例子源碼:FPGA實現(xiàn)CRC算法的程序
    發(fā)表于 06-07 15:07 ?28次下載

    基于TCP/IP通信技術(shù)Xilinx FPGA實現(xiàn)

    研究了TCP/IP通信協(xié)議棧Xilinx 公司現(xiàn)場可編程門陣列FPGA實現(xiàn),介紹了其軟硬件
    發(fā)表于 09-04 09:24 ?9次下載
    基于TCP/<b class='flag-5'>IP</b>通信技術(shù)<b class='flag-5'>在</b><b class='flag-5'>Xilinx</b> <b class='flag-5'>FPGA</b><b class='flag-5'>上</b>的<b class='flag-5'>實現(xiàn)</b>

    FPGA VI中不同的Xilinx內(nèi)核生成器IP設(shè)計實現(xiàn)與子模板說明

    。 使用Xilinx內(nèi)核生成器IP函數(shù)實現(xiàn)FPGA VI中不同的Xilinx內(nèi)核生成器IP。La
    發(fā)表于 11-18 05:54 ?1467次閱讀

    Xilinx Logicore IP直接數(shù)字合成器DDS的用戶手冊免費下載

    Xilinx Logicore IP直接數(shù)字合成器(DDS)編譯核心采用Axi4流兼容接口,實現(xiàn)高性能、優(yōu)化的相位生成和相位-正弦電路。
    發(fā)表于 09-09 08:00 ?20次下載
    <b class='flag-5'>Xilinx</b> Logicore <b class='flag-5'>IP</b>直接數(shù)字合成器<b class='flag-5'>DDS</b>的用戶手冊免費下載

    關(guān)于XilinxDDS IP的運用與講解

    本次項目我們主要是為了講解DDS,所以我們使用了混頻這個小項目來講解。DDS自己手寫是比較簡單且靈活,但是Xilinx給我們提供了相應的IP
    的頭像 發(fā)表于 04-27 16:00 ?6707次閱讀
    關(guān)于<b class='flag-5'>Xilinx</b>中<b class='flag-5'>DDS</b> <b class='flag-5'>IP</b>的運用與講解

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

    電子發(fā)燒友網(wǎng)站提供《關(guān)于Ultra96的Xilinx DDS編譯器IP教程.zip》資料免費下載
    發(fā)表于 12-13 10:17 ?1次下載
    關(guān)于Ultra96的<b class='flag-5'>Xilinx</b> <b class='flag-5'>DDS</b>編譯器<b class='flag-5'>IP</b>教程

    Xilinx Vivado DDS IP使用方法

    DDS(Direct Digital Frequency Synthesizer) 直接數(shù)字頻率合成器,本文主要介紹如何調(diào)用XilinxDDS IP核生成某一頻率的Sin和Cos信號
    的頭像 發(fā)表于 07-24 11:23 ?4922次閱讀
    <b class='flag-5'>Xilinx</b> Vivado <b class='flag-5'>DDS</b> <b class='flag-5'>IP</b>使用方法

    Xilinx DDS IP核的使用和參數(shù)配置

    用RAM實現(xiàn)一個DDS,從原理上來說很簡單實際使用的時候,可能沒有直接使用官方提供的IP核來的方便。這個博客就記錄一下,最近使用到的這個
    的頭像 發(fā)表于 10-25 16:54 ?766次閱讀
    <b class='flag-5'>Xilinx</b> <b class='flag-5'>DDS</b> <b class='flag-5'>IP</b>核的使用和參數(shù)配置
    RM新时代网站-首页