找回密码
 注册
关于网站域名变更的通知
查看: 250|回复: 1
打印 上一主题 下一主题

DDS的VERILOG原代码分享

[复制链接]
  • TA的每日心情
    开心
    2019-11-20 15:00
  • 签到天数: 2 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2020-1-8 10:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    `timescale 1ns/1ps
    module mydds(, S, P7 V! t  X! M# y; o
       DATA,   //频率控制字* O( e  {6 t9 h8 ?
       WE_F,  //频率控制字写使能
    9 u+ r; Y! `2 e& ^- B9 r   CLKP,   //时钟
    6 T  S8 C* ]8 r& d9 y/ E* q   CE,       //DDS使能
    7 x& ?1 y0 S; _; D- Z   ACLR,  //复位6 ]4 T" i, S5 |) [9 ~
       SINE,    //正炫信号输出# Y3 b5 @$ R! i" S% V) F& U  O1 f
       COSINE  //余炫信号输出
    0 w$ W  d; q2 A9 g9 E% j$ W8 P   );
       input [31 : 0] DATA;
    % z% ?; B7 R. B7 Q0 d   input WE_F;7 c( }6 c7 z) W9 _
       input CLKP;2 i$ E8 ~* q, X
       input CE;
    / u9 p: n7 q: w3 t3 t, R* c   input ACLR;
    - V2 I7 h. o0 t1 K$ T: k   output [15 : 0] SINE;
    7 i' g1 w- t8 ?# H   output [15 : 0] COSINE;
       
    ! r( Y6 U7 a6 M6 C3 w! k+ B6 Rparameter DATA_DEF=32'H51EB851;
    # l5 a0 C8 l( h* {  M  
       //ADD_A, `9 C2 E8 f* k& O2 Y
       reg [31:0] ADD_A;
    8 U3 Y% {( v2 W   reg [31:0] ADD_B;
    ; z! N+ b( I5 F3 B' L: D" I/ ewire [31:0] DATA;
    ! |' U" r. v! Z3 S   always @(posedge CLKP or posedge ACLR)
    & L! H8 X0 K# Q2 A, {       if(ACLR)
    ) s" r  N9 N$ f6 y+ b         ADD_A<=DATA_DEF;8 j6 J8 ]# P. B1 ]; u
           else if(WE_F)
    0 W, I& F" i/ R$ X; g9 P         ADD_A<=DATA;

      I9 g% f( R& k//ADD_B
    6 r' y  j7 G- v" z: galways @(posedge CLKP or posedge ACLR)   //OLD CLKN
    $ w7 u+ N; M( \! h+ \     if(ACLR)
    2 p0 i4 f5 W0 `8 U     ADD_B<=0;     
    8 {) c' H3 O5 r3 e/ z! C2 m* v    else if(CE)+ g  b( ?: W- a* r8 ]6 q/ G
          ADD_B<=ADD_B+ADD_A;
    //COS+ t. c( @. }; E4 A: J0 F
    wire [10:0] ROM_A;! T- s7 _2 W) ^& N. M2 `  Q
    assign ROM_A=ADD_B[31:21];: Q0 K* e6 b4 _) e7 o2 X! @
    wire [15:0] COS_D;
    " o( g$ ]; z& l& n" krom_cos cos(              //余炫信号ROM
    , @' a  R: Z5 ]/ [$ ]- k3 U4 R      .addr(ROM_A),
    0 {& ^3 Y. e5 X0 R9 R+ o+ r  .clk(CLKP),9 |. ?8 `! F0 s' ?& @
          .dout(COS_D),+ G0 Z, L. \' z3 D" \, i
      .en(CE)) ;

    0 E9 ]3 X/ Q9 y; t$ X& l# o. S" ~reg [15:0] COS_DR;
    & F# R) j4 S' yalways @(posedge CLKP or posedge ACLR)  //OLD CLKN" o% w+ [, s! L  a
         if(ACLR)
    + U8 z. T8 j/ m+ h      COS_DR<=0;  g% |: n) t; C& K) k' a+ T
         else if(CE)      
    3 g) H& [* c: H' a. B1 q      COS_DR<=COS_D;
    ) p0 }, l0 i+ Q: u. d" e/ Jassign COSINE=COS_DR;
        0 x4 B6 m9 Q6 k+ y
    //SINE     
    ; I1 w; Y2 K$ a* J1 }& o* @- q, Qwire [15:0] SIN_D;. ]7 ]; e9 o8 ~- e) r1 V. Z. D
    rom_sin sin(                       //正炫信号ROM
    8 U6 e  S' p$ h$ e$ T+ R8 j$ l      .addr(ROM_A),2 _2 c# o" L9 r
          .clk(CLKP),1 E2 w+ D. s: x% I1 K  c; ?- u
          .dout(SIN_D),
    " Y0 n/ W7 g+ w8 t% X  .en(CE)) ;
    , b& y0 S& F, \6 U9 W
    reg [15:0] SIN_DR ;
    / F4 W9 P) I/ ~7 Zalways @(posedge CLKP or posedge ACLR)  ////OLD CLKN
    5 U: G0 J5 A1 ?+ z     if(ACLR)
    3 F- _: o4 U, F  u      SIN_DR<=0;
    & j* ~$ o, I# N$ e: F! i8 v% O     else if(CE)       ! R* L$ i, b) ~8 e( e% S
          SIN_DR<=SIN_D;
    7 R( s" a9 R! L6 wassign SINE=SIN_DR;  

    * M2 v6 M7 s; o5 @! @& J  Y; iendmodule   
    1 N; Y- S0 w0 F/ ?: O$ n( C4 ?

    该用户从未签到

    2#
    发表于 2020-1-8 18:50 | 只看该作者
    不错,谢谢分享。
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-8-20 07:51 , Processed in 0.109375 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表