数字式波形发生器的设计44444444444444.docx
- 文档编号:30732392
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:24
- 大小:175.74KB
数字式波形发生器的设计44444444444444.docx
《数字式波形发生器的设计44444444444444.docx》由会员分享,可在线阅读,更多相关《数字式波形发生器的设计44444444444444.docx(24页珍藏版)》请在冰豆网上搜索。
数字式波形发生器的设计44444444444444
淮北师范大学
课程设计成果报告
课程设计名称:
数字式波形发生器的设计
院别:
信息学院
年级专业:
2008级电子信息科学与技术
小组成员:
20081852031李传登
20081852033李鹏
20081852036廖纯生
20081852062王树周
20081852066吴桐
20081852073徐周泽
指导教师赵庆平老师
日期2010年6月20日
【数字式波形发生器工作原理】
一、波形发生器原理框图如图
(1)所示
D/A转换器
图
(1)波形发生器原理框图
二、直接地址计数器产生方法
工作过程是,假设如果计数器的位数为N位(模值=2N),则把波形的一个周期分为2N个等间距数据点(称之为抽样点)并存入数据存储器。
地址计数器不断地进行循环计数,就会产生出每一个周期为2N个固定点的波形。
该方法的特点是:
每一个波形周期的点数是固定的,每一个周期内,点与点之间的相位间隔相同。
但是,两个相邻周期波形之间的相邻两个点的相位间隔与其它点之间的相位间隔有可能会不相同。
当计数器的位数N增大时,这种相邻间隔的误差就可以忽略不计了。
如果产生的波形是循环读出的周期波形,则波形的频率是由两方面来决定的:
一方面,波形的频率是由地址计数器的计数时钟来决定的,当波形存储的点数一定时,计时器的计时时钟频率越快,读出一周期波形数据的时间就越短,生产输出波形的频率就越高,反之,则波形的频率将会越低;另一方面,波形的频率也由组成一周波形的点数来确定,当计数时钟频率一定时,一周期累的波形点数越多,读完一周波形所需的时间也就越长,则波形的频率就越低,反之,则波形的频率越高。
下面假设地址计数器的标准时钟频率为
,计数器的位数为N位,一个周期的波形点数为M个,输出波形的频率为
,则输出波形的频率
与时钟频率
、M的关系式为:
从上式可知,若
为一固定值时,波形的最小频率是:
由于波形的最高频率受到奈奎斯特抽样定理的限制,即至少每一周期要抽样两个点,所以可得输出波形的最大频率是:
【波形发生器设计中应考虑的几个问题】
一、D/A转换器的指标
波形发生器的特性很大程度上取决于D/A转换器的性能。
性能指标主要有D/A的转换速率和分辨率(位数)。
通常,告诉D/A的分辨率较低,目前常采用的有8位、10位和12位的D/A转换器。
8位的D/A转换器的分辨率有
=256个离散电压等级,而12位的D/A转换器的分辨率有
=4096个电压等级,因此,D/A转换器的位数越多,分辨率就越高,再现的波形的量化误差就越小,从而波形的失真度越小。
因此,应选择适合的分辨率的D/A转换器。
二、波形存储器的选择
存储器的选择可以根据波形产生的功能要求,可以选择随机存储器(RAM)或者只读存储器(EPROM)。
(1)随机存储器RAM
RAM存储器时,设计者可以通过计算机编程及I/O接口电路对RAM进行波形存储,实现任意波形和函数发生器,甚至,可以通过键盘输入方程式或者从显示器扫描曲线产生比较复杂的波形。
RAM存储方式可以通过计算机改变波形点数和分频系数两个参数来改变波形的频率。
RAM存储器与计算机实现波形发生器的原理框图如图
(2)所示。
D/A
转换器
低通
滤波
计算机
图
(2)计算机控制实现波形发生器的原理框图
(2)只读存储器EPROM
如果设计的波形发生器只要求实现集中确定的波形时,可预先利用EPROM编程器写好各种波形的数据表,然后通过计数器查表来产生波形。
EPROM存储的波形数据不能改变,因此信号频率的改变靠改变分频系数来实现。
EPROM存储方式的波形发生器电路结构简单
本实验选用EPROM只读存储器。
【波形发生器实现电路】
一、波形数据存储表
波形发生器产生的各种波形数据存储在存储器中,电路中的存储器选用2764EPROM,存储容量为8Kx8。
本设计电路的存储器只存了四种波形的数据表,每一种波形用1K个存储单元存储一个周期,公用4K个内存,其余4K可供扩展波形种类使用。
四种波形的数据表地址和对应的存储单元内容如下表
(1)所示。
从表中可以看出每一种波形的高三位地址
、
、
不变,只有
~
十位地址从全0变为全1。
波形
名称
计数器地址
存储
单元
内容
A12A11A10A9A8A7A6A5A4A3A2A1A0
十六
进制
正
弦
波
0000000000000
……………………………………………………………………………
0001111111111
0000
03FF
255sin(2∏i/1024)
i=0–1024
i指第i个单元
方
波
0010000000000
……………………………………………………………………………
0011111111111
0400
07FF
全0i=0–511
全1i=512-1023
三
角
波
0100000000000
……………………………………………………………………………
0101111111111
0800
0BFF
255xi/1024
i=0–511
255[1-(i-512)/512]
i=512-1023
阶
梯
波
0110000000000
……………………………………………………………………………
0111111111111
0C00
0FFF
255xK/N
K=0–N
K指第K个阶梯
N指总的阶梯数
每一个阶梯占1024//N个地址
表
(1)四种波形的数据表地址及对应的存储单元内容
二、地址计数器电路
地址计数器由三块74161构成最大模值为1024的计数器。
地址计数器从0000000000B计到全1111111111B,可循环产生1K个地址。
对4K个波形寻址时EPROM的
可直接接地,只要用开关S1、S2选择
、
从00到11,就可以实现四种波形的选择输出。
【实验所需元器件管脚图】
一、555定时器管脚图
二、2764EPROM管脚图
三74LS161管脚图
四、u741管脚图
五、DAC0832管脚图
【实验步骤】
一、555定时器构成的多谐振荡器输出测试
1、连接好多谐振荡器,从555定时器的3号引脚可以观测到输出的波形;
2、调节电位器
,并观察输出的波形,时电路输出标准时钟信号脉冲,此脉冲将作为计数器的74161的脉冲输入信号。
二、检验计数器的计数功能
1、在计数电路的三个74161的输出与低电平之间各接上一个发光二极管,提供脉冲信号,观察发光二极管的亮与灭情况;
2、理论上,发光二极管的亮与灭的情况为(以1代表亮,以0代表灭)
0000000000、0000000001、0000000010、0000000011、0000000100、0000000101
…………………………………………………………………………………………
1111111010、1111111011、1111111100、1111111101、1111111110、1111111111
循环计数。
三、在EPROM2764里写入数据
1、擦除EPROM2764中的数据。
然后把编号的程序写入;
2、下面为利用Matlab计算正弦波、方波、三角波等三种固化波形的一个周期的1024点的幅度数据的程序及结果。
(1)正弦波的波形数据产生
deltax=2*pi/1024;
fori=1:
1024
x(i)=(i-1)*deltax;
y(i)=sin(x(i))*127.5+127.5;
end
plot(y)
z=round(y)
z=
Columns1through10
128129130131131132133134135
……………………
Columns1021through1024
125126127127
(2)方波的波形数据产生
deltax=4/1024;
fori=1:
512
x(i)=-2+i*deltax;
yl(i)=255;
end
fori=513:
1024
x(i)=i*deltax;
yl(i)=0;
end
plot(y1)
z=round(yl)
z=
Columns1through8
255255255255255255255255
……………………
Columns1017through1024
00000000
(3)三角波的的波形数据产生
deltax=4/1024;
fori=1:
256
x(i)=-l+i*deltax;
yl(i)=127.5*(x(i)+1)+127.5;
end
fori=257:
768
x(i)=(i-257)*deltax;
y1(i)=127.5*(-x(i)+1)+127.5;
end
fori=769:
1024
x(i)=2+(i-769)*deltax;
yl(i)=127.5*(x(i)-3)+127.5;
end
plot(y1)
z=round(yl)
Z=
Columns1through10
128128129129130130131131132132
……………………
Columns1021through1024
126126127127
3、程序写好后,用黑纸吧EPROM2764盖住,避免其受到强光照射,导致其中数据丢失。
四、上述三个关键步骤完成后,确认无误,连接波形发生器电路,确认连线无误后,连接电源与地,从运算放大器U741的6号管脚(OUT)接出至示波器,通过波形选择开关,在示波器上显示出正弦波、三角波、方波、阶梯波等四种波形。
【课程设计实验体会】
(1)本实验设计涉及数学及电路多方面知识,其核心是关于EPROM中对波量化后,电路对应EPROM相对地址提取数据方法试验设计中闫尽量在最大利用EPROM空间,提高波形精度基础上设计可变地址访问以及循环电路。
笨电路用74LS161设计器扩展位数达到要求。
(2)电路中,对于3片74161扩展循环涉及中,利用进位控制实现总体上原理相对简单,而在连接电路并对其调试过程中遇到很多问题,比如在555定时器输出波形时发现其波形变化很大,频率不太稳定,选择适当电容可以解决问题。
(3)在整个实验验证过程中,输出波形幅度始终过小,可以对放大器D/A转换器独立电源提供解决。
(4)为了获得跟高的信号频率可以采取以下措施:
1,减小波形数据存储空间M,2,采用读出频率更高的EPROM.
(5)降低信号频率的方法:
1增加波形数据存储空间M,:
2,降低振荡器频率;3,增加分频计位数n。
(6)综合高低频率要求,只有采用高频的EPROM和增加分频器位数比较合适。
【波形发生器电路实验电路图】
图(3)波形发生器设计电路图
【附表】
采用汇编语言编写程序写入波形的数据
ORG0000H
JMPSTART
ORG000BH;定时器T0入口
JMPTime_Int
ORG0030H
START:
CONT1EQU30H;外循环次数
CONT2EQU31H;内循环次数
CONT3EQU32H;外循环次数
CONT4EQU33H;内循环次数
LineEQU34H;当前扫描行数
Row_CountEQU35H;总扫描列数
Key_NumEQU36H;键值
Read_BufEQU37H;读入键值暂寸
ADD_0832EQU7FFFH;DAC0832地址
MOVR0,#04H;默认是1KHz
MOVR1,#05H;默认是正弦波
MOVTMOD,#01H
MOVTL0,#0B0H
MOVTH0,#03CH
MOVR2,#10;中断程序执行10次R2变为0
SETBEA;开中
SETBET0
SETBTR0
;以上完成初始化
CJNER2,#00,Transform
Key_Scan_:
CALLScanKeyBoard;定时中断时间到,调用键盘扫描程序
MOVR2,#10
;波形判断分支程序************************************
Transform:
CJNER1,#05H,KEY5;R0是读入的键位值
AJMPSin;输出正弦波P0
KEY5:
CJNER1,#06H,KEY6
AJMPTriangle;输出三角波
KEY6:
CJNER1,#07H,KEY7
AJMPRectangle;输出矩形波
KEY7:
CJNER1,#08H,KEY8
AJMPTrapezoid;输出梯形波
KEY8:
CJNER1,#0AH,KEY10
AJMPSawtooth;输出锯齿波
KEY10:
CJNER1,#0BH,KEY11
KEY11:
AJMPPulse;输出尖脉冲波;
正弦波开始
Sin:
MOVR7,#00H;从第一个计数点0开始
DISP_SIN:
MOVA,R7
MOVDPTR,#SIN_TAB
MOVCA,@A+DPTR
MOVDPTR,#ADD_0832
MOVX@DPTR,A;输出波形
CALLDelay_t0
CJNER2,#00,DISP_SIN2
AJMPKey_Scan_
DISP_SIN2:
INCR7
AJMPDISP_SIN
SIN_TAB:
DB80H,83H,86H,89H,8CH,8FH,92H,95H;256点正弦表
DB98H,9CH,9FH,0A2H,0A5H,0A8H,0ABH,0AEH
DB0B0H,0B3H,0B6H,0B9H,0BCH,0BFH,0C1H,0C4H
DB0C7H,0C9H,0CCH,0CEH,0D1H,0D3H,0D5H,0D8H
DB0DAH,0DCH,0DEH,0E0H,0E2H,0E4H,0E6H,0E8H
DB0EAH,0ECH,0EDH,0EFH,0F0H,0F2H,0F3H,0F5H
DB0F6H,0F7H,0F8H,0F9H,0FAH,0FBH,0FCH,0FCH
DB0FDH,0FEH,0FEH,0FFH,0FFH,0FFH,0FFH,0FFH
DB0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FEH,0FEH
DB0FDH,0FCH,0FCH,0FBH,0FAH,0F9H,0F8H,0F7H
DB0F6H,0F5H,0F3H,0F2H,0F0H,0EFH,0EDH,0ECH
DB0EAH,0E8H,0E6H,0E4H,0E2H,0E0H,0DEH,0DCH
DB0DAH,0D8H,0D5H,0D3H,0D1H,0CEH,0CCH,0C9H
DB0C7H,0C4H,0C1H,0BFH,0BCH,0B9H,0B6H,0B3H
DB0B0H,0AEH,0ABH,0A8H,0A5H,0A2H,9FH,9CH
DB98H,95H,92H,8FH,8CH,89H,86H,83H
DB80H,7CH,79H,76H,73H,70H,6DH,6AH
DB67H,63H,60H,5DH,5AH,57H,54H,51H
DB4FH,4CH,49H,46H,43H,40H,3EH,3BH
DB38H,36H,33H,31H,2EH,2CH,2AH,27H
DB25H,23H,21H,1FH,1DH,1BH,19H,17H
DB15H,13H,12H,10H,0FH,0DH,0CH,0AH
DB9H,8H,7H,6H,5H,4H,3H,3H
DB2H,1H,1H,0H,0H,0H,0H,0H
DB0H,0H,0H,0H,0H,0H,1H,1H
DB2H,3H,3H,4H,5H,6H,7H,8H
DB9H,0AH,0CH,0DH,0FH,10H,12H,13H
DB15H,17H,19H,1BH,1DH,1FH,21H,23H
DB25H,27H,2AH,2CH,2EH,31H,33H,36H
DB38H,3BH,3EH,40H,43H,46H,49H,4CH
DB4FH,51H,54H,57H,5AH,5DH,60H,63H
DB67H,6AH,6DH,70H,73H,76H,79H,7CH
;正弦波结束
;三角波开始
Triangle:
MOVDPTR,#ADD_0832
MOVR6,#80H
DISP_TRI1:
MOVA,R6
MOVX@DPTR,A
CALLDelay_t0
;CALLDelay_t0
CJNER2,#00,DISP_TRI3
AJMPKey_Scan_
DISP_TRI3:
INCR6
INCR6
CJNER6,#00H,DISP_TRI1
DISP_TRI2:
DECR6
DECR6
MOVA,R6
MOVX@DPTR,A
CALLDelay_t0
CJNER2,#00,DISP_TRI4
AJMPKey_Scan_
DISP_TRI4:
CJNER6,#00H,DISP_TRI2
AJMPDISP_TRI1
;三角波结束
;矩形波开始
Rectangle:
MOVR7,#00H;先输出0号值
MOVDPTR,#ADD_0832
DISP_REC1:
MOVR6,#0FFH
MOVA,R6
MOVX@DPTR,A
CALLDelay_t0
CALLDelay_t0
CJNER2,#00,DISP_REC3
AJMPKey_Scan_
DISP_REC3:
INCR7
CJNER7,#80H,DISP_REC1
DISP_REC2:
MOVR6,#00H
MOVA,R6
MOVX@DPTR,A
CALLDelay_t0
CALLDelay_t0
AJMPKey_Scan_
DISP_REC4:
INCR7
CJNER7,#0FFH,DISP_REC2
AJMPDISP_REC1
;矩形波结束
;梯形开始
Trapezoid:
MOVDPTR,#ADD_0832
MOVR6,#00H
DISP_TRA1:
MOVA,R6;从FF到00
MOVX@DPTR,A
CALLDelay_t0;步进为1个t0
INCR6
INCR6
CJNER6,#0FEH,DISP_TRA1
MOVR7,#00H
INCA;调整
DISP_TRA2:
MOVX@DPTR,A;输出FF
CALLDelay_t0;步进为2个t0
CJNER2,#00,DISP_TRA4
AJMPKey_Scan_
DISP_TRA4:
INCR7
INCR7
CJNER7,#00H,DISP_TRA2;;;
INCR6
DISP_TRA3:
MOVA,R6;从FF到00
MOVX@DPTR,A
CALLDelay_t0;步进为1个t0
DECR6
DECR6
CJNER6,#0FFH,DISP_TRA3
INCR6
AJMPDISP_TRA1
;梯形结束
;锯齿开始
Sawtooth:
MOVDPTR,#ADD_0832
MOVR6,#0FFH
DISP_ST:
MOVA,R6;从FF到00
MOVX@DPTR,A
CALLDelay_t0;步进为4个t0
CALLDelay_t0
CJNER2,#00,DISP_ST1
AJMPKey_Scan_
DISP_ST1:
DECR6
AJMPDISP_ST
;锯齿结束
;尖脉冲开始
Pulse:
MOVDPTR,#ADD_0832
MOVR6,#0FFH
DISP_PULSE1:
MOVA,R6;从FF到00
MOVX@DPTR,A
CALLDelay_t0;步进为1个t0
DECR6
DECR6
CJNER6,#01H,DISP_PULSE1
MOVR7,#00H
DECA
DISP_PULSE2:
MOVX@DPTR,A;输出00
CALLDelay_t0;步进为2个t0
CJNER2,#00,DISP_PULSE4
AJMPKey_Scan_
DISP_PULSE4:
INCR7
INCR7
CJNER7,#00H,DISP_PULSE2
DECR6
DISP_PULSE3:
MOVA,R6;从00到FF
MOVX@DPTR,A
CALLDelay_t0;步进为1个t0
INCR6
INCR6
CJNER6,#00H,DISP_PULSE3;;;;
DECR6
AJMPDISP_PULSE1
;尖脉冲结束
;频率转移程序**************************************
Delay_t0:
CJNER0,#04H,KEY4;R0是读入的键位值
RET;输出1KHz波形
KEY4:
CJNER0,#03H,KEY3
AJMPt0_100Hz
KEY3:
CJNER0,#02H,KEY2
AJMPt0_10Hz
KEY2:
CJNER0,#01H,KEY1;默认输出1Hz波形
KEY1:
AJMPt0_1Hz
t0_1Hz:
MOVCONT1,#50
t0_Loop:
MOVCONT2,#29
DJNZCONT2,$
DJNZCONT1,t0_Loop
NOP
RET
t0_10Hz:
MOVCONT1,#31
DJNZCONT1,$
NOP
RET
t0_100Hz:
MOVCONT1,#5
DJNZCONT1,$
RET
;键盘扫描子程序**********************************
ScanKeyBoard:
MOVLine,#11111011B;第一行出0(P1.2=0)
MOVKey_Num,#00H;键盘初值
LP1:
MOVA,Line
MOVP1,A
MOVA,P1
MOVRead_Buf,A;暂寸读入数据,为消抖作准备
SETBC
MOVRow_Count,#04H;总列数
LP2:
RLCA
JNCKEY
LP3:
INCKey_Num;无键按下,键值加1
DJNZRow_Count,LP2
MOVA,Line
SETBC
R
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字式 波形 发生器 设计 44444444444444