基于单片机的函数信号发生器设的正文.docx
- 文档编号:27975270
- 上传时间:2023-07-07
- 格式:DOCX
- 页数:52
- 大小:461.34KB
基于单片机的函数信号发生器设的正文.docx
《基于单片机的函数信号发生器设的正文.docx》由会员分享,可在线阅读,更多相关《基于单片机的函数信号发生器设的正文.docx(52页珍藏版)》请在冰豆网上搜索。
基于单片机的函数信号发生器设的正文
第一章绪论
测量仪器从宏观上可分为两大类,即激励和检测,激励仪器主要是各类信号发生器。
信号发生器按工作原理可分为:
调谐信号发生器、锁相和合成信号发生器。
(1)调谐信号发生器是由调谐振荡器构成。
传统调谐信号发生器都是由调谐振荡器和统调的调幅放大器(输出放大器)加上一些指示电路构成。
这种信号发生器结构复杂、频率范围窄,而且可靠性、稳定性较差,但其价格低廉。
随着半导体器件的发展,其性能有所改善。
(2)锁相信号发生器是由调谐振荡器通过锁相的方法获得输出信号频率的信号发生器。
这种信号发生器频率精度和稳定度高,但要实现快速、程控比较困难,同时输出信号的频率分辨率较差。
(3)合成信号发生器是采用频率合成的方法构成的信号发生器。
由于合成信号发生器具有较高的频率稳定度,很容易实现数字显示频率,因此,频率分辨率高和频率的设定重复性好,以及能方便实现频率的程序控制是合成信号发生器的重要特点。
随着数字集成电路和微电子技术的发展,直接数字合成技术(DirectDigitalSynthesis,简称DDS)将先进的数字处理技术与方法引入信号合成领域,优越的性能和突出的特点使其成为现代频率合成技术中的佼佼者。
DDS器件采用了高速数字电路和高速D/A转换技术,具备了频率转换时间短、相对带宽宽、频率分辨率高、输出相位连续和相位可快速程控切换等优点,可以实现对信号的全数字式调制。
而且,由于DDS是数字化高密度集成电路产品,芯片体积小、功耗低,因此可以用DDS构成高性能频率合成信号源来取代传统频率信号源产品。
图1.1DDS技术原理框图
1.2DDS的工作原理
直接数字式频率合成技术原理如图1.1所示。
以合成正弦波为例,首先,把一个周期的弦波按一定的相位间隔分成若干离散点,求出相应点的正弦函数值,并用二进制数表示,将这些数值依次写入ROM中,构成一个正弦表,频率合成是在标准时钟的作用下,相位累加器按一定的间隔输出相应相位点的正弦函数值,经D/A转换器转换为阶梯状的正弦波,最后经低通滤波器对阶梯正弦波进行平滑滤波,即可输出较为标准的正弦波在特定的时钟频率下,输出的正弦波频率取决于相位累加器累加数值K,即fo=Kfc/2A(式1一1)
由1-1式可知,K值越大,则正弦波的频率越高,通过改变频率控制字K可以改变DDS输出频率,对输出信号的相位控制是通过给相位累加器设置不同的初值来实现的。
DDS技术具有传统信合成方法所不具备的许多特点:
(1)频率分辨率高:
由
可得分辨率为△f=
/2N,若时钟频率
不变,DDS的频率分辨率就由相位累加器的位数N决定。
因为N一般取得很大。
(2)频率切换快
DDS是一个开环系统,无任何反馈环节,这种结构使得DDS的频率转换时间极短。
在DDS的频率控制字
改变之后,需经过一个时钟周期之后按照新的相位增量累加,才能实现频率的转换。
因为频率转换的时间等于
的传输时间,也就是一个时钟周期的时间。
时钟频率越高,转换时间越短。
再加上低通滤波器为主的器件响应时间很短,使得高速DDS系统的频率切换时间可达到纳秒级。
(3)输出相对带宽较宽
输出频率带宽为50%
(理论值),考虑到低通滤波器的特性和设计难度以及对输出信号杂散的抑制,DDS实际输出频率范围可达:
0^40%
。
(4)频率变化时相位连续
改变DDS输出频率,实质就是改变相位增长率。
而相位函数的曲线是连续的只是在改变频率的瞬间其频率发生了突变,因而保持了信号相位的连续性。
(5)输出信号灵活
在DDS内部加上相应控制如FM调频控制、PM调相控制和AM调幅控制,即可方便灵活地实现调频,调相和调幅功能,产生FSK,PSK,ASK和MSK等信号。
改变ROM中存储的数据,可以实现任意波形输出。
(6)杂散抑制差
由于DDS采用全数字结构,不可避免地引入了杂散。
其来源主要有三个:
相位累加器相位舍位造成的杂散;幅度量化误差(由存储器有限字长引起)造成的杂散,DAC非理想特性造成的杂散。
(7)输出带宽较窄
由于DDS内部DAC和波形存储器的工作速度限制,使得DDS输出的最高频率有限,不能直接运用于微波频段。
1.3本文的主要研究内容
本论文的任务是根据信号发生器的特点和应用情况,结合新一代高性能芯片设计一种使用简单、性能优良的信号发生器。
该信号发生器可输出正弦波、三角波、方波;若再进一步开发控制算法,可具有AM,FM,PM,FSK,PSK,ASK调制功能以及扫频等功能。
本设计的主要工作如下:
(1)比较多种信号发生器的工作原理,分析它们的优缺点,最后确定了以DDS技术为核心研制信号发生器的方案。
对DDS的工作原理和优缺点做了简单的介绍和分析。
比较了不同类型的DDS芯片的特点,并做出选择
(2)系统总体方案设计。
将DDS信号发生器的系统分为2部分:
信号的产生与控制、人机交互以及信号的处理。
(3)系统的硬件设计。
完成系统的硬件总体设计,并就实际设计中出现的问题提出了处理的方法。
(4)系统软件设计部分主要完成:
正弦波、三角波、方波的控制输出。
第二章方案设计与论证
2.1方案一:
本方案直接采用凌阳SPCE061A作为波形发生器。
由键盘键入信号波形、频率选择,经MCU换算,得出的具体控制方法;通过两路DAC输出模拟信号。
凌阳SPCE061A在这方面的设计为我们提供了极大的方便,用它实现的好处在于,外围电路极其简单,DAC的编程方面又提供及其便利的编程环境。
外围电路的设计包括三大部分,第一是键盘控制电路的设计,这里采用4*4键盘,由IOA的低八位进行控制,把键盘上的行和列分别接在IOA0~IOA3和IOA4~IOA7上,采用外部中断来中断所输出波形,以便进入下一波形的编辑和输出。
第二是显示电路的设计,这里为了能显示输出波形参数,采用带数据缓存器和驱动的LCD1602显示屏。
这样只占用11个I/O口即可完成显示设计要求。
第三是滤波和电压转换电路的设计,滤波采用低通滤波器,滤除DAC转换过程中形成的高频小锯齿波。
另外由于凌阳SPCE061A单片机DAC输出为电流输出,为满足达到5V的电压输出,外接OP07运算放大器进行放大,加1千欧姆电阻进行电流信号到电压信号的转换。
本设计的特点是全面采用数字电路方案,因而工作稳定可靠。
利用单片机控制管理,使频率设置和占空比调整等操作可用键盘输入,十分方便。
2.2方案二:
本设计方案采用多波形宽频率范围信号发生器MAX038等新器件产生波形和频率,控制与管理电路部分使用SPCE061A单片机以及键盘显示电路。
MAX038是一个精密高频波形产生器。
它能产生频率高达20MHz的正弦波、三角波、方波等脉冲信号,其压控振荡器的频率分粗调和细调两层控制。
在本电路中,用于粗调的控制电压(电流)由一个12位的DAC产生,使输出频率近似等于N倍基准频率。
而细调电压则由数字锁相电路MC145151和环路滤波器MAX427产生,由锁相反馈环将频率fo=Nfr锁定。
这种方案的优点是频率合成器工作更可靠,锁定更迅速。
另外MAX038还包括占空比调整电路、波形同步电路、相位检测电路、波形切换开关和电压基准源等电路,所需外部元件少,使用很方便。
控制和管理电路由SPCE061A单片机及外围电路组成。
其主要用于对键盘输入的波形和频率选择等数据进行译码,计算出相应的控制参数,控制频率合成器输出正确的信号,并将其频率和波形参数用LED显示出来。
对于小型通用信号产生器而言,这是一个比较理想的设计方案。
2.3方案比较
第一种方案设计外围电路简单,能够满足本设计的要求,这里考虑到短时间内设计既要成型,采用第一种方案。
第二种设计方案的波形调节范围较小,可开发扩展的空间很小。
比较适合用到专门的波形产生。
所以在本次毕业设计我选择第一种方案。
第三章专用器件说明
3.1SPCE061单片机介绍
SPCE061A是继μ’nSP™系列产品SPCE500A等之后凌阳科技推出的又一款16位结构的微控制器。
与SPCE500A不同的是,在存储器资源方面考虑到用户的较少资源的需求以及便于程序调试等功能,SPCE061A里只内嵌32K字的闪存(FLASH)。
较高的处理速度使μ’nSP™能够非常容易地、快速地处理复杂的数字信号。
因此,与SPCE500A相比,以μ’nSP™为核心的SPCE061A微控制器是适用于数字语音识别应用领域产品的一种最经济的选择。
3.1.1性能:
16位µ’nSP&8482;微处理器;
工作电压(CPU)VDD为2.4~3.6V(I/O)VDDH为2.4~5.5V
CPU时钟:
0.32MHz~49.152MHz;
内置2K字SRAM;
内置32KFLASH;
可编程音频处理;
晶体振荡器;
系统处于备用状态下(时钟处于停止状态),耗电仅为2µA@3.6V;
2个16位可编程定时器/计数器(可自动预置初始计数值);
2个10位DAC(数-模转换)输出通道;
32位通用可编程输入/输出端口;
14个中断源可来自定时器A/B,时基,2个外部时钟源输入,键唤醒;
具备触键唤醒的功能;
使用凌阳音频编码SACM_S240方式(2.4K位/秒),能容纳210秒的语音数据;
锁相环PLL振荡器提供系统时钟信号;
32768Hz实时时钟;
7通道10位电压模-数转换器(ADC)和单通道声音模-数转换器;
声音模-数转换器输入通道内置麦克风放大器和自动增益控制(AGC)功能;
具备串行设备接口;
具有低电压复位(LVR)功能和低电压监测(LVD)功能;
内置在线仿真电路ICE(In-CircuitEmulator)接口;
具有保密能力;
具有WatchDog功能。
3.1.2应用领域
家用电器控制器:
冰箱、空调、洗衣机等白色家电
仪器仪表:
数字仪表(有语音提示功能)
电表、水表、煤气表、暖气表
工业控制
智能家居控制器
通讯产品:
多功能录音电话、自动总机、语音信箱、数字录音系统产品
医疗设备、保健器械(电子血压计、红外体温监测仪等)
体育健身产品(跑步机等)
电子书籍(儿童电子故事书类)、电教设备等
语音识别类产品(语音识别遥控器、智能语音交互式玩具等)
3.1.3结构概览
图3.1结构概览
3.1.4通用I/O口的使用:
SPCE061A提供了位控制结构的I/O端口,每一位都可以单独用于数据输入或输出。
每个独立的位可通过以下3种控制向量来作设定:
1.数据向量Data2.属性向量Attribution3.方向控制向量Direction每3个对应的控制向量组合在一起,形成一个控制字,用来定义相对应I/O端口位的输入输出状态和方式。
例如,假设需要IOA0是下拉输入引脚,则相对应的Data、Attribution和Direction的值均被设为“0”。
如果需要IOA1是带唤醒功能的悬浮式输入引脚,则Data、Attribution和Direction的值被设为“010”。
与其它的单片机相比,SPCE061A除了每个I/O口可以单独定义其状态外,每个对应状态下的I/O端口性质电路都是内置的,在实际的电路中不需要再外接。
例:
设A口为带下拉电阻的输入端口,在连接硬件时不用再外接下拉电路。
A口和B口的Data、Attribution和Direction的设定值均在不同的寄存器里,用户在进行I/O端口设置时要特别注意这一点。
I/O端口的组合控制设置如表3.1:
表3.1I/O端口的控制向量组合
Direction
Attribution
Data
功能
是否带唤唤醒功能
功能描述
0
0
0
下拉*
是
带下拉电阻的输入引脚
0
0
1
上拉
是
带上拉电阻的输入引脚
0
1
0
悬浮
是
悬浮式输入引脚
0
1
1
悬浮
否
悬浮式输入引脚***
1
0
0
高电平输出
(带数据反相器)
否
带数据反相器的高电平输出
(当向数据位写入“0”时输出“1”)
1
0
1
低电平输出
(带数据反相器)
否
带数据反相器的低电平输出
(当向数据位写入“1”时输出“0”)
1
1
0
低电平输出
否
带数据寄存器的低电平输出
(无数据反相功能)
1
1
1
高电平输出
否
带数据寄存器的高电平输出
3.1.5D/A转换
SPCE061A为音频输出提供两个DAC通道:
DAC1和DAC2,分别由经由DAC1和DAC2引脚输出。
DAC的输出范围从0x0000到0xFFFF。
如果DAC的输出数据被处理成PCM数据,必须让DAC输出数据的直流电位保持为0x8000,且仅有高10位的数据有作用。
DAC1和DAC2的输出数据应写入P_DAC1(写)($7017)和P_DAC2(写)($7016)单元。
上电复位后,两个DAC均被自动打开,此时会消耗少量的电流(几毫安)。
所以如不需要用它们,尽量将P_DAC_Ctrl(写)($702AH)单元的第1位设为‘1’,关闭DAC输出。
P_DAC2(读/写)(7016H)
DAC2是个10位的D/A转换单元。
在DAC方式下,该单元带有10位的缓冲寄存器DAR2。
表3.2P_DAC2(读/写)的DAR2
P_DAC2(写):
通过此单元直接写入10位数据到10位寄存器DAR2,来锁存DAC2的输入数值(无符号数)。
P_DAC2(读):
从DAR2内读出10位数据。
P_DAC1(读/写)(7017H)
DAC1是个10位的D/A转换单元。
在DAC方式下,该单元带有10位的缓冲寄存器DAR1。
表3.3P_DAC1(读/写)的DAR1
P_DAC1(写):
通过此单元直接写入10位数据到10位寄存器DAR1,来锁存DAC1的输入数值(无符号数)。
P_DAC1(读):
从DAR1内读出10位数据。
P_DAC_Ctrl(写)(702AH)
表3.4P_DAC_Ctrl单元的b3~b8的控制功能
DAC音频输出方式的控制单元(如表3.4所示),其中第5~8位用于选择DAC的数据锁存方式;第3、4位用来控制A/D转换方式;第1位为‘0’,用于双DAC音频输出。
b9~b15为保留位。
表3.4详细地列出了P_DAC_Ctrl单元的b3~b8的控制功能。
3.1.6IDE开发平台的使用
μ’nSP™集成开发环境集程序的编辑、编译、链接、调试以及仿真等功能为一体。
具有友好的交互界面、下拉菜单、快捷键和快速访问命令列表等,使编程、调试工作方便且高效。
此外,它的软件仿真功能可以在不连接仿真板的情况下模拟硬件的各项功能来调试程序。
1.新建项目的方法步骤:
用鼠标左键单击File下拉菜单New弹出New对话框,在该窗口中选中Project标签并在File的文本框中键入项目的名称。
在Location下的文本框中输入项目的存取路径或利用该文本框右端的浏览按钮制定项目的存储位置用鼠标左键单击New对话框里的OK按钮,则项目建立完成。
2.在项目中建立C文件的方法:
在新建项目下,点击菜单File下拉菜单New弹出New对话框。
点击μ’nSP™IDECFile,在File下的文本框内键入文件名称,OK。
3.在项目中新建汇编文的方法:
在新建项目下,点击菜单File下拉菜单New弹出新建文件/项目的对话框。
点击μ’nSP™IDEASMFile,在File下的编辑框内写入文件名称,OK
4.在项目中新建头文件的方法:
在新建项目下,点击菜单File下拉菜单New弹出新建文件/项目的对话框。
点击μ’nSP™IDEHFile,在File下的编辑框内写入文件名称,OK。
5.在项目中新建文本文件在新建项目下,点击菜单File下拉菜单New弹出新建文件/项目的对话框。
点击μ’nSP™IDETextFile,在File下的编辑框内写入文件名称,OK。
6.在项目中添加删除文件的方法:
可通过菜单途径用鼠标左键单击Project菜单里AddtoProject选项中的Files或Resource子项,激活AddFiles对话框。
3.1.7PWM输出
凌阳SPCE061A提供了一种很好的方波发生机制,就是APWM调制,通过写入P_TimerA_Ctrl($700BH)单元的第6~9位,可选择设置APWM输出波形的脉宽占空比;同理,写入P_TimerB_Ctrl($700DH)单元的第6~9位,便可选择设置BPWM输出波形的脉宽占空比。
我们可以将IOB8设置成同相输出端口,通过设置P_TimerA_Ctrl(写)($700BH)的第0~5位来选择TimerA的时钟源(时钟源A、B)。
设置该单元的第6~9位,TimerA将输出不同频率的脉宽调制信号,即对脉宽占空比输出APWM进行控制。
这里为了得到最标准的波形采用这种方式来实现标准方波。
3.1.8SPCE061A的时钟和定时器/计数器
SPCE061A时钟电路由两部分组成----实时时钟产生电路与频率变换电路。
1)实时时钟RTC(RealTimeClock)
µ’nSP™的时钟源电路是采用晶体振荡器电路,如图2.10为其接线图。
外接晶振为32768Hz,(推荐使用外接32768Hz晶振,因RC阻容振荡的电路时钟不如外接晶振准确)。
32768Hz为实时时钟,通过其分频可提供多种实时时钟中断,常用于钟表、延时以及其它与时间相关类产品。
(例用作唤醒的中断来源IRQ5_2Hz,系统每隔0.5秒被唤醒一次,由此得精确计时基准)。
RTC振荡器有两种工作方式:
强振模式和自动弱振模式。
用户可以根据需要调整该值。
2)工作频率设置
SPCE061A的工作时钟频率取决于系统时钟(Fosk)与CPU时钟(CPUCLK)。
这两时钟电路由PLL锁相环倍频电路和分频电路组成,如图2—11所示。
PLL锁相环电路将实时时钟32768Hz倍频,调整至系统时钟Fosk。
分频电路将系统时钟Fosk分频,得到CPU时钟(CPUCLK)。
系统时钟选频P_SystemClock单元的第7、6、5位
系统时钟选频P_SystemClock单元的第2、1、0位
图3.2时钟系统结构
系统预设的Fosk频率为24.576MHz,CPUCLK频率为Fosk/8。
用户可以通过对(7013H)编程来调整Fosk与CPUCLK的频率。
P_SystemClock单元控制功能参见表3.5。
表3.5P_SystemClock(7013H)单元功能
位
B7~b5
b4*
b3
B2~b0
功
能
Fosc选择
b7
b6
b5
Fosc
0
0
0
24.576MHz**
0
0
1
20.48MHz
0
1
0
32.768MHz
0
1
1
40.96MHz
1
-
-
49.152MHz
睡眠状态下
RTC工作状态设置
1:
在睡眠状态下,32768Hz时钟仍处于工作状态(预设);
0:
睡眠状态下,32768Hz时钟被关闭
RTC强弱模式设置
1:
RTC时钟处强振模式;
0:
RTC时钟处于自动弱振模式(预设)
CPUCLK选择
b2
b1
b0
CPUCLK
0
0
0
Fosc
0
0
1
Fosc/2
0
1
0
Fosc/4
0
1
1
Fosc/8**
1
0
0
Fosc/16
1
0
1
Fosc/32
1
1
0
Fosc/64
1
1
1
停止
(睡眠状态)
*只有当b0~b2同时被设为“1”时(即睡眠状态)b4设置才有效。
**上电复位或系统从备用状态(睡眠状态)被唤醒后,预设的Fosc=24.576MHz,CPU时钟频率为Fosc/8。
可见:
b0~b2位用来改变CPUCLK时钟频率与工作状态,若将第0~2位设为“111”可以使CPU时钟停止工作,系统切换至低功耗的睡眠状态。
b3、b4位用来设置实时时钟RTC的工作模式。
B3位用来设置RTC工作方式:
RTC振荡器有两种工作方式:
强振模式和自动弱振模式;b4位用来设置RTC振荡器的睡眠状态。
处于强振模式时,RTC振荡器始终运行在高耗能的状态下。
处于自动弱振模式时:
系统上电复位(poweronreset)后的前7.5秒内处于强振模式,然后自动切换到弱振模式以降低功耗。
CPU被唤醒后预设的时钟频率为Fosc/8,用户可以根据需要调整该值。
b5~b7位可以改变系统时钟Fosc的频率。
3)时间基准信号
时基信号发生器的结构如图3.3所示。
通过对32768Hz实时时钟源分频而产生时基信号。
产生的信号可分三类:
①时基信号产生器的频率选择器TMB1为TimerA的B时钟源提供各种频率选择信号;②TMB1、TMB2为中断系统的(IRQ6)中断源提供信号;③时基信号产生器还可以通过分频产生2Hz、4Hz、1024Hz、2048Hz及4096Hz的时基信号,为中断系统提供各种实时中断源(LRQ4和IRQ5)信号。
P_Timebase_Setup(写)(700EH)时基信号发生器通过编程该单元来选择时基信号频率。
该单元各位的功能描述见表3.6。
表3.6P_Timebase_Setup(700EH)单元功能描述
位
B15~b4
b3~b2
b1~b0
功
能
---
TMB2频率选择
b1
b0
TMB2
0
0
128Hz
0
1
256Hz
1
0
512Hz
1
1
1024Hz
**TMB2预设为128Hz
TMB1频率选择
b1
b0
TMB1
0
0
8Hz
0
1
16Hz
1
0
32Hz
1
1
64Hz
*TMB1预设为8Hz
P_Timebase_Clear(写)(700FH)单元是控制端口,设置该单元可以完成时基计数器复位和时间校准。
向该单元写入任一数值后,时基计数器将被复‘0’,可利用此
单元对时基信号产生器进行精确的时间校准。
图3.3时基信号发生器结构
4)Timer定时器/计数器
图3.4TimerA结构
SPCE061A提供了两个16位的计时/计数器:
TimerA和TimerB。
TimerA为通用计数器;其结构如图3.4所示。
TimerA由时钟源A和时钟源B进行“与”操作而形成。
TimerB为多功能计数器,其结构如图3.5所示。
TimerB的时钟源仅为时钟源C。
时钟源A与时钟源C是高频时钟来源,来自PLL锁相环的晶体振荡器输出Fosc;时钟源B的频率来自32768Hz实时时钟系统,也就是说,时钟源B可以作为精确的定时器。
图3.5TimerB结构
*定时器/计数器功能有三:
①计数溢出后会产生一个溢出信号(TAOUT/TBOUT)送CPU中断系统,以产生定时器中断信号;
②定时器溢出信号还可以用于触发ADC输入的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 函数 信号发生器 正文