当前位置:首页 > 嵌入式 > 嵌入式硬件

  1 DDS结构原理

  DDS是一种从相位概念出发直接合成所需波形的数字频率合成技术,主要通过查找波形表实现。由奈奎斯特抽样定理可知,当抽样频率大于被抽样频率的2倍时,通过抽样得到的数字信号可通过一个低通滤波器还原成原来的信号。

  DDS的工作原理为:在参考时钟的驱动下,相位累加器对频率控制字进行线性累加,得到的相位码对波形存储器寻址,使之输出相应的幅度码,经过模/数转换器得到相应的阶梯波,最后再使用低通滤波器对其进行平滑,得到所需频率的平滑连续的波形,其结构如图1所示。

  相位累加器由N位加法器和N位累加寄存器级联构成。每经过一个时钟脉冲fclk,加法器就将频率控制字与累加寄存器输出的累加相位数据相加,把相加后的结果送至累加寄存器的数据输入端。相位累加器输出的数据就是合成信号的相位,相位累加器的溢出频率就是DDS的输出信号频率。用相位累加器输出数据作为波形存储器(ROM)的相位取样地址,这样就可以把存储在波形存储器内的波形抽样值(二进制编码)经查找表查出,完成相位到幅度的转换。

  DDS模块的输出频率是系统工作频率、相位累加器比特数N以及频率控制字三者的一个函数,其数学关系由式(1)给出。

  它的频率分辨率,即频率的变化间隔为K/2N。

  2 系统功能单元实现

  该系统设计是针对DDS的基本结构,以FPGA为核心,加上外围电路而实现的。

  2.1 相位累加器

  相位累加器由8位加法器与8位寄存器级联构成。累加器将加法器在上一个时钟作用后所产生的相位数据反馈到加法器的输入端:使加法器在下一个时钟作用下继续与频率控制字data相加,实现相位累加,当相位累加器累加结果等于或大于256(当N=8时),则产生1次溢出,完成1个周期波形输出。该相位累加器采用Verilog语言设计实现。

  2.2 波形存储器

  以相位累加器输出数据作为波形存储器的取样地址,进行波形的相位—幅码转换,即可在给定的时间上确定输出的波形的抽样幅码。N位的寻址ROM相当于把0~2π的正弦信号离散成具有2N个样值的序列。若波形存储器有D位数据位,则各样值的幅码以D位二进制数值保存在该模拟ROM中,按照不同地址输出相应相位的正弦信号的幅码数值。为了更加有效的表示波形,当然期望波形存储器输出的二进制值位数越多越好。但是查找表的设计和D/A转换器的选择是相关的,因此需要选择位数高的D/A转换器。本文设计的正弦表,具有16b输出,采样点为256。

  2.3 D/A转换电路的实现

  D/A转换单元是继波形数据产生单元之后,将数字量形式的波形幅值转换成所要求的合成频率的模拟量形式信号。DAC输出信号实际上是阶梯模拟信号,需在D/A转换后利用低通滤波器对波形进行平滑处理。在此,用Maxim公司生产的A/D换器MAX5885芯片。该芯片需要将输入时钟信号转换为差分输入,且由外部芯片MAX6161提供1.2 V的参考电压,D/A转换后的差分输出经变压器转换后即可得到所需的信号:

  3 系统软件设计

  3.1 累加控制模块的设计

  相位累加器主要完成相位累加,实现输出波形频率可调的功能。该模块采用Verilog HDL语言来实现,若要求DDS系统精度高,相位累加器的位数N需较大。这里取N=8,它的Verilog HDL关键代码如下:

  其中,data信号为8位的频率控制字,通过改变data的值可以实现不同频率波形的输出。

  3.2 波形存储器的设计

  针对不同的可编程器件,ROM查找表的设计采用的方法也不相同。主要是基于IP核Single Port BlockMemory和Verilog选择语句这两种方法。使用SinglePort Block Memory的波形存储表只需要产生数据文件*.mif或*.coe,然后直接在定制Single Port BlockMemory时,添加数据文件即可。不过这种方法在FPGA支持内部嵌入式阵列块(EAB)时才可以使用;使用Verilog选择语句比较直观,但当输入数据量大的

  这种方法是比较繁琐的。此次设计采用第一种方法。

  coe文件是在编译和仿真过程中作为存储器(ROM或RAM)初始化输入的文件,即memory initializationfile。创建coe文件的方式有很多种,在这次设计中,在Matlab中采用C语言来生成coe文件。coe文件编写格式如下:

  将生成的cos.txt文件的后缀该为.coe,打开文件并将最后一行的逗号改为分号,并在文件的最开始添加下面两行:

  最后保存文件退出,并加载到Single Port BlockMemory所生成的ROM中。加载时要特别注意数据基数和数据长度的参数设置。

  4 系统的功能仿真和验证分析

  累加控制器、ROM查找表组成一个整体,实现了一个基本的DDS系统。该设计以原子钟(33 MHz)为基准频率输入,取累加器为32位,实现输出频率为700 kHz的信号。

  5 结语

  直接数字频率合成(DDS)技术属第三代频率合成技术,与第二代基于锁相环频率合成技术相比,利用DDS技术合成的输出波形具有良好的性能指标本。设计采用Xilinx公司Spartan-3系列的XC3S200芯片和高速16位D/A转换器MAX5885。在DDS的工作原理的基础上,介绍基于FPGA实现DDS的设计方法。 通过设置参数可以灵活控制输出频率和分辨率。设计出具有精度高,选择参数控制输出信号,产生一个理想的波形。从测试结果可看出,该系统工作稳定、可靠,并具有较好的参考与实用价值。



本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

按输出交流电能的频率。工频逆变器(50~60Hz)、中频逆变器(400Hz~kHz)、高频逆变器(kHz~MHz)。

关键字: 逆变器 频率 工频逆变器

Bluespec支持加速器功能的RISC-V处理器将Achronix的FPGA转化为可编程SoC

关键字: RISC-V处理器 FPGA SoC

在嵌入式系统开发、调试和测试过程中,J-Link作为一种高效的调试工具,为开发者提供了极大的便利。然而,要想充分发挥J-Link的功能,首先需要正确安装其驱动程序。本文将详细介绍J-Link驱动的安装过程,并深入解析其中...

关键字: jlink 嵌入式系统 嵌入式开发

与谷歌的合作使 Nordic 能够在 nRF Connect SDK 中嵌入开发人员软件,以构建与安卓移动设备兼容的谷歌Find My Device和未知跟踪器警报服务

关键字: 谷歌 SoC 嵌入式开发

为无处不在的端侧设备插上AI的翅膀,AMD发布第二代Versal™ 自适应 SoC

关键字: AMD FPGA 自适应SoC AI 边缘计算

嵌入式开发作为当今电子工程和信息技术领域的核心分支,涵盖了广泛的软硬件技术和系统集成方法,用于构建高性能、低成本、低功耗、体积小巧且功能专一的嵌入式系统。这些系统无处不在,从微型传感器节点到复杂的工业控制设备,从日常使用...

关键字: 嵌入式开发 Python

嵌入式开发是当今信息技术领域不可或缺的一部分,它融合了硬件设计、软件开发和系统集成等多个学科,专门用于创建那些被嵌入到特定设备或系统中的专用计算机系统。嵌入式开发的主要过程包括利用分立元件或集成器件进行电路设计、结构设计...

关键字: 嵌入式开发 硬件设计 软件开发

嵌入式开发作为一种专业且技术密集型的领域,涵盖了从硬件底层驱动、中间件到应用层软件开发等多个层面的工作,其所需的工具种类繁多,各有针对性,旨在提升开发效率、保证代码质量以及简化调试过程。

关键字: 嵌入式开发 keil

嵌入式开发作为信息技术领域的重要分支,其涉及的语言种类繁多,各具特色。这些语言的选择取决于目标平台的特性、性能需求、开发者的熟练程度以及项目的具体要求。本文将详细介绍几种常见的嵌入式开发语言,包括C语言、C++、汇编语言...

关键字: 嵌入式开发 C语言

嵌入式开发是一项综合了硬件设计、软件编程以及系统整合的技术活动,其目的是为了创造出能够在特定环境中高效、稳定运行的嵌入式系统。这一流程涵盖了多个紧密关联且不可或缺的阶段,从最初的客户需求分析到最终的产品测试和交付,每个环...

关键字: 嵌入式开发 硬件设计
关闭
关闭