基于生产者_消费者设计模式的连续音频信号采集系统.pdf
《基于生产者_消费者设计模式的连续音频信号采集系统.pdf》由会员分享,可在线阅读,更多相关《基于生产者_消费者设计模式的连续音频信号采集系统.pdf(4页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 1994-2010 China Academic Journal Electronic Publishing House.All rights reserved.http:/基于生产者/消费者设计模式的连续音频信号采集系统王维喜,李 智(青岛大学 机电工程学院 山东 青岛 266071)摘 要:连续信号采集系统不仅需要保证信号采集的连续性,而且在信号采集过程中要有实时控制能力。使用生产者/消费者模式进行程序设计可以使程序设计更为快捷、简单和高效。以LabVIEW为开发平台,详细介绍了生产者/消费者程序设计的思路,并结合声卡信号采集实例给出了此程序设计的过程。结果表明在对实时性和连续性有严格要
2、求的程序设计中引入生产者/消费者设计模式,可使程序的响应时间更快,执行效率更高。关键词:LabVIEW;生产者/消费者模式;声卡;连续采集;实时控制中图分类号:TN912 文献标识码:B 文章编号:10042373X(2009)072129204Continuous Sound Signal Acquisition System with Real2time Control Based onProducer/Consumer Design PatternWANG Weixi,LI Zhi(Mechano2Electronic Engineering College,Qingdao Univer
3、sity,Qingdao,266071,China)Abstract:Continuous sound signal acquisition system not only guarantees the continuity of signal acquisition,but hasthe real2time control ability in the process of signal acquisition.A producer/consumer design pattern can make program de2signing quicker,simpler and more eff
4、icient.Through the example of continuous sound signal acquisition,the designing ideafor the Producer/consumer design pattern is described in details and the design process of this program on the LabVIEWplatform is given.The result shows that the introduction of the producer/consumer design pattern i
5、n the use of programdesign which has serious request in real2time and continuous sound signal acquisition can make the processes response fas2ter and more efficient.Keywords:LabVIEW;producer/consumer design pattern;sound card;continuous sound signal acquisition;real2time con2trol收稿日期:20082092160 引 言
6、LabVIEW是美国NI公司1986年推出的一种图形化的编程语言和开发环境。作为虚拟仪器开发平台,由于其图形化的编程方式具有简单易学、直观方便、功能强大等特点,是很多工程设计人员进行虚拟仪器开发的首选。生产者/消费者设计模式是NI公司最新推出的程序设计概念,它从主/从设计模式发展而来,生产者/消费者设计模式将生产和消费数据速度不同的任务分开处理,大大提高了不同速率的多个循环之间数据共享的能力,对于多任务处理和实时性、连续性要求严格的程序设计,生产者/消费者设计模式是较好的选择。在虚拟仪器系统中,硬件解决信号的输入和输出,软件可以方便地更新仪器系统的功能,以适应不同使用者的需要。其中信号的输入部
7、分一般使用数据采集卡实现,商用的数据采集卡具有较大的通用性。普通声卡具有16位的量化精度、数据采集频率是44 kHz,完全可以满足特定音频信号范围内数据采集的需要,个别性能指标还优于商用数据采集卡,而价格却为商用数据采集卡的十几分之一甚至几十分之一。若保证信号采集的逼真性,在采集过程中的连续性和实时控制显得尤为重要。本文以LabVIEW为平台,着重介绍了生产者/消费者模式的实现,以及在实时控制的连续音频采集系统中的应用。1 生产者/消费者设计模式概念及其实现1.1 生产者/消费者设计模式概念生产者/消费者设计模式包括多个并行循环,每个循环以不同的速率执行任务。一个循环作为生产数据的循环,其他循
8、环作为消费数据的循环。生产数据的循环控制所有消费数据的循环,并且使用通信技术与它们进行通信。1.2 生产者循环与消费者循环之间的通信在LabVIEW程序设计过程中,变量(局部变量和全局变量)、通知器、队列常用于多个循环之间传921现代电子技术2009年第7期总第294期?测试 测量 自动化?1994-2010 China Academic Journal Electronic Publishing House.All rights reserved.http:/递数据。LabVIEW中的变量是程序框图中的元素,通过它可以在另一位置访问或存储数据。根据不同的变量类型,数据的实际位置也不一样。局部
9、变量将数据存储在前面板的输入控件和显示控件中,全局变量和单进程共享变量将数据存储在特殊的通过多个VI可以访问的仓库中。不管变量将数据存储在何处,所有的变量都可以在不使用连线连接两个地方的条件下把数据从一个地方传递到另一个地方,而不必使用正常的数据流。但是变量的使用有着其自身的缺点,变量不仅不能保证各个循环之间的同步,而且使用变量会破坏LabVIEW的数据流模式,在对变量进行读写操作时容易产生内存拷贝,浪费内存资源,影响系统运行效率。变量还允许竞争状态的出现,竞争状态不容易识别和调试,因为输出取决于操作系统执行排定的任务和外部时间定时的顺序。任务之间和任务同计算机之间的交互方式,以及外部时间的任
10、意定时都使这种顺序变得随机。很多情况下,带有竞争状态的代码会在数千次测试中返回相同的结果,但仍然可能会在运行时返回一个不同的结果。对生产者/消费者设计模式的一个更有效的实现是使用通知器和队列使数据传输保持同步。通知器在发出数据可用的通知时,将同时发送数据。使用通知器将数据从主循环传送到从循环消除了和竞争状态相关的问题。使用通知器还有同步的好处,因为数据可用时,主从循环都已完成定时,并准备实现一个良好的生产者/消费者设计模式。但是通知器不会缓冲数据,如果主循环在从循环读取第一份数据之前发送另一份数据,那么原来那份数据就会被覆盖并丢失。队列类似于通知器。但它可以存储多份数据,默认情况下,队列按照F
11、IFO(先进先出)的方式执行。因此,第一份插入队列的数据,也是第一份从队列中删除的数据。在实时控制的连续音频信号采集过程中,由于需要处理许多用户界面的事件,为了不造成数据丢失,选择队列在各个循环之间传递数据,实现过程如图1所示。图1 使用队列的生产者/消费者设计模式如图1所示,在循环开始使用“获取队列引用”函数之前,队列就已经创建完毕。生产者循环使用“元素入队列”函数向队列中添加数据。消费者循环使用“元素出队列”函数从队列中移除数据。消费者循环一直到队列中的数据可用时才执行。可见,在此生产者/消费者设计模式中,两个循环均被同步为与生产者循环一致。消费者循环只在队列中的数据可用时才执行。这样就保
12、证了消费者循环执行任务的连续性和高效性。并且,队列用于循环之间的数据传递,创建全局可用的位于队列中的数据,而且在添加新的数据到队列时,避免了丢失数据的可能性。2 实时控制的连续音频信号采集系统2.1 声卡简介从数据采集的角度看,声卡是一种音频范围内的数据采集卡,是计算机与外部模拟量环境联系的重要途径。一般声卡都是由以下几部分组成:声音控制/处理芯片,功放芯片,声音输人/输出端口等。声音控制/处理芯片是声卡的核心,集成了采样保持、A/D转换、D/A转换、音效处理等电路,它决定了声卡的性能和档次,基本功能包括对声波采样和回放控制、处理MIDI指令等,有的厂家还加进了混响、合声、音场调整等功能。功放
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 生产者 消费者 设计 模式 连续 音频 信号 采集 系统
限制150内