PCI9054寄存器地址映射总结.doc
文本预览下载声明
1、PCI9054具有三种工作模式:M模式、J模式和C模式,它们可以通过MODE[1:0]两个管脚来设定。应注意的是这三种模式都是对LOCAL总线而言。M模式是为在LOCAL端连接MPC850或者MPC860微处理器而设定的专用模式,此时LOCAL端管脚定义为对这两个处理器的接口。J模式和C模式则是针对一般应用的模式,它们之间的区别不大。J模式下,32位地址线和32位数据线是复用的,但在C模式下它们是非复用的。显而易见,C模式下的时序和逻辑控制最简单,所以本次设计选择9054工作在C模式下。
PCI9054的局部总线与PCI总线之间的数据传输有三种方式:PCI Initiator、PCI Target和DMA。PCI Initiator是由局部端的处理器通过PCI9054对存储器或者IO发起访问。PCI Target则是由总线主控设备通过PCI9054对其LOCAL端存储器进行访问。而DMA传输是在PCI9054控制下,完成PCI端存储器和LOCAL端存储器的之间的数据传输。
PCI9054主从状态 PCI?Initiator PCI?Target DMA PCI端 主 从 主 LOCAL端 从 主 主
PCI?Target(从模式)
DMA
3、PCI9054内部有5个寄存器组:PCI配置寄存器组、LOCAL配置寄存器组、运行寄存器组、DMA寄存器组、消息队列寄存器组,一些关键的寄存器
(1)PCI配置寄存器组
在PCI9054中,提供了84个字节大小的PCI配置空间,用来配置诸如设备识别码、版本号、状态、命令、其它寄存器组的基址和LOCAL总线其它空间基址等的信息。用户可以通过PCI总线、LOCAL总线或者外置的EEPROM来配置。
PCIBAR0:存放PCI9054中的LOCAL端配置寄存器组、运行寄存器组和DMA寄存器组在PCI总线MEMORY空间的起始地址。
PCIBAR1: 存放PCI9054中的LOCAL端配置寄存器组、运行寄存器组和DMA寄存器组在PCI总线I/O空间的起始地址。
PCIBAR2: 存放PCI9054中的LOCAL总线的地址空间0映射到PCI总线存储空间的起始地址。
PCIBAR3: 存放PCI9054中的LOCAL总线的地址空间1映射到PCI总线存储空间的起始地址。
这四个主要完成LOCAL端总线相关的寄存器在PCI总线的映射,以及LOCAL总线管理的地址空间在PCI总线上的映射。这四个寄存器都是由系统进行配置的,无法通过EEPROM配置。
其中PCIBAR0,PCIBAR1,就是把LOCAL总线配置寄存器,DMA寄存器,运行寄存器映射到对应的内存空间去,配置的值就是他们在内存空间的起始地址。再是PCIBAR2,PCIBAR3寄存器,LOCAL总线管理了两部分地址空间,space0和space1。PCIBAR2,PCIBAR3就是把这两部分映射到PCI总线地址上,即把这两个空间映射到PC机的内存空间。PCIBAR2的配置值就是LOCAL总线端space0空间映射到PCI内存空间的起始地址,PCIBAR3的配置值则是LOCAL总线端space1空间映射到PCI内存空间的起始地址。而LOCAL总线端SPACE0和SPACE1在local端的实际地址及范围,则是由LOCAL配置寄存器决定。
映射要涉及到LAS0RR、LAS0BA、PCIBAR2LAS1RR、LASBA、PCIBAR(在PCI配置寄存器组中)32位寄存器
LAS0BA表示的是局部地址空间S0的基地址,该寄存器中的值被重新映射到PCIBAR2地址空间,以确定存储空间解码范围。在译码过程中,这个值用来替换PCI端的物理地址。如,64K的局部空间按照十六进制表示为0000FFFFH,规定要求填入这个数的反码,所以LAS0RR的值实际为FFFF0000H对于I/O来说里面的值是地址范围取反加一。
LAS0BA表示的是局部地址空间S0的基地址,该寄存器中的值被重新映射到PCI地址空间PCIBAR2),以确定存储空间解码范围。LAS0BA的值是LASORR的倍数,如果LAS0RR是1M的地址范围,那么LAS0BA就是0M1M,2M,3M等等。若要求局部地址空间S0的基地址,则LAS0BA的值应LAS0BA的最低位置成“1”,表示PCI直接从模式访问本地地址空间0,使能译码;写“0”则禁止使能在应用程序开发操作硬件的时候,例如:PCI基址寄存器+offset ,通过PCI驱动底层的地址转换得到PCI基址寄存器(0)+offset,这个地址可以找到PCI9054芯片的内部,然后,PCI9054芯片再把这个PCI地址进行重映射到Local端的内存空间地址,这一步根据Local
显示全部