大侠好,今天由“82年的程序媛”本媛给大侠带来FPGA设计之基于DDS的线性调频信号的产生,后续本媛还会继续更新产品项目开发心得,学习心得等,欢迎大家持续关注,话不多说,上货。
一、 DDS工作原理
DDS(Direct Digital Synthesizer)技术是一种频率合成方法,其输出频率具有分辨率高、功耗低、频率切换速度快且频率切换时输出信号的相位连续等特点。为此在数字信号处理及硬件实现中有着很重要的作用。
DDS的结构主要由相位累加器、波形存储器、数模转换器和低通滤波器等四个大的结构组成,其结构框图如下:
其中,fclk为参考时钟,Pword为相位控制字,给定输出信号的初始相位值;Fword为频率控制字,用于控制输出信号的频率。DDS模块工作时,每来一个参考时钟,相位累加器就将频率控制字与寄存器输出的值累加,将相加后的值继续输入到寄存器中,这样构成一个循环,可以不停的对频率控制字进行累加。累加的值作为地址在波形存储器中通过查找地址所对应的幅值表,就可以完成其从相位到幅值之间的转化。
在DDS模块中,输出频率的公式为:Fout = fclk/2*Fword
从公式可以看出,DDS输出的频率由频率控制字Fword决定。当频率控制字变化时,输出频率也跟着变化,从而可以实现调频信号的产生。
二、 线性调频信号
线性调频信号是一种频率连续线性变化的信号,是一种常用的雷达信号。在雷达系统中常用做发射信号,由于其带宽较高且包络为矩形,故在接收机端可以实现脉冲压缩得到较高的距离分辨力。
线性调频信号表达式为:S(t)=Acos(2πf0 + πut^2) (0≤t≤τ);
相位对 t 求导得到频率: f=f0+ut;
其中:f0为起始频率,u为调频斜率,τ为脉冲宽度,B=uτ为信号的带宽。
由公式可以看出,S(t)的频率随时间变化线性变化,初始值为f0,斜率为u。
三、 基于DDS的线性调频信号产生
由DDS原理可知通过控制输入的频率控制字即可控制输出的信号频率,我们可以通过控制频率控制字使DDS输出信号的频率线性变化,由此产生线性调频信号。
由于在MATLAB中仿真能更清楚的了解信号的频谱,故本实验采用在system generator中搭建模型的方式,仿真正确后生成IP核的加入到工程中。
首先,我们需要确定线性调频信号的相关参数,即模型的输入包括采样率fs、信号的带宽B、斜率选择ratio以及初始相位frq_first等。
整体模型框图如下图所示:
首先根据带宽及采样率通过fword_gen模块产生线性的DDS的频率控制字,并且给出初始相位和斜率选择;将计算得到的频率控制字输出给DDS,产生频率在Band带宽内线性变化的余弦信号;最后通过幅度调制模块对输出信号的振幅进行调整,得到一个chirp信号。
DDS模块调用xilinx的IP核DDS compiler6.0,可以双击IP核进行配置其系统时钟、相位位宽、输出信号位宽等。
其中poff为相位控制字,pinc为频率控制字。需要注意的是,在搭建模型调用IP核时,输入的相位控制字和频率控制字均需要为小数,可以通过调用reinterpret模块,将fword_gen模块生成的频率控制字转换成小数后输入给DDS IP核。
最后通过在matlab环境下仿真得到的chirp信号如下图所示:
分别为信号实部、虚部以及初始相位375M、带宽为500M的信号频谱图。
今天本媛就说到这里,后续继续和大侠一起分享,欢迎关注貌美如花的“82年的程序媛”本媛,江湖偌大,继续闯荡,加油!