首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于PCI交换的数据处理模块设计

基于PCI交换的数据处理模块设计

摘要:PCIExpress突破传统总线,采用点到点的互连方式,每个设备都由独立的链路连接,独享带宽,提高传输速率。PCIE交换和桥接器提供协议转换能力为系统间的互连带来了便捷的解决方案,同时丰富了整个应用环境。本文基于PEX8648交换芯片设计实现了多PCIE设备互连的数据处理模块,对其硬件结构及软件配置方法进行了详细介绍。
0 引言
PCI Express是第三代高性能IO总线,在总线结构上采取了根本性的变革,主要体现在两个方面:一是由并行总线转变为串行总线;二是采用点到点的互连。将原并行总线结构中桥下面挂连设备的一条总线变成一条链路,一条链路可包含一条或多条通路,每条通路由两对差分信号线组成双单工的串行传输通道,没有专用的数据、地址、控制和时钟线,总线上各种事务组成信息包来传送。点到点的互连方式使得每个设备由独立的链路连接,独享带宽,这是提高传输速率的有效解决方案。
随着数量不断增长的PCIe处理单元和外设芯片,PCIE交换和桥接器提供协议转换能力,为这些系统的互连带来了便捷的解决方案,同时丰富了整个应用环境。PLX8648是PLX公司开发的PCIE交换芯片,符合PCIE2.0标准。支持12 port,48 lane,并且端口可以灵活配置、支持多播、低延迟、低功耗。支持热插拔功能,含有三个并行控制器和一个IIC串行扩展模块,配合使用IO端口控制器,可以在每个下游端口实现热插拔控制功能。本文采用PEX8648设计实现了一种可连接多种PCIE设备的数据处理模块。
1 PCIE交换开关
交换开关是一个具有2~n端口的设备,每个端口连一条PCIE链路,在系统中用于多设备的互联。交换开关可以将事务从任一个端口路由到另一个端口,交换开关内部可以抽象为图1的逻辑结构,基于一条虚拟PCI总线,该总线与上游端口及各下游端口间均为一虚拟PCI桥,各桥都采用PCI类型01配置空间头标,配置和枚举软件在系统引导时检测并初始化头标寄存器。
基于PCI交换的数据处理模块设计
PLX公司的PEX8648最多支持48通路,12端口的PCI Express Gen 2交换芯片,可选择配置每个端口的通路数为X4,X8或X16,也支持X1和x2的通路数,合计480GT/s的带宽。PEX8648交换开关具有灵活的体系结构,48条通路被平均分配在3个控制端口中,称之为Station,每个station包含16条通路,这3个控制端口通过内部互连到中枢RAM中。每个station中的16条通路可以组合,配置成1到4个PCIE端口。如果上游端口在其他station中,则当前station中的端口将使能为下游端口。其端口配置表如表1所示,表中方括号内为通道号。
基于PCI交换的数据处理模块设计
所有的端口序号都与下游端口内部虚拟PCI总线的PCI-PCI桥分派的PCI设备号相关联,例如端口6是一个下游端口,则内部PCI-PCI桥分给这个端口设备的Device Number就是6。PEX8648的任何一个端口都可配置成上游端口,但推荐将端口0配置成上游端口,PCI-PCI桥对上游端口不设定设备号,该端口的设备号由上游连接的设备分配。
2 模块设计
2.1 功能框图
本文设计的数据处理模块采用PowerPC8640处理器,该处理器配置了两种灵活的高性能IO接口。一种是×1、×2、×4、×8 PCI Expre ss接口,采用PCI-E总线实现板级高性能设备的串行点对点互连。另一种是1×、4×线串行RapidIO接口,本设计中均配置为PCIE接口。处理器对外通过PCIE交换开关互连显示处理芯片和存储控制单元,对外提供4路PCIE链路,可以连接更多的PCIE设备,其功能结构如图2所示。
基于PCI交换的数据处理模块设计
2.2 PEX8648端口分配
处理器总共连接6种PCIE设备,将处理器第二路PCIE接口上接PEX8648交换芯片,将PEX8648的port0设置成上游端口,配置为×8的PCI Express接口,交换开关下连接PCIE接口的显示处理器,2路对外×4的PCIE接口和2路×1的PCIE接口,5种设备连接的端口号分别现配置如图2所示,Port0为上游端口8640 PCIE1,×8通路ort4和Port5为×4通路ort6和port7为×1通路,Port8连接显示处理器,配置×8通路。
2.3 中断号映射
PEX8648支持PCI INTx信号中断机制,它可以向系统中断控制器发送中断信号。这种机制和现存的PCI软件兼容。PEX8648只用INTA#生成内部中断消息,因为他是一个单功能设备,但从下游端点引入的消息可以是INTA#、INTB#、INTC#、INTD#,下游端口内部生成的INTA#中断消息将依照下游端口的设备号在上游端口重新映射。这种重新映射表如表2所示。
基于PCI交换的数据处理模块设计
根据表2,PEX8648下挂接的5路PCIE接口连接的设备均发送INTA#中断,因此,按照它们连接的端口号分配如下:Port4对应INTA,Port5对应INTB,Port6对应INTC,Port7对应INTD,Port8对应INTA。
处理器PowerPC8640两路PCIE接口在根复合节点模式下接收INTx虚拟中断信号,并将INTx中断信号与中断请求信号IRQn逻辑上进行组合,其映射关系如下
基于PCI交换的数据处理模块设计
由上表可以得出在系统中断分配时,Port4对应IRQ0,Port5对应IRQ1,Port6对应IRQ2,Port7对应IRQ3,Port8对应IRQ0。
3 PCIE接口软件初始化
PowerPC8640的PCIE控制器上电后需要对配置寄存器以及EP设备进行初始化。首先初始化PowerPC8640的基地址和空间大小。处理器8640在内部定义了多个局部存取窗口,按照优先级选取一个窗口作为PCIE的配置窗口,可设置窗口的基地址和窗口大小。然后扫描PCIE链路上的PCIE设备,这时能扫描到PowerPC8640的PCIE设备,通过看ID号可判定扫描到PowerPC8640的PCIE设备后进行PCIE链路训练,训练通过后进行PowerPC8640的PCIE设备寄存器设置,需要把PowerPC8640的PCIE设备配置为主设备,设置PowerPC8640 的PCIE设备为BUS0,点对点连接的设备为BUS1。
配置完PowerPC8640的PCIE设备后再次扫描PCIE链路,查找链路上的PCIE交换开关PEX8648,PEX8648的总线号是BUS1,找到后再按照类型1配置交换开关头标区,配置原级总线号,次级总线号寄存器和分配给交换开关及所有下游设备的PCI空间基址和大小进行配置,然后对交换开关连有设备的端口的原级总线号,次级总线号寄存器和PCI空间基址和大小进行配置。
基于PCI交换的数据处理模块设计
配置完PEX8648交换开关后再次扫描PCIE链路,查找链路上的PCIE端节点设备,可以获得BUS4、BUS5、BUS6、BUS7、BUS8上连接有PCIE
设备的ID号,然后各个设备再配置各自的PCI配置空间即可完成PCIE初始化。整个流程图如图3所示。
4 总结
本文通过PCIE交换开关PEX8648实现了多PCIE设备互连的系统,并对PEX8648端口特性、互连方式及软件初始化方法进行了详细介绍。结果表明,基于PCIE交换的处理模块具有灵活的系统拓扑结构,降低了系统硬件复杂度和软件开发过程,可为同行设计提供参考。
继承事业,薪火相传
返回列表