彭延水论文.docx
《彭延水论文.docx》由会员分享,可在线阅读,更多相关《彭延水论文.docx(17页珍藏版)》请在冰豆网上搜索。
彭延水论文
毕业设计(论文)
标题:
数字信号发生器的设计
学生姓名:
彭延水
系部:
汽车电子电子系
专业:
移动通信技术
班级:
通信1001
指导教师:
余谦
株洲职业技术学院教务处制
目录
目录Ⅰ
摘要Ⅱ
第一章绪论4
1.1课题描述4
1.2信号发生器外围结构4
第二章实验芯片简介6
2.1AT89C51的简介6
2.2DAC0832芯片9
第三章数字信号发生器的设计方案13
3.1方案简介13
3.2方案论证与比较14
3.3数字信号发生器硬件设计15
3.4数字信号发生器的软件实现18
3.5测量结果与误差分析21
总结22
致谢23
参考文献24
Ⅰ
摘要
数字信号发生器是在电子电路设计、自动控制系统和仪表测量校正调试中应用很多的一种信号发生装置和信号源。
而正弦信号是一种频率成分最为单一的常见信号源,任何复杂信号(例如声音信号)都可以通过傅里叶变换分解为许多频率不同、幅度不等的正弦信号的叠加,广泛地应用在电子技术试验、自动控制系统和通信、仪器仪表、控制等领域的信号处理系统中及其他机械、电声、水声及生物等科研领域。
关键词:
数字信号发生器、信号处理、应用
Ⅱ
第一章绪论
1.1课题描述
信号发生器广泛应用于电子工程、通信工程、自动控制、遥测控制、测量仪器、仪表和计算机等技术领域。
采用集成运放和分立元件相结合的方式,利用迟滞比较器电路产生方波信号,以及充分利用差分电路进行电路转换,从而设计出一个能变换出三角波、正弦波、方波的简易信号发生器。
通过对电路分析,确定了元器件的参数,并利用Multisim软件仿真电路的理想输出结果,克服了设计低频信号发生器电路方面存在的技术难题,使得设计的低频信号发生器结构简单,实现方便。
本研究的数字信号发生器是基于直接数字合成即DDS技术设计的,采用VHDL与C语言相结合的方法,通过查找存储于ROM查找表中的各种标准波形数据,产生频率可调并且高精度的正弦波、方波、锯齿波等常用信号,并且可以通过修改表中的数据,实现任意信号发生器.
1.2信号发生器外围结构
图1信号发生器外围结构示意图
如上为信号发生器结构示意图,本文介绍的是一种用51单片机构成的波形发生器,可产生三角波、方波、锯齿波和正弦波等多种波形,波形的周期可用程序改变,并可根据需要选择单极性输出或双极性输出,具有线路简单、结构紧凑、性能优越等特点。
第二章实验芯片简介
2.1AT89C51的简介
AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
外形及引脚排列如图所示
图2AT89C51芯片外形结构及引脚分布图
管脚说明:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P0口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
各端口管脚备选功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
2.2DAC0832芯片
DAC0832是8分辨率的D/A转换集成芯片。
与微处理器完全兼容。
这个DA芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广泛的应用。
D/A转换器由8位输入锁存器、8位DAC寄存器、8位D/A转换电路及转换控制电路构成。
图3DAC0832
DAC0832的主要特性参数如下:
分辨率为8位;
电流稳定时间1us;
可单缓冲、双缓冲或直接数字输入;
只需在满量程下调整其线性度;
单一电源供电(+5V~+15V);
低功耗,20mW。
DAC0832结构:
D0~D7:
8位数据输入线,TTL电平,有效时间应大于90ns(否则锁存器的数据会出错);
ILE:
数据锁存允许控制信号输入线,高电平有效;
CS:
片选信号输入线(选通数据锁存器),低电平有效;
WR1:
数据锁存器写选通输入线,负脉冲(脉宽应大于500ns)有效。
由ILE、CS、WR1的逻辑组合产生LE1,当LE1为高电平时,数据锁存器状态随输入数据线变换,LE1的负跳变时将输入数据锁存;
XFER:
数据传输控制信号输入线,低电平有效,负脉冲(脉宽应大于500ns)有效;
WR2:
DAC寄存器选通输入线,负脉冲(脉宽应大于500ns)有效。
由WR2、XFER的逻辑组合产生LE2,当LE2为高电平时,DAC寄存器的输出随寄存器的输入而变化,LE2的负跳变时将数据锁存器的内容打入DAC寄存器并开始D/A转换。
IOUT1:
电流输出端1,其值随DAC寄存器的内容线性变化;
IOUT2:
电流输出端2,其值与IOUT1值之和为一常数;
Rfb:
反馈信号输入线,改变Rfb端外接电阻值可调整转换满量程精度;
Vcc:
电源输入端,Vcc的范围为+5V~+15V;
VREF:
基准电压输入线,VREF的范围为-10V~+10V;
AGND:
模拟信号地
DGND:
数字信号地
DAC0832的工作方式:
根据对DAC0832的数据锁存器和DAC寄存器的不同的控制方式,DAC0832有三种工作方式:
直通方式、单缓冲方式和双缓冲方式。
DAC0832引脚功能电路应用原理图DAC0832是采样频率为八位的D/A转换芯片,集成电路内有两级输入寄存器,使DAC0832芯片具备双缓冲、单缓冲和直通三种输入方式,以便适于各种电路的需要(如要求多路D/A异步输入、同步转换等)。
所以这个芯片的应用很广泛,关于DAC0832应用的一些重要资料见下图:
D/A转换结果采用电流形式输出。
若需要相应的模拟电压信号,可通过一个高输入阻抗的线性运算放大器实现。
运放的反馈电阻可通过RFB端引用片内固有电阻,也可外接。
DAC0832逻辑输入满足TTL电平,可直接与TTL电路或微机电路连接。
DAC0832引脚功能说明:
DI0~DI7:
数据输入线,TLL电平。
ILE:
数据锁存允许控制信号输入线,高电平有效。
CS:
片选信号输入线,低电平有效。
WR1:
为输入寄存器的写选通信号。
XFER:
数据传送控制信号输入线,低电平有效。
WR2:
为DAC寄存器写选通输入线。
Iout1:
电流输出线。
当输入全为1时Iout1最大。
Iout2:
电流输出线。
其值与Iout1之和为一常数。
Rfb:
反馈信号输入线,芯片内部有反馈电阻.
Vcc:
电源输入线(+5v~+15v)
Vref:
基准电压输入线(-10v~+10v)
AGND:
模拟地,摸拟信号和基准电源的参考地.
DGND:
数字地,两种地线在基准电源处共地比较好.
2.DAC0832的引脚特性:
DAC0832是20引脚的双列直插式芯片。
各引脚的特性如下:
片选信号,和允许锁存信号ILE组合来决定是否起作用。
ILE——允许锁存信号。
写信号1,作为第一级锁存信号,将输入资料锁存到输入寄存器(此时,必须和、ILE同时有效)。
写信号2,将锁存在输入寄存器中的资料送到DAC寄存器中进行锁存(此时,传输控制信号必须有效)。
传输控制信号,用来控制。
DI7~DI0——8位数据输入端。
IOUT1——模拟电流输出端1。
当DAC寄存器中全为1时,输出电流最大,当DAC寄存器中全为0时,输出电流为0。
IOUT2——模拟电流输出端2。
IOUT1+IOUT2=常数。
RFB——反馈电阻引出端。
DAC0832内部已经有反馈电阻,所以,RFB端可以直接接到外部运算放大器的输出端。
相当于将反馈电阻接在运算放大器的输入端和输出端之间。
VREF——参考电压输入端。
可接电压范围为±10V。
外部标准电压通过VREF与T型电阻网络相连。
VCC——芯片供电电压端。
范围为+5V~+15V,最佳工作状态是+15V。
AGND——模拟地,即模拟电路接地端。
DGND——数字地,即数字电路接地端。
3.DAC0832的工作方式
DAC0832进行D/A转换,可以采用两种方法对数据进行锁存。
第一种方法是使输入寄存器工作在锁存状态,而DAC寄存器工作在直通状态。
具体地说,就是使和都为低电平,DAC寄存器的锁存选通端得不到有效电平而直通;此外,使输入寄存器的控制信号ILE处于高电平、处于低电平,这样,当端来一个负脉冲时,就可以完成1次转换。
第二种方法是使输入寄存器工作在直通状态,而DAC寄存器工作在锁存状态。
就是使和为低电平,ILE为高电平,这样,输入寄存器的锁存选通信号处于无效状态而直通;当和端输入1个负脉冲时,使得DAC寄存器工作在锁存状态,提供锁存数据进行转换。
根据上述对DAC0832的输入寄存器和DAC寄存器不同的控制方法,DAC0832有如下3种工作方式:
⑴单缓冲方式。
单缓冲方式是控制输入寄存器和DAC寄存器同时接收资料,或者只用输入寄存器而把DAC寄存器接成直通方式。
此方式适用只有一路模拟量输出或几路模拟量异步输出的情形。
⑵双缓冲方式。
双缓冲方式是先使输入寄存器接收资料,再控制输入寄存器的输出资料到DAC寄存器,即分两次锁存输入资料。
此方式适用于多个D/A转换同步输出的情节。
⑶直通方式。
直通方式是资料不经两级锁存器锁存,即CS*,XFER*,WR1*,WR2*均接地,ILE接高电平。
此方式适用于连续反馈控制线路和不带微机的控制系统,不过在使用时,必须通过另加I/O接口与CPU连接,以匹配CPU与D/A转换。
第三章数字信号发生器的设计方案
3.1方案简介
用一块AT89C51实现键盘输入扫描与LED数码管显示控制,同时通过UART向AT89C2051发送频率控制与波形转换档位选择信息。
AT89C2051通过UART接收AT89C51发送的控制信息,选择波形转换档位之后通过内部定时器在I/O口产生相应频率的方波信号,至此完成数字信号发生过程。
2051将产生的方波信号输入运算放大器组成的积分电路,得到相同频率的三角波信号,该三角波信号通过差分放大电路得到相同频率的正弦波信号。
该信号发生器能准确输出频率范围为16HZ—70KHZ的三种波形信号。
3.2方案论证与比较
信号发生部分:
方案一:
使用锁相环通过分频运算实现频率的步进,这种方案频率稳定度高,但程控比较困难,而且步进范围过大,鉴于锁相环技术比较复杂,没有采用这种方案。
方案二:
使用专用函数发生电路,如ICL8038或MAX038,通过D/A转换调整函数发生器控制电压实现频率的控制,这种方案可以使频率连续可调,省却了波形转换电路,但控制电压与频率的变化不是严格的线性关系,如果不加频率负反馈则频率无法稳定准确,加上频率负反馈将使电路大大复杂,稳定度也会下降,而且如果要实现比较大的带宽,就需要不断更换振荡电容,电路复杂程度进一步增加。
为避免调试困难,没有采用这种方案。
方案三:
使用单片机的定时器设置定时时间,每半个周期对I/O口取反一次,从而实现频率输出。
这种方案虽然在高频频段误差比较大,但是编程简单控制容易,权衡以上利弊,我们选择了方案三。
键盘与显示控制部分:
方案一:
使用并行控制器8279或IIC总线控制器ZLG7290构建键盘与显示部分,编程简单功能强大,但成本较高而且接口协议比较复杂,我们没有采用。
方案二:
使用单片机本身的I/O口做键盘和显示控制,能够节省大量外围器件,符合硬件软化的原则,而且本系统对按键和显示部分的要求并不高,所以我们采用了这种方案。
波形转换部分:
方案一:
使用专用的波形转换芯片,效果好但成本高,也没有典型的器件可以采用,故没有使用这种方案。
方案二:
使用分立元件构建转换电路,虽然特性不够好,但是简单易用,易于实现,故采用这种方案。
综上所述,我们选择了用两块51单片机实现数字信号发生器的设计,一块用于信号发生,一块用于键盘显示控制,电路简洁,编程容易,易于调试。
3.3数字信号发生器硬件设计
控制部分
(1)硬件连接与基本功能:
AT89C51的P0口通过330欧姆上拉电阻驱动8位共阴数码管的段选,P2口通过74LS244同相缓冲放大后驱动8位数码管位选,P1口接4*4键盘,键盘列选通过与门接到单片机外部中断INT1,UART口与AT89C2051的UART口连接实现通讯。
系统晶振使用24M,故一个机器周期为0.5US。
当按下数字键,则键盘显示相应的数字键,再按其他数字键则数码管发生相应的移位,所有数字输入之后,按下发送键,相应控制信息通过UART发送至AT89C2051。
图4硬件连接示意图
(2)键盘扫描部分设计
系统复位后,先令键盘行选P1低四位为低电平,列选高四位为高电平,当按下任意键,列选线被拉为低电平,经过与门后向单片机提出外部中断,以此判断有键按下。
此后关闭中断,进入键盘扫描程序。
键盘扫描的原理是先设定第一行为低电平,同时读取列选线,经过程序运算判断出按键位置,若所按键不在第一行,则继续扫描,扫描顺序依次类推。
(3)数码管显示部分设计系统复位后,8位数码管均显示0,当有键按下并经过判断之后,将对应键值显示到对应的数码管上。
按发送键后频率显示依然保持,直到有新的数字键被按下。
数码管动态显示根据视觉暂留原理设计,每选中一位后延时10MS左右,显示效果令人满意。
延时时间过长亮度会提高,但显示会发生闪烁,时间过短显示稳定功耗降低,但亮度下降。
由于数码管为共阴并且74LS244为同相总线驱动,故编程时设置相应的位选为0才可以选通该位,这个问题应该注意。
(4)UART通讯部分设计
因为51系列单片机本身就有硬件UART功能,所以这部分设计非常简单,只需将AT89C51与AT89C2051的UART对应连接起来既可。
UART工作于模式0,定时器0作为波特率发生器,波特率9600。
信号发生部分:
这部分使用AT89C2051最小系统完成。
AT89C2051通过UART接收到AT89C51发送来的频率与波形转换的分档信息之后,经过计算后装载定时器高低位寄存器,然后允许定时器中断,每次定时器溢出后对P1.0口取反,从而形成占空比为50%的相应频率的方波信号,定时时间为设定频率信号周期的一半。
因为AT89C2051只有一个定时器,所以定时器只能分时复用,即在通讯时作为波特率发生器,通讯结束之后作为信号发生定时器。
因P1.0为AT89C2051内部比较器输入端,为开漏输出,需加10K上拉电阻,否则不能发出标准方波信号。
其他三个I/O口线连接CD4051模拟开关,用来选择相应档位。
电路原理图如下:
图5信号发生电路原理图
波形转换部分:
(1)方波三角波转换部分设计
此电路使用高输入阻抗高速运放LF353构建积分电路,LF353转换速率达到13V/US,可以保证高频部分转换速度。
由于在不同频率下需要使用不同容量的反馈电容才能保证波形与幅度的准确,故使用CD4051模拟开关切换不同的反馈电容。
基本积分电路原理不再赘述,实验证明波形与输出幅度均令人满意。
(2)三角波正弦波转换部分设计
我们使用两只高性能差分对管LM394构建差分放大电路作为三角波正弦波转换电路,一只LM394作为差分放大级,一只LM394作为恒流源电路。
三角波经过差分放大并经过输出削波电容的波形转换,使三角波转换为圆滑正弦波。
由于输出波形和幅度大小与信号频率和输出削波电容的匹配有关,故此电容的接入也用CD4051分为八档,这八档与积分电路的电容选择联动,构成双刀八掷模拟开关。
实验证明,正弦波的波形良好,但是在同一档位内幅度变化比较大,如果分为16个档位效果会更好。
图6波形转换电路原理图
电源部分:
图7电源部分电路图
外部电源输入接入全桥,可以使用交直流电源,使用直流电源时可以进行极性转换,可以防止电源输入反接。
电源稳压部分由三端稳压提供正负12V电源供给运算放大器,7805提供正5V电源供给单片机。
单片机复位使用一般的阻容复位,实验证明复位可靠。
3.4数字信号发生器的软件实现
软件流程:
软件使用C51编制,开发环境为KEIL7.0。
2051部分软件设计流程非常简单,不再赘述,AT89C51控制部分软件流程图如下:
图8AT89C51控制部分软件流程图
设计程序:
ORG0013H
LJMPEXINT
ORG1000H
EXINT:
ORLP1,#0FH;P1口低4位为输出
JBP1.0,SERV1;选择锯齿波
JBP1.1,SERV2;选择三角波
JBP1.2,SERV3;选择矩形波
JBP1.3,SERV4;选择正弦波
RETI;中断返回
SETV1:
MOVA,#00H;初始化
MOVR3,#0FEH
MOVDPTR,#7FFFH;取入口地址
MM:
MOVX@DPTR,A;送转换
INCA
LCALLLOOP2;决定波形坡度
DJNZR3,MM;判断转移
SJMPEXINT
SERV2:
MOVA,#00H;初始化
MOVDPTR,#7FFFH;取入口地址
SS1:
MOVX@DPTR,A;送转换
LCALLLOOP2;决定波形坡度
SS2:
INCA
CJNEA,#0FFH,SS1;判断波形是否达到峰值
SS3:
DECA;波形开始下降
MOVX@DPTR,A;送转换
LCALLLOOP2;决定波形坡度
JNZSS3;判断波形是否达到谷值
SJMPEXINT;产生下一个周期
SERV3:
MOVA,#00H;初始化
MOVDPTR,#7FFFH;取入口地址
MOVX@DPTR,A;送转换
LCALLLOOP1;调用子程序
MOVA,#0FFH
MOVX@DPTR,A;送转换
LCALLLOOP2;调用子程序
SJMPEXINT;产生下个周期波形
SERV4:
MOVR5,#0FEH;置偏移量
SIN:
MOVA,R5
MOVDPTR,#500H;从表格中取数
MOVCA,@A+DPTR;送入寄存器中
MOVDPTR,#7FFFH;取入口地址
MOVX@DPTR,A;送转换
LCALLLOOP2
INCR5;偏移量加一
CJNEA,#0D9H,SIN
SJMPEXINT
该参考程序是由图1外围设置的硬件所决定的,全部程序使用2个子程序,即使LOOP1,LOOP2。
LOOP1延时5ms,LOOP2延时2.5ms,在矩形波中即做占空比调节,又可控制其周期,LOOP2用于SERV1,SERV2,SERV4均作调节频率(周期)之用。
LOOP1,LOOP2延时子程序,均采用多循环延时子程序设定,因硬件使用12MHz晶振,故不难得出延时时间。
3.5测量结果与误差分析
测试仪器使用60M带宽数字示波器,方波信号的波形与幅度完全令人满意。
三角波的波形很好,满幅度输出接近正负12V,频率改变以后波形良好,输出幅度有所变化,在可接受范围之内。
正弦波波形良好,由于分档比较少,出现在同一档位内输出幅度随着频率升高而降低的问题,若通过减小电容的方法提高输出幅度,则低频率下波形会因为输出幅度过大而出现一定的失真,这个问题可以通过增加档位的方法解决。
由于系统使用24M晶振,则16位定时器最多32767.5us溢出一次,v();则信号最低的频率是16Hz。
同样道理16位定时器最少0.5US溢出一次,则信号最高频率是1MHZ,但是频率升高以后程序本身的运行要占用大量时间,实际测量在70KHZ之内能够保证误差足够小。
在低频段频率相当精确,如果想进一步降低到超低频的话,可以在软件中设置一个计数器,但是频率上限将会下降。
如果使用高速单片机,如AVR或者DS89