PCI LocalBus Spec 3.0

第一页  PCI (Peripheral Component Interconnect)

在处理器体系结构中,PCI总线属于局部总线(Local Bus)。局部总线是系统总线的延伸,其主要功能是连接外围设备。

The PCI Local Bus is a high performance 32-bitor 64-bit bus with multiplexed address and data. The Bus is intended to use asan interconnect mechanism between highly integrated peripheral controllercomponents, peripheral add-in cards, and processor/memory systems.

PCI 从字面意思理解即就是链接外围设备组件的总线,其基本系统框图如上如所示。Processor, Cache, DRAM都通过PCI 桥连接到PCI总线上。扩展总线桥可以再PCI总线上接出一条标准的I/O总线。

In this example,the processor/cache/memorysubsystem is connected to PCI through a PCI bridge. High performance/lowcost/ease of use/ longevity/inter-

operability/flexibility/dataintegrity/software compatibility.

PCI总线提供的是5V、3.3V的信号环境

第二页PCI总线上的信号定义

PCI总线是一条共享总线,在一个PCI总线上可以挂接多个PCI设备。如图所示,PCI总线上信号主要有:地址/数据信号线,接口控制信号线,错误报告信号线,仲裁信号,系统信号,这些信号线都是必须的,而像64-bit扩展,interrupt等都是一些可选的信号线。

第三页 System Pins

CLK 即PCI总线时钟,是作为输入,提供PCI总线上的时序。

第三页 Address and Data Pins

地址数据多路复用

总线命令与字节使能多路复用

PCI总线在地址周期及和数据周期中,使用该信号为地址和数据信号线提供奇偶校验位。

第四页 Interface Control Pins

t/s双向三态输入输出信号

s/t/s持续且低电平有效的三态信号(由主设备产生)

在时钟的第一个上升沿,当FRAME#有效时,传输的为地址期,在接下来的时钟上升沿,当IRDY#、TRDY#均有效时,为一个或多个数据期。

STOP#信号表示目标设备向主设备请求停止当前PCI总线事务的传输。

LOCK#锁存信号,PCI主设备可以使用该信号,将目标设备的某个存储器或者I/O锁定,禁止其他设备访问。

IDSEL 初始化设备信号,PCI总线进行配置读写事务时,使用该信号选择目标设备。

DESEL 设备选择信号,该信号有效时,表示PCi总线的目标设备已准备好,目标设备已完成地址译码。

第五页 Arbitration Pins(Bus MatersOnly)

仲裁信号

REQ#有效时表示目标设备向仲裁器发出使用总线请求。

GNT#有效时表示总线使用获得批准。

他们都是点对点的信号线。

v 2.7 64-Bit Bus Extension Pins (Optional

AD[63::32] t/s ;  C/BE[7::4]   REQ64#、ACK64#s/t/s

PCI有四条中断线,即INTA….多功能设备可以任意选择一个或多个中断线,单功能设备只能用INTA#

第六页 Bus Operation

BusCommand Definition

总线命令的作用是用来规定主从设备之间的传输类型,出现于地址期的C/BE[3::0]线上,主设备是指通过仲裁而获得总线控制权的设备,从设备是指在C/BE[3::0]信号出现的同时,AD[31::00]线所选中的设备。

3.1 PCI Protocal Fundaments

地址映射.

内存地址空间,IO地址空间和配置地址空间。

PCI设备通过基址寄存器获得相应地址空间。

下面是IO地址空间的译码情况

在地址访问过程中,每当一个从设备被地址译码选中后,便要检查字节使能信号是否与AD[1::0]相符。

其他的情况就不讲了。

3.2 Combining,Merging,andCollapsing

死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成互相等待的现象。

PCI桥的Combining,Merging,andCollapsing,目的是为了优化数据通过PCI桥的效率。

ü  Combining
----occurs when sequential memory write transaction are combined into asingle PCI bus transaction.

ü  Byte Merging
----occurs when a sequence of individual memory writes(Byte or Words)  are merged into a single DWORD.

ü  Collapsing

----occurs when a sequence of memorywrites(Byte ,     
    Word or DWORD address)  are collapsed into a single bus transaction.

Combining指PCI桥可以将接收到的多个存储器写总线事务序列合并为一个突发传输的存储器写总线事务。Combining操作时须注意数据传输的“顺序”。

Merging指PCI桥可以将收到的多个对同一DW地址的Byte,Word进行存储器写总线事务,合并为一个对这个DW地            址的存储器写总线事务。

Collapsing指PCI桥可以将对同一个地址进行的Byte,Word,Dword存储器写总线事务合并为一个存储器写事务。

3.3 Bus Transaction

图3-5描述了总线上的基本读操作。FRAME#有效时,地址期开始,且在时钟2的上升沿处于稳定有效,开始传送地址,在地址期AD[31::0]包含有效的地址,C/BE[3:0]包含有效的总线命令;数据期是从时钟3的上升沿开始,当IRDY#,TRDY#同时有效时,开始真正传送数据,C/BE[3:0]指出那几个字节是有效的要传输的。无论读写操作,从数据期的开始到完成,C/BE[3:0]缓冲器必须保持有效的状态。只有DESEL#有效时,TRDY#才会有效。当IRDY#,TRDY#其中之一无效时,就会插入等待周期,此时不进行数据的传送。

在时钟7尽管是最后一个数据期,此时IRDY#无效,故FRAME#不能撤销,只有在IRDY变为低时,才能撤销。

图中互相指着对方尾部的两个箭头表示过渡周期,该周期的设定是为了避免当一个设备停止驱动该信号而另一个设备开始驱动时可能发生的冲突。

3.3 Bus Transaction

图3-6是一个基本的写操作,类似于读操作。只是在第三个数据期中由从设备连续插入了三个等待周期,主设备在时钟5处插入了等待周期,表明要写的数据将延迟发送,但是字节使能信号不受等待周期的影响,不得延迟发送。

比较读操作和写操作的不同:在写操作中,地址期和数据期之间没有交换周期,这是因为地址和数据都是由同一个设备(主设备)发出的。

3.3 Bus Transaction

无论是主设备还是从设备都可以提出终止一次PCI总线传输的请求。只有当FRAME#和IRDY#均无效时,标志着总线传输结束,从而进入总线空闲状态。

由主设备提出的终止主要包含两个方面原因:一个是传输完成,二一个是传输超时。传输超时指主设备的GNT#信号无效并且其内部的延迟计数器已计满,从而不得不终止传输。

3.3 Bus Transaction

三个原因:重传,由于从设备忙或无法进行传输过程。当Stop#有效,TRDY#无效时使用Retry。

如图3-9,主设备在发出STOP#信号时,同时TRDY#无效,表明将进行传输的终止。

Disconnect断开。Target-Abort,从设备检测到一个致命的错误或者从设备不需要再进行传输请求时。

3.3 Bus Transaction

3.4 Arbitration

系统中多个设备或模块可能同时申请对总线的使用权,为避免产生总线冲突,需由总线仲裁机构合理地控制和管理系统中需要占用总线的申请者,在多个申请者同时提出总线请求时,以一定的优先算法仲裁哪个应获得对总线的使用权。

The PCIarbitration approach is access-based rather than time-slot-based.

PCI总线的仲裁机制是基于访问而不是基于时间。也就是说,一个总线主设备想要在总线上进行访问,必须提出仲裁要求,PCI执行中心仲裁方案,每个主设备都应有各自的请求线REQ#和批准线GNT#, PCI设备使用改组信号进行总线仲裁,并获得PCI总线的使用权。

3.4  Arbitration

图3-15是一个基本的仲裁操作,假设设备A和设备B在时钟1之前设备A发出了REQ#-a的请求使用总线,仲裁器根据总线的情况在时钟2处发出GNT#-a信号批准使用总线,此时FRAME#无效,所以设备A可以在时钟2启动一次传输。到时钟3时,FRAME#有效,设备A便可以开始真正传输数据,由于REQ#一直未取消,说明还需要进行另一次传输。

对于设备B,在时钟2时也发出了请求REQ#-b,此时仲裁器决定设备B为下一个总线使用者,在时钟4时,设备A数据传输完成,此时仲裁器将GNT#-a置无效,将GNT#-b置有效,此时由于FRAME无效,所以在时钟6时开始真正设备A数据的传输,在时钟7完成传输。

3.4  Arbitration

When noREQ# s are asserted, it is recommended not to remove the current master’s  GNT# to park the bus at a different master until the bus enters its Idlestate.  If the current bus master’s  GNT# is deasserted, the duration of the current transaction is limited to thevalue of

theLatency Timer.

总线停靠是指在没有设备使用总线或没有设备发送RQE#信号请求时,仲裁器根据一定的方式选定一个设备,并发给它GNT#信号,即选择的一个缺省的总线使用者。这样做的目的是保证总线安全的停靠在某个设备上,从而使总线不至于浮动。

在PCI总线上,从总线空闲周期开始道仲裁完成所需的最小延迟为:

有停靠,停靠的设备为0个时钟周期,其他设备为两个时钟周期;

无停靠,每个设备均为两个时钟周期。

3.5  Other BUS Transaction

设备是否被选中,是由DEVSEL#信号来决定。DEVSEL#信号由当前传输中的目标设备所驱动。

3. 5.2 Interrupt Acknowledge

该图描述了x86中断应答在PCI总线上的传输情况,一般情况下,字节使能信号用来确定哪些字节是传输中要涉及到的。在地址段,AD[31::0]并不包含一个有效的地址,但必须被驱动到稳定的状态,在中断应答过程中,PAR信号是有效的,而且被用来奇偶校验。对中断应答命令的响应只能是一个设备,且发出相应的DEVSEL#信号,同时在TRDY#有效时返回中断向量。

4 Configuration Space

q  Provided a set of configuration “hooks”for systems.

q  All PCI devices(except host bus bridge)must implement Config Space.

v  Config Space Organization, Function, MSI,etc.

4.1 Configuration SpaceOrganization

4.2 Type 00h Configuration SpaceHeader

Device Identification

配置的系统软件通过扫描PCI插槽读取Vendor ID,确定设备的当前状态,0XFFFFh是无效的Vendor ID;Class Code分类代码寄存器,用来标识设备的总体功能及特定寄存器编程接口。

Device Control

头标区的命令寄存器可以产生和响应PCI总线命令提供粗略的控制。

Device Status

设备状态寄存器记录PCI总线有关事件的状态信息

Miscellaneous Registers

缓存行长度寄存器  延迟计数器  内含自测试寄存器 中断线寄存器 中断引脚寄存器表示设备使用了那个中断线.

PCIe设备必须支持MSI或者MSI-X中断请求机制,而可以不支持INTx中断消息

Base Addresses

基址寄存器,在配置空间的头区域安排了一组供地址映射时使用的基址寄存器。

PCI Expansion ROMContents

扩展ROM基址寄存器

每一个Image512byte

The PCIData Structure contains the following information:

Message SignaledInterrupts(MSI)

MSIenables a device function to request service by writing a system-specified datavalue to a system-specified address.

(PCI DWORDmemory write transaction).

Vector

The MSIwrite transaction can be terminated with a Retry, Master-abort, Target-abort,or normal completion.

MSI-X

MSI-X支持1~2048间任意数量的中断,而MSI只支持32个中断(并 且必须是2的冪)

MSI CapabilityStructure

Class Codes Encoding

Producer - ConsumerOrdering Model

当生产者将所有的数据写入缓冲区后会设置Flag标志位,并等待Status状态。消费者等待到Flag标志位被设定后取出数据并复位Reset

Capability IDs

PCI设备的数据传递

PCI设备的数据传递使用地址译码方式,当一个存储器读写事务到达PCI总线时,在这条总线上的所有PCI设备将进行地址译码。

正向译码

负向译码---PCI-to-E(ISA)桥和PCI桥。

PCI设备的DMA操作

PCI设备的DMA写使用Posted方式而DMA读使用non-Posted方式。

PCI Local BUS 3.0相关推荐

  1. linux pci 扩展usb,PCI USB卡 USB2.0卡 PCI扩展卡 PCI转4USB口 VIA转换卡USB扩展卡

    产品名称:USB2.0 PCI扩展卡 4口 PCI USB扩展卡 USB转PCI卡 主芯片:VIA芯片 产品介绍: 1.数据传输率可达1.5/12/480Mbps 2.符合OHCI 1.0a标准 3. ...

  2. linux c pci bar0读写,解决部分linux发行版内核加载时出现 pci 0000:01:00.0: BAR 6: no pa...

    问题描述: 部分linux发行版安装在笔记本上时可能会出现类似如下错误提示: pci 0000:01:00.0: BAR 6: no parent found for of device pci 00 ...

  3. Angular CLI版本问题(Your global Angular CLI version (12.2.7) is greater than your local version (9.0.3))

    说我全局安装的版本是12.2.7,本地安装的版本是9.0.3,那么我应该卸载本地版本? 最后还是没解决

  4. 安装Redis使用make命令出现make /bin/sh: cc: 未找到命令 make[1]: 离开目录“/usr/local/mytools/redis-5.0.0/src“

    报错信息:  解决方案: ①安装 gcc : yum install gcc-c++ ②清空编译失败残留文件: make distclean ③使用 make 命令进行编译: make ④进入 red ...

  5. PCI总线体系结构概述

    §1.PCI总线体系结构概述  PCI总线体系结构是一种层次式的(Hierarchical)体系结构.在这种层次式体系结构中,PCI桥设备占据着重要的地位,它将父总线与子总线连接在一起,从而使整个系统 ...

  6. Linux PCI驱动框架分析:(Peripheral Component Interconnect,外部设备互联)

    <DPDK 20.05 | rte_pci_bus思维导图 | 第一版> <linux系统下:IO端口,内存,PCI总线 的 读写(I/O)操作> <Linux指令:ls ...

  7. 浅谈Linux PCI设备驱动(一)

    要弄清楚Linux PCI设备驱动,首先要明白,所谓的Linux PCI设备驱动实际包括Linux PCI设备驱动和设备本身驱动两部分.不知道读者理不理解这句话,本人觉得这句话很重要,对于PCI.US ...

  8. pci配置基地址_PCI配置空间简介

    配置空间 操作系统 PCI总线推出以来,以其独有的特性受到众多厂商的青睐,已经成为计算机扩展总线的主流.目前,国内的许多技术人员已经具备开发PCI总线接口设备的能力.但是PCI总线的编程技术,也就是对 ...

  9. [知乎]老狼:深入PCI与PCIe之二:软件篇

    深入PCI与PCIe之二:软件篇 https://zhuanlan.zhihu.com/p/26244141 我们前一篇文章(深入PCI与PCIe之一:硬件篇 - 知乎专栏)介绍了PCI和PCIe的硬 ...

最新文章

  1. vue避免重新渲染_小白也能懂的VUE的生命周期探寻
  2. 你连原理都还没弄明白?java文档注释快捷键idea
  3. Android studio如何使用SVN进行版本控制?
  4. 数值数据表示的三要素
  5. centos7 ifconfig命令找不到_centos7+mysql+gunicorn+flask项目部署
  6. JavaWeb(一)——web服务器、Tomcat安装和配置
  7. kettle 资料_Kettle的使用-初级
  8. 线程演示生产者和消费者的一个例子
  9. 内存降价-可以入手啦
  10. 谷歌发布菲律宾街景地图
  11. 张朝阳一天只睡4小时?不知道,反正我每天都睡足7小时
  12. 如何在论文后面插参考文献
  13. java中注解 详解
  14. CentOS 8 更新/etc/yum.repos.d
  15. 用Win32DiskImager写入U盘容量变小,恢复容量方法
  16. 计算机专业海报排版设计,我研究了2000张大神海报,终于总结出这个排版技巧...
  17. 基础知识补充——白噪声、高斯白噪声
  18. 小米杀不死的消息推送-- Android、java后端同时接入小米推送
  19. 低噪声/低电压晶体管测试综述
  20. position属性absolute与relative 详解 不为人知的(fixed)绝对定位(fixed相对于浏览器窗口=不动的div)

热门文章

  1. php图片涂鸦,IOS_详解iOS App中图片的线段涂鸦功能的添加方法,接下来我们要讲图片的涂鸦, - phpStudy...
  2. 2022最新苹果CMS海螺影视程序模板源码
  3. c语言中funx的作用,C语言中,fun函数到底是干什么用的?
  4. 国外优秀设计网站推荐
  5. 声优声带用计算机实现,男生声优入门训练内容
  6. 思科模拟器:利用一台型号为2960的交换机将2台pc机互连组建一个小型局域网
  7. 高德地图发布AI智能公交导航
  8. 正则表达式中反斜杠的意义
  9. Photo Gallery: Stars
  10. csol霸主永恒python_CSOL六一版本新福利 年神霸主免费用