PCI9054是业界广泛使用的一款PCI总线控制器。可以在PCI数据卡以及CPCI、PXI数据卡的设计中使用。下面对PCI9054的资料进行归纳。
PCI9054是PLX公司生产的PCI总线通用接口芯片,采用先进的PLX数据管道结构技术,提供了两个独立的可编程DMA控制器,每个通达均支持块和分散/集中的DMA方式。本地总线可以编程实现8、16、32位的数据宽度,传输速率最高达到132MB/s,本地总线时钟最高可以达到50MHz。
PCI9054的芯片原理框图如下图所示:
从原理框图,我们可以看到PCI9054分成PCI总线和本地总线两大部分。PCI总线部分符合PCI标准。本地总线部分采用可配置的方式,可以与不同CPU或者自定义逻辑接口。PCI总线和本地总线部分通过FIFO进行互连。本地总线可以采用DMA的方式将数据导入PCI9054。在配置方面,PCI9054通过外部配置存储器对芯片内部的配置寄存器进行配置。
PCI9054内部拥有的寄存器类型描述如下图所示:
本地总线可以工作在M、C、J三种模式,M模式符合Motorola公司的MCU接口模式,C模式符合通用CPU的接口时序,J模式是一种地址数据线没有分开的总线模式。
序号 | 信号 | 方向 | 说明 |
1 | LHOLD | OUT | 申请使用本地总线 |
2 | LHOLDA | IN | 本地总线使用应答信号 |
3 | ADS# | OUT | 总线访问有效地址的开始 |
4 | BLAST# | OUT | 总线访问的Last Transfer |
5 | LW/R# | OUT | 高电平表示读操作,低电平表示写操作 |
6 | LA[31:2] | OUT | 地址线 |
7 | LD[31:0] | INOUT | 数据线 |
8 | READY# | INOUT | 当PCI9054作为总线主控单元时,该信号表示总线上的读数据有效或者写数据完成。 |
9 | LINT# | IN | 中断信号线,该信号置低会产生一个PCI中断 |
采用DMA的数据传输方式可以将连接到本地总线上的设备数据直接DMA至PCI9054内部FIFO,然后触发PCI数据传输。
在PCI9054的DMA工作模式下,PCI9054作为PCI总线的主设备,同时也是Local总线的控制者,通过设置其DMA控制器内部的寄存器即可以实现两总线之间的快速数据传送。
本地总线和PCI总线类似,为了解决抢占问题,在数据传输之前,需要采用握手方式实现总线仲裁。总线仲裁逻辑如下:
单字节PCI单周期写操作时序如下所示:
单字节PCI单周期读操作时序如下所示:
双字节PCI单周期写操作时序图:
单字节PCI Non-Burst写操作时序图:
双字节PCI Burst写操作时序图:
单字节PCI 单周期读操作时序图:
需要注意PCI总线信号的走线,为了满足反射条件,对信号走线有严格要求,普通信号长度,从插槽的连接器到PCI桥芯片不大于1.5英寸,CLK信号走线长度为2.5英寸。
EEPROM配置空间中值与寄存器之间的关系如下表所示:
EEPROM操作时序:
在使用PCI9054时,需要按照厂商要求选择配置芯片,否则PCI9054很难配置成功,导致系统无法启动。
本文出自 “存储之道” 博客,请务必保留此出处http://alanwu.blog.51cto.com/3652632/1410840
原文地址:http://alanwu.blog.51cto.com/3652632/1410840