基于声卡和Matlab的虚拟信号发生器

2015-07-02 10:37:59来源: dzsc
     声卡作为多媒体计算机系统中最基本最常用的硬件之一,其技术已经发展成熟,他同时具有A/D和D/A转换功能,经济方便,目前已经被广泛应用于数据采集和虚拟仪器系统的设计[1,2]。Matlab是一个数据分析和处理功能十分强大的工程实用软件,他的数据采集工具箱(data acquisition toolbox)为实现数据的输入和输出提供了十分方便的函数和命令,利用这些函数和命令可以很容易地实现对外部物理世界的信号输出和输入。根据声卡输出信号的原理,采用Matlab软件编程,可以方便地利用声卡输出所需要的三角波、正弦波、方波等多种信号,有效地实现信号发生器的基本功能。

      1基于Matlab和声卡的虚拟信号发生器的设计与实现

      1.1系统实现原理

      通常PC机配置的声卡提供了麦克风输入和扬声器输出2个接口,他集成了信号输入/输出需要 的模/数转换器(ADC)和数/模转换器(DAC),因此,利用Matlab软件产生的各种虚拟信号通过声卡的DAC单元就可以直接输出。普通计算机与Matlab软件相结合实现虚拟信号发生器的系统结构如图1所示。   

      图1中,只需要用音频线将软件系统产生的信号由线性输出(line out)接口引出,就可以通过声卡直接作为信号源输出,显然,在这种虚拟信号发生器系统中,只需要一台带有普通多媒体声卡并安装了Matlab软件的PC机就可以满足要求实现虚拟信号的输出,系统结构简单方便。

      1.2基于Matlab的信号发生器的实现方法
  
      Matlab的数据采集工具箱(DAT)提供了一系列的函数和命令来实现实时模拟信号的输出,通过调用这些函数和命令可以直接控制声卡输出虚拟信号,在Matlab中用声卡产生虚拟信号的过程如图2所示。    

 

      Matlab的数据采集工具箱提供的控制声卡输出模拟信号的主要函数和命令如下:    

      (1) 初始化操作
  
      Matlab将声卡等设备都作为对象处理,其后的一切操作都不与硬件直接相关,而是通过对该 对象的操作来作用对象,所以,首先要为声卡建立一个设备对象。Matlab建立设备对象的函数如下:

      analogouput()为模拟输出设备对象建立函数,通过该函数将声卡映射为Matlab环境中的一个模拟输出设备对象句柄。winsound为声卡设备驱动程序。

      (2) 添加数据输出通道操作

      Matlab中用于添加数据输出通道操作的函数为addchannel,其函数格式如下:  

       其中:ao为声卡对象的句柄(下同),ch为声卡通道号,最大为2通道。

      (3) 输出数据操作

      Matlab中用于输出数据操作的函数为putdata,其函数格式如下:

      putudata(ao,data)

      其中:data为所需要输出的数据。

      (4) 启动并触发声卡设备操作

      当完成输出数据操作后,并没有真正输出数据,必须启动声卡,才能对外输出信号,启动并触发声卡设备操作的命令如下:

      start(ao)

      (5) 停止并删除声卡设备操作

      信号输出完成后,声卡设备仍然保留在计算机系统中,若不将声卡设备停止并删除,计算机系统中仍会保留该设备,在下次启动虚拟信号发生器系统时将会发出声卡设备仍然在使用的错误信息。从系统中停止和删除声卡设备操作的命令分别如下:

 

      2应用实例

      利用Matlab的数据采集工具箱和图形用户接口[3]可以方便地通过设计的界面控制输出信号的幅度、频率、宽度等参数,并可以用示波器直接观测,图3为虚拟信号发生器系统的主界面,可以用来产生正弦波信号、方波信号、矩形波信号、三角波信号和随机信号等常用信号。   

 

      这里以三角波虚拟信号发生器为例来说明利用Matlab和声卡输出三角波信号的具体软件实现 方法。三角波信号发生器的参数设置界面如图4所示,他除了可以用于参数设置外,还可以显示输出信号的模拟波形。   

 

      采用Matlab实现的具体程序如下:   

 

      3结语

      Matlab的数据采集工具箱和图形用户接口提供了十分简便的实现声卡输出功能的命令和函数 ,利用Matlab和声卡设计虚拟信号发生器十分方便,而在硬件上只需要一块声卡,无需添加 任何其他设备,价格十分便宜。虽然声卡的设计是以产生声音为目的,有效的音频范 围和输出电压的幅度在一定程度上限制了他的使用,但这已完全能满足产生基本信号源的 要求。在本设计的基础上,通过进一步的Matlab编程或硬件上的改进和扩展,可以实现一些 常规仪器设备不能产生的信号,这在实际应用中具有广泛的推广应用前景。

参考文献:

[1]. DAT datasheet http://www.dzsc.com/datasheet/DAT_1869419.html.

关键字:声卡  Matlab  虚拟信号发生器

编辑:什么鱼 引用地址:http://www.eeworld.com.cn/Test_and_measurement/2015/0702/article_12194.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
声卡
Matlab
虚拟信号发生器

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved