基于FPGA的DDS任意波形发生器设计的电路图及程序?

 我来答
ydywk
推荐于2016-07-26
知道答主
回答量:20
采纳率:0%
帮助的人:0
展开全部
用DDS IP Core可以实现,也可以用Verilog语言自己写
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 10:28:52 09/21/2007
// Design Name:
// Module Name: dds
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module dds(data, we, clk, ce, reset, sine, cose);

input [31 : 0] data; //频率控制字
input we; //频率控制字写使能
input clk; //时钟
input ce; //DDS使能
input reset; //复位
output [15 : 0] sine; //正弦信号输出
output [15 : 0] cose; //余弦信号输出

reg [31 : 0] ADD_A; //正弦波产生模块的相位累加器
reg [31 : 0] ADD_B; //余弦波产生模块的相位累加器
reg [15 : 0] cose_DR; //余弦波的查找表地址
reg [15 : 0] sine_DR; //
wire [31 : 0] data; //频率控制字
wire [9 : 0] ROM_A;
wire [15 : 0] cose_D;
wire [15 : 0] sine_D;

assign cose = cose_DR;
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;
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));

endmodule
这是无线通信FPGA这本书上的一个正余弦波程序。
这个需要通过MATLAB算出各个时间点的坐标,使用Cordic算法也可以编出这个波形。
北京康思
2018-09-20 广告
电压的测量利用示波器所做的任何测量,都是归结为对电压的测量。示波器可以测量各种波形的电压幅度,既可以测量直流电压和正弦电压,又可以测量脉冲或非正弦电压的幅度。更有用的是它可以测量一个脉冲电压波形各部分的电压幅值,如上冲量或顶部下降量等。这是... 点击进入详情页
本回答由北京康思提供
很邪恶的YY
2011-03-24 · 超过17用户采纳过TA的回答
知道答主
回答量:43
采纳率:0%
帮助的人:56万
展开全部
楼上这东西还需要你来写阿?已经是现成的DDSIP 核了。这个东西最好是外接一个DDS芯片最方便了。AD9850 模块自己买一个好了,然后和FPGA连接后只需要控制它就行了。简单吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式