日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Xilinx DDS】Vivado代码实现FPGA DDS

發布時間:2024/3/26 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Xilinx DDS】Vivado代码实现FPGA DDS 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

?

實驗目的

一、調用ROM IP核

二、生成頂層模塊

三、仿真文件的編寫

四、進行仿真驗證


?

實驗目的

本實驗工程目的是實現輸出數據位寬為16的正弦波形。

一、調用ROM IP核

打開vivado,創建實驗工程,點擊左側菜單欄的IP Catalog,搜索Block,就可以看到block memory generator,雙擊打開進行配置。

首先在basic選項卡中將memory type配置成單端口的ROM,因為我們會事先將數據存入ROM中,只需要對它的地址空間進行讀取即可,同時也可以將這個IP定義成自己想要的名稱,方便辨別。其余保持默認。

?在port A options選項卡中,將數據位寬配置成16,深度配置成65536,也可以根據自己的需求改變參數,但在之后的代碼需要進行位寬的更改。其余保持默認。?

在other option的選項卡中,加載所需要的coe文件,我用的是小梅哥的coe文件生成器,同樣的也是將數據位寬配置成16,深度配置成65536.最后將所生成的coe文件加載其中即可。?配置完成點擊ok。

二、生成頂層模塊

點擊sources中的加號鍵,選擇添加設計文件,一路點擊確定。

再進行頂層模塊的代碼編寫,這里的代碼主要包括對端口的申明以及對ROM?IP核的例化。

同時,也定義讀取地址的方式,這里定義的步進為1,也就是依次對ROM的地址內的數據進行讀取,也可以根據自己的需要進行更改,但是更改的同時也會改變輸出波形的頻率。

關于DDS的理論知識,可以看下另一篇博客,博客中詳細介紹了DDS的原理以及相關參數的含義。

`timescale 1ns / 1psmodule dds_top(input clk,input rst,input ena,output [15:0] data);reg [15:0] addr;parameter fword = 1; //addr always @(posedge clk or posedge rst) beginif (rst) beginaddr <= 'd0;endelse if (ena == 1'b1) beginaddr <= addr + fword;endelse beginaddr <= 'd0;end end //例化sinrom IP sinrom sinrom_inst (.clka(clk), // input wire clka.ena(ena), // input wire ena.addra(addr), // input wire [15 : 0] addra.douta(data) // output wire [15 : 0] douta ); endmodule

三、仿真文件的編寫

同第二步的操作,點擊加號添加仿真文件,測試代碼如下。

`timescale 1ns / 1psmodule tb_sinrom();reg clk;reg rst;reg ena;wire [15:0] data;initial beginclk = 1'b0;endalways #10 clk = ~clk;initial beginrst = 1'b1;ena = 1'b1;#200rst = 1'b0;enddds_top inst_dds_top (.clk(clk), .rst(rst), .ena(ena), .data(data)); endmodule

保存就可以看到測試文件已經將頂層和ROM IP核包含了。

四、進行仿真驗證

點擊左側菜單欄中的 run simulation,即可看到仿真波形。

?將輸出數據data的值設置為無符號的十進制以及波形形式設置為模擬波形,即可看到正弦波,如果只看到一點波形,可以多跑10ms。

?下面是之前寫的博客,里面介紹DDS的相關原理以及參數設定含義,并實現兩路波形的混頻操作。

【Vivado DDS IP核】Vivado的DDS IP核使用以及混頻操作_m0_61298445的博客-CSDN博客https://blog.csdn.net/m0_61298445/article/details/122442678?spm=1001.2014.3001.5501

?

總結

以上是生活随笔為你收集整理的【Xilinx DDS】Vivado代码实现FPGA DDS的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。