基于ALTERA实现的DDS信号发生器设计.PDF
文本预览下载声明
【明德扬】至简设计法 FPGA 培训班:就业班 周末班 网络班 详情可加qq854618250
基于ALTERA 实现的DDS 信号发生器设计
一、功能描述
本工程实现DDS 直接数字式频率合成器,利用正弦波相位线性
增加的特点,产生正弦波和余弦波。本工程主要由 3 部分组成:
相位累加器,相位幅度转换,数模转换器DAC (FPGA 外部实
现)。其中,相位累加器的高10 比特用于ROM 的索引地址。
二、波形调制说明
模块将一个正弦波采样 1024 个点,然后保存到内部一个8 比特、
1024深度的ROM 当中,通过改变时序和相位控制字,即可生成
不同频率的波形。 生成波形的公式是: FO=TCLK*FCW/655360
上面公式中,TCLK 是指本模块的工作时间,FCW 是相位控制字,
FO 即是生成的信号频率。
相位控制字FCW 可以改变每次步进数M。如果FCW=128,则模块
内部累加器每次加 128,则经过 M=16’hffff/128=512 个时钟,
就可以循环一个周期,也就是 512 个时钟完成一个正弦波输出。
假如FCW 为256,则代表1024/4=128个时钟周期就输出一个正
弦波。
三、应用举例
设定是FCW=128,CLK=50M 的时钟频率,由公式计算得出
F0=10KHZ。实际测量出一个波形时间s,最终波形
新手学习FPGA 指导及资料下载:/article_cat?id=40
【明德扬】至简设计法 FPGA 培训班:就业班 周末班 网络班 详情可加qq854618250
的频率为10KHZ。 如果是FCW=128,CLK=5M 的时钟频率,由公
式计算得出F0=1KHZ。输出实际测量一个波形时间为 s,最终波形的频率为1KHZ。
如果是FCW=128,CLK=100M 的时钟频率,由公式计算得出
F0=0.2MHZ。输出实际测量一个波形时间为5167188ps,最终波
形的频率为0.2MHZ。 以此类推,通过对频率控制字的改变来
控制波形频率。
四、平台效果图
五、实现过程
首先根据所需要的功能,工程顶层的输入输出信号列表。
信号名 I/O 位宽 说明
clk I 1 系统工作时钟50M
rst_n I 1 系统复位信号,低电平有效
da_clk O 1 输出D/A 工作时钟
cos O 8 输出cos 波形信号
sin O 8 输出sin 波形信号
我们可以把工程划分成三个模块,分别是Sin 相位转波形模块
和Cos 相位转波形模块和相位累加器模块。
1. 相位累加器模块
本模块根据设置好的相位控制字FCW 来进行相位累加,以此控
制波形的相位,sum = sum + fcw;对相位不断累加,然后将累
加的sum 数据实时传到另外两个模块中去 以此本模块实现了相
位累加,并将数据传输给其它模块的功能。
本模块信号列表如下:
信号名 I/O 位宽 说明
clk I 1 相位累加时钟
新手学习FPGA 指导及资料下载:/article_cat?id=40
【明德扬】至简设计法 FPGA 培训班:就业班 周末班 网络班 详情可加qq854618250
rst_n I 1 系统复位信号,低电平有效
fcw I 16 相位控制字
sum O 16 相位累加数据
2.Sin 相位转波形模块
本模块实际上是一个RAM,事先将相位和相应相位上的幅值关
系写入,然后通过从相位累加模块传来的相位累加数据sum 进
行查表,得到对应的幅值,以此当一个sin 波的相位全部转换
一遍后即可得到一个完整的sin 波形。
信号列表如下:
信号名 I/O 位宽
显示全部