一、实验目的 返回
1.理解实用信号源设计的基本原理。
2.掌握实用信号源的软件设计方法。
1.外接示波器观察数字合成信号源产生的波形,设定不同的幅度和频率,观察所得波形的变化。
2.用信号源高级设置设定波形输出。
3.使用键盘试验板上的按键,作为信号源的控制和数字按键。
4.输出要求的复杂组合波形的信号。
1.计算机 1台
2.SJ-8002B电子测量实验箱 1台
3.键盘实验板 1块
4.数字示波器 1台
四、实验原理
1.直接数字合成基本原理
(1)DDS组成原理
直接数字合成(Direct Digital Synthesis)的基本原理是基于取样技术和计算技术,通过数字合成来生成频率和相位对于固定的参考频率可调的信号。其完整的DDS原理框图如图1所示。
图1 DDS组成原理
主要由:相位累加器、ROM波形存储器、DAC数模转换器以及低通滤波器组成。整体的工作原理如下:首先相位累加器根据输入的频率控制码输出相位序列,并作为波形存储器RAM的地址,RAM里面可以是预先存放的固定波形的一个周期的幅值编码,也可以是用户在使用过程中存入的任意波形的幅度编码,这样RAM的数据线上就产生了一系列的幅度编码数字信号,然后把该编码经过D/A转换得到模拟的阶梯电压,最后经过低通滤波器使其平滑后即得到所需要的模拟波形。
频率控制字和时钟频率共同决定着DDS输出信号的频率,频率分辨率正比于系统的时钟,而反比于相位累加器的位数。
它们之间的关系满足: (公式1)
相应的,其频率分辨率为: (公式2)
(2)相位累加器原理
如果改变地址计数器计数步进值(即以值来进行累加),则在保持时钟频率和ROM数据不变的情况下,可以改变每周期采样点数,从而实现输出频率的改变。例如:设存储器中存储了个数据(一个周期的采样数据),则地址计数器步进为1时,输出频率,如果地址计数步进为,则每周期取样点数为,输出频率
(3)DDS的性能
DDS信号源输出的信号实际上是以时钟的速率对波形进行取样,从获得的样本值中恢复出来的。根据取样定理,所以。实际中一般取。当时,输出频率最小,。输出频率的分辨率由相位累加器的位数决定,即 。
例如:参考时钟频率为1GHz,累加器相位为32位,则频率分辨力为0.233Hz。而改变时,其频率分辨力不会发生变化,因此DDS可以解决快捷变换与小步进之间的矛盾。由于D/A、存储器等器件的限制,DDS输出频率的上限不高,目前仍只能达到几十MHz。
2.信号源硬件原理图
图 2 硬件原理图
3.程序中高级设置输出波形原理
信号源高级设置包括波形,频率相关(时钟频率,步进),幅度相关(幅度初调,幅度微调)等几部分的设置。
①频率设置
频率设置
——输出信号频率。
——时钟频率,可取值80M,40M,20M,10M,5M,1.25M,625K,156.25K。
N——SJ—8002B主板的相位累加器是24位,故N=24。
K——频率控制字,其大小? 0≤K<2N-4 。
H——步进高4位,取值范围0~15。
M——步进中8位,取值范围0~255。
L——步进低8位,取值范围0~255。????????? ????
例如:选择“时钟频率”=80MHz,“步进高位”H=0,“步进中位”M=5,“步进低位”L=25,则可以得到频率控制字 ,再由公式得到。
注意:设置的步进高位范围是0~15,步进中位范围是0~255,步进低位范围是0~255。
②幅度设置
依据公式
V——输出的峰值幅度。
M——幅度初调(幅度分辨率),取值0.005,0.01,0.02,0.04。
N——幅度微调,取值范围50~250。
例如:“幅度初调”选择为0.01N,则幅度分辨率M=0.01;“幅度微调”设定N=150,则可得输出信号的峰值幅度
4.矩阵式键盘的原理
(1)矩阵式键盘
键盘是由若干按键组合而成的,常采用矩阵式连接,称为矩阵式键盘,即每条水平线和垂直线在交叉处通过一个按键加以连接。当需要的键数比较多时,采用矩阵连接可以减少I/O口的占用。
(2)矩阵式键盘的编程
矩阵式键盘连接可分为编码式和非编码式两种。对于非编码式连接的键盘,其应用编程可分为:判键、识键部分和键处理部分。
①判键和识键
即指判断是否有键按下和确认所按下键的位置。确定矩阵式键盘上何键被按下采用一种“行扫描法”。行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法。
无键按下时,矩阵式键盘的行,列线通过上拉电阻均为高电平(见图4)。然后,依次将键盘逐行置低,同时取出输入列线状态,若此时输入不为全高(0xFF),则表明该行有键被按下。因为行线输出有低电平,一旦该行有键按下,则输入线就会被拉低。这样,就可得判断出是否有键按下了。同时,可根据置低的行线和读入的输入线的状态,找出被按下的键位置。
在判键过程中,还要加入按键去抖动处理。一次按键的完整过程如图3所示(按键按下时,键盘输入线上呈现的波形),按键的抖动
图3 按键抖动波形
包括前沿抖动(刚按下时)和后沿抖动(释放时)两个过程,抖动持续时间与按键弹簧的机械特性有关,通常为几ms至几十ms,可采用软件延时的办法进行处理。
②键处理
键处理即在识别到某键按下后,作出不同的处理。在应用上,一般将键盘分为功能键和数字键(也可两者复用),功能键一般采用散转的办法,让程序执行不同的操作。
实际上,键盘处理是很复杂的,它往往占到一个应用程序的大部份代码,但这种复杂不来自于设备的本身,而是来自于操作者的习惯等等问题。因此,在编写键盘处理程序之前,应先把它从逻辑上理清,然后用适当的算法表示出来,最后再编写代码。
5.矩阵式键盘的实验电路
图4 矩阵式键盘连接图
实验电路是采用2×8的矩阵键盘电路,键盘的行线通过由74LS273锁存器构成的输出接口(端口地址为70H)输出,列线通过74LS245总线接收器构成的输入接口(端口地址为74H)输入。键盘共16个键,定义了功能键:F1、F2、F3、F4、CR键共五个;数字键:0~9及小数点共十一个(如图4所示),使用者可以自己定义每个键功能和相应的处理。
图5 键盘端口地址
右图5为判键和识键过程中所需要用到的键盘地址和控制字。 本实验共用到三个端口地址:70H:通过74LS273锁存器,控制扫描键盘的行线。 74H:通过74LS245总线接收器,读取控制扫描键盘的列线状态。73H:控制键盘面板上的LED指示灯。
五、设计指导
1.信号源高级设置部分
1)结构流程图
图6 高级设置部分结构流程图
2)树形图
图7 高级设置部分调用结构
3)功能与前面板设计
图8 高级设置前面板
表1 高级设置控键及显示键汇总
编号 |
名称 |
功能 |
位置 |
备注 |
1 |
时钟频率 |
All controls>Ring&Enum>Enum |
||
2 |
步进高位 |
步进值高4位 |
All controls>Numeric>Numeric Control |
取值范围0~15 |
3 |
步进中位 |
步进值中8位 |
All controls>Numeric>Numeric Control |
取值范围0~255 |
4 |
步进低位 |
步进值低8位 |
All controls>Numeric>Numeric Control |
取值范围0~255 |
5 |
幅度微调 |
All controls>Numeric>Numeric Control |
取值范围50~250 | |
6 |
幅度初调 |
All controls>Ring&Enum>Enum |
||
7 |
启动 |
依据参数启动信号 |
All controls>Boolean>OK Button |
按下后依据面板上设定的值,启动相关信号源。 |
8 |
波形选择 |
选择输出的波形 |
All controls>Ring&Enum>Menu Ring |
选择16种波形中1种。 |
9 |
图形框 |
显示所选波形示意图 |
All controls>Graph>Waveform Graph |
设置参数:X轴:0~502,Y轴:-10~266。 |
注:2通道的情况与1通道类似。
4)动态调用链接
本程序设计的主要实现已经做成底层fp函数(用Labwindows/CVI实现),在程序实现时可直接调用实验箱提供的驱动函数动态链接(即.dll函数),驱动函数原型及常数和变量在cvidll.prj中。
表2 高级设置中动态调用说明
fp函数 |
实现功能 |
输入参数 |
输出参数 |
参数说明 |
动态链接图标 |
void inti_wave1 |
初始化信号源,把波形数据写入SRAM |
int DDS_channle |
无 |
||
void profession_source |
依据相关参数,启动信号源 |
int DDS_channle |
无 |
Clk_cw:时钟选择的控制字。 |
2.信号源键盘控制部分
图12 信号源键盘控制部分结构流程图
2)树形图
图13 信号源键盘控制部分结构树形图
3)功能与前面板设计
图14 信号源键盘控制部分前面板
表3 信号源键盘控制部分控键及显示键汇总
编号 |
名称 |
功能 |
位置 |
备注 |
1 |
波形选择 |
选择输出的波形 |
All controls>Ring&Enum>Menu Ring |
选择16种波形中1种。 |
2 |
波形指示灯 |
显示正在通过键盘板设置波形 |
All controls>Boolean>Round LED |
|
3 |
峰值幅度 |
设置波形幅度 |
All controls>Numeric>Numeric Control |
|
4 |
幅度指示灯 |
显示正在通过键盘板设置幅度 |
All controls>Boolean>Round LED |
|
5 |
信号频率 |
设置信号频率 |
All controls>Numeric>Numeric Control |
|
6 |
频率指示灯 |
显示正在通过键盘板设置信号频率 |
All controls>Boolean>Round LED |
|
7 |
启动 |
依据参数启动信号 |
All controls>Boolean>OK Button |
按下后依据面板上设定的值,启动相关信号源。 |
8 |
频率按键输入 |
通过键盘板输入的字串,来给频率赋值。 |
All controls>string & path>String Indicator |
|
9 |
启动指示灯 |
显示键盘板上启动键已经按下 |
All controls>Boolean>Round LED |
|
10 |
幅度按键输入 |
通过键盘板输入的字串,来给幅度赋值。 |
All controls>string & path>String Indicator |
|
11 |
图形框 |
显示所选波形示意图 |
All controls>Graph>Waveform Graph |
设置参数:X轴:0~502,Y轴:-10~266。 |
12 |
退出 |
退出整个程序 |
All controls>Boolean>OK Button |
4)动态调用链接
本程序设计的主要实现已经做成底层fp函数(用Labwindows/CVI实现),在程序实现时可直接调用实验箱提供的驱动函数动态链接(即.dll函数),驱动函数原型及常数和变量在cvidll.prj中。
表4 信号源键盘控制部分使用的动态调用一览
fp函数 |
实现功能 |
输入参数 |
输出参数 |
参数说明 |
动态链接图标 |
void epp_init |
初始化EPP接口 |
无 |
无 |
||
void epp_write_data |
将数据data输出(写入)到sj8002的端口地址sj8002addr。 |
Unsigned char sj8002addr, unsigned char data |
sj8002addr: sj8002的端口地址。 |
||
void easy_source |
依据相关参数,启动信号源 |
int DDS_channle |
无 |
Amp:信号幅值,单位V。 |
void inti_wave1 |
初始化信号源,把波形数据写入SRAM |
int DDS_channle |
无 |
3.信号源公式输入部分
图22 信号源公式输入部分结构流程图
2)树形图
图23 信号源公式输入部分结构树形图
3)功能与前面板设计
图24 信号源公式输入部分前面板
表5 信号源公式输入部分控键及显示键汇总
编号 |
名称 |
功能 |
位置 |
备注 |
1 |
公式错指示灯 |
公式编辑窗口公式输入错误。 |
All controls>Boolean>Round LED |
|
2 |
波形公式输入 |
通过键盘板输入的字串,来给幅度赋值。 |
All controls>string & path>String Control |
|
3 |
频率f |
设置信号频率 |
All controls>Numeric>Numeric Control |
|
4 |
峰值幅度 |
设置波形幅度 |
All controls>Numeric>Numeric Control |
|
5 |
频率系数k |
设置频率系数 |
All controls>Numeric>Numeric Control |
若公式为周期函数,则输出信号频率为“频率”ד频率系数”。否则输出信号频率就等于“频率”。 |
6 |
启动 |
依据参数启动信号 |
All controls>Boolean>OK Button |
若公式输入正确,按下后依据相关参数,启动1通道信号源。 |
7 |
图形框 |
显示所选波形示意图 |
All controls>Graph>Waveform Graph |
横坐标为时间t:0~1 |
注:公式编辑器设定的采样频率FT=4096,采样点数为4096。
4)动态调用链接
本程序设计的主要实现已经做成底层fp函数(用Labwindows/CVI实现),在程序实现时可直接调用实验箱提供的驱动函数动态链接(即.dll函数),驱动函数原型及常数和变量在cvidll.prj中。
表6 信号源键盘控制部分使用的动态调用一览
fp函数 |
实现功能 |
输入参数 |
输出参数 |
参数说明 |
动态链接图标 |
void double_to_int |
归一化数组:double数据组变为 最大值为4000的int数组 |
double doublein[], int points, |
int inout[] |
doublein[]:输入的double型数组。 |
|
void easy_source |
依据相关参数,启动信号源 |
int DDS_channle |
无 |
Amp:信号幅值,单位V。 |
|
void inti_wave1 |
初始化信号源,把波形数据写入SRAM |
int DDS_channle |
无 |
在执行过程中写入SRAM的文件为二进制文件形式。面板上显示所调用的文件是由数组生成的波形文件。其中,各写入SRAM的波形资料见下表:
表7 波形存储一览
波形 |
存储编号 |
文件名 |
正弦波 |
1 |
写入波形文件1.bin |
方波 |
2 |
写入波形文件1.bin |
锯齿波 |
3 |
写入波形文件1.bin |
全波整流 |
4 |
写入波形文件1.bin |
调幅波 |
5 |
写入波形文件1.bin |
调频波 |
6 |
写入波形文件1.bin |
窄脉冲波 |
7 |
写入波形文件1.bin |
台阶波 |
8 |
写入波形文件2.bin |
三角波 |
1 |
写入波形文件2.bin |
梯形波 |
2 |
写入波形文件2.bin |
M波 |
3 |
写入波形文件2.bin |
对数波 |
4 |
写入波形文件2.bin |
钟形波 |
5 |
写入波形文件2.bin |
辛克波 |
6 |
写入波形文件2.bin |
高斯噪声 |
7 |
写入波形文件2.bin |
直流 |
8 |
写入波形文件2.bin |
注:各种波形存储位置:4096×(存储编号-1)~ 4095×存储编号。
六、调试与测试
1、信号源高级设置部分
①按如图方式,进行硬件连线。
图28 信号源高级设置实验时的硬件连线
②依据前面描述的原理,分别设定1通道各参数,点击启动,观察示波器显示的值是否与计算的一致。
③对于2通道,重做②描述的过程。
④完成下面的表格
表8 信号源高级设置的数据观察记录表
要求信号频率 (Hz) |
信号幅度(峰值)V |
选择 |
步进 |
步进 |
步进 |
测试输出信号频率(KHz) |
幅度初调 |
幅度微调 |
输出信号幅度峰值(V) |
100 |
1 |
1.25M |
|||||||
2K |
2.5 |
20M |
|||||||
2K |
4 |
5M |
|||||||
80K |
6 |
20M |
2、键盘控制部分
键盘板在控制波形产生时的格键含义
表9 键盘各键复用一览
按键名称 |
复用功能 |
备注 |
F1 |
波形设置 |
|
F2 |
幅度设置 |
|
F3 |
频率设置 |
|
F4 |
启动信号源 |
|
CR |
输入确认 |
表明幅度,频率输入结束或波形已经选定。 |
。 |
小数点 |
频率或幅度输入时代表小数点 |
0 |
数字0和正弦波 |
波形设置时代表选取正弦波 |
1 |
数字1和方波 |
波形设置时代表选取方波 |
2 |
数字2和锯齿波 |
波形设置时代表选取锯齿波 |
3 |
数字3和全波整流 |
波形设置时代表选取全波整流 |
4 |
数字4和窄脉冲波 |
波形设置时代表选取窄脉冲波 |
5 |
数字5和三角波 |
波形设置时代表选取三角波 |
6 |
数字6和梯形波 |
波形设置时代表选取梯形波 |
7 |
数字7和M波 |
波形设置时代表选取M波 |
8 |
数字8和钟形波 |
波形设置时代表选取钟形波 |
9 |
数字9和辛克波 |
波形设置时代表选取辛克波 |
- 按如图方式,进行硬件连线。
图29 键盘输入实验时的硬件连线
②按下F1键选择波形,观察“波形设置”灯亮后,通过按键选择波形,确定后,按下CR键,灯熄灭,表示波形选择结束。
③按下F2键准备输入幅度,观察“幅度设置”灯亮后,通过按键输入幅度值,此时输入显示在“幅度按键输入”框,并同时由字串转化为数字,显示在“峰值幅度”框(注意字串不要输错)。若输入结束,按下CR键,灯熄灭,表示幅度设定。
④按下F3键准备输入频率,观察“频率设置”灯亮后,通过按键输入幅度值,此时输入显示在“频率按键输入”框,并同时由字串转化为数字,显示在“频率”框(注意字串不要输错)。若输入结束,按下CR键,灯熄灭,表示频率设定。
⑤按下F4键启动信号源,此时“启动指示”灯亮,然后熄灭,观察此时波形显示框的波形是否与选定波形一致,同时观察外部的示波器,检查频率、幅度、波形是否与设定的值相同。
⑥直接在程序面板上输入波形、幅度、频率,然后点击启动按键,观察此时波形显示框的波形是否与选定波形一致,同时观察外部的示波器,检查频率、幅度、波形是否与设定的值相同。
⑦完成下表
表10 键盘控制波形输出的数据观察记录表
输出波形 |
设定信号幅度(V) |
设定信号频率(kHz) |
输出是否正确 |
正弦波 |
2 |
100 |
|
三角波 |
3 |
40 |
|
钟形波 |
5 |
50 |
|
辛克波 |
4 |
60 |
3、公式输入部分
①按如图方式,进行硬件连线。
图30 公式输入实验时的硬件连线
②在波形公式框输入任意周期信号,例如cos(w×t),设置峰值幅度、频率和频率系数,,按下启动按键,观察示波器的频率是否为频率×频率系数,峰值幅度,波形是否与设定的一致。
③在波形公式框输入任意周期信号,例如t+t^2,设置峰值幅度、频率和频率系数,,按下启动按键,观察示波器的频率、峰值幅度、波形是否与设定的一致。
④完成下表。
表11 通过公式产生波形的数据观察记录表
设定的波形 |
设定信号幅度(V) |
设定信号频率(kHz) |
设定的频率系数 |
输出信号频率(KHZ) |
输出是否正确 |
Sin(w*t) |
2 |
10 |
2 |
20 |
|
cos(3*w*t) |
3 |
4 |
5 |
60 |
|
sin(w*t)*sin(2*pi(1)*t) |
4 |
3 |
20 |
60 |
|
T+t^4 |
1 |
60 |
1 |
60 |
七、备注
注意:数字合成信号源的输出信号频率范围:正弦在1Hz~2MHz,方波在1Hz~500KHz,其它波形在1Hz~200KHz范围内。峰值幅度范围0.1V~8V,设定各参数时需保证输出信号在此范围内。同时调幅波载波频率为输入频率的16倍,调频波载波频率为输入频率的7~25倍。
评论
查看更多