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

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

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

一文詳解Vivado調(diào)用ROM IP core設(shè)計(jì)DDS

Hx ? 作者:工程師陳翠 ? 2018-07-02 06:12 ? 次閱讀

DDS直接數(shù)字式頻率合成器(Direct Digital Synthesizer)

下面是使用MATLAB生成正弦波、三角波、方波的代碼,直接使用即可。

t=0:2*pi/2^12:2*pi

y=0.5*sin(t)+0.5;

r=ceil(y*(2^8-1)); %將小數(shù)轉(zhuǎn)換為整數(shù),ceil是向上取整。

fid = fopen(‘sin.coe’,‘w’); %寫到sin.coe文件,用來初始化sin_rom

fprintf(fid,‘MEMORY_INITIALIZATION_RADIX=10;\n’);

fprintf(fid,‘MEMORY_INITIALIZATION_VECTOR=\n’);

for i = 1:1:2^12

fprintf(fid,‘%d’,r(i));

if i==2^12

fprintf(fid,‘;’);

else

fprintf(fid,‘,’);

end

if i%15==0

fprintf(fid,‘\n’);

end

end

fclose(fid);

t=1:1:2^12;

y=(t《=2047);

r=ceil(y*(2^8-1));

fid = fopen(‘square.coe’,‘w’); %寫到square.coe,用來初始化rom_square

fprintf(fid,‘MEMORY_INITIALIZATION_RADIX=10;\n’);

fprintf(fid,‘MEMORY_INITIALIZATION_VECTOR=\n’);

for i = 1:1:2^12

fprintf(fid,‘%d’,r(i));

if i==2^12

fprintf(fid,‘;’);

else

fprintf(fid,‘,’);

end

if i%15==0

fprintf(fid,‘\n’);

end

end

fclose(fid);

t=1:1:2^12;

y=[0.5:0.5/1024:1-0.5/1024, 1-0.5/1024:-0.5/1024:0, 0.5/1024:0.5/1024:0.5];

r=ceil(y*(2^8-1));

fid = fopen(‘triangular.coe’,‘w’); %寫到triangular.coe,初始化三角波rom

fprintf(fid,‘MEMORY_INITIALIZATION_RADIX=10;\n’);

fprintf(fid,‘MEMORY_INITIALIZATION_VECTOR=\n’);

for i = 1:1:2^12

fprintf(fid,‘%d’,r(i));

if i==2^12

fprintf(fid,‘;’);

else

fprintf(fid,‘,’);

end

if i%15==0

fprintf(fid,‘\n’);

end

end

fclose(fid);

設(shè)計(jì)DDS的核心就是調(diào)用IP ROM,vivado調(diào)用ROM的方法和ISE相類似,都是加載.coe文件,我這里特地做筆記,以防忘記。

一文詳解Vivado調(diào)用ROM IP core設(shè)計(jì)DDS

這是DDS的原理圖,DDS并沒有像它的名字一樣說的那么玄乎,它的核心便是控制頻率的fword字輸入,和相位字pword輸入,最后調(diào)用IP核查找表即可,代碼也十分簡(jiǎn)單,下面給出DDS design代碼。

module DDS(

input mclk,

input rst_n,

input [31:0]fword,//frequency control

input [11:0]pword,//phase control

output [9:0]da_data

);

reg [31:0]r_fword;

reg [11:0]r_pword;

reg [31:0]fcnt;

wire [11:0]addr_rom;

//同步寄存器

always @(posedge mclk)

begin

r_fword 《= fword;

r_pword 《= pword;

end

always @(posedge mclk or negedge rst_n)

begin

if(!rst_n)

fcnt 《= 32‘d0;

else

fcnt 《= fcnt + r_fword;

end

assign addr_rom = fcnt[31:20] + r_pword;

//custom sin_rom

sin_rom sin_rom (

.clka(mclk), // input wire clka

.addra(addr_rom), // input wire [11 : 0] addra

.douta(da_data) // output wire [9 : 0] douta

);

endmodule

DDS_design

使用vivado調(diào)用IP核ROM教程如下

一文詳解Vivado調(diào)用ROM IP core設(shè)計(jì)DDS

點(diǎn)擊IP catalog

一文詳解Vivado調(diào)用ROM IP core設(shè)計(jì)DDS

選擇block memory,然后雙擊

一文詳解Vivado調(diào)用ROM IP core設(shè)計(jì)DDS

將show disabled ports 選項(xiàng)勾選掉

一文詳解Vivado調(diào)用ROM IP core設(shè)計(jì)DDS

輸入ROM名,我這里為了演示重新配置一個(gè)方波ROM,命名為square_rom

一文詳解Vivado調(diào)用ROM IP core設(shè)計(jì)DDS

這里選擇single ports ROM

一文詳解Vivado調(diào)用ROM IP core設(shè)計(jì)DDS

按如上圖所示勾選參數(shù),port width是數(shù)據(jù)寬度,我們根據(jù)代碼要求設(shè)置為10位,port width是數(shù)據(jù)深度,即有多少個(gè)這樣的數(shù)據(jù),我打開生成的square.coe文件可以清楚的看到一共有4096這樣的數(shù)據(jù)。always enable是ROM一直處于工作狀態(tài),不需要使能信號(hào)。

一文詳解Vivado調(diào)用ROM IP core設(shè)計(jì)DDS

這里是加載.coe文件,勾選load init file 然后點(diǎn)擊browse將剛才生成的square.coe文件加載到ROM中,最后點(diǎn)擊OK。

一文詳解Vivado調(diào)用ROM IP core設(shè)計(jì)DDS

選擇generate生成IP核

一文詳解Vivado調(diào)用ROM IP core設(shè)計(jì)DDS

打開如圖所示文件,

一文詳解Vivado調(diào)用ROM IP core設(shè)計(jì)DDS

一文詳解Vivado調(diào)用ROM IP core設(shè)計(jì)DDS

將生成的IP核實(shí)例化,即可

最后編寫測(cè)試文件進(jìn)行測(cè)試

最后右鍵點(diǎn)擊da_data選擇wave style選擇analog,將會(huì)看到模擬波形,但是有時(shí)候還是需要設(shè)置一下模擬波形的顯示,同樣右鍵點(diǎn)擊da_data選擇wave style選擇analog setting,選擇如下圖所示參數(shù)。

一文詳解Vivado調(diào)用ROM IP core設(shè)計(jì)DDS

最后便大功告成,即可得打方波的波形圖

一文詳解Vivado調(diào)用ROM IP core設(shè)計(jì)DDS

大家還可以按照這種方法將其他兩種波形都做出來。

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

    關(guān)注

    21

    文章

    629

    瀏覽量

    152483
  • Vivado
    +關(guān)注

    關(guān)注

    19

    文章

    804

    瀏覽量

    66224
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    IP core調(diào)用DDS

    ISE軟件,使用IP core調(diào)用DDS,產(chǎn)生正弦載波,使用調(diào)頻200M時(shí)鐘做為DDS輸入,功能仿真沒問題,但后仿真卻不顯示波形,只是
    發(fā)表于 03-20 20:37

    使用Vivado調(diào)用ROM IP

      本例程主要使用Vivado 調(diào)用ROM IP核,用含有正弦曲線的.coe文件初始化ROM,最終通過仿真實(shí)現(xiàn)波形的顯示  
    發(fā)表于 01-08 17:16

    vivadoIP core怎么用

    本實(shí)驗(yàn)通過調(diào)用PLL IP core來學(xué)習(xí)PLL的使用、vivadoIP core使用方法。
    發(fā)表于 03-02 07:22

    vivado有哪幾種常用IP核?如何去調(diào)用它們

    vivado三種常用IP核的調(diào)用當(dāng)前使用版本為vivado 2018.3vivadoIP核,
    發(fā)表于 07-29 06:07

    Xilinx Vivado的使用詳細(xì)介紹(3):使用IP

    IP核(IP CoreVivado中有很多IP核可以直接使用,例如數(shù)學(xué)運(yùn)算(乘法器、除法器、浮點(diǎn)運(yùn)算器等)、信號(hào)處理(FFT、DFT、
    發(fā)表于 02-08 13:08 ?2122次閱讀
    Xilinx <b class='flag-5'>Vivado</b>的使用詳細(xì)介紹(3):使用<b class='flag-5'>IP</b>核

    了解VivadoIP核的原理與應(yīng)用

    IP核(IP CoreVivado中有很多IP核可以直接使用,例如數(shù)學(xué)運(yùn)算(乘法器、除法器、浮點(diǎn)運(yùn)算器等)、信號(hào)處理(FFT、DFT、
    發(fā)表于 11-15 11:19 ?9068次閱讀

    vivado調(diào)用IP核詳細(xì)介紹

    大家好,又到了每日學(xué)習(xí)的時(shí)間了,今天咱們來聊vivado 調(diào)用IP核。 首先咱們來了解vivad
    的頭像 發(fā)表于 05-28 11:42 ?3.7w次閱讀

    調(diào)用Vivado IP核的方法

    在開發(fā)PL時(shí)般都會(huì)用到分頻或倍頻,對(duì)晶振產(chǎn)生的時(shí)鐘進(jìn)行分頻或倍頻處理,產(chǎn)生系統(tǒng)時(shí)鐘和復(fù)位信號(hào),下面就介紹下在vivado2017.3中進(jìn)行PL開發(fā)時(shí)調(diào)用
    發(fā)表于 12-22 14:26 ?4699次閱讀

    Vivado中PLL開發(fā)調(diào)用IP的方法

    在開發(fā)PL時(shí)般都會(huì)用到分頻或倍頻,對(duì)晶振產(chǎn)生的時(shí)鐘進(jìn)行分頻或倍頻處理,產(chǎn)生系統(tǒng)時(shí)鐘和復(fù)位信號(hào),這是同步時(shí)序電路的關(guān)鍵,這時(shí)就需要使用到時(shí)鐘向?qū)?b class='flag-5'>IP,下面就介紹下在vivado中進(jìn)行
    發(fā)表于 12-22 15:14 ?1w次閱讀

    Vivado 如何調(diào)用ROM IP

    .coe格式的數(shù)據(jù)文件簡(jiǎn)介 在Vivado中,對(duì)rom進(jìn)行初始化的文件是.coe文件.它的格式如下: memory_initialization_radix=10
    的頭像 發(fā)表于 11-20 15:01 ?6681次閱讀
    <b class='flag-5'>Vivado</b> 如何<b class='flag-5'>調(diào)用</b><b class='flag-5'>ROM</b> <b class='flag-5'>IP</b>核

    解析Vivado如何調(diào)用DDSIP進(jìn)行仿真

    本次使用Vivado調(diào)用DDSIP進(jìn)行仿真,并嘗試多種配置方式的區(qū)別,設(shè)計(jì)單通道信號(hào)發(fā)生器(固定頻率)、Verilog查表法實(shí)現(xiàn)DDS、A
    的頭像 發(fā)表于 04-27 16:33 ?6238次閱讀
    解析<b class='flag-5'>Vivado</b>如何<b class='flag-5'>調(diào)用</b><b class='flag-5'>DDS</b>的<b class='flag-5'>IP</b>進(jìn)行仿真

    淺析VivadoIPDDS使用方式及注意事項(xiàng)

    vivado提供了DDS IP核可以輸出正余弦波形,配置方法如下
    的頭像 發(fā)表于 04-27 15:52 ?9913次閱讀
    淺析<b class='flag-5'>Vivado</b>的<b class='flag-5'>IP</b>核<b class='flag-5'>DDS</b>使用方式及注意事項(xiàng)

    關(guān)于Vivado三種常用IP核的調(diào)用詳細(xì)解析

    vivadoIP核,IP核(IP Core):Vivado中有很多
    的頭像 發(fā)表于 04-27 15:45 ?2.4w次閱讀
    關(guān)于<b class='flag-5'>Vivado</b>三種常用<b class='flag-5'>IP</b>核的<b class='flag-5'>調(diào)用</b>詳細(xì)解析

    FPGA應(yīng)用之vivado三種常用IP核的調(diào)用

    今天介紹的是vivado的三種常用IP核:時(shí)鐘倍頻(Clocking Wizard),實(shí)時(shí)仿真(ILA),ROM調(diào)用(Block Memory)。
    發(fā)表于 02-02 10:14 ?3302次閱讀

    Xilinx Vivado DDS IP使用方法

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