大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分。大侠可以关注FPGA技术江湖,在“闯荡江湖”、"行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢。
大侠好,今天由“82年的程序媛”本媛给大侠带来FPGA设计之基于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≤τ);其中:f0为起始频率,u为调频斜率,τ为脉冲宽度,B=uτ为信号的带宽。由公式可以看出,S(t)的频率随时间变化线性变化,初始值为f0,斜率为u。
由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年的程序媛”本媛,江湖偌大,继续闯荡,加油!
- THE END -
🍁
FPGA技术江湖广发江湖帖
无广告纯净模式,给技术交流一片净土,从初学小白到行业精英业界大佬等,从军工领域到民用企业等,从通信、图像处理到人工智能等各个方向应有尽有,QQ微信双选,FPGA技术江湖打造最纯净最专业的技术交流学习平台。
FPGA技术江湖微信交流群
加群主微信,备注姓名+学校/公司+专业/岗位进群
FPGA技术江湖QQ交流群
备注姓名+学校/公司+专业/岗位进群