一种具有主从自适应功能的CPCI通用处理模块设计
扫描二维码
随时随地手机看文章
摘要:通用处理模块在车载嵌入式系统中主要完成数据处理、计算等任务。介绍了一种基于PCI6466的具有主从自适应功能的CPCI通用处理模块的设计方案,模块针对CPCI底板总线具有主从自适应功能,为CPCI系统提供了一种通用的、具有主从自适应功能的通用处理模块的解决方案。
关键词:CPCI总线;PCI6466;通用处理模块;透明桥;非透明桥
在一些特定的条件下,由于气候、机械和电磁环境适应性、可靠性、可扩展性等方面的因素对嵌入式计算机有很高的要求,Compact PCI(CPCI)总线就是为适应这种要求而推出的一种工业计算机总线标准。CPCI可以迅速利用PCI的优点、提供满足工业环境应用要求的高性能的核心系统,同时还能充分利用传统的总线产品。CPCI不是重新设计的PCI规范,而是改造现行的PCI规范,使其成为无源底板总线式的系统结构。在车载嵌入式环境中,要求系统中搭载的通用处理模块针对专门设计的CPCI机箱底板具有主从自适应能力,这样的设计在具有多个CPCI外设的嵌入式平台中具有很大的优越性。针对这种需求,提出了一种基于PCI6466的具有主从自适应功能的CPCI通用处理模块。
1 系统结构
CPCI通用处理模块通过感知自己在CPCI底板总线的槽位(系统槽还是外设槽)调节自己的工作方式,系统结构如图1所示。设计中采用PCI6466作为模块内部PCI局部总线到CPCI底板总线的桥接器。PCI6466是一种功能强大的工业用PCI-PCI桥接器,可以在初端(Primary Port)和次端(Secondary Port)两个端口间实现完全异步的操作。PCI6466可以配置成透明桥和非透明桥2种模式,透明桥模式只提供系统间的电气隔离,非透明桥在提供电气隔离的同时还要提供系统间的地址隔离,这就为多个PCI设备在CPCI底板总线上应用提供了方便。
为了实现CPCI通用处理模块的主从自适应功能,在本设计中PCI6466被配置为通用模式。这种模式下,同一个CPCI通用处理模块可以任意的插在CPCI底板总线的系统槽(System Slot)和外设槽(Peripheral Slot)中,PCI6466通过感知模块所在的槽的类型来配置自己工作在透明桥模式还是非透明桥模式。在系统槽中,模块作为主设备,PCI6466工作在透明桥模式,在外设槽中,模块作为从设备,PCI6466工作在非透明桥模式。[!--empirenews.page--]
具体的实现方式是,在通用模式下,PCI6466的信号可以直接连接到CPCI总线的管脚,这样就可以通过信号控制信号来实现模块的主从自适应功能。如果通用处理模块被插入系统槽,信号为低,PCI6466工作在透明桥模式,通用处理模块按照主模块的方式对板内资源和从模块PCI6466的次端进行配置。反之,如果通用处理模块被插入外设槽,信号为高,PCI6466工作在非透明桥模式,通用处理模块按照从模块的方式对板内资源和本模块PCI6466的初端进行配置。
2 PCI6466非透明方式配置
PCI6466工作在透明模式时,由于其只对系统提供电气隔离,所以应用起来比较简便。但是对于PCI6466非透明桥来说,其配置方式就显得比较复杂。作为CPCI底板总线上的一个设备,非透明桥需要在向其他外设发送请求的同时向其他外设提供对内访问的空间,图2为非透明桥的数据流向。
PCI6466工作在非透明桥方式时,在PCI6466的初端需要配置下行基地址和上行翻译地址,在次端需要配置上行基地址和下行翻译地址。需要注意的是,在配置上下行基地址之前必须配置上下行基地址掩码。上下行地址掩码和上下行翻译地址的配置是在扩展寄存器中进行的,扩展寄存器的访问方式为在6466的PCI配置空间的偏移量0xD3中写地址(8位),在偏移量0xD4中写内容(32位)。扩展寄存器列表如图3所示。
[!--empirenews.page--]
掩码具体含义如下,例如在0xF中写入0x821F131F,0x13对应为下行基地址寄存器1的掩码,含义为基地址掩码最高有效位(MSB)的位置。例如掩码0x13表示掩码的最高为在第19位。基地址0x93100000和掩码0x13的关系见图4,配置后地址范围为0x9310 0000~0x931F FFFF。
3 综合嵌入式平台中CPCI通用处理模块工作方案
在CPCI底板总线上插有多个模块时,这时需要同时考虑主模块和从模块的协同工作。针对提出的基于PCI6466的具有主从自适应功能的CPCI通用处理模块,考虑工作方案为:CPCI通用处理模块作为主模块时,主模块的PCI6466工作在透明桥方式,这时由于从模块的PCI6466工作在非透明模式,所以需要由主模块在从模块PCI6466的次端配置从模块的上行基地址和下行翻译地址,同时从模块需要对自己的上行翻译地址和下行基地址进行配置。
为了使系统中主从模块对CPCI访问空间的配置更加智能,在系统上电时,主模块向从模块的基地址寄存器写入0xFFFF FFFF,然后读出,根据读出数据中0b1的个数确定从模块需要多少存储器空间。然后自行分配相应大小空间并将基地址写入基地址寄存器。
需要考虑的一点是,具有自适应功能的CPCI通用处理模块由于要在系统槽和外设槽2种插槽中使用,所以一般情况下都是直接将PCI6466配置成初端先启动或次端先启动,并不会通过考虑模块具体的使用来设置到底是初端先启动还是次端先启动。这样带来的问题是,插入系统槽和外设槽的模块被同时配置成初端先启动时,若主模块在上电复位结束后即访问CPCI总线对各个从模块的次端进行配置,但从模块的PCI-PCI桥接器配置成初端先启动,即从模块操作系统启动后,对桥的初端进行配置后,次端才能进行配置。
造成的结果是,主控模块上电复位后访问从模块的次端,CPCI总线被拉死,程序停止执行,看门狗复位有效,复位整个系统。主模块再次访问从模块,CPCI再次被拉死,反复复位。这时就需要操作主控模块待从模块配置完成后再对从模块进行配置,防止系统被拉死。
4 结语
本设计提出的基于PCI6466的具有主从自适应功能的CPCI通用处理模块在具体的应用环境中具有很大的便利性,能够方便地应用在CPCI底板总线的系统槽和外设槽中,同时针对一些可能出现的问题做针对性的处理,为CPCI系统提供了一种通用的、具有主从自适应功能的通用处理模块的解决方案。