99久久全国免费观看_国产一区二区三区四区五区VM_久久www人成免费看片中文_国产高清在线a视频大全_深夜福利www_日韩一级成人av

數(shù)字信號處理-07-DDS IP應(yīng)用實例

前言

本文根據(jù)DDS的相關(guān)手冊構(gòu)建仿真工程,包括單通道工程、多通道工程、使用DDS進行混頻操作。

單通道IP配置

新建一個空白工程,F(xiàn)PGA型號任意,添加DDS IP到工程中,雙擊打開配置項界面。該界面可以配置DDS的相關(guān)配置選項和基本的一些參數(shù)。這里重點說下常配置的參數(shù)。

  • 系統(tǒng)時鐘:為DDS工作的系統(tǒng)時鐘。
  • 通道數(shù)量:根據(jù)設(shè)計需求選擇通道數(shù)量。
  • 無雜散動態(tài)范圍(SFDR):這里輸入對應(yīng)數(shù)值可以進行計算出輸出DDS數(shù)據(jù)的位寬,N代表DDS輸出的位寬數(shù)。利用下面公式可以對45進行換算,經(jīng)過計算N=7.47,向上取整得到輸出位寬為8。

  • 頻率分辨率 :頻率分辨率用于控制最小的分辨辨精度。

配置完成基本信息配置下一頁,基本保持默認(rèn)即可,這里只想查看波形,所以相位輸出就關(guān)閉。

第三頁配置保持默認(rèn)即可。

第四頁輸出頻率配置,這里設(shè)置輸出10M

在總結(jié)也中可以看到輸出信號的相關(guān)信息,這里可以簡要計算下phase width的28Bits如何來的。該參數(shù)和DDS的工作頻率以及啟用通道,還有頻率分辨率有關(guān)。通過下述式子,可以變形求得當(dāng)前設(shè)置下Frequency Resolution。DDS時鐘為100MHz,通道為1,相位位寬28Bits,換算得到頻率分辨率為0.37252902984619140625。向上取整數(shù),則得到當(dāng)前設(shè)置的0.4Hz的分辨率。已知頻率分辨率也可以換算位寬,不過此時得到的位寬是按2的次方去取整。

同時根據(jù)前面的相關(guān)參數(shù)可以計算向量增量。帶入設(shè)置的參數(shù)可計算到增量的數(shù)值大小。

單通道實例

頂層調(diào)用

按上述IP配置配置完成后在top層進行實例化,然后即可完成單通道DDS的調(diào)用使用。頂層模塊調(diào)用代碼如下:

module top(
    input clk
    );

    wire m_axis_data_tvalid_ch1;
    wire [7:0] m_axis_data_tdata_ch1;
    //單通道測試
    dds_compiler_0 ch1_dds(
    .aclk(clk),                              // input wire aclk
    .m_axis_data_tvalid(m_axis_data_tvalid_ch1),  // output wire m_axis_data_tvalid
    .m_axis_data_tdata(m_axis_data_tdata_ch1)    // output wire [7 : 0] m_axis_data_tdata
    );
endmodule

編寫仿真

編寫testbench,由于頂層只給了一個時鐘的輸入端口,所以只需要對時鐘進行仿真設(shè)計,單通道DDS測試如下:

`timescale 1ns / 1ps
module tb_top;

// top Parameters
parameter PERIOD  = 10;

// top Inputs
reg   clk                                  = 0 ;

// top Outputs

initial
begin
    forever #(PERIOD/2)  clk=~clk;
end

top  u_top (
    .clk(clk)
);

initial
begin
  #10000;
    $finish;
end

endmodule

編寫完成后直接點擊運行仿真測試即可。

測試結(jié)果

運行仿真查看波形結(jié)果,將頂層例化模塊的波形添加到波形窗口,可以得到數(shù)字模式下的十六進制顯示的數(shù)值,可將數(shù)值轉(zhuǎn)化為波形顯示方便觀察。

設(shè)置下數(shù)據(jù)的進制格式和顯示模式,這里修改通道數(shù)據(jù)為analog 模式,進制修改為有符號十進制。

修改后添加游標(biāo),可以觀察到輸出波形周期為100ns,也即10MHz,輸出波形頻率和設(shè)置一致。

多通道實例

重新打開IP配置界面或者新建一個DDS IP,修改通道數(shù),這里設(shè)置為3。使能相位輸出信號,查看下相位變化情況。因為DDS的IP核多通道之間是分時復(fù)用的,所以在細節(jié)實現(xiàn)配置界面最好使能通道ID以供進行正常輸出單個通道的信號波形。其余可以保持默認(rèn)。

配置輸出頻率為10MHz、3MHz、4MHz。

配置完成點擊OK,對模塊進行例化。

頂層調(diào)用

頂層模塊調(diào)用代碼如下:

module top(
    input clk
    );

    wire m_axis_data_tvalid_ch1;
    wire [7:0] m_axis_data_tdata_ch1;
    
    wire          m_axis_data_tvalid_ch3;
    wire [7 : 0]  m_axis_data_tdata_ch3;
    wire [1 : 0]  m_axis_data_tuser_ch3;
    wire          m_axis_phase_tvalid_ch3;
    wire [31 : 0] m_axis_phase_tdata_ch3;
    wire [1 : 0]  m_axis_phase_tuser_ch3;

    //多通道測試
    dds_compiler_1 multi_ch_dds(
    .aclk(clk),                                // input wire aclk
    .m_axis_data_tvalid(m_axis_data_tvalid_ch3),    // output wire m_axis_data_tvalid
    .m_axis_data_tdata(m_axis_data_tdata_ch3),      // output wire [7 : 0] m_axis_data_tdata
    .m_axis_data_tuser(m_axis_data_tuser_ch3),      // output wire [1 : 0] m_axis_data_tuser
    .m_axis_phase_tvalid(m_axis_phase_tvalid_ch3),  // output wire m_axis_phase_tvalid
    .m_axis_phase_tdata(m_axis_phase_tdata_ch3),    // output wire [31 : 0] m_axis_phase_tdata
    .m_axis_phase_tuser(m_axis_phase_tuser_ch3)    // output wire [1 : 0] m_axis_phase_tuser
    );

仿真測試

仿真文件可以保持單通道測試不變,點擊運行行為級仿真,添加信號波形可觀察到下面的情況。數(shù)據(jù)并不是直接得到的正弦波形,而是雜亂無章的。

放大tuser信號可觀察到,數(shù)據(jù)和相位通道的tuser信號是周期變化的,這里的tuser信號是代表IP設(shè)置中的chen ID,所以是分時復(fù)用輸出3個通道的信號所以要編寫簡單邏輯對信號進行分選。

頂層模塊修改

可根據(jù)tuser為判斷條件對輸出數(shù)據(jù)進行一步寄存,從而得到三個通道的波形數(shù)據(jù)。代碼如下:

module top(
    input clk
    );

    //多通道測試
    dds_compiler_1 multi_ch_dds(
    .aclk(clk),                                // input wire aclk
    .m_axis_data_tvalid(m_axis_data_tvalid_ch3),    // output wire m_axis_data_tvalid
    .m_axis_data_tdata(m_axis_data_tdata_ch3),      // output wire [7 : 0] m_axis_data_tdata
    .m_axis_data_tuser(m_axis_data_tuser_ch3),      // output wire [1 : 0] m_axis_data_tuser
    .m_axis_phase_tvalid(m_axis_phase_tvalid_ch3),  // output wire m_axis_phase_tvalid
    .m_axis_phase_tdata(m_axis_phase_tdata_ch3),    // output wire [31 : 0] m_axis_phase_tdata
    .m_axis_phase_tuser(m_axis_phase_tuser_ch3)    // output wire [1 : 0] m_axis_phase_tuser
    );
    reg [7 : 0] data10MHz;
    reg [7 : 0] data3MHz;
    reg [7 : 0] data4MHz;
    always @(posedge clk) begin
        case(m_axis_data_tuser_ch3)
            0:data10MHz<=m_axis_data_tdata_ch3;
            1:data3MHz<=m_axis_data_tdata_ch3;
            2:data4MHz<=m_axis_data_tdata_ch3;
        endcase
     end
    reg [31 : 0] phase10MHz;
    reg [31 : 0] phase3MHz;
    reg [31 : 0] phase4MHz;
    always @(posedge clk) begin
        case(m_axis_data_tuser_ch3)
            0:phase10MHz<=m_axis_phase_tdata_ch3;
            1:phase3MHz<=m_axis_phase_tdata_ch3;
            2:phase4MHz<=m_axis_phase_tdata_ch3;
        endcase
    end

波形如下,從圖中可看出,經(jīng)過邏輯分選后,三個通道的波形輸出正常,這里可看到相比單通道輸出10MHz信號的正弦波,此時輸出的波形不能從時域中看出正弦波形的周期,原因是當(dāng)啟用多個通道后,系統(tǒng)鐘要除以通道數(shù)量才是對應(yīng)通道的參考鐘,此時設(shè)置了100MHz為工作時鐘,使能3個通道,所以單個通道的參考鐘為33.333MHz,對于10MHz的信號來說,相當(dāng)于一個周期僅有三個點,所以無法正常觀察到時域特性,但是頻域特性依舊存在。

混頻實例

混頻原理

在對輸入中頻信號需要進行頻譜搬移, 需要使用混頻操作, 將頻譜搬移到高頻或者低頻, 其實就好比一輛車開在高速路還是低速路, 高頻低頻就是載波, 承載信息的載體。在數(shù)字信號處理中, 頻譜的搬移就是將一個本震信號和一個輸入信號, 進行混頻, 這樣就可以得到一個復(fù)合的信號, 這里通過公式開看這個復(fù)合信號。

這里的α和β就是指的兩個頻率信號,當(dāng)互相相乘得到兩個頻率信號,一個是α + β,另一個是α – β。上圖的標(biāo)識的 fout 信號應(yīng)該是 f1+f2 和 f1-f2 的復(fù)合信號 。

使用多通道實例中輸出的3MHz和4Mhz,進行混頻操作,得到1MHz和7MHz的混合信號。調(diào)用乘法器進行混頻乘法操作。

頂層模塊

module top(
    input clk
    );
    
    wire          m_axis_data_tvalid_ch3;
    wire [7 : 0]  m_axis_data_tdata_ch3;
    wire [1 : 0]  m_axis_data_tuser_ch3;
    wire          m_axis_phase_tvalid_ch3;
    wire [31 : 0] m_axis_phase_tdata_ch3;
    wire [1 : 0]  m_axis_phase_tuser_ch3;

    //多通道測試
    dds_compiler_1 multi_ch_dds(
    .aclk(clk),                                // input wire aclk
    .m_axis_data_tvalid(m_axis_data_tvalid_ch3),    // output wire m_axis_data_tvalid
    .m_axis_data_tdata(m_axis_data_tdata_ch3),      // output wire [7 : 0] m_axis_data_tdata
    .m_axis_data_tuser(m_axis_data_tuser_ch3),      // output wire [1 : 0] m_axis_data_tuser
    .m_axis_phase_tvalid(m_axis_phase_tvalid_ch3),  // output wire m_axis_phase_tvalid
    .m_axis_phase_tdata(m_axis_phase_tdata_ch3),    // output wire [31 : 0] m_axis_phase_tdata
    .m_axis_phase_tuser(m_axis_phase_tuser_ch3)    // output wire [1 : 0] m_axis_phase_tuser
    );
    reg [7 : 0] data10MHz;
    reg [7 : 0] data3MHz;
    reg [7 : 0] data4MHz;
    always @(posedge clk) begin
        case(m_axis_data_tuser_ch3)
            0:data10MHz<=m_axis_data_tdata_ch3;
            1:data3MHz<=m_axis_data_tdata_ch3;
            2:data4MHz<=m_axis_data_tdata_ch3;
        endcase
     end
    reg [31 : 0] phase10MHz;
    reg [31 : 0] phase3MHz;
    reg [31 : 0] phase4MHz;
    always @(posedge clk) begin
        case(m_axis_data_tuser_ch3)
            0:phase10MHz<=m_axis_phase_tdata_ch3;
            1:phase3MHz<=m_axis_phase_tdata_ch3;
            2:phase4MHz<=m_axis_phase_tdata_ch3;
        endcase
    end
    //混頻測試
    wire [15 : 0]  mixer_singal;
    mult_gen_0 mult_mixer (
        .CLK(clk),  // input wire CLK
        .A(data3MHz),      // input wire [7 : 0] A
        .B(data4MHz),      // input wire [7 : 0] B
        .P(mixer_singal)      // output wire [15 : 0] P
    );
endmodule

仿真測試

仿真文件可以保持單通道測試不變,點擊運行行為級仿真,添加信號波形修改波形設(shè)置,可得到混頻后的信號效果。

聲明:本內(nèi)容為作者獨立觀點,不代表電子星球立場。未經(jīng)允許不得轉(zhuǎn)載。授權(quán)事宜與稿件投訴,請聯(lián)系:editor@netbroad.com
覺得內(nèi)容不錯的朋友,別忘了一鍵三連哦!
贊 3
收藏 4
關(guān)注 14
成為作者 賺取收益
全部留言
0/200
成為第一個和作者交流的人吧
主站蜘蛛池模板: 日本免费黄色网 | 人摸人人人澡人人超碰手机版 | 免费在线观看一区二区 | 午夜久久福利 | 天天色人人爱 | 欧美一级久久久猛烈a大片 国产吹潮视频在线观看 | 青娱乐久草| 中文字幕久久波多野结衣AV | 男人操女人国产 | 亚洲影院丰满少妇中文字幕无码 | 免费一级片网站 | japan高清日本乱xxxxx | 老鸭窝一区 | 成人网在线观看视频 | 国产精品久久精品 | 国产精品对白一区二区三区 | 饕餮记在线观看 | 欧美三级视频日日操 | 黄色大片视频 | 18禁勿入午夜网站入口 | 天天色人人爱 | 亚洲欧美日韩国产专区一区 | 久久三级影院 | 成人免费A级毛片无码 | 草久在线观看视频 | 国产精品国三级国产av | 久久精品亚洲男人的天堂 | 欧美一区二区在线免费 | 不卡中文字幕在线 | 午夜a毛片 | 草久在线视频 | 久久精品一二 | 精产国产伦理一二三区 | 欧美精品一区二区久久久 | 天美av一区二区三区久久 | 久久精品国产只有精品66 | 色94色欧美setu | 91精品久久久久久久久久不卡 | 激情婷婷 | Chinese国产HD精品实拍 | 日韩一区国产在线观看 |