女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

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

DDS信號(hào)生成模塊的Verilog實(shí)現(xiàn)

CHANBAEK ? 來源:新???/span> ? 作者:陳一偉 ? 2023-11-08 14:39 ? 次閱讀

直接數(shù)字頻率合成器(Direct Digital Synthesizer,DDS),是一種頻率合成技術(shù),具有相對(duì)帶寬大、頻率轉(zhuǎn)換速度快、相位分辨率高、連續(xù)性好等優(yōu)點(diǎn),在數(shù)字信號(hào)處理中常用于調(diào)制信號(hào)的生成,模塊設(shè)計(jì)較為簡單,頻率、相位容易控制,多用于無線通信領(lǐng)域。

DDS發(fā)生器的組成原理精髓在于對(duì)“模板”信號(hào)在單個(gè)周期內(nèi)的采樣,在系統(tǒng)工作頻率一定的情況下,輸出信號(hào)頻率和周期內(nèi)的取樣點(diǎn)數(shù)有著直接的關(guān)系,舉個(gè)栗子,假設(shè)基波信號(hào) U(t)=sin(2pift+θ )=sin( 2pit ) ,* 在0~2Π內(nèi)

等分周期,在相同的系統(tǒng)時(shí)鐘下采用不同的抽樣點(diǎn)數(shù)進(jìn)行抽樣,如下圖所示:

圖片

以*Π/4 *為步進(jìn)在單個(gè)周期內(nèi)抽樣

圖片

以*Π/8 *為步進(jìn)在單個(gè)周期內(nèi)抽樣

圖片

可以很明顯看出,相同系統(tǒng)時(shí)鐘下使用不同的抽樣點(diǎn)數(shù),可以得到不同的輸出頻率;基本組成架構(gòu)如下,系統(tǒng)時(shí)鐘驅(qū)動(dòng)頻率控制字(抽樣間隔)逐次累加生成存儲(chǔ)著基波數(shù)據(jù)ROM的對(duì)應(yīng)抽樣地址,相位控制字主要用來決定基波的起始相位;

圖片

FPGA中開辟一塊Block RAM用于存儲(chǔ)對(duì)應(yīng)的“模板”信號(hào),也就是要輸周期信號(hào)的一個(gè)完整周期,輸出數(shù)據(jù)位數(shù)決定采樣波形存儲(chǔ)ROM的寬度,數(shù)據(jù)深度與采樣精度有關(guān),累加器用于按頻率控制字步長控制等間隔采樣精度,相位寄存器用于鎖定波形發(fā)生起始的位置,生成的周期數(shù)列作為ROM表的驅(qū)動(dòng)地址,完成對(duì)"模板"信號(hào)不同頻率的抽樣;

圖片

模塊設(shè)計(jì)前需要先準(zhǔn)備ROM初始化文件“ .coe ”,生成方式可以使用工具或者MATLAB,下面是個(gè)人使用的一個(gè)基于MATLAB的coe文件生成代碼;

clc;clear;close all;  
width = 10;  
depth = 2048;  
t = linspace(0,2*pi,depth);  
sin_val = sin(t);  
% %cos_val = cos(t); 
plot(t,sin_val,'--');
 sin_val = fix(sin_val*(2^width-1)/2 + 0.5); %四舍五入  
% %cos_val = fix(cos_val*(2^width-1)/2 + 0.5);


sin_val(find(sin_val< 0))=sin_val(find(sin_val< 0)) + 2^width; %求補(bǔ)碼 
addr = [0:depth - 1];  
file = fopen('sin1024.coe','wt');  
fprintf(file,'MEMORY_INITIALIZATION_RADIX=10;n);
fprintf(file,'MEMORY_INITIALIZATION_VECTOR=n');


for i=1:depth  
    fprintf(file,'%04X : %04X;n',addr(i), sin_val(i)); 

end  
fprintf(file,'END;n');  
fclose(file);

模塊設(shè)計(jì)為便于修改添加部分參數(shù)定義,在有不同位寬需求時(shí)可以只修改參數(shù)和ROM模塊IP即可實(shí)現(xiàn);頻率計(jì)算公式不在推到,直接給出:

圖片

其中K為頻率控制字,N為相位累加器位寬,f0為模塊輸出頻率,fC為系統(tǒng)時(shí)鐘頻率;舉個(gè)例子,設(shè)系統(tǒng)時(shí)鐘為50Mhz,相位寬度10Bit,要輸出1Mhz的信號(hào),則K=(2^101)/50; *設(shè)計(jì)代碼如下,使用時(shí)只需添加ROM模塊的IP,然后就可以例化工程使用:

`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: nhike
// Engineer: chenyivi
// 
// Create Date: 2019/11/03 19:25:35
// Design Name:DDS_ROM_IP 
// Module Name: DDS_ROM
// Project Name: DDS_ROM_IP
// Target Devices: zynq7010
// Tool Versions:1.0 
// Description: WaveFrom
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//////////////////////////////////////////////////////////////////////////////////




module DDS_ROM(
    clk,          //系統(tǒng)時(shí)鐘
    rst_n,        //系統(tǒng)復(fù)位
    Freword,      //頻率控制參數(shù)
    Phaword,      //初始相位控制參數(shù)
    WaveDataOut    //輸出信號(hào)
  );

  parameter   FrequencyBitWidth = 32;       
  parameter   PhaseBitWidth =10;
  parameter   DataOutBitWidth= 10;

  input clk;
  input rst_n;
  input   [FrequencyBitWidth-1:0] Freword;
  input   [PhaseBitWidth-1:0]    Phaword;
  output   [DataOutBitWidth-1:0]   WaveDataOut;

  reg   [FrequencyBitWidth-1:0]  Freword_temp;
  reg   [PhaseBitWidth-1:0]    Phaword_temp;
  wire   [PhaseBitWidth-1:0]    WaveAddData;

  always@(posedge clk or negedge rst_n)begin    //data latch.
    if(!rst_n)begin
      Freword_temp <= 32'b0;
      Phaword_temp <= 10'b0;
      end
    else begin
      Freword_temp <= Freword;
      Phaword_temp <= Phaword;  
      end
  end

  reg [FrequencyBitWidth-1:0] cnt;

  always @(posedge clk or negedge rst_n)begin    //Sampling control.
    if(!rst_n)
      cnt <= 0;
    else
      cnt <= cnt + Freword_temp;
  end

  assign WaveAddData = cnt[FrequencyBitWidth-1:FrequencyBitWidth-(DataOutBitWidth + 1)] + Phaword_temp;   //Data precision interception

  WaveRom WaveRomBase (
    .clka(clk),   
    .addra(WaveAddData),  
    .douta(WaveDataOut)  
  );

endmodule

下面是仿真結(jié)果和RTL:

圖片

圖片

以上實(shí)現(xiàn)均在Vivado中驗(yàn)證,Quartus使用方法與上述一致;

聲明:本文內(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)投訴
  • 合成器
    +關(guān)注

    關(guān)注

    0

    文章

    280

    瀏覽量

    26134
  • 頻率合成器
    +關(guān)注

    關(guān)注

    5

    文章

    293

    瀏覽量

    32704
  • 無線通信
    +關(guān)注

    關(guān)注

    58

    文章

    4706

    瀏覽量

    144849
  • Verilog
    +關(guān)注

    關(guān)注

    28

    文章

    1365

    瀏覽量

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

    關(guān)注

    22

    文章

    671

    瀏覽量

    154014
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Verilog實(shí)現(xiàn)DDS正弦波發(fā)生器

    DDS 同 DSP(數(shù)字信號(hào)處理)一樣,是一項(xiàng)關(guān)鍵的數(shù)字化技術(shù)。DDS 是直接數(shù)字式頻率合成器(Direct Digital Synthesizer)的英文縮寫。與傳統(tǒng)的頻率合成器相比,DDS
    的頭像 發(fā)表于 12-22 09:48 ?1830次閱讀
    <b class='flag-5'>Verilog</b><b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>DDS</b>正弦波發(fā)生器

    使用DDS生成三個(gè)信號(hào)并在Vivado中實(shí)現(xiàn)低通濾波器

    本文使用 DDS 生成三個(gè)信號(hào),并在 Vivado 中實(shí)現(xiàn)低通濾波器。低通濾波器將濾除相關(guān)信號(hào)。
    的頭像 發(fā)表于 03-01 14:31 ?1443次閱讀
    使用<b class='flag-5'>DDS</b><b class='flag-5'>生成</b>三個(gè)<b class='flag-5'>信號(hào)</b>并在Vivado中<b class='flag-5'>實(shí)現(xiàn)</b>低通濾波器

    DDSVERILOG原代碼

    DDSVERILOG原代碼
    發(fā)表于 08-11 09:35

    基于Verilog HDL的DDS設(shè)計(jì)與仿真

    基于Verilog HDL的DDS設(shè)計(jì)與仿真
    發(fā)表于 08-19 23:15

    Verilog通過DDS合成正弦波信號(hào)

    。而存儲(chǔ)每一個(gè)幅度的比特?cái)?shù)決定了幅度的量化誤差??梢酝ㄟ^Quartus II的IP核資源創(chuàng)建。Verilog編寫的DDS模塊主要由三部分組成,一、相位累加器,用于決定輸出信號(hào)頻率的范圍
    發(fā)表于 03-22 23:42

    急急急?。?!各位大神幫幫忙!怎么用Verilog控制DDS芯片AD9852

    ,看了網(wǎng)上的資料,都是Verilog通過內(nèi)部模塊實(shí)現(xiàn)DDS。希望大神們給點(diǎn)給我個(gè)控制程序,讓我參考一下。大恩大德,不勝感激!實(shí)在很急
    發(fā)表于 04-25 21:56

    請(qǐng)問怎么用Verilog寫一個(gè)DDS產(chǎn)生Chirp線性調(diào)頻信號(hào)

    有沒有前輩用Verilog寫一個(gè)DDS產(chǎn)生Chirp線性調(diào)頻信號(hào),方便的話能不能給個(gè)代碼,我的郵箱是[email protected],
    發(fā)表于 09-11 17:35

    基于DDS實(shí)現(xiàn)信號(hào)的頻譜分析

    1 引言 直接數(shù)字頻率合成(DDS)是近幾年一種新型的頻率合成法,其具有頻率切換速度快,頻率分辨率高,以及便于集成等優(yōu)點(diǎn)。在此,設(shè)計(jì)了基于DDS的頻譜分析儀,該頻譜分析儀依據(jù)外差原理,被測(cè)信號(hào)與本征頻率混頻,
    發(fā)表于 05-31 08:01

    使用AD9739A生成信號(hào),用FPGA的DDS生成信號(hào),為什么諧波特別明顯?

    使用AD9739A生成信號(hào),用FPGA的DDS生成信號(hào),見圖,諧波特別明顯,尤其是3次諧波,購買的是AD9739_FMC的評(píng)估板,下圖中產(chǎn)生
    發(fā)表于 12-07 07:57

    基于FPGA的DDS調(diào)頻信號(hào)的研究與實(shí)現(xiàn)

    本文從DDS 基本原理出發(fā),利用FPGA 來實(shí)現(xiàn)DDS 調(diào)頻信號(hào)的產(chǎn)生,重點(diǎn)介紹了其原理和電路設(shè)計(jì),并給出了FPGA 設(shè)計(jì)的仿真和實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果表明該設(shè)計(jì)是行之有效的。直接數(shù)字頻率
    發(fā)表于 06-26 17:29 ?72次下載

    基于FPGA的DDS信號(hào)源設(shè)計(jì)與實(shí)現(xiàn)

    基于FPGA的DDS信號(hào)源設(shè)計(jì)與實(shí)現(xiàn) 利用DDS和 FPGA 技術(shù)設(shè)計(jì)一種信號(hào)發(fā)生器.介紹了該信號(hào)
    發(fā)表于 02-11 08:48 ?228次下載

    DDS在羅盤測(cè)試信號(hào)產(chǎn)生模塊中的應(yīng)用

    本文在對(duì)DDS原理和AD9854芯片研究的基礎(chǔ)上,介紹了一種羅盤測(cè)試信號(hào)產(chǎn)生模塊的設(shè)計(jì)方案。通過單片機(jī)對(duì)DDS芯片的控制,可以產(chǎn)生正弦波信號(hào)
    發(fā)表于 07-31 10:45 ?12次下載

    DDS多波信號(hào)發(fā)生器的實(shí)現(xiàn)

    詳細(xì)介紹了直接數(shù)字頻率合成器(DDS)的工作原理、基本結(jié)構(gòu)。在參考DDS 相關(guān)文獻(xiàn)的基礎(chǔ)上,提出了符合結(jié)構(gòu)的DDS 設(shè)計(jì)方案,利用DDS 技術(shù)設(shè)計(jì)了一種高頻率精度的多波形
    發(fā)表于 11-22 14:35 ?0次下載

    基于Verilog實(shí)現(xiàn)DDS任意波形發(fā)生器

    DDS是從相位的概念直接合成所需波形的一種頻率合成技術(shù)。不僅可以產(chǎn)生不同頻率的正弦波,而且可以控制波形的初始相位。本文為大家介紹基于Verilog實(shí)現(xiàn)DDS任意波形發(fā)生器。
    發(fā)表于 01-08 11:58 ?6968次閱讀
    基于<b class='flag-5'>Verilog</b><b class='flag-5'>實(shí)現(xiàn)</b>的<b class='flag-5'>DDS</b>任意波形發(fā)生器

    如何自動(dòng)生成verilog代碼

    介紹幾種自動(dòng)生成verilog代碼的方法。
    的頭像 發(fā)表于 11-05 11:45 ?910次閱讀
    如何自動(dòng)<b class='flag-5'>生成</b><b class='flag-5'>verilog</b>代碼