datasheet

基于单片机和CPLD的DDS正交信号源滤波器的设计

2018-04-02来源: eefocus关键字:单片机  CPLD  DDS  信号源滤波器

    1 前 言

    由于传统的多波形函数信号发生器需采用大量分离元件才能实现,且设计复杂,这里提出一种基于CPLD的多波形函数信号发生器。它采用CPLD作为函数信号发生器的处理器,以单片机和CPLD为核心,辅以必要的模拟和数字电路,构成的基于DDS(直接数字频率合成)技术、波形稳定、精度较高的多功能函数信号发生器。


    2 系统设计

    图1给出系统设计框图,该系统设计主要由CPLD电路、单片机电路、键盘输入液晶显示输出电路以及D/A转换电路和低通滤波器等电路组成。

6

    2.1 频率合成器

    该系统设计采用直接数字式频率合成DDS(Direct Digital Frequency Synthesis)技术,采用ROM存储所需的量化数据,按照不同频率求出频率控制字。以K为步进对相位累加器进行累加,每累加一次,取出累加器的高8 位数据送至ROM,ROM根据不同的地址取出不同的数据送TLC7524进行转换。再经过滤波即可得到所需要波形。由于DDS具有相对带宽很宽,频率转换时间极短,频率分辨率高等优点。此外,全数字化结构便于集成,输出相位连续,频率,相位和幅度均可实现程控。

    2.2 幅度控制模块

    幅度控制模块由DAC0832控制,利用其内部电阻分压网络,将其作为数控电位器。将 TLC7524的输出波形作为DAC0832的基准电压源输入,其输出波形为V=(N/256)×Vin,其中N为单片机输入的幅度控制字。通过一简单的电阻分压网络调整运放输出峰一峰值为0~5 V,再送至DAC0832由单片机控制其幅度实现幅度的步进,如图2所示。

6

    2.3 后级处理模块

    采用二阶巴特沃兹低通滤波器。巴特沃兹低通滤波器的幅度函数是单调下降的,由于n阶低通巴特沃兹低通滤波器的前(2n-1)阶导数在ω=0处为零,所以巴特沃兹低通滤波器也称最大平坦幅度滤波器。由于该设计要求滤除的频率分量主要为由D/A转换器产生的高频分量,与系统所要求保留的频率相差很远,所以滤波器在通频带内的平坦程度比其衰减陡度更为重要,而且巴特沃兹低通滤波器所要的元件值合乎实际情况,不像其他滤波器要求元件值那么苛刻。

    3 硬件电路系统设计

    3.1 总体设计思路

    整个系统以CPLD(EPM7128)、AT89S51、AT28C64(EEP-ROM)为核心。CPLD通过相位累加产生读取ROM的地址。以单片机为系统控制的核心,主要功能:给CPLD送频率控制字,即相位累加器的累加值,以此控制频率;给D/A转换器送幅度控制字D,控制波形幅度;处理红外遥控键盘;送数据给液晶LCD。EEPROM存储已固化好波形的数据。


    3.2 CPLD模块

    该模块通过一个4引脚的工业标准JTAG接口在系统编程(ISP),并且在编程过程中仅需5.0 V单电压供电。编程过程中,I/O引脚处于三态并被上拉,以消除板上冲突。上拉阻值为1 kΩ。因为该器件是在线编程的,为了便于调试,所以把下载口直接做在电路板上。考虑到电源为自制的稳压电源,CPLD受电源纹波干扰影响较大,所以在每个器件旁都加有去耦电容。


    3.3 D/A转换及幅度控制

    D/A转换采用TI公司的TLC7524,该器件转换速度可达10 M,幅度控制D/A转换采用MAX518,该器件是I2C总线的双D/A转换器,只需很少的端口线就可实现两路幅度的控制,大大节省单片机的端口。图3给出D/A转换电路。

6

    3.4 后级处理模块

    低通滤波器对阶梯正弦波进行傅里叶分析。其中若一周期采样点数为N,则其高次谐波能量主要集中在输出频率的(N±1)倍频上,其幅值为基频的 1/(N±1)。低通滤波可以平滑其台阶。另外还需滤除由DAC0832和TCL7524产生的1MHz和10 MHz的高频分量。因此根据设计的要求(输出最大频率为250 kHz,为了保证250 kHz频带内输出幅度平坦,又要尽可能抑制谐波和高频分量,综合考虑选用宽带运放LF351,用EWB仿真表明:截止频率为1 MHz~250 kHz以内幅度平坦。为了保证稳幅输出,选用AD817。该器件是一种低功耗、高速、宽带运算放大器,具有很强的大电流驱动能力。实际电路测量表明:当负载为100 Ω,输出峰-峰值为10 V时,其带宽大于500 kHz,幅度变化小于±1%。

    4 软件设计

    4.1 波形发生

    在CPLD内设置25位相位累加器,高9位为ROM地址,低16 位为产生精确的读ROM的点与点之间的时间间隔而设置的累加寄存器,即:单片机送一频率控制字,由低16位寄存器每个时钟都累加这个值,累加到低16位溢出,然后ROM的地址加1。ROM内的每个地址的数据表示当前波形的幅度,然后连续读出数据并被平滑滤波后得出平滑、稳定的波形。波形产生流程如图4所示。

     

4

    4.2 幅度控制

    系统的幅度控制由MAX518完成,利用其内部电阻网络实现数字电位器功能,输出电压作为TLC7524的基准电压。图5为幅度控制流程。

8


    5 电路系统调试与参数测试

    调试与测试所用仪器PC机、双踪模拟示波器YUAN-LONG、SS7200通用智能计数器、DT9205三位半数字万用表。在户1 kHz步进为20 mV下,测试电压幅度。表1为电压幅度测试,表2为输出频率测试。

7

 

    6 结论

    基于单片机和CPLD的DDS正交信号源,其频率幅度可精密控制,扩展输出频率达300 kHz,增加扫频输出功能。采用红外键盘控制频率和幅度,采用液晶同步显示信号的频率和幅度;输出端产生正弦波、方波、三角波、锯齿波,梯形波、短形波、频率突变的方波、尖脉冲数字信号等,且具有扫频输出的功能。测试结果表明,系统稳定可靠,人机交互界面友好,操作简单方便。


关键字:单片机  CPLD  DDS  信号源滤波器

编辑:什么鱼 引用地址:http://www.eeworld.com.cn/mcu/article_2018040238482.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:基于单片机的控制系统组成和电路设计
下一篇:基于AT89S52单片机的多功能电子万年历设计

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

单片机时钟的解析

时钟周期       时钟周期也称为振荡周期,定义为时钟脉冲的倒数(时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时钟周期就是1/12us),是计算机中的最基本的、最小的时间单位。       在一个时钟周期内,CPU仅完成一个最基本的动作。时钟脉冲是计算机的基本工作脉冲,控制着计算机的工作节奏。时钟频率越高,工作速度就越快。       8051单片机把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示)。机器周期       计算机中
发表于 2019-04-16
单片机时钟的解析

关于单片机通过串口发送浮点数信息

最近弄一个小东西的时候,需要将AD采集的数据,通过串口发送上位机。由于还得在下位机部分显示出来,所以这个AD采集的数据转换之后发送到串口,比较容易点。但是问题来了,以前的串口,只有从GPS模块接收的信息是浮点类型外。其他的东西,都只是把字符类型或者字符串类型的数据发到串口。 查阅了一点资料,这里是资料的链接。 单片机将浮点数从串口发送出去: 1.http://www.51hei.com/bbs/dpj-31223-1.html 采用了将浮点数转换为四个字节的数据,放到数组中,发送到串口。 2.http://blog.sina.com.cn/s
发表于 2019-04-12

单片机之STM32 中的 assert_param 函数

我们在学STM32的时候函数assert_param出现的几率非常大,上网搜索一下,网上一般解释断言机制,做为程序开发调试阶段时使用。下面我就谈一下我对这些应用的看法,学习东西抱着知其然也要知其所以然。4 断言机制函数assert_param我们在分析库函数的时候,几乎每一个函数的原型有这个函数assert_param();下面以assert_param(IS_GPIO_ALL_PERIPH(GPIOx));为例说一下我的理解,函数的参数IS_GPIO_ALL_PERIPH(GPIOx),我们可以寻找到原型#define IS_GPIO_ALL_PERIPH(PERIPH) (((*(uint32_t*)&(PERIPH))
发表于 2019-04-11
单片机之STM32 中的 assert_param 函数

STM32单片机常用库函数

必须在其中选择,抢占级别高的会打断其他中断优先执行,而响应级别高的会在其他中断执行完优先执行。4.FLASH:芯片内部存储器flash操作函数对芯片内部flash进行操作的函数,包括读取,状态,擦除,写入等等,可以允许程序去操作flash上的数据。 基础应用1,FLASH时序延迟几个周期,等待总线同步操作。推荐按照单片机系统运行频率,0—24MHz时,取Latency=0;24—48MHz时,取Latency=1;48~72MHz时,取Latency=2。所有程序中必须的 用法:FLASH_SetLatency(FLASH_Latency_2);位置:RCC初始化子函数里面,时钟起振之后。 基础应用
发表于 2019-04-11

C51单片机通过串口调节PWM波

PWM 是一种常用的电子控制技术PWM 本意为 脉冲宽度调制,可以简单理解为对占空比的控制。下图就是占空比图例,一个周期内高电平时间与周期时间的比值。现在的一些MCU自带PWM控制功能,但是51/52单片机还是没有这个功能。可以用程序自己实现。用到的51单片机资源如下:1.双定时器及定时器中断 2.串口和串口中断 下面看下程序:PWM.H#ifndef _PWM_H#define _PWM_H#include <reg52.h>#include <stdio.h>#include <stdlib.h>#define uint  unsigned int 
发表于 2019-04-09
C51单片机通过串口调节PWM波

51单片机之IIC&EEPROM的驱动程序

#include <reg52.h>#include "./delay/delay.h"sbit SCL = P2^0;sbit SDA = P2^1;bit ack = 0; unsigned char flag = 1;#define LCDPORT P0#define LCD_WRITE_DATA 1#define LCD_WRITE_COM 0sbit RS = P2^4;sbit RW = P2^5;sbit E = P2^6; #define SUCC 0#define ERR 1 void iic_start(){ SDA = 1;  //先操作
发表于 2019-04-08

小广播

何立民专栏

单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved