基于 MATLAB 的信号发生器设计
虚拟仪器能充分利用现有计算机资源,通过配以独特设计的软硬件,实现普通仪器的全部功能以及一些在普通仪器上无法实现的功能的软件或程序。本设计的主要内容就是基于 MATLAB 来实现一个信号发生器,除具有信号发生器一般功能外,还应能通过文件或图形获取波形数据,以实现任意波形的生成,并以PCI-6024 DAQ 卡作为硬件平台输出。
一、前言
目前,MATLAB 已经广泛地应用于工程设计的各个领域,如电子、通信等领域,它已成为国际上最流行的计算机仿真软件设计工具。MATLAB 不再仅仅是一个矩阵实验室,而是一种功能强大的的实用高级计算机编程语言。
Data Acquisition Toolbox 是 MATLAB 自带的数据获取工具箱,其中包含了许多有用的函数供用户调用,这些函数根据各自不同的功能大致可分为以下几组:数据获取对象的构造,获取和设置参数,执行,模拟输入/输出函数,数字输入/输出函数。在本次设计通用信号发生器的过程中,大量使用了以上函数, 并采用两种不同的方式完成数/模转换的工作。
二、信号发生器的设计和实现
程序简介
程序参考 MATLAB 的 Data Acquisition Toolbox 实现。在 MATLAB 的 GUI 设计中,有两种设计方式:利用 GUI 编辑器和编写 M 文件。
GUI 是用户的操作界面,是选择波形、设定和修改波形参数、设定采样率、选择输出通道和运行、停止程序的人机交互接口。本程序的界面中,可选波形包括正余弦(sin),Sa 波(sinc),方波(square),三角波(triangle),锯齿波
(tooth),噪声波(random),频变波(chirp),以及自定义波形(读取图形和数据文件)。波形参数包括频率(frequency),幅度(amplitude),直流偏置
(offset),初相位(phase),占空比(duty cycle),频变方法(method),频 变时间(target time),初始频率(initial(F)),目标频率(target(F))等。
因为 PCI-6024E 只有 2 路 DAC,所以输出通道的选择只有这 2 路,或者只输出其中的一路。运行、停止则是开始和停止计算波形、输出波形的过程。编写 M 文件来处理 GUI 界面的事件的响应。
本设计的独特之处在于输出通道的可选择性,可选择 NI-DAQ(PCI-6024E),声卡,或者并行等。考虑到信号幅度范围对于不同硬件也是不同的(PCI-6024E 是-10~10v),超出范围的部分是无效的,程序同样会报错并停止运行。
触发 start 按钮将使程序进入运行状态,这包括计算波形(二维数组),绘制波形(在 PC 界面坐标系中),以及输出波形(在选定的输出板卡中)。触发 stop 按钮(运行状态时start 按钮就转变为 stop 按钮了)将停止程序的运行,以及数组数据输出到板卡上。
界面浏览
本信号发生器的界面大致是有以下五个区域组成:菜单区,参数设定区
(output1,output2),波形绘制区(output1,output2),输出选择区,以及输出控制区。界面如图 1 所示。
信号生成
图 1 信号发生器界面图
信号生成,即是用数学方法将所选波形(连续信号)按采样率离散为数字序列,序列中的各个数字既是信号在采样率分之一时间间隔的采样值。再将各相邻
采样点用短直线相连,即可近似还原出原波形。可见,同等情况下,采样率越高, 信号的恢复程度越好。
正弦波(sin)
表 1 正弦波参数
参数名 |
频率 frequency |
幅度 amplitude |
直流偏置 offset |
初相位 |