龙芯2E北桥及相关接口

龙芯2E处理器集成了DDR控制器,所以北桥不再包含内存控制器,这样北桥的主要接口就主要包括:处理器接口,PCI接口,Local IO接口,以及其他信号线。

北桥结构图

northbridge-flow.png

处理器接口

处理器接口主要包括北桥与处理器之间数据传输的64位的SysAD总线接口以及处理器的复位信号和中断信号。SysAD总线是MIPS处理器常用的一种总线接口,其数据和地址复用,数据宽度为64位,地址宽度为32位(可扩展至36位)。主要负责北桥与处理器之间数据传输。

在由SysAD传输数据的同时,也采用FIFO缓冲实现了总线分离传输(Split transaction)技术。从而使得总线的效率更高。处理器的复位信号和中断信号则分别由北桥内部的复位状态机和中断控制处理模块来提供。

PCI接口

北桥实现的PCI总线的数据宽度为32位,频率为33MHz,符合PCI2.2版本规范。北桥内部集成了PCI总线仲裁,支持8个PCI主设备的请求。片外PCI设备的IO空间,存储器空间,配置空间分别被映射到系统总线上的三段地址空间。(详细见系统地址分配)。

Local IO接口

2E北桥集成了local I/O总线,这是一套典型的intel风格的并行总线,有两个片选信号:nRomCS 和 nIOCS ,以及8bit数据,19bit地址总线;支持存储空间高达4Mb。并行总线接口控制器是挂在北桥内部WishBone总线上的一个从设备。主要由挂在总线上的CPU接口端的Wishbone主设备访问。

GPIO接口

GPIO,通用输入输出口(general-purpose I/O port)。可根据需要将GPIO管脚编程为输出或输出。北桥集成了7个GPIN管脚和9个GPIO管脚。GPIN用于通用输入。

PCI访问内存

由于龙芯2E集成了DDR内存控制器。所以当PCI设备访问内存的时候,其路径比较长,首先将PCI访问转成WishBone,然后WishBone转成SysAD,再由SysAD访问内存。其结构图如下:

pci_access_memory.png

如上图所示,处理器访问内存的数据总线是64位的,SysAD总线也是64位的,WishBone总线也是64位的,PCI总线是32位的。SysAD总线支持总线突发传输,其突发长度为4个双字,既32个字节。PCI总线也支持突发传输。

外部PCI设备访问内存时,北桥可以映射高达256MB的内存空间。但在实际应用中除了映射整个地址空间外没有做任何事情,所以,在默认的情况下,北桥只会提供一个8MB的窗口。这样北桥可以通过对寄存器Pcimembasecfg设置一个偏移量,从而将窗口重新映射到北桥的内存空间。

WishBone转PCI

WishBone转PCI模块内部则使用了双向各两个FIFO来传输数据,这样就增加传输速度和效率。WishBone转PCI模块部分结构如下图:

wishbone-pci.png

如上图所示,PCI该部分有两个独立单元组成,PCI目标模块和WishBone从单元模块。每个单元自身都有一套完整的功能支持WishBone和PCI总线之间的传输。WishBone从单元可作为该模块中WishBone侧的从设备和PCI侧的主设备;PCI目标单元则作为PCI侧的目标设备和WishBone侧的主设备。PCI目标单元实现PCI总线从设备接口和WishBone总线的主设备接口;而WishBone从单元则用于实现WishBone总线丛接口和PCI总线的主设备接口。

PCI控制寄存器

当片外PCI设备访问北桥的时候,其地址需要经过Pcimembasecfg寄存器的控制与映射才能生成正确的系统的本地地址。

PCI内存基地址配置寄存器
物理地址:0x1FE0_0114
读写类型:可读可写
复位值: 0x0000_0000

pcimembasecfg.png
pcimembasecfg-description.png

外部PCI访问北桥地址转换

在上一小节中,描述了Pcimembasecfg寄存器的各个位的功能。由PCI地址转换成本地系统地址的过程如下:

由于北桥最大提供256MB的空间,所以PCI地址的[31:28]不起作用,将该4位省略。那么[27:23]则定义8MB的窗口映射到256MB空间的那一段。PCI地址的[27:23]位首先跟掩码地址(Pcimembasecfg寄存器中mask的非值)进行逻辑“与”运算,再与传输地址(Pcimembasecfg寄存器中trans的值)进行逻辑“或”运算,得到的结果就是本地地址的[27:23]的地址位,那么PCI地址的[22:0]则直接赋给本地地址的[22:0]位。这样结合起来就生成本地地址的[27:0]位。

在生成系统本地地址[27:0]位的同时,配置空间的base/trans/mask寄存器组也在参与运算。PCI的高位地址首先配置空间提供的mask地址进行逻辑“与”,而配置空间的base地址与mask地址也进行逻辑“与”,如果两者相同,则该映射空间被命中。输出地址的高位[27:23]则由Pcimembasecfg寄存器与PCI地址生成的[27:23]提供,而[31:28]位则由配置空间的trans地址提供。低[27:0]则由PCI地址提供。这样就生成了完整的访问内存的32位地址。

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License