- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于生产者/消费者设计模式的连续音频信号采集系统
Time:2009-11-23 10:05:00??Author:??Source:现代电子技术
王维喜,李智(青岛大学 机电工程学院? 山东 青岛? 266071)0引? 言LabVIEW是美国NI公司1986年推出的一种图形化的编程语言和开发环境。作为虚拟仪器开发平台,由于其图形化的编程方式具有简单易学、直观方便、功能强大等特点,是很多工程设计人员进行虚拟仪器开发的首选。生产者/消费者设计模式是NI公司最新推出的程序设计概念,它从主/从设计模式发展而来,生产者/消费者设计模式将生产和消费数据速度不同的任务分开处理,大大提高了不同速率的多个循环之间数据共享的能力,对于多任务处理和实时性、连续性要求严格的程序设计,生产者/消费者设计模式是较好的选择。在虚拟仪器系统中,硬件解决信号的输入和输出,软件可以方便地更新仪器系统的功能,以适应不同使用者的需要。其中信号的输入部分一般使用数据采集卡实现,商用的数据采集卡具有较大的通用性。普通声卡具有16位的量化精度、数据采集频率是44 kHz,完全可以满足特定音频信号范围内数据采集的需要,个别性能指标还优于商用数据采集卡,而价格却为商用数据采集卡的十几分之一甚至几十分之一。若保证信号采集的逼真性,在采集过程中的连续性和实时控制显得尤为重要。本文以LabVIEW为平台,着重介绍了生产者/消费者模式的实现,以及在实时控制的连续音频采集系统中的应用。1? 生产者/消费者设计模式概念及其实现1.1? 生产者/消费者设计模式概念生产者/消费者设计模式包括多个并行循环,每个循环以不同的速率执行任务。一个循环作为生产数据的循环,其他循环作为消费数据的循环。生产数据的循环控制所有消费数据的循环,并且使用通信技术与它们进行通信。1.2? 生产者循环与消费者循环之间的通信在LabVIEW程序设计过程中,变量(局部变量和全局变量)、通知器、队列常用于多个循环之间传递数据。LabVIEW中的变量是程序框图中的元素,通过它可以在另一位置访问或存储数据。根据不同的变量类型,数据的实际位置也不一样。局部变量将数据存储在前面板的输入控件和显示控件中,全局变量和单进程共享变量将数据存储在特殊的通过多个VI可以访问的仓库中。不管变量将数据存储在何处,所有的变量都可以在不使用连线连接两个地方的条件下把数据从一个地方传递到另一个地方,而不必使用正常的数据流。但是变量的使用有着其自身的缺点,变量不仅不能保证各个循环之间的同步,而且使用变量会破坏LabVIEW的数据流模式,在对变量进行读写操作时容易产生内存拷贝,浪费内存资源,影响系统运行效率。变量还允许竞争状态的出现,竞争状态不容易识别和调试,因为输出取决于操作系统执行排定的任务和外部时间定时的顺序。任务之间和任务同计算机之间的交互方式,以及外部时间的任意定时都使这种顺序变得随机。很多情况下,带有竞争状态的代码会在数千次测试中返回相同的结果,但仍然可能会在运行时返回一个不同的结果。对生产者/消费者设计模式的一个更有效的实现是使用通知器和队列使数据传输保持同步。通知器在发出数据可用的通知时,将同时发送数据。使用通知器将数据从主循环传送到从循环消除了和竞争状态相关的问题。使用通知器还有同步的好处,因为数据可用时,主从循环都已完成定时,并准备实现一个良好的生产者/消费者设计模式。但是通知器不会缓冲数据,如果主循环在从循环读取第一份数据之前发送另一份数据,那么原来那份数据就会被覆盖并丢失。队列类似于通知器。但它可以存储多份数据,默认情况下,队列按照FIFO(先进先出)的方式执行。因此,第一份插入队列的数据,也是第一份从队列中删除的数据。在实时控制的连续音频信号采集过程中,由于需要处理许多用户界面的事件,为了不造成数据丢失,选择队列在各个循环之间传递数据,实现过程如图1所示。如图1所示,在循环开始使用“获取队列引用”函数之前,队列就已经创建完毕。生产者循环使用“元素入队列”函数向队列中添加数据。消费者循环使用“元素出队列”函数从队列中移除数据。消费者循环一直到队列中的数据可用时才执行。可见,在此生产者/消费者设计模式中,两个循环均被同步为与生产者循环一致。消费者循环只在队列中的数据可用时才执行。这样就保证了消费者循环执行任务的连续性和高效性。并且,队列用于循环之间的数据传递,创建全局可用的位于队列中的数据,而且在添加新的数据到队列时,避免了丢失数据的可能性。2实时控制的连续音频信号采集系统2.1? 声卡简介 从数据采集的角度看,声卡是一种音频范围内的数据采集卡,是计算机与外部模拟量环境联系的重要途径。一般声卡都是由以下几部分组成:声音控制/处理芯片,功放芯片,声音输人/输
您可能关注的文档
- 环境影响评价登记表.doc
- 发烧机理原因对策误区全分析(全面整理版).doc
- 法律知识突二论当前中国法律理论和民意的冲.doc
- 活动一绘画语言教学设计.doc
- 崔静-判断推理模块解题中的常见误区和解决方案.doc
- 法治上从哈贝马斯的哲学看现代性和现代.doc
- 高二生物细胞膜结构说课稿用.doc
- 关于国有产权(资产)无偿划转的税收政策和分析.doc
- 国内外新能源应用现状和发展前景.doc
- 法律知识治上从哈贝马斯的哲学看现代性和现代法.doc
- 浙江衢州市卫生健康委员会衢州市直公立医院高层次紧缺人才招聘11人笔试模拟试题参考答案详解.docx
- 浙江温州泰顺县退役军人事务局招聘编外工作人员笔试备考题库及参考答案详解一套.docx
- 江苏靖江市数据局公开招聘编外工作人员笔试模拟试题及参考答案详解.docx
- 广东茂名市公安局电白分局招聘警务辅助人员40人笔试模拟试题带答案详解.docx
- 江苏盐城市大丰区住房和城乡建设局招聘劳务派遣工作人员4人笔试模拟试题带答案详解.docx
- 浙江舟山岱山县东沙镇人民政府招聘笔试模拟试题及参考答案详解1套.docx
- 最高人民检察院直属事业单位2025年度公开招聘工作人员笔试模拟试题含答案详解.docx
- 浙江金华市委宣传部、中共金华市委网信办所属事业单位选调工作人员笔试备考题库及答案详解1套.docx
- 广东深圳市党建组织员招聘40人笔试模拟试题及答案详解1套.docx
- 江苏南京水利科学研究院招聘非在编工作人员4人笔试模拟试题及参考答案详解.docx
最近下载
- SY 4201.4-2016 石油天然气建设工程施工质量验收规范 设备安装工程 第4部分:炉类.docx VIP
- 电力市场分析软件:PLEXOS二次开发_(13).电力市场改革与趋势分析.docx VIP
- 云和雪梨生产全程质量控制技术规范.docx VIP
- 电力市场分析软件:PLEXOS二次开发_(12).可视化与报告生成.docx VIP
- 2024-2025学年四川省成都市新都一中实验学校七年级(上)分班数学模拟试卷(含答案).pdf VIP
- 跨座式与悬挂式单轨运输系统幻灯片.ppt VIP
- 市场营销论文:长春农商银行小微企业贷款业务市场营销策略研究.docx VIP
- 电力市场分析软件:PLEXOS二次开发_(11).数据库管理与接口设计.docx VIP
- 电力市场分析软件:PLEXOS二次开发_(10).二次开发工具与技巧.docx VIP
- 有机肥采购项目投标书(范本).docx
文档评论(0)