資料介紹
描述
直接數(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 中,它被稱為相位增量。
如上圖所示,該相位增量值 (Δθ) 越大,代表復(fù)雜波形的單位圓周圍的 DDS 步長越快。當 M 加倍時,產(chǎn)生的復(fù)雜波形的頻率也加倍,因為它繞單位圓的速度是原來的兩倍。與該單位圓的相位值相關(guān)的數(shù)據(jù)點存儲在 DDS 的查找表中。
在這一點上,我們可以看到 DDS 的主要優(yōu)勢之一:我們可以通過改變告訴 DDS 多快通過查找表的輸入值(又名 - 多快繞單位圓移動)。
輸入相位增量值不斷添加到自身 (A1 和 D1) 以生成所需輸出波形的每個瞬時值,從而從查找表 (T1) 中獲取該瞬時相位值的適當數(shù)據(jù)值/幅度。
為了演示 DDS 及其輸出波形頻率變化的容易程度,我決定一個簡單的啁啾波形是合適的。啁啾是正弦曲線以一個頻率開始,然后在一段時間內(nèi)線性增加或減少(這有時也稱為掃描)。
我決定在 26 微秒內(nèi)以 1MHz 的步長從 1MHz 到 25MHz 做一個簡單的啁啾(我的結(jié)構(gòu)時鐘是 100MHz,即每個時鐘周期 10 納秒,我隨機選擇讓 DDS 編譯器輸出每個頻率 1 微秒以便在邏輯分析儀窗口中輕松查看)。
通過遞歸地將 1MHz 的相位增量值添加到自身,然后將其作為輸入饋送到 DDS 編譯器,這實現(xiàn)了我的啁啾從 1MHz 到 FPGA 結(jié)構(gòu)時鐘的一半(在 ILA 中采樣時保持奈奎斯特規(guī)則)以 1MHz 步長。我選擇只提高到 25MHz,這樣整個啁啾聲就可以立即顯示在我的屏幕上以進行截圖,但是我的結(jié)構(gòu)時鐘設(shè)置為 100MHz,所以我可以提高到 50MHz。
我使用來自 PG141 的以下等式計算了 B 列中每個輸出波形頻率的 C 列中的相位增量值:
然后我將 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 編譯器的配置窗口。
在如上所示的第一個選項卡中,出于我們的目的,所有默認設(shè)置都可以保留。
在第二個選項卡下,為相位增量和偏移可編程性選擇流式傳輸。我發(fā)現(xiàn)這使得從 AXI Stream 接口變得最簡單。
此外,對于 DDS 編譯器的 AXI Stream 接口,在詳細實現(xiàn)選項卡下,選中“輸出 TREADY”框。我發(fā)現(xiàn)在處理 AXI Stream 時,TREADY 信號幾乎總是一個必要的信號。
在添加 ILA 時,我總共添加了 4 個探針,用于監(jiān)控 DDS 從接口上的輸入相位增量值以及 DDS 在其主接口上的輸出數(shù)據(jù)和相位值。我將 Ultra96 上的 UltraScale 芯片設(shè)置的深度盡可能大,以方便我的設(shè)計,即 65536。我建議始終嘗試設(shè)置 ILA 以捕獲盡可能多的數(shù)據(jù)。
例化 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ù)值。
我的所有文件都在鏈接的 Github 存儲庫中,以及這里狀態(tài)機的完整代碼。
生成新的比特流后,打開 Ultra96 的電源并連接到其 JTAG 端口(您可以使用飛線完成此操作,但 Ultra96 的 JTAG 到 USB 接口將使您的生活變得更輕松)。
從 Vivado 的 Flow Navigator 中,選擇Open Hardware Manager ,然后選擇Open Target和Autodetect選項。一旦硬件管理器與 Ultra96 建立連接,選擇Program Device選項并指定剛剛使用 DDS 邏輯創(chuàng)建的新比特流。
成功閃光后,ILA 窗口將出現(xiàn),如果您單擊即時捕捉按鈕(帶有 >> 字符的藍色按鈕),您將看到 DDS 不斷循環(huán)的啁啾聲。
ILA 頂部的圖是 DDS 編譯器輸出的實際正弦波形,下圖是其瞬時相位值。向下的第三個圖是輸入到 DDS 編譯器的相位增量值。
底部的十六進制值只是狀態(tài)機狀態(tài),用于演示每個狀態(tài)如何與 DDS 編譯器的控制相關(guān)。
我希望這個簡單的 DDS 編譯器示例對您有所幫助。如果您想進一步閱讀,我附上了 Xilinx 的 DDS 編譯器 (PG141) 產(chǎn)品指南,其中深入解釋了其操作理論。
- Ultra96硬件用戶指南
- Ultra96 CSI-2視頻輸出到Raspberry Pi攝像頭輸入
- Ultra96上的實時攝像頭饋送網(wǎng)頁
- 使用PYNQ的Ultra96面部識別鎖栓
- 用于Ultra96的夾層板96AnalogXperience
- Ultra96 FPGA上的Live NYC Subway Monitor應(yīng)用程序
- 與Ultra96聯(lián)網(wǎng)端口轉(zhuǎn)發(fā)
- Ultra96 V2上基于標記的增強現(xiàn)實
- 使用Ultra96 PYNQ測定織物GSM
- Ultra96皮膚癌AI構(gòu)建
- 設(shè)計的帶嵌入式收發(fā)器的Gen1×1硬核IP的 PCI Express IP編譯器
- 2018.2 Ultra96:從 Matchbox 桌面關(guān)斷 PetaLinux BSP,無法關(guān)斷電路板
- 一起玩Ultra96之GPIO操作
- Xilinx Logicore IP直接數(shù)字合成器DDS的用戶手冊免費下載 20次下載
- 直接數(shù)字綜合器(DDS)編譯器開發(fā)指南
- Triton編譯器的原理和性能 2168次閱讀
- TVM編譯器的整體架構(gòu)和基本方法 1825次閱讀
- 領(lǐng)域編譯器發(fā)展的前世今生 1473次閱讀
- 交叉編譯器安裝教程 3273次閱讀
- VScode編譯器如何配置C/C++編譯環(huán)境 5432次閱讀
- 編譯器優(yōu)化對函數(shù)的影響 2734次閱讀
- 虛擬機:編譯器對C函數(shù)的名字修飾 2469次閱讀
- 如何選擇PIC單片機的C編譯器 5245次閱讀
- 詳解Xilinx公司Zynq? UltraScale+?MPSoC產(chǎn)品 3184次閱讀
- 深入編程語言和編譯器是怎樣工作的 4214次閱讀
- 編譯器原理到底是怎樣的帶你簡單的了解編譯器原理 1.1w次閱讀
- 基于Arm技術(shù)的16nm MPSoC開發(fā)套件Ultra96 6099次閱讀
- verilog編譯指令_verilog編譯器指示語句(數(shù)字IC) 1.4w次閱讀
- 編譯器是如何工作的_編譯器的工作過程詳解 1.5w次閱讀
- 編譯器跟編輯器有什么區(qū)別 2.9w次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關(guān)電源設(shè)計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅(qū)動電路設(shè)計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學(xué)會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多