1、引脚

必要的引脚在左边,任选的引脚在右边



2、CLK in:时钟输入,为所有PCI上的接口传送提供时序。其频率也称为PCI的工作频率。

大部分信号都在CLK的上升沿有效

3、AD0~AD31 t/s:地址、数据多路复用的输入/输出信号。在FRAME#有效时,是地址周期;在IRDY#和TRDY#同时有效时,是数据周期。

一个PCI总线的传输中包含了一个地址周期和多个数据周期。

地址周期为一个时钟周期,在该周期中AD0~AD31线上含有一个32位的物理地址。对于I/O操作,它是一个字节地址;若是存储器操作和配置操作,则是双字地址。

数据周期, AD0~AD7为最低字节, AD24~AD31为最高字节。当IRDY#有效时,表示写数据稳定有效,TRDY#有效表示读数据稳定有效 。

4、C/BE 0~3#  t/s:总线命令和字节使能 多路复用信号线。

在地址周期内,这四条线上传输的是总线命令;

在数据周期内,传输的是字节使能信号,用来表示在整个数据期中, AD0~AD31上哪些字节为有效数据。

5、PCI定义了三个物理地址空间:存储器地址空间、I/O地址空间和配置地址空间,

前两个是一般总线都有的空间;第三个是用以支持PCI硬件配置的特殊空间。

PCI总线的编址是分布式的,每个设备都有自己的地址译码,从而省去了中央译码逻辑。

PCI支持两种设备地址译码:正向译码和负向译码。所谓正向译码就是每个设备都监视地址总线上的访问地址是否落在它范围内,因而速度较快。而负向译码是指该设备要接受未被其他设备在正向译码中接受的所有访问,因此,码方式只能由总线上的一个设备来实现。由于它要等到总线上其他所有设备都拒绝之后才能译码,所以速度较慢,负向译码对于标准扩展总线这类设备是很有用的,因为这类设备必须响应一个很零散的地址空间。正和反向译码设备都不对保留的总线命令发出DEVSEL#响应信号。

6、在I/O访问中, 全部32位AD线都被用来提供一个完整的地址编码(字节地址)。AD0~AD1这两位很重要,并要与C/BE0~3配合,才能进行一次有效的访问。

AD BE(1111) 起始字节

00 xxx0 字节0

01 xx01 字节1

10 x011 字节2

11 0111 字节3

7、在存储器访问中,所有的目标设备都要检查AD0~AD1,要么提供所要求的突发传输顺序,或者执行设备断开操作。对于所有支持突发传输的设备都应能实现线性突发性传输顺序,用AD2~AD31译码得到一个双字地址的访问。

在存储器访问期间,AD0AD1用来指明主设备要求的数据传输模式 ,含义如下:     

当AD[1~0]为00时,突发传输顺序为线性增长模式; 在线性增加模式下,每个数据相位后,地址增加一个双字(即加4,对32位传输)或增加两个双字(即加8,对64位传输),直到传输结束。

AD[1~0]为01时,为高速缓存行切换模式; 

AD[1~0]为10时,为CACHE行回卷模式; 

AD[1~0]为11时,为保留模式。

在存储器地址空间,AD[31~2]提供一个双字边界地址,而AD[1—0]不参与地址译码。

8、在配置的地址空间中,要用AD2~AD7将访问落实到一个DWORD地址寻址64个双字寄存器。当一个设备收到配置命令时,IDSEL信号成立且AD0AD1为00,则该设备即被选为访问的目标。否则就不参与当前的对话。如果译码出来符合某桥路的编号,且AD0AD1为01,则说明配置访问是对该桥后面的设备,即不与桥直接连接的设备。

9、字节使能信号C/BE# 0~3来指出哪些字节带了有意义的数据,在每个数据周期内,可以自由改变字节能,使之对传输数据的实际含义和有效部分进行界定,

这一功能称作字节校正或字节对齐。

10、为了避免多个设备同时驱动一个信号到PCI总线上而产生竞争,在一个设备驱动到另一个设备之间设个过渡期,又称为交换周期。在时序图上,交换期用"→←"来表示。

在每个地址周期和数据周期,所有的AD线都必须被驱动到稳定的状态(数据),即使是在当前数据传涉及到的字节所对应的AD线也不例外。在实际应用中,如果对功耗要求较高时,为尽量减少总线上的功耗,对当前总线周期中不用的字节用与前一周期相同的数据去驱动它们。

11、PCI总线上的读操作

PCI协议 总结的更多相关文章

  1. linux pci 协议一

    当当热卖商品推荐 先打下广告,上面是一本好书了O(∩_∩)O~ 前言 因为遇到一个pci总线的问题,所以去学习了解linux 的pci驱动,中间总结了一些pci总线原理和linux驱动的知识,在此总结 ...

  2. linux驱动---用I/O命令访问PCI总线设备配置空间

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

  3. linux驱动之一语点破天机

    <const 关键字> 在嵌入式系开发中,const关键字就是“只读”的意思   <为什么要ARM需要进行C语言环境的初始化> 在汇编情况下,指令的跳转,保护现场需要保存的数据 ...

  4. 000 PCI Express协议入门指南目录

    一.001 PCI Express体系结构(一)

  5. 基于WDF的PCI/PCIe接口卡Windows驱动程序(1)-WDF概述及开发环境搭建

    原文出处:http://www.cnblogs.com/jacklu/p/4619110.html 本科毕业设计是这方面的工作,所以想开几篇博客来介绍使用WDF开发PCI/PCIe接口卡的驱动程序方法 ...

  6. 系统虚拟化学习笔记——PCI设备

    内容摘自<系统虚拟化:原理与实现> PCI 总线架构 PCI总线是典型的树结构.把北桥中host-PCI桥看做根,总线中其他PCI-PCI桥,PCI-ISA桥(ISA总线转PCI总线桥)等 ...

  7. Linux PCI网卡驱动的详细分析

    学习应该是一个先把问题简单化,在把问题复杂化的过程.一开始就着手处理复杂的问题,难免让人有心惊胆颤,捉襟见肘的感觉.读Linux网卡驱动也是一 样.那长长的源码夹杂着那些我们陌生的变量和符号,望而生畏 ...

  8. PCI 总线学习笔记

    转载请注明出处:http://blog.csdn.net/lg2lh/article/details/8042008 PCI的基本协议这里就不介绍了,由于一般的芯片协议都是集成好的,我仅仅须要大体了解 ...

  9. 开发微信小程序中SSL协议的申请、证书绑定、TLS 版本处理等

    在上篇随笔<基于微信小程序的系统开发准备工作>介绍了开发微信小程序的一些前期的架构设计.技术路线 .工具准备等方面内容,本篇随笔继续这个步骤,逐步介绍我们实际开发过程中对SSL协议的申请及 ...

随机推荐

  1. Spark算子 - aggregateByKey

    释义 aggregateByKey逻辑类似 aggregate,但 aggregateByKey针对的是PairRDD,即键值对 RDD,所以返回结果也是 PairRDD,结果形式为:(各个Key, ...

  2. Puppeteer简介

    puppeteer常用API https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md Puppeteer是一个node库,他 ...

  3. JS的一些对象

    JS是基于对象的语言.当然此时都说是面向对象的语言. 类:模板,原型对象    对象:具体的实例 原型对象: var user = { name:"xiaoxiao", age:5 ...

  4. ASP.NET Core 6框架揭秘实例演示[06]:依赖注入框架设计细节

    由于依赖注入具有举足轻重的作用,所以<ASP.NET Core 6框架揭秘>的绝大部分章节都会涉及这一主题.本书第3章对.NET原生的依赖注入框架的设计和实现进行了系统的介绍,其中设计一些 ...

  5. 2022李宏毅作业hw1—新冠阳性人员数量预测。

    ​ 事前  : kaggle地址:ML2021Spring-hw1 | Kaggle 我的git地址: https://github.com/xiaolilaoli/lihongyi2022homew ...

  6. Tabluea、Smartbi可视化仪表盘创建流程图分享

    你知道Tableau.Smartbi在可视化仪表盘制作步骤上有何差异吗?下面一起来了解吧~ 根据上面的流程图我们可以了解到,不同于Smartbi是在同一界面即可完成的,Tableau是由很多个工作表组 ...

  7. 开源绘画应用 Pinta 已移植到GTK 3和.NET 6

    Pinta 是一款开源绘画应用,适用于 Linux.Windows 和 macOS.你可以用它来进行自由手绘/素描.你也可以用它在现有的图片上添加箭头.方框.文字等. 年初发布了 Pinta 2.0. ...

  8. MySQL常用查询命令(连接查询&子查询)

    多张表联合起来查询即为连接查询,可分为: 内连接:等值连接.非等值连接.自连接 外连接:右外连接.左外连接 也就是先把多张表通过某种指定条件用join...on...语法连接起来,然后再进行where ...

  9. python刷剑指offer(21-40)(一刷)

    21.输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序 ...

  10. Jquery.Validate清除验证信息|laydate时间控件无法清除validate提示问题

    最近做一个需求,用到模态框和Jquery.Validate验证框架: 点击添加时弹出模态框,当输入数据保存时如果数据不能通过校验,则会触发Validate验证并显示提示信息: 如果此时关闭弹出层,下次 ...