DSP与ISA总线PnP卡的接口技术研究
发布时间:2008/5/27 0:00:00 访问次数:686
摘要:通过分析isa总线pnp卡与微机的软、硬件接口电路,用dsp芯片tms320f206结合外国电路模拟isa时序,实现了dsp对pnp卡的自动识别与配置,从而使isa总线pnp卡在非pc环境下的应用变成现实。 关键词:isa总线 即插即用(pnp) dsp芯片 识别 配置 为解决多个总线设备共享系统总线时所带来的系统底层资源的分配和再分配问题,microsoft公司在1993年以后相继公布了即插即用pnp(plug-and-play)规范,包括的总线类型有isa、eisa、pcmcia、pci、vesa及scsi等。pnp技术提供了对于底层硬件资源包括i/o端口、irq、dma通道以及内存等的智能管理,免除了用户因安装新的硬件设备而带来的烦恼。pnp不需要手工改变设备的开关或跳线,给大家带来了好处,但也给在非pc硬件平台上的应用带来了麻烦。原因在于pnp的实现必须具备两个条件:一是pc机主板要有支持pnp的bios;二是要有支持pnp的操作系统,如windows95/98/2000等。当脱离了pc机环境,这两个条件皆不具备,pnp设备的应用受到了极大的限制。比如在dsp与isa总线接口系统的设计中,一般isa标准的非pnp设备有固定的系统资源,通过跳线或开关手工设置完成后,上电即可对其编程,相应的isa接口卡就会做出反应。而支持pnp的接口卡上面没有开关和跳线,板上的资源需要用软件配置;当同时使用多块pnp接口卡时,首先还必须进行pnp卡的识别,然后才能对相应的接口卡进行资源配置。在笔者以前所从事的科研任务中,需要dsp与isa总线的网卡和声进行接口设计,所用的网卡和声卡都不支持pnp规范。随着pnp技术的发展和普遍应用,如今在市场上很难见到不支持pnp的老isa卡了,这就给笔者提出了新的问题:如何在非pc硬件环境下使用pnp设备?本文以pnp网卡和声卡为例,通过分析isa总线pnp卡与微机的软、硬件接口电路,用dsp芯片tms320f206结合外围电路模拟isa时序,实现了dsp对pnp卡的自动识别与配置,从而使isa总线pnp卡在非pc环境下的应用变成现实。 1 isa总线pnp协议简介[1] pnp逻辑必须在上电后经软件使能才起作用。使能的过程是将一个预先定义好的序列(32次i/o写)写入地址端口,地址端口的地址为279h,预先定义好的序列就称为pnp初始化关键字。这32个字节为: 6a,b5,da,ed,f6,fb,7d,be,df,6f,37,1b,0d,86,c3,61,b0,58,2c,16,8b,45,a2,d1,e8,74,a,9d,ce,e7,74,39 当pnp卡检测到上述32字节的初始化关键字后,所有的pnp卡都进入了隔离状态,等待软件一个一个地却识别并配置资源。pnp卡能被软件识别的关键在于每个卡都有一个唯一的序列标识符。该序列标总值符由9个字节共72位组成,其中前四个字节是生产厂家的标识,紧接的四个字节可以是任何值,只要系统中任意两块卡之间的这八个字节不完全相同即可。最后的一个字节是前八个字节的校验和。软件就是通过读取每个卡的序列标识来识别该pnp卡是由哪个公司生产的并正确调用该公司提供的驱动程序。序列标识符是按位顺序读出的,图1示出了序列标识符的构成及移位过程。对每个字节,协议规定移出的顺序是bit[0],bit[1], 直到bit[7]。 读序列标识符的口地址为200h到3ffh之间的任意地址,只要该地址未被其它资源占用。设置该地址的过程见本文的第四部分。所有卡的读地址皆相同,设将要读的一块卡的序列标识符的该位为“1”,而另一块卡的相位是“0”,如果这两块卡都来驱动数据总线,则不可避免地会产生冲突。pnp卡识别的关键技术也就在这里,即pnp上的硬件参与配合了该卡的识别判断过程。每块卡会根据自己序列标识符的每一位对i/o读做出相应的反应。 如果该卡的序列标识符的当前位是“1”,那么该卡就
摘要:通过分析isa总线pnp卡与微机的软、硬件接口电路,用dsp芯片tms320f206结合外国电路模拟isa时序,实现了dsp对pnp卡的自动识别与配置,从而使isa总线pnp卡在非pc环境下的应用变成现实。 关键词:isa总线 即插即用(pnp) dsp芯片 识别 配置 为解决多个总线设备共享系统总线时所带来的系统底层资源的分配和再分配问题,microsoft公司在1993年以后相继公布了即插即用pnp(plug-and-play)规范,包括的总线类型有isa、eisa、pcmcia、pci、vesa及scsi等。pnp技术提供了对于底层硬件资源包括i/o端口、irq、dma通道以及内存等的智能管理,免除了用户因安装新的硬件设备而带来的烦恼。pnp不需要手工改变设备的开关或跳线,给大家带来了好处,但也给在非pc硬件平台上的应用带来了麻烦。原因在于pnp的实现必须具备两个条件:一是pc机主板要有支持pnp的bios;二是要有支持pnp的操作系统,如windows95/98/2000等。当脱离了pc机环境,这两个条件皆不具备,pnp设备的应用受到了极大的限制。比如在dsp与isa总线接口系统的设计中,一般isa标准的非pnp设备有固定的系统资源,通过跳线或开关手工设置完成后,上电即可对其编程,相应的isa接口卡就会做出反应。而支持pnp的接口卡上面没有开关和跳线,板上的资源需要用软件配置;当同时使用多块pnp接口卡时,首先还必须进行pnp卡的识别,然后才能对相应的接口卡进行资源配置。在笔者以前所从事的科研任务中,需要dsp与isa总线的网卡和声进行接口设计,所用的网卡和声卡都不支持pnp规范。随着pnp技术的发展和普遍应用,如今在市场上很难见到不支持pnp的老isa卡了,这就给笔者提出了新的问题:如何在非pc硬件环境下使用pnp设备?本文以pnp网卡和声卡为例,通过分析isa总线pnp卡与微机的软、硬件接口电路,用dsp芯片tms320f206结合外围电路模拟isa时序,实现了dsp对pnp卡的自动识别与配置,从而使isa总线pnp卡在非pc环境下的应用变成现实。 1 isa总线pnp协议简介[1] pnp逻辑必须在上电后经软件使能才起作用。使能的过程是将一个预先定义好的序列(32次i/o写)写入地址端口,地址端口的地址为279h,预先定义好的序列就称为pnp初始化关键字。这32个字节为: 6a,b5,da,ed,f6,fb,7d,be,df,6f,37,1b,0d,86,c3,61,b0,58,2c,16,8b,45,a2,d1,e8,74,a,9d,ce,e7,74,39 当pnp卡检测到上述32字节的初始化关键字后,所有的pnp卡都进入了隔离状态,等待软件一个一个地却识别并配置资源。pnp卡能被软件识别的关键在于每个卡都有一个唯一的序列标识符。该序列标总值符由9个字节共72位组成,其中前四个字节是生产厂家的标识,紧接的四个字节可以是任何值,只要系统中任意两块卡之间的这八个字节不完全相同即可。最后的一个字节是前八个字节的校验和。软件就是通过读取每个卡的序列标识来识别该pnp卡是由哪个公司生产的并正确调用该公司提供的驱动程序。序列标识符是按位顺序读出的,图1示出了序列标识符的构成及移位过程。对每个字节,协议规定移出的顺序是bit[0],bit[1], 直到bit[7]。 读序列标识符的口地址为200h到3ffh之间的任意地址,只要该地址未被其它资源占用。设置该地址的过程见本文的第四部分。所有卡的读地址皆相同,设将要读的一块卡的序列标识符的该位为“1”,而另一块卡的相位是“0”,如果这两块卡都来驱动数据总线,则不可避免地会产生冲突。pnp卡识别的关键技术也就在这里,即pnp上的硬件参与配合了该卡的识别判断过程。每块卡会根据自己序列标识符的每一位对i/o读做出相应的反应。 如果该卡的序列标识符的当前位是“1”,那么该卡就