一种基于总线协议芯片的PCI总线模块的设计方法
2014-01-15谢利军陈瑜轩
谢利军,陈瑜轩
(1.海军装备部 陕西 西安 710043;2.中国航空计算技术研究所 陕西 西安 710068)
PCI(Peripheral Component Interconnect)[1]总 线 是 目 前 被普遍设计采用的局部总线之一。PCI接口模块多用于各种高速、大数据量的处理系统中,可以提高外设间以及外设与主机间高速数据传输,解决标准总线数据传输率低等问题。PCI协议芯片实现了PCI总线规范要求的所有硬件接口信号和配置空间寄存器,可以用来实现模块总线转换的功能,本文介绍使用PCI协议芯片设计实现模块设计的方法。
1 协议芯片
本文介绍的设计方法以PLX[2]公司的PCI9054为例。
PCI9054是PLX公司生产的PCI总线通用接口芯片,其设计符合PCI总线V2.1和V2.2规范,支持PCI双地址周期,地址空间高达4GB。
PCI9054 的本地端(Local Bus)可以编程实现 8,16,32 位的数据宽度,本地总线速率高达50 MHz,支持3种数据传输模式:直接主模式(PCI Initiator)、直接从模式(PCI Target)和DMA模式,在PCI总线和本地总线间的数据传送速率高达132MB/S。
PCI9054提供了PCI总线、本地总线和可选的SE2PROM(Serial EEPROM)3个接口。PCI9054传递PCI总线和本地总线之间数据,既可以作为两个总线的主控设备去控制总线,也可以作为两个总线的目标设备去响应总线[3]。SE2PROM是可选的接口,设计可通过PCI主设备或SE2PROM进行内部寄存器配置。如果选择SE2PROM,PCI9054可上电后自动加载配置内部寄存器;如果不选择SE2PROM,设计者需要通过访问内部寄存器方式来配置内部寄存器。
2 设计方法
采用PCI协议芯片实现的接口模块的功能框图如图1所示。
根据设计原理可将流程分为协议芯片与PCI总线接口电路设计、协议芯片与本地总线接口电路设计、参数配置三部分。
图1 PCI协议芯片实现模块设计原理框图Fig.1 PCI protocol chip module design schematic diagram
2.1 协议芯片与PCI总线接口设计
PCI9054实现了PCI总线规范要求的所有硬件接口信号,所以在设计协议芯片与PCI总线接口时,按照PCI标准规范将控制、数据、地址等信号线对应连接[4]。
2.2 协议芯片与本地总线接口设计
协议芯片与本地总线接口的设计需要根据硬件需求先选择本地总线的工作方式。
PCI9054本地总线可工作在M,C,J 3种模式下。
M模式是专为Motorola公司的MCU设计的工作模式,如果选择Motorola公司PC850/860芯片可使用M模式[6]。
C模式是PCI9054通过片内逻辑控制将PCI的地址线和数据线分开,方便地为本地工作时序提供各种工作方式,一般较广泛应用于系统设计中。
J模式是一种没有Local Master的工作模式,它的好处是地址数据线没有分开,严格仿效PCI总线的时序。
以上3种工作方式可利用模式选择引脚加以选择。一般电路可用C模式或J模式,C模式应用较为简单方便,较为常用[7]。
除数据地址信号外,协议芯片与本地总线接口硬件设计的关键信号主要包括:
ADS信号:地址数据有效信号,表示一个新的访问周期的开始;
LHOLD信号:表示PCI模块申请使用本地总线;
LHOLDA信号:主机对PCI模块申请使用本地总线的应答;READY信号:表示数据读写周期的结束;BLAST信号:表示总线访问的last transfer。在PCI模块的PFGA逻辑设计中应重点关注和控制好上述信号。
2.3 参数配置
PCI9054的工作方式,数据传输方式以及空间设置等功能都是通过配置其内部寄存器(Internal Registers)来实现的。PCI9054内部提供了5种寄存器:PCI配置寄存器,本地端配置寄存器,运行时间(RUNTIME)寄存器,DMA寄存器和I2O信息寄存器[8]。
2.3.1 数据传输模式配置
上文提到PCI总线和Local Bus传输数据有3种模式,是由PCI9054内部6个零等待可编程FIFO存储器(FIFOs)实现,这3种模式为:
①PCI Initiator模式:包括PCI发起读操作和PCI发起写操作;
②PCI Target模式:包括PCI目标读操作和PCI目标写操作;
③DMA模式:包括PCI总线到Local Bus传输和Local Bus到PCI总线传输。
传输模式的选择根据PCI模块的工作模式确定。如果PCI模块作为总线的从设备,则传输由PCI发起控制,PCI9054为作PCI总线的工作目标,这时应选择PCI Initiator模式。当模块设计是本地端发起控制,此时PCI9054成为主控设备,而PCI总线则成为PCI9054的工作目标,这种情况下应选择PCI Target模式。在数据进行DMA传输时,PCI9054对于PCI总线和Local Bus而言都是主控设备,PCI9054本身具有DMA控制器,可以完全脱离PC机进行DMA传输控制,此时PCI9054工作在DMA模式[9]。
数据传输模式的选择是通过设置方式寄存器来实现的。
2.3.2 空间资源配置
对本地地址空间及其本地总线属性的设置通过本地配置寄存器的配置来实现的。这些配置要根据实际开发的硬件板卡的硬件资源进行配置。而配置PCI配置寄存器的任务就是要把某一段本地地址映射为PCI总线地址,也就是当PCI主设备要访问本地地址空间时,要知道其对应的PCI总线地址。
首先要在PCI总线主控模块上为PCI9054的内部寄存器分配一段空间,这样我们得出PCI配置寄存器的基址(标示为PC_Add)。而本地端配置寄存器的基址是由PCI配置寄存器中的PCIBAR0给出的(标示为LCR_Add)。
PCI配置寄存器将本地端的芯片通过本地端地址翻译成PCI总线的地址,也就是将本地的芯片映射到系统的内存或I/O口。这样使得用程序操作这一段内存(或I/O)实际上就是对本地的芯片操作[10]。
PCI9054内部寄存器可通过PCI主设备或SE2PROM进行配置。对于有处理器的PCI模块设计者还可以通过Local Processor配置。
3 结束语
PCI接口模块也可使用硬件逻辑来实现总线转换的功能。使用硬件逻辑的设计比较灵活,设计人员可以根据自己的需要设计适合于特定功能的接口电路,而不必实现PCI总线的全部功能。但由于PCI总线协议复杂,设计PCI控制接口难度较大,对于产品不大又有时限的工程项目来说,耗时长、成本高。相比于逻辑设计控制接口的设计方法,协议芯片的设计方法成本较低,具有通用性,能够有效降低接口设计的难度,缩短开发时间,是众多“短平快”项目的最优选择。
[1]PLX技术公司.V2.1.PLX9054数据手册 [S].美国:[s.n.],2000.
[2]PLX技术公司.V2.0.PCI9054 RDK-LITE硬件参考手册[S].美国:[s.n.],.2003.
[3]李贵山,陈金鹏.PCI局部总线及其应用[M].西安:西安电子科技大学出版社,2003.
[4]瞿世尊,陈健.PCI9054在PCI总线高速数据采集中的应用[J].电子技术,2004(2):59-61.QU Shi-zhun,CHEN Jian.The application ofPCI9054 in the PCI Bus in high speed data acquisition[J].Electronic Technology,2004(2):59-61.
[5]刘和平.PIC16F87X单片机实用软件与接口技术-C语言及其应用[M].北京:北京航天航空出版社,2002.
[6]张明峰.PIC单片机入门与实践[M].北京:化京航天航空人学出版社,2004.
[7]张国华.模拟电路的接地技术[J].电子制作,2005(4):35.ZHANG Guo-hua.Grounding techniques for analog circuits electronic production[J].Electronic Production,2005(4):35.
[8]田军,罗方.等精度测频装置的制作[J].电子制作,2006(1):54.TIAN Jun,LUO Fang.Precision frequency measurement device electronic production[J].Electronic Production,2006(1):54.
[9]李澎.简易倍频电路.[EB/OL].[2005-07-19].http://www.eetchina.com/简易倍频电路.htm.
[10]黄丙银,宗建华.利用VB6.0实现P IC单片机与PC串行通信[J].电子产品世界,2002(16):79-80.HUANG Bing-yin,ZONG Jian-hua.Using VB6.0 Jianhua P IC MCU and PC serial communication[J].Electronic Products in the World,2002(16):79-80.