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 ?
|