- 相关推荐
ARM922T核ZCP320A处理器PCI总线操作
摘要:本文简要说明了ZCP320A处理器内部集成的PCI总线接口、编程模式及工作模式,并介绍了作为主设备时如何访问外部扩展的RTL8139 PCI网卡设备。为以后的设计者提供借鉴及应用基础。ZCP320A采用了ARM公司的ARM922T核,ARM922T是ARM9TDMI通用处理器家族中的一员采用哈佛结构内部使用5级流水线支持32位的ARM指令系统和16位的Thumb指令系统包括两个相互独立的8KB 的数据和指令高速缓存,高速缓存行的长度是8个字。ARM922T 实现增强型ARM结构v4MMU以提供对指令和数据地址的转换和访问许可检测。ARM922T 支持ARM调试结构协处理器以及Tracking ICE。
ZCP320A内部使用三条AHB总线连接实现功能所需的主从设备。每条AHB总线连接一个主设备和多个从设备。根据总线连接的主设备的不同,三条总线分别被命名为COREBUS(ARM9 核作为该总线的主设备)、PBUS(PCI桥作为该总线的主设备)和DBUS(DMA控制器作为该总线的主设备)。这三条总线由总线管理模块统一进行管理。
ZCP320A集成的PCI总线接口是一个符合PCI协议2.2的总线接口。由于ZCP320A的内部总线是符合AMBA AHB协议的总线,所以在ZCP320A中设计了一个AHB-PCI的桥来实现AMBA AHB协议到PCI协议的转换。PCI总线通过AHB-PCI桥连接到内部AHB总线。
1 PCI总线接口概述
在ZCP320A中设计了一个AHB-PCI的桥来实现AMBA AHB协议到PCI协议的转换。PCI总线通过AHB-PCI桥连接到内部AHB总线。如图1所示。
AHB-PCI 桥是实现AHB总线和PCI总线的协议转换,实现AHB总线和PCI 总线之间数据交换的一个设备,AHB-PCI桥是32位的,即AHB总线和PCI总线都是32位的地址/数据总线。在CPU内部桥和两条内部总线相连接,COREBUS 和PBUS。这两条内部总线都符合AMBA AHB总线协议。在COREBUS上,ARM CORE 作为该总线的唯一主设备,桥则作为该总线的一个从设备。在PBUS上,桥作为该总线的唯一主设备,PCI缓冲及存储器则作为其从设备。在CPU外部,桥则和PCI总线相连接。通过COREBUS, ARM CORE访问桥及穿过桥访问外部的PCI设备。外部的PCI设备则通过PCI总线访问该桥并穿过桥到PBUS上访问CPU的内部存储器等资源。桥为PCI总线和内部ARM CORE及内部存储器的通信提供了数据缓冲。ARM CORE写数据缓冲由两个FIFO组成,每个FIFO可容纳32字节的数据和4 字节的地址。ARM CORE读数据缓冲由一个FIFO组成,该FIFO可容纳32字节的数据和4字节的地址。在另一侧PCI写数据缓冲由两个FIFO组成,每个FIFO可容纳32字节的数据和4字节的地址。PCI读数据缓冲由一个FIFO组成,此FIFO也可容纳32字节的数据和4字节的地址。当有大量数据需要进行传输的时候,桥上提供了DMA控制器供使用,可以大大提高数据通信效率。该DMA 控制器具有一个32字节的接收FIFO和一个32字节的发送FIFO。因此DMA在传输数据的时候可以实现乒乓效应,也就是说在接收的同时发送数据。
通过AHB-PCI桥,内部的ARM核可以对外部PCI设备进行访问;同时,外部的PCI设备也可以对内部的CPU资源进行访问。当AHB-PCI桥作为COREBUS上的从设备的时候,它从COREBUS上接收ARM发出读/写命令,然后在PCI总线上发起相应的传输,也就是说此时桥作为PCI的主设备。当外部PCI设备对AHB-PCI桥进行访问的时候,桥作为PCI从设备接收PCI 总线上的命令,同时作为AHB主设备在PBUS上发起相应的操作以达到访问CPU资源的目的。这就是CPU访问外部设备和外部设备访问CPU资源的两条路径。
ZCP320A的PCI桥在PCI总线仲裁方面,可以用外部的仲裁器,也可以用桥本身提供的仲裁器。设计人员可以根据需要选择用外部的仲裁器,还是用ZCP320A的PCI桥上的仲裁器。这个选择通过配置PCI混合控制寄存器PCI_MISC_CTL(偏移地址是0x100)的位12。如果使用外部仲裁器则将该位配置为1,而如果使用桥内部的仲裁器则将该位配置为0。桥上的PCI 仲裁器最多支持6个PCI主设备(包括ZCP320A本身)。其仲裁算法为分组轮循的优先算法。
ZCP320A提供了地址转换功能和地址空间范围定义功能。地址转换包括两个方向,一是从ARM CORE到外部PCI空间的地址转换;二是从PCI空间到PBUS空间的转换。地址转换和地址空间范围都是通过一个称为地址窗口的机制来实现的。在从ARM CORE到外部PCI空间的方向定义了4个窗口,即窗口0/1/2/3,每个窗口由两个寄存器来定义,窗口基地址寄存器(CBUS_BST0/1/2/3)和窗口控制寄存器(CBUS_TI0/1/2/3_CTL)。在窗口基地址寄存器中定义了该窗口在COREBUS上的基地址及该窗口的属性(存储器或I/O空间是否可预取,是否可对32位的任一字节进行访问),而在窗口控制寄存器中则定义了该窗口转换到PCI空间后的基地址,该窗口的大小及窗口使能控制和地址转换使能控制。在从PCI 空间到PBUS空间的方向也定义了4个窗口,PCI寄存器窗口和PCI从设备窗口0/1/2。其中PCI寄存器窗口由一个寄存器(PCI_BSREG)来控制该窗口在PCI总线空间的基地址及窗口属性,而PCI 从设备窗口0/1/2则由两个寄存器来定义,即窗口基地址寄存器(PCI_BST0/1/2)和窗口控制寄存器(PCI_TI0/1/2)。在窗口基地址寄存器中定义了该窗口在PCI总线上的基地址及窗口属性(存储器或I/O空间是否可预取,是否可对32位的任一字节进行访问),而在窗口控制寄存器中则定义了该窗口转换到PBUS空间后的基地址及该窗口的大小窗口使能控制和地址转换使能控制。
2 PCI总线编程模式
PCI桥上的寄存器占了4K的空间,从偏移地址0x000到0xfff。其中0x000到0x0ff
【ARM922T核ZCP320A处理器PCI总线操作】相关文章:
光纤CAN总线自愈环网的研究06-01
DS2438及其在单总线微网中的应用05-31
浅谈旅游景区事件营销操作策略05-12
TD—LTE与TD—SCDMA双网互操作04-30
建立东亚外汇储备库难点及操作建议06-03
谈颅骨缺损钛网修补手术操作心得体会05-13
本质安全型集中式控制安全操作系统研究08-22