
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、pci总线语音卡及wdm驱动程序设计cti(computer telephone integration)即计算机电话集成技术已经进展了30多年。其中电话语音卡是cti中的典型应用之一,它作为电脑与公用电话网的接口设备,应用领域已经渗透到社会各个部门。同时,在语音卡的开发中也不断注入了新的技术,软件上有语音合成、语音识别等技术,而硬件上最重要的就是技术和pci技术。研制了基于tms320vc5410 dsp的pci语音卡,并设计了相应的wdm设备驱动程序,取得了良好的效果。1 硬件设计1.1 pci总线控制芯片pci2040pci总线是一种不依附于某个详细处理器的局部总线,它支持32位或64位
2、的总线宽度,频率通常是33mhz,目前最快的pci2.0总线工作频率是66mhz。工作在33mhz、32位时,理论上最大数据传输速率能达到133mb/s。它支持猝发工作方式,提高了传输速度,支持即插即用,pci部件和驱动程序可以在各种不同的平台上运行。实现pci总线协议普通有两种办法,一是用设计实现,但pci协议比较复杂,因此难度较大;二是采纳pci总线控制芯片,如amcc公司的s5933、plx公司的pci9080等通用的pci接口芯片。ti公司特地推出了针对pci总线和dsp接口的芯片pci20402,它不但实现了pci总线控制的功能,而且提供了和dsp芯片无缝的接口,因而大大简化了系统设
3、计的复杂度并缩短了开发时光。pci2040内部功能框图1所示。pci2040是一个pci-dsp桥接器件,它提供了pci局部总线和tms320c54x 8位主机接口(hpi)与tms320c6x 16位主机接口的无缝衔接。一片pci2040最多能同时挂接4片dsp芯片。同时,它还提供了一个串行eeprom接口,一个通用输入输出接口(gpio)和一个16位通用总线接口(为ti jtag测试总线控制器提供接口)。pci2040只能作为pci目标设备用法,不能作为pci主设备用法;它只支持单字的读写,不能提供dma操作。pci2040能够兼容3.3v和5v信号环境?系统中的3.3v和5v信号可以挺直
4、从pci插槽中获得。1.2 语音卡硬件设计1.2.1 功能简介及硬件框图语音卡是基于tms320vc5410 dsp和pci2040而设计的。此卡的主要功能是:(1)通过电话信号音检测模块,将对方说话的声音经a/d转换后,交给dsp举行压缩处理,采纳g.729编码算法压缩后速率可达到8kbps,然后将压缩后的码流通过pci2040经pci总线存放在计算机硬盘上,从而实现录音功能。(2)将存在硬盘上的压缩码流(以文件形式存在),通过pci2040经pci总线传送到dsp的内部缓冲区中,举行解压缩处理(g.729解码算法),并将解码后的数据通过d/a转换回放出来。语音卡硬件框图2所示。电话信号音检
5、测部分主要实现振铃检测、摘挂机及话音传输功能。系统的核心是dsp,它完成各种复杂算法的处理,包括g.729编解码算法、回声消退算法、话音检测及软件摘挂机算法等。tms320vc5410是ti 54x系列中一款高性能的dsp,它的处理功能达到100,因此能满足算法复杂度的要求。它的最大特点是片内集成了64k×16bit的ram和16k×16bit的rom因而不需要外加sram或sdram就可以满足系统设计的要求。tms320vc5410内置了3个多通道缓冲串行口(mcbsp)、6个dma通道和一个8位增加型hpi口,可以便利地和外部举行数据交换。在语音卡的设计中,采纳pci2
6、040来完成dsp与主机交换数据的任务。1.2.2 pci2040与tms320vc5410接口pci2040与tms320vc5410 hpi口的衔接3所示。pci_ad31pci_ad15打算了pci2040的控制空间基地址(control space base address)寄存器的值,这个值事实上是系统自动分配的。全部的pnp器件都是如此?它将控制空间映射到主机内存,映射的空间大小为232-17=32kb。dsp芯片的挑选是通过解码pci_ad14、pci_ad13来实现的。而pci_ad12和pci_ad11分离映射到hcntl1和hcntl0,用以打算拜访dsp hpi寄存器的方
7、式。其对应关系如表1所示。因此,dsp与pc交换数据的过程,也就是读写hpi寄存器的过程。详细描述如下:(1)初始化pci2040内部配置寄存器,指向特定的dsp(本系统惟独一个dsp和pci2040相连),指定数据传输宽度为8位。(2)分配hpi 基地址和控制空间基地址,允许pci2040举行内存映射或i/o端口映射。值得注重的是,pci2040控制空间只能映射在主机的内存空间里,不能映射在i/o空间。以上两步都由驱动程序完成。(3)脱离复位状态后,pci2040解码从pci总线来的地址,以此来做出响应。若落入32kb的控制空间中,则按照hcntl1和hcntl0及片选状况拜访相应hpi寄存
8、器。(4)设定hpi控制寄存器中的bob位,挑选正确的凹凸8位罗列方式。(5)主机开头对hpi寄存器举行读写。2 基于wdm的pci驱动程序设计2.1 wdm驱动程序结构及原理wdm是新一代的驱动程序构架,它是一个跨平台的驱动程序模型,在windows 98以上的操作系统中都实现了全面兼容。不仅如此,wdm驱动程序还可以在不修改源代码的状况下经过重新编译后在非intel平台上运行,因而为驱动程序开发人员提供了极大的便利。wdm驱动程序是分层的,即不同层上的驱动程序有着不同的优先级,而windows 9x下的vxd则没有此结构。另外,wdm还引入了功能设备对象fdo(functional dev
9、ice object)与物理设备对象pdo(physical device object)两个新概念来描述硬件。pdo代表实际存在的硬件设备,它是在总线驱动程序(bus driver)下枚举并建立的,负责与真切硬件举行i/o操作。fdo是由用户驱动程序建立的,普通来说,它是用户与真切硬件举行i/o操作的一个窗口,是win32赖以交流内核的一个桥梁。对于驱动程序开发者,真正需要做的就是开发fdo。至于pdo,则由bus driver建立,并在需要的时候作为参数由i/o manager或其它系统组件传给你的fdo。在应用层与底层举行通讯时,操作系统为每一个用户哀求打包成一个irp(io reque
10、st packet)结构,将其发送至驱动程序,并通过识别irp中的pdo来识别是发送给哪一个设备的。另外,wdm不是通过驱动程序名称,而是通过一个128位的全局惟一标识符(guid)来识别驱动程序的。wdm驱动程序都有一个初始化入口点,即driverentry,它相当于中的main函数。当wdm驱动程序被装入时,内核调用driverentry例程。另外wdm设备驱动程序还需要一个即插即用模块,即adddevice。adddevice例程就是pnp管理器在用户插入新设备时调用它来创建wdm设备对象的。2.2 pci语音卡驱动程序设计pci总线支持即插即用,因而采纳wdm模型来设计驱动程序将使程序
11、越发合理,支持更多的操作系统,并且在安装维护上越发便利。该驱动程序主要用driverstudio 2.5加vc+ 6.0设计。driverstudio对ddk举行封装,利用向导可生成驱动程序框架。在此基础上再添加针对语音卡处理的函数及语句即可完成设计,调试工具为softice。程序结构框图4所示。pci2040.lib和pci2040.dll处于ring3层,它封装了和底层驱动打交道的函数,对外只显现出如open_device()、close_device(handle hdevice)、record(handle hdevice,lpstr filename)、play(handle hde
12、vice,lpstr filename)等api函数。这样可以让多种编程语言以dll的形式来调用,给用法者提供了便利。核心编程是pci2040.sys,它处于ring0层,为ring3层和pci语音卡举行数据交换搭建了一个桥梁。驱动程序中主要模块有:?(1)onstartdevice(),在这个例程里驱动程序将得到pnp管理器为语音卡所分配的硬件资源,包括hpi csr基地址和hpi控制空间基地址,对pci配置空间举行初始化。初始化中断等。需要注重的是,在初始化中断之前禁止卡向主机发中断,因此应有屏蔽中断的操作。(2)devicecontrol(),在这个例程中可以定制自己的函数来达到ring
13、3层和ring0层互相通讯的目的。通过ioctl_code可以区别不同的哀求。例如:define send_hevent ctl_code(file_device_unknown, 0x802, method_buffered, file_any_access)在devicecontrol()中,可执行如下语句:case send_hevent:status = send_hevent_handler(i);/接收应用程序传递给wdm的大事句柄m_irq.connect(linkto(isr_irq), this); /衔接中断int_mask_set_ul=(ulong)0x80000001
14、; /开相应中断屏蔽位m_ctlmemoryrange.outw(ulong)0x0000,0x0b0b);/清除中断位,等待中断到来break;把衔接中断的函数放在devicecontrol()里,并没有和初始化中断(在onstartdevice()中)放在一起,不然会在win2000里引起死机。dsp语音卡是基于中断处理的,因此上面的程序就起了这样一个作用:当语音卡向主机发中断时,驱动程序就跳到isr_irq执行,并在dpcfor_irq中将大事设置为信号态,从而通知上层应用程序举行处理。(3)isr_irq(),这个例程是用来处理中断的。windows 2000的中断处理机制是假定多个设备可以分享一个硬件中断。因此,isr的首要工作就是找出哪一个设备发生了中断。假如没有,则应当立即返回false,以便hal能把中断送往其它设备驱动程序。中断服务例程isr执行在提升的irql上,在dirql级别上运行
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 深圳草坪施工方案
- 小学美术岭南版六年级上册6. 富有情趣的小礼盒教案
- 其他地区2024年新疆霍尔果斯经济开发区(市)医疗卫生领域引进人才16人笔试历年参考题库附带答案详解
- 兴安盟2024年内蒙古兴安盟事业单位秋冬季专项人才引进84人笔试历年参考题库附带答案详解
- 养猪场新技术应用及可行性研究报告
- 保山2024年云南保山龙陵县委宣传部招聘城镇公益性岗位人员笔试历年参考题库附带答案详解
- 2 我们的班规我们订( 教学设计 )2024-2025学年统编版道德与法治四年级上册
- 伊春2024年黑龙江伊春市嘉荫县朝阳镇社区卫生服务中心招聘医学毕业生笔试历年参考题库附带答案详解
- 内墙粉刷 施工方案
- 丽水2024下半年浙江丽水庆元县机关事业单位选调(选聘)工作人员23人笔试历年参考题库附带答案详解
- 《玉米栽培技术与病虫害防治》课件
- 卫生院、社区卫生服务中心关于开具死亡医学证明流程中死者死亡信息核实补充制度
- 2025年主管护师中级考试题库及答案参考
- 【语文】《短文两篇:陋室铭》课件 2024-2025学年统编版语文七年级下册
- 舞蹈疗法在儿童精神疾病康复中的应用-洞察分析
- 2025年春新人教版语文一年级下册教学课件 18 棉花姑娘
- 工贸企业负责人安全培训
- 《陪诊从业人员能力培训标准》
- 《氢气输送管道工程设计规范》
- 管网工程施工重难点分析及对应措施
- 2024ESC心房颤动管理指南解读-完整版
评论
0/150
提交评论