pci总线协议学习笔记——PCI总线基本概念

2023-05-16

1、pci总线概述

(1)PCI,外设组件互连标准(Peripheral Component Interconnection),是一种由英特尔(Intel)公司1991年推出的用于定义局部总线的标准;
(2)最早提出的PCI总线工作在33MHz频率之下,传输带宽达到133MB/s(33MHz * 32bit/s)。后面提出64bit的pci总线,总线频率也提升到66MHz;
(3)pci协议已经被pcie总线替代,现在pcie总线是主流,但是软件编程上pci和pcie两个总线是兼容的,几乎可以不用做区分,只需要在配置、传输等底层操作去区分两种总线协议;

2、pci总线特点

(1)pci总线是串行总线,有32/64根地址线。地址和数据都通过这32/64根地址线进行传输,分时复用;
(2)pci总线上可同时挂载多个设备,设备分为主设备和从设备,主设备一般是主控芯片的pci控制器,需要负责pci总线上的总裁;
(3)pci设备将共享总线。同一条pci总线上的设备,总线都是接在一起的,会通过片选引脚、地址范围、总线号、设备号、功能号等机制来觉得当前和哪个设备通信;
(4)pci总线通信大致分为两个阶段:配置阶段、通过地址访问阶段;
(5)配置阶段:pci总线控制器去依次扫描接在pci总线上的所有设备,访问设备的配置空间,知道设备的类型、要申请的资源,然后给设备分配总线号、设备号、功能号、地址空间,并写进设备的配置空间;
(6)地址访问阶段:在配置阶段给每一个pci设备分配pci地址范围并写进设备寄存器,以后设备会监听地址线,当监听到地址线上传输的地址是自己的地址范围,就会去处理;
(7)pci采用同步时序协议,信号线里有clk时钟线;

3、pci信号线

在这里插入图片描述

信号线功能描述
CLK总线的时钟线,提供同步时序基准,由pci控制器提供
RST#复位信号线,强制所有pci寄存器、排序器、信号回到初始状态
AD[0:63]地址和数据复用线
FRAME#帧信号,表示传输开始和结束
C/BE[3:0]总线命令编码
INTA#—INTD#终端信号线
IRDYMaster可以传输数据的标志
TRDYSlave可以转输数据的标志
DEVSEL#当Slave发现自己被寻址时置低应答
GNT#总裁器允许Master得到总线使用权的信号
IDSEL片选引脚,高电平表示该设备被主设备选中

4、PCI总线的命令码

在这里插入图片描述

5、 PCI总线读周期时序分析

在这里插入图片描述

(1)知识点补充:PCI总线是在下降沿改变信号线上的状态,在上升沿锁定信号线的状态;圆形箭头符号,表示信号线的所有权发送变化;
(2)第一个周期上升沿:此时FRAME#是高电平,表示没有开始传输数据,此时总线空闲;
(3)第二个周期上升沿:此时主设备将地址发到AD线上,将命令码发到C/BE#线上,FRAME#拉低表示数据传输开始,FRAME#拉低的第一个时钟周期AD线上传输的是地址,后续时钟周期AD线上传输的是数据;
(4)第三个周期上升沿:从设备开始解析地址和命令码,地址匹配的从设备将DEVSEL#拉低;主设备将IRDY#线拉低,表示准备好接收数据;
(5)第四个周期上升沿:从设备将数据发送到AD线上,并将TRDY#拉低,表示从设备准备好数据;主设备接收数据;
(6)第五个周期上升沿:从设备没有准备好数据,将TRDY#线拉高,插入一个等待周期;
(7)第六个周期上升沿:从设备将数据发送到AD线上,并将TRDY#拉低,表示从设备准备好数据;主设备接收数据;
(8)第七个周期上升沿:从设备将数据发送到AD线上,并将TRDY#拉低,表示从设备准备好数据;主设备将IRDY#拉高,表示没有准备好接收数据,插入一个等待周期;
(9)第八个周期上升沿:主设备从AD线上接收数据,并且FRAME#被拉高,表示数据传输结束,当前这是最后一个字节;

6、典型pci总线拓扑

在这里插入图片描述

PCI总线上不仅可以挂载多个PCI设备,还可以挂载PCI桥,形成多级的PCI总线架构;

推荐

给大家推荐一个学校嵌入式知识的网站,博主在大学时候学习嵌入式知识、找工作的时候都在用这个网站,网站里有C语言、Linux等等的笔试题、面试常问问题等等知识,无论是学习基础知识、面试刷题、交流工作经验都是不错的选择。大家一起进步,欢迎留言交流。
链接:学习神器跳转
在这里插入图片描述
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pci总线协议学习笔记——PCI总线基本概念 的相关文章

  • SR850出现fault in slot ALL PCI error on system ThinkSystem SR850报错

    SR850出现fault in slot ALL PCI error on system ThinkSystem SR850报错 一 报错信息显示二 判断故障并修复 一 报错信息显示 服务器型号为lenovo SR850 xff0c XCC
  • PCI-E 1x, 4x, 8x, 16x 接口定义

    1 PCI E插槽及金手指实物图 xff08 1 xff09 PCI E插槽 从上至下依次为PCI E 4X PCI E 16X PCI E 1X xff08 2 xff09 PCI E金手指 PCI E 1X金手指PCI E 4X金手指P
  • pci总线协议学习笔记——PCI总线基本概念

    1 pci总线概述 1 PCI xff0c 外设组件互连标准 Peripheral Component Interconnection xff0c 是一种由英特尔 xff08 Intel xff09 公司1991年推出的用于定义局部总线的标
  • 计算机组成原理2(PCI总线结构框图)

    文章目录 一 以存储器为中心的双总线结构框图二 PCI总线结构 一 以存储器为中心的双总线结构框图 双总线介绍 xff1a 该双总线结构在单总线的基础上开辟出了一条CPU与主存之间的总线 xff0c 称为存储总线 xff1b 这组总线速度高
  • 解决HTTPS证书安全检测时提示 PCI DSS 不合规问题

    解决HTTPS证书安全检测时提示 PCI DSS 不合规问题 今天在进行HTTPS证书安全检测时 xff0c 提示PCI DSS不合规 经查询得知是因为SSL配置时启用了TLS1 0导致的 关于 PCI DSS 自2018年6月30日起 x
  • pci和pcie的区别

    原文地址 xff1a https blog csdn net u013253075 article details 80835489 最近在学习驱动开发过程中涉及到PCI相关知识 xff0c 在网上看了很多文章 xff0c 良莠不齐 xff
  • 深入PCI与PCIe

    转载于老狼 xff1a https zhuanlan zhihu com p 26172972 https zhuanlan zhihu com p 26244141 PCI总线和设备树是X86硬件体系内很重要的组成部分 xff0c 几乎所
  • pci规划的三个原则_NR PCI规划

    每个5G NR小区对应于一个物理小区ID xff08 PCI xff09 xff0c 用于区分无线侧的小区 5G NR的PCI规划与LTE的PCI规划和3g的扰码规划非常相似 错误的规划会影响同步过程 解调和切换信令 xff0c 并降低网络
  • PCI-E 1x, 4x, 8x, 16x 接口定义

    1 PCI E插槽及金手指实物图 xff08 1 xff09 PCI E插槽 从上至下依次为PCI E 4X PCI E 16X PCI E 1X xff08 2 xff09 PCI E金手指 PCI E 1X金手指 PCI E 4X金手指
  • PCI中断处理

    首先在获得PCI配置空间资源的时候 xff0c 就要获得中断资源 xff0c 根据CM PARTIAL RESOURCE DESCRIPTOR 结构的 Type 域来区分需要获得什么样的中断资源的时候 xff0c 如果Type类型为 xff
  • 【PCIe】1: PCIe 硬件时序初始化过程

    目录 1 前言 2 PCIe理论带宽 3 PCIe连接器引脚定义 4 关键信号描述 4 1 PERST 4 2 REFCLK 和REFCLK 信号
  • KVM重定向PCI

    应用场景 将服务器上的USB控制器 重定向到KVM中 一 修改KVM的配置文件 1 查看KVM的xml配置文件 KVM的配置文件存放在 etc libvirt qemu目录下 使用vi进行编辑 下面的这个KVM是重定向了一个PIC控制器 添
  • 【WiFi】wifi芯片架构与原理说明

    目录 1 概述 2 芯片架构 3 工作原理 4 总结 1 概述 WiFi芯片是一种用于无线网络通信的集成电路 它负责将数据转换为无线信号并进行传输 下面是关于WiFi芯片架构和原理的简要说明 2 芯片架构 芯片架构 WiFi芯片通常由以下几
  • 如何为可缓存 PCIe BAR 进行 mmap

    我正在尝试编写一个自定义驱动程序mmap PCIe BAR 的函数 目标是使该 BAR 可缓存在处理器缓存中 我知道这不是实现最高带宽的最佳方法 并且写入顺序是不可预测的 本例中也不是问题 这类似于中所描述的如何阻止 MMAP 缓存值 处理
  • 确定哪些(如果有)PCI 设备插入主板 PCI(e) 插槽

    我正在用 C 编写一个程序来在许多 Windows XP 工作站上执行硬件审核 我需要确定哪些 PCI 设备是通过主板插槽连接的实际卡 而不是也使用 PCI 总线 内置于主板中 的板载设备 我可以使用各种 WMI 类成功列出使用所有 PCI
  • 写入端口 0cf8h 失败并出现段错误

    我有一个 e2 2000 型号的 AMD 处理器 这是 0fh 系列 根据 family 0fh BKDG 我有以下代码来读取设备和供应商 ID ReadPCIConfiguration movq 0x80000100 rax movq 0
  • 谁以及何时分配 PCI/PCIe 设备 BAR 基地址?

    我正在寻找内核如何进行 PCI PCIe 枚举和 BAR 分配 我以为内核会在启动时分配BAR的PCI基地址 但是当我尝试pci Earlydump 在内核初始PCI子系统之前 查看BAR的值时 我发现所有基地址都已经分配了 这是否意味着
  • 通过 Windows API 检索 PCI 坐标(用户模式)

    有没有办法使用 Windows c c API 例如 PnP Configuration Manager API 获取设备的 PCI 坐标 总线 插槽 功能号 我已经知道如何在内核模式下执行此操作 我需要一个用户模式解决方案 我的目标系统是
  • 在Linux中,有没有办法找出哪个PCI卡插入哪个PCI插槽?

    在Linux中 有没有办法找出哪个PCI卡插入哪个PCI插槽 sys bus pci devices 包含许多不是卡的设备 桥 CPU 通道等 我无法在设备目录中找到有关插槽卡映射的任何信息 您可以使用 dmidecode t slot 查
  • 我应该如何以非 root 身份读取 Linux 上的 Intel PCI 非核心性能计数器?

    我想要一个库 允许对 Linux 可执行文件的关键部分进行 自我分析 就像人们可以使用一个部分计时一样获取当日时间 http linux die net man 2 gettimeofday or RDTSC http www strchr

随机推荐

  • JAVA多线程基础篇-join方法的使用

    一 概述 join 是Thread类中的一个方法 xff0c 它的作用是将当前线程挂起 xff0c 等待其他线程结束后再执行当前线程 xff0c 即当前线程等待另一个调用join 方法的线程执行结束后再往下执行 通常用于在main主线程内
  • BindingException:Invalid bound statement (not found)异常

    一 前言 本文的mybatis是与springboot整合时出现的异常 xff0c 若使用的不是基于springboot xff0c 解决思路也大体一样的 二 从整合mybatis的三个步骤排查问题 但在这之前 xff0c 我们先要知道整合
  • SQL中case when用法详解及使用案例

    一 语法 Case具有两种格式 简单Case函数和Case搜索函数 简单Case函数格式 xff1a CASE 列名 WHEN 条件值1 THEN 选项1 WHEN 条件值2 THEN 选项2 ELSE 默认值 END Case搜索函数 x
  • 想入行C++游戏脚本制作?首先听听7年经验大佬怎么说?

    先自我介绍一下 xff0c 七年的程序开发经验 xff0c 在小一线城市税后2W多点 xff0c 本应过着很舒适的生活 xff0c 每天喝点小酒 xff0c 玩玩游戏 但自从入了A股 xff0c 一切都改变了 xff0c 如今的我 xff0
  • 大学刚毕业,用10000小时,走进字节跳动拿了offer

    前言 xff1a 没有绝对的天才 xff0c 只有持续不断的付出 对于我们每一个平凡人来说 xff0c 改变命运只能依靠努力 43 幸运 xff0c 但如果你不够幸运 xff0c 那就只能拉高努力的占比 2020年7月 xff0c 我有幸成
  • tensorflow中tfrecord数据操作

    前言 xff1a 为了更加展示tfrecord数据的相关操作 xff0c 笔者后续又写了一个实践的简单例子进一步解释 xff0c 具体可以看 xff1a TFrecords 制作数据集小例子 xff08 多标签 xff09 爱吃火锅的博客
  • 软件测试阶段

  • VR技术类毕业论文文献有哪些?

    本文是为大家整理的VR技术主题相关的10篇毕业论文文献 xff0c 包括5篇期刊论文和5篇学位论文 xff0c 为VR技术选题相关人员撰写毕业论文提供参考 1 期刊论文 运动炫科技 智慧赢未来 VR技术在体育领域内的应用与展望 期刊 xff
  • CentOS7防火墙添加端口

    CentOS7防火墙添加端口 CentOS防火墻添加端口比较简单 xff0c 三步走 xff08 皆以root用户执行 xff0c 或者用sudo命令 xff09 xff1a 1 查看开发的端口 firewall span class to
  • 手写一个--生产者消费者模式

    文章目录 前言wait notify方法实现生产者消费者模型1 使用Object的wait notify 方法2 使用Lock和Condition的await signal 方法3 使用BlockingQueue阻塞队列方法 前言 生产者消
  • C语言中static关键字用法和作用

    static修饰的对象 xff1a static关键字可以修饰 xff1a 局部变量 全局变量 函数 static修饰后改变了什么 xff1f 1 改变了生存周期 xff1b 就是一个变量 函数从分配内存去表示到回收内存的过程 2 改变了作
  • c语言中NULL到底是什么?

    C语言中NULL到底是什么 xff1f 1 NULL在C C 43 43 中定义为 xff1a ifdef cplusplus 定义这个符号就表示当前是C 43 43 环境 define NULL 0 在C 43 43 中NULL就是0 e
  • register关键字详解

    前言 xff1a 编译器的优化很大程度上就是通过数据流分析 调整读取内存的顺序等 xff0c 减少CPU对内存的读写 因为内存的运行速度相对于CPU是很慢的 xff0c 计算机中添加cache就是为了解决CPU和内存运行速度差异过大的问题
  • 海思烧录工具HiTool的使用方法以及烧录uboot

    1 什么是HiTool HiTool是海思公司提供的用于海思芯片的烧录工具 xff0c 可用于烧录uboot kernel rootfs等 这里只是简单的介绍用HiTool通过串口去烧写uboot xff0c 更加仔细的使用方法可以参考海思
  • /etc/profile文件简单介绍

    什么是 etc profile文件 etc profile文件为系统的每个用户设置环境变量信息 此文件的修改会影响到所有用户 想了解更多细节内容可以用 xff1a vi etc profile 命令进行查看 etc profile文件和 b
  • 五月再不跳槽,就晚了

    从时间节点上来看 xff0c 3月 4月是每年跳槽的黄金季 xff01 之后的五月也会放出一些岗位 以 BAT 为代表的互联网大厂 xff0c 无论是薪资待遇 还是平台和福利 xff0c 都一直是求职者眼中的香饽饽 xff0c 大厂经历 在
  • I2C通信协议详解和通信流程分析

    1 I2C通信特征 1 1 物理接口 xff1a SCL 43 SDA 1 SCL serial clock xff1a 时钟线 xff0c 传输CLK信号 xff0c 一般是I2C主设备向从设备提供时钟的通道 2 SDA serial d
  • 用LED驱动框架注册led设备的示例代码

    1 LED驱动框架分析 参考博客 xff1a 内核LED驱动框架讲解以及led设备注册示例代码 xff1b 2 简单的用LED驱动框架注册led设备的代码 span class token macro property span class
  • 【C++入门】静态成员详解(定义、实现原理、使用注意事项)

    1 类的静态成员 1 在类中用static修饰成员 xff0c 则该成员是静态成员 xff1b 2 静态成员是属于类本身的 xff0c 所有类的对象共享 xff1b 3 类的对象都可以访问静态成员 xff0c 但是所有类的成员访问的静态成员
  • pci总线协议学习笔记——PCI总线基本概念

    1 pci总线概述 1 PCI xff0c 外设组件互连标准 Peripheral Component Interconnection xff0c 是一种由英特尔 xff08 Intel xff09 公司1991年推出的用于定义局部总线的标