用DDSIPCore可以实现

用DDS IP Core可以实现,也可以用Verilog语言自己写
`timescale 1ns / 1ps沃尼希密码
module dds(data, we, clk, ce, reset, sine);
input [31 : 0] data; //频率控制
input we; //频率控制字写使能
input clk; //时钟
input ce; //DDS使能
input reset; //复位
output [15 : 0] sine; //正弦信号输出
reg [31 : 0] ADD_A; //正弦波产生模块的相位累加器
reg [15 : 0] sine_DR; //正弦波的查表
wire [31 : 0] data; //频率控制字
wire [9 : 0] ROM_A;
wire [15 : 0] sine_D;
assign sine = sine_DR;
assign ROM_A = ADD_B[31 : 22];
always @ (posedge clk or posedge reset)
begin
if(reset) //系统初始化时,默认的频率控制字为0
ADD_A <= 0;
else if(we)
ADD_A <= data;
end
always @ (posedge clk or posedge reset)
begin
if(reset)
ADD_B <= 0;
else if(ce)
ADD_B <= ADD_B + ADD_A; //ADD_B为累加的结果end夜尿停
always @ (posedge clk or posedge reset)
begin
if(reset)
cose_DR <= 0;
2012年江苏高考英语else if(ce)
cose_DR <= cose_D;
end
always @ (posedge clk or posedge reset)
begin
if(reset)
sine_DR <= 0;
else if(ce)
sine_DR <= sine_D;
end
//调用两个ROM,存储着正余弦波形一个周期的数值。
rom_cose cose1(
工程管理系统.addra(ROM_A),
.clka(clk),
.douta(cose_D));
rom_sine sine1(
.addra(ROM_A),
.clka(clk),
形成性考核系统.douta(sine_D));
endmodulela-15
这是无线通信FPGA这本书上的一个正余弦波程序。
这个需要通过MATLAB算出各个时间点的坐标,使用Cordic算法也可以编出这个波形。

本文发布于:2024-09-21 17:22:22,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/158293.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:频率   控制   坐标   正弦波   相位   模块   产生
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议