PCI总线语音卡及WDM驱动程序设计
发布时间:2008/6/3 0:00:00 访问次数:436
摘要:介绍了pci总线控制芯片pci2040的功能及内部结构,分析了基于pci总线的dsp语音卡的硬件结构及实现方法,描述了wdm设备驱动程序的特点及pci语音卡驱动程序主要模块的设计方法和编程注意要点。
关键词:pci总线 pci2040 dsp wdm 驱动
cti(computer telephone integration)即计算机电话集成技术已经发展了30多年。其中电话语音卡是cti中的典型应用之一,它作为电脑与公用电话网的接口设备,应用领域已经渗透到社会各个部门。同时,在语音卡的开发中也不断注入了新的技术,软件上有语音合成、语音识别等技术,而硬件上最重要的就是dsp技术和pci总线技术。研制了基于tms320vc5410 dsp的pci语音卡,并设计了相应的wdm设备驱动程序,取得了良好的效果。
1 硬件设计
1.1 pci总线控制芯片pci2040
pci总线是一种不依附于某个具体处理器的局部总线,它支持32位或64位的总线宽度,频率通常是33mhz,目前最快的pci2.0总线工作频率是66mhz。工作在33mhz、32位时,理论上最大数据传输速率能达到133mb/s。它支持猝发工作方式,提高了传输速度,支持即插即用,pci部件和驱动程序可以在各种不同的平台上运行[1]。
实现pci总线协议一般有两种方法,一是用fpga设计实现,但pci协议比较复杂,因此难度较大;二是采用pci总线控制芯片,如amcc公司的s5933、plx公司的pci9080等通用的pci接口芯片。ti公司专门推出了针对pci总线和dsp接口的芯片pci2040[2],它不但实现了pci总线控制的功能,而且提供了和dsp芯片无缝的接口,因而大大简化了系统设计的复杂度并缩短了开发时间。
pci2040内部功能框图如图1所示。
pci2040是一个pci-dsp桥接器件,它提供了pci局部总线和tms320c54x 8位主机接口(hpi)与tms320c6x 16位主机接口的无缝连接。一片pci2040最多能同时挂接4片dsp芯片。同时,它还提供了一个串行eeprom接口,一个通用输入输出接口(gpio)和一个16位通用总线接口(为ti jtag测试总线控制器提供接口)[2]。pci2040只能作为pci目标设备使用,不能作为pci主设备使用;它只支持单字的读写,不能提供dma操作。pci2040能够兼容3.3v和5v信号环境系统中的3.3v和5v信号可以直接从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所示。
电话信号音检测部分主要实现振铃检测、摘挂机及话音传输功能。系统的核心是dsp,它完成各种复杂算法的处理,包括g.729编解码算法、回声消除算法、话音检测及软件摘挂机算法等。tms320vc5410是ti 54x系列中一款高性能的dsp,它的处理功能达到100mips,因此能满足算法复杂度的要求。它的最大特点是片内集成了64k×16bit的ram和16k×16bit的rom[3]因而不需要外加sram或sdram就可以满足系统设计的要求。tms320vc5410内置了3个多通道缓冲串行口(mcbsp)、6个dma通道和一个8位增强型hpi口,可以方便地和外部进行数据交换。在语音卡的设计中,采用pci2040来完成dsp与主机交换数据的任务。
1.2.2 pci2040与tms320vc5410接口
pci2040与tms320vc5410 hpi口的连接如图3所示。
pci_ad31~pci_ad15决定了pci2040的控制空间基地址(control space base address)寄存器的值,这个值实际上是系统自动分配的。所有的pnp器件都是如此它将控制空间映射到主机内存,映射的空间大小为232-17=32kb。dsp芯片的选择是通过解码pci_ad14、pci_ad13来实现的。而pci_ad12和pci_ad11分别映射到hcntl1和hcntl0,用以决定访问dsp hpi寄存器的方式。其对应关系如表1所示。
摘要:介绍了pci总线控制芯片pci2040的功能及内部结构,分析了基于pci总线的dsp语音卡的硬件结构及实现方法,描述了wdm设备驱动程序的特点及pci语音卡驱动程序主要模块的设计方法和编程注意要点。 关键词:pci总线 pci2040 dsp wdm 驱动 cti(computer telephone integration)即计算机电话集成技术已经发展了30多年。其中电话语音卡是cti中的典型应用之一,它作为电脑与公用电话网的接口设备,应用领域已经渗透到社会各个部门。同时,在语音卡的开发中也不断注入了新的技术,软件上有语音合成、语音识别等技术,而硬件上最重要的就是dsp技术和pci总线技术。研制了基于tms320vc5410 dsp的pci语音卡,并设计了相应的wdm设备驱动程序,取得了良好的效果。 1 硬件设计 1.1 pci总线控制芯片pci2040 pci总线是一种不依附于某个具体处理器的局部总线,它支持32位或64位的总线宽度,频率通常是33mhz,目前最快的pci2.0总线工作频率是66mhz。工作在33mhz、32位时,理论上最大数据传输速率能达到133mb/s。它支持猝发工作方式,提高了传输速度,支持即插即用,pci部件和驱动程序可以在各种不同的平台上运行[1]。 实现pci总线协议一般有两种方法,一是用fpga设计实现,但pci协议比较复杂,因此难度较大;二是采用pci总线控制芯片,如amcc公司的s5933、plx公司的pci9080等通用的pci接口芯片。ti公司专门推出了针对pci总线和dsp接口的芯片pci2040[2],它不但实现了pci总线控制的功能,而且提供了和dsp芯片无缝的接口,因而大大简化了系统设计的复杂度并缩短了开发时间。 pci2040内部功能框图如图1所示。 pci2040是一个pci-dsp桥接器件,它提供了pci局部总线和tms320c54x 8位主机接口(hpi)与tms320c6x 16位主机接口的无缝连接。一片pci2040最多能同时挂接4片dsp芯片。同时,它还提供了一个串行eeprom接口,一个通用输入输出接口(gpio)和一个16位通用总线接口(为ti jtag测试总线控制器提供接口)[2]。pci2040只能作为pci目标设备使用,不能作为pci主设备使用;它只支持单字的读写,不能提供dma操作。pci2040能够兼容3.3v和5v信号环境系统中的3.3v和5v信号可以直接从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所示。 电话信号音检测部分主要实现振铃检测、摘挂机及话音传输功能。系统的核心是dsp,它完成各种复杂算法的处理,包括g.729编解码算法、回声消除算法、话音检测及软件摘挂机算法等。tms320vc5410是ti 54x系列中一款高性能的dsp,它的处理功能达到100mips,因此能满足算法复杂度的要求。它的最大特点是片内集成了64k×16bit的ram和16k×16bit的rom[3]因而不需要外加sram或sdram就可以满足系统设计的要求。tms320vc5410内置了3个多通道缓冲串行口(mcbsp)、6个dma通道和一个8位增强型hpi口,可以方便地和外部进行数据交换。在语音卡的设计中,采用pci2040来完成dsp与主机交换数据的任务。 1.2.2 pci2040与tms320vc5410接口 pci2040与tms320vc5410 hpi口的连接如图3所示。 pci_ad31~pci_ad15决定了pci2040的控制空间基地址(control space base address)寄存器的值,这个值实际上是系统自动分配的。所有的pnp器件都是如此它将控制空间映射到主机内存,映射的空间大小为232-17=32kb。dsp芯片的选择是通过解码pci_ad14、pci_ad13来实现的。而pci_ad12和pci_ad11分别映射到hcntl1和hcntl0,用以决定访问dsp hpi寄存器的方式。其对应关系如表1所示。
|