当前位置:首页 > 心得体会 > 全国物流仿真设计方案 一种基于FPGA的DDS设计方案与仿真实现
 

全国物流仿真设计方案 一种基于FPGA的DDS设计方案与仿真实现

发布时间:2019-02-23 04:35:10 影响了:

  [摘要]介绍DDS的组成原理,利用VHDL语言在Altera公司的QuartusII 6.0软件平台上,采用VHDL语言利用元件例化的方法,设计并实现DDS的相位累加器和波形存储器两个主要数字环节。软件仿真和开发板仿真试验结果均表明,该方法的DDS输出波形正确且效果好。
  [关键词]DDSVHDL语言仿真
  中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)1110056-02
  
  目前,波形发生器的设计方法主要包括三种:传统直接频率合成技术(DS,Direct frequency Synthesis)、锁相式频率合成技术(PLL,Phase-Locked Loop)、直接数字频率合成技术(DDS,Direct Digital Frequency Synthesis)。经过多年的研究,对这三种主要的频率合成技术性能也得到了一些重要的结论[1-3]。其中,DDS方法具有高频率稳定度、高频率分辨率、频率转换时间极短、全数字化结构便于集成等优点。
  本文首先介绍了DDS的基本原理和控制方式等,同时针对FPGA开发系统及其主要描述语言VHDL语言进行了简要介绍,根据DDS产生原理设计了一种简单易实现的DDS实现方法,为信息技术教育的进一步发展提供了技术基础。
  
  一、DDS原理与FPGA开发系统
  
  (一)DDS基本原理
  根据DDS的产生原理,其在结构上可以分为两个主要部分,即数字控件和模拟控件。DDS的基本结构如图1所示。数字控件主要包括:相位累加器、ROM波形查询表;模拟控件主要包括:数模转换器DAC、低通滤波器LPF。
  图1中,相位累加器在参考时钟的控制下,以步长作累加输出;相位累加器输出的位二进制码作为波形存储器的地址,对波形ROM进行寻址;波形ROM输出的正弦幅度量化序列 经D/A转换成包络为正弦波的阶梯波;此时的频谱中除了主频外,还存在分布在, …,两边±处的非谐波分量[4],幅值包络为辛格函数,因此,为了取出主频
  必须在DAC的输出端接入截止频率为 的低通滤波器(LPF,Low Pass Filter)。
  
  (二)FPGA开发系统与VHDL语言
  可编程逻辑门阵列[5-6](FPGA,Field Programmable Gate Array)是一种用户可以自定义的高密度专用集成电路。FPGA器件在集成电路厂家按高容量密度大批量生产,用户在现场可通过专用的开发系统,根据专门的应用设计要求进行设计与编程实现。
  硬件描述语言(HDL,Hardware Describe Language)有很多种,但目前最为流行的主要包括VHDL和Verilog HDL两种。其中,VHDL语言与后者相比,在语法上更为严谨,虽然失去了一些灵活性和多样性,但从文档记录、综合性以及器件和系统级的仿真上讲,VHDL语言是一种更好的选择。因此,本文开发语言选择VHDL语言。
  
  二、算法与仿真设计
  
  (一)关键算法设计
  本文的设计要点主要围绕相位累加器、波形存储器两个关键器件展开,D/A转换器和低通滤波器分别利用FPGA实验箱上的DAC0832和LPF。如图2所示,为DDS数字控件的原理细化图,显然,相位累加器是由加法器和寄存器两个部分组成。
  1.相位累加器设计
  相位累加器由两个部分组成:N位加法器、N位寄存器。其原理如图2中相位累加器部分所示。每来一个时钟脉冲 ,加法器将频率控制字K与寄存器输出的累加相位数据相加,再把相加后的结果送至寄存器的数据输入端。寄存器将加法器在上一个时钟作用后所产生的相位数据反馈到加法器的输入端,以使加法器在下一个时钟作用下继续与频率控制字进行相加。相位累加器在时钟的作用下,进行相位累加,每次寄存器的输出值作为一个bits的相位量化序列 ,当相位累加器累加到满量时,就会产生一次溢出,完成一个周期性的动作。
  2.波形存储器设计
  波形存储器主要完成信号的相位序列 到幅度序列 的转化。本设计中波形存储器存储正弦波。用相位累加器的输出 作为波形存储器的取样地址,进行正弦波相位到幅值的转换,即可在给定的时间上确定输出波形的抽样幅值。bits的波形存储ROM相当于把0~2的正弦信号离散成 个样值序列,若波形存储ROM有D位数据位,则 个样值幅值以D位二进制数值固化在ROM中,按照地址的不同输出相应相位的正弦幅值。相位-幅度变换原理图如图2的波形存储器部分所示。
  
  (二)算法仿真系统设计
  本仿真系统的实现包括硬件环境和软件环境两个部分:
  硬件环境:GW48系列SOPC/EDA实验开发系统,其中的FPGA芯片采用Altera公司的Cyclone系列;DAC为0832LCN;时钟频率0.5Hz~50MHz可选。
  软件环境:QuatusⅡ6.0。
  1.仿真参数选取
  频率控制字k为N=8bits;相位累加器中的加法器,执行N比特加法;相位累加器中的寄存器(仿真中用一个D触发器来做),完成N比特数据的寄存;Rom查找表(.mif文件)的设计:利用matlab进行一个周期的cos波形的仿真,进而得到cos的幅值。此次仿真中,matlab中的一个余弦采样256个样点,由于产生的256个幅值点为有符号的小数,因此需要进行转换:首先,将256个(-1,1)的幅值,加1,转换为整数;另外,将第一步的结果乘以255后取整,得到范围在(0,255)的256个幅值点。将256个cos幅值点存入波形存储ROM中,并由.mif文件产生相应的.vhd数据文件,以便于元件例化。仿真的时钟频率分别选择750k、65536Hz。
  2.仿真设计流程
  图3为仿真仿真程序的设计流程。
  按照系统仿真的流程图,可以将仿真过程描述如下:
  step1:创建工程,建立dds_dds_gen.vhd文件,作为主文件。
  step2:建立第一个component的trigger.vhd文件。该文件作为step1中dds_dds_gen.vhd的一个例化器件。该component主要完成D触发器的功能。作为1.1节DDS的相位累加器中的寄存器。相位累加器实现过程信号的走向如图2中蓝色s1、s2、s3所示。
  step3:建立一个余弦波幅值存储文件,即ddsrom.mif文件,定义为256*8bits大小(可以用matlab产生一个周期的cos波形,将其幅值点按照参数设置一小节进行计算,然后copy到此ddsrom.mif文件中)。
  Step4:将step3的ddsrom.mif文件生成相应的component文件,即ddsromdata.vhd文件。该文件作为step1中dds_dds_gen.vhd的一个例化器件。
  step5:相位累加器中的寄存器在每个脉冲到来时会有一个输出,利用该输出(即step2中D触发器的输出),作为step3中波形存储文件的地址值,进行相应地址下余弦波幅值的查找。
  step6:相位累加器中的寄存器(D触发器)溢出一次,则表示完成了一个周期余弦波的输出。
  step7:改变频率控制字fwt,重新执行程序,即可出现另一频率的余弦波。
  
  三、仿真实验结果
  
  (一)软件仿真结果
  按照第二节的系统设计与仿真参数设计,频率控制字fwt分别为二进制00011001和00001001时的仿真结果如图4所示。
  (b)频率控制字为00001001
  图4不同fwt的波形幅值输出
  其中,clk代表时钟脉冲,fwt代表频率控制字,result1代表经本文设计的DDS的cos波形的十进制幅值输出。显然,随着频率控制字fwt的增加,输出波形的频率也随之增加。
  
  (二)实验箱仿真结果
  如表1所示,系统仿真过程中分别采用两种不同的时钟频率 和三种不同的频率控制字fwt,取值分别为=65536Hz或750kHz,fwt=00000010、00001010或01000001的示波器显示仿真结果。
  表1不同fwt和的波形仿真结果
  显然,软件仿真结果和实验箱的仿真结果均表明了本次DDS设计的正确性,同时,从表1中可以明显看出,输出波形稳定,效果较好。
  
  参考文献:
  [1]陈鹏,基于DDS的波形发生器设计[J].现代电子技术,2009,Vol.9,pp103-105.
  [2]张涛、陈亮,现代DDS的研究进展与概述[J].电子科技,2008,Vol.21.
  [3]倪鹏,DDS原理及其应用[J].科技资讯,2009,Vol.5.
  [4]史兴海、陈殿仁、赵爽、富强、王大宇,基于FPGA的高速DDS设计与仿真[J].长春理工大学学报(自然科学版),2009,Vol.32,pp85-87.
  [5]王本有、汪德如、苏守宝,基于FPGA的DDS信号发生器系统的设计,电子技术,pp40-42.
  [6]杨清,基于FPGA的直接数字频率合成器(DDS)的设计,科技资讯,2008,Vol.24,pp171-173.
本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文

猜你想看
相关文章

Copyright © 2008 - 2022 版权所有 职场范文网

工业和信息化部 备案号:沪ICP备18009755号-3