《PCI EXPRESS体系结构导读》---(5)PCI总线Device号的分配

PCI设备的IDSEL信号与PCI总线的AD31:0的信号连接关系决定了该设备的PCI总线设备号。每一个PCI设备都使用了独立的IDSEL信号,该信号与PCI总线的AD31:0相连。

在此我们简要回可顾PCI的配置读写事务使用的时序。PCI总线事务由一个地址周期加若干个数据周期组成。在进行配置读写请求总线事务时,C/BE#信号线的值在地址周期中为0x1010或者为0x1011,表示当前总线事务为配置读 或者配置写请求 。此时出现在AD31:0总线上的值不是 目标设备的PCI总线地址而是目标设备的ID号,这与PCI总线进行IO或者存储器请求时不同,因为PCI总线使用ID号而不是PCI总线地址对配置空间进行访问。

在配置读写总线事务的地址周期中,AD10:0信号已经被Function Number和Register Number使用,因此PCI设备的IDSEL只能与AD31:11信号连接。

认真的读者一定可以发现在CONFIG_ADDRESS寄存器中DeviceNumber字段一共有5位可以表示32个设备,而AD31:11只有21位,显然在这两者之间无法建立一一对应的映射关系。因此在一条PCI总线上如果有21个以上的PCI设备,那么总是有几个设备无法与AD[31:11]信号线连接,从而PCI总线无法访问这些设备。因为PCI总线在配置请求的地址周期中,只能使用第31~11这些AD信号,所以在一条总线上最多也只能挂接21 个PCI设备。这21个设备可能是从0到20,也可能是从11到31排列。从而系统软件在遍历PCI总线时,还是需要从0到31遍历整条PCI总线。

在实际的应用中,一条PCI总线能够挂接21个设备已经足够了,实际上由于PCI总线的负载能力有限,即便在总线频率为33MHz的情况下,在一条PCI总线中最多也只能挂接 10个负载,一条PCI总线所能挂接的负载详见表1-1。AD信号线与PCI设备IDSEL线的连接关系如图2-14所示。

PCI总线推荐了一种Device Number字段与AD31:16之间的映射关系。其中PCI设备0与Device Number字段的0b00000对应:PCI设备1与Device Number字段的0b00001对应,并以此类推,PCI设备15与DeviceNumber字段的0b01111对应。

在这种映射关系之下,一条PCI总线中,与信号线AD16相连的PCI设备的设备号为0:与信号线AD17相连的PCI设备的设备号为1;以此类推,与信号线AD31相连的PCI设备的设备号为15。在Type00h配置请求中,设备号并没有像FunctionNumber和RegisterNum ber那样以编码的形式出现在AD总线上,而是与AD信号一一对应,如图2-12所示。

这里有一个原则需要读者注意,就是对PCI设备的配置寄存器进行访问时,一定要有确定BusNumber、DeviceNumber、FunctionNumber和RegisterNumber,这"四元组"缺-不可。在TypeO0h配置请求中,DeviceNumber由AD31:11信号线与PCI设备IDSEL信号的连接关系确定;Function Number保存在AD10:8字段中;而RegisterNumber保存在 AD7:0字段中;在Type01h配置请求中,也有完整的四元组信息。

相关推荐
liangshanbo12155 天前
Express SSE 流式输出实战:从入门 Demo 到 AI 生产级架构
人工智能·架构·express
GISHUB5 天前
Express + TypeScript + ESM 后端框架示例(@yao-pkg/pkg 打包)
typescript·express
万亿少女的梦1688 天前
基于微信小程序、Express与MongoDB的校园失物招领系统设计
mongodb·微信小程序·node.js·express·系统设计
洞察物理世界9 天前
【SI_PCIe 02】快速了解PCIe硬件电路设计
pcie·pcie硬件设计·高速串行总线
米码收割机11 天前
SA508-3钢回火焊道焊接温度场数值模拟(模拟图+论文)
spring boot·express·宠物
Pu_Nine_912 天前
Vue3+TS+Express 转 Nuxt4 全栈开发笔记(Drizzle ORM + MySQL)
前端·vue·express·nuxt.js·全栈框架
张人玉16 天前
基于 Vue 3 + ECharts + Express + SQLite 构—— LDA 模型的新闻舆论主题识别与情感分析系统
vue.js·echarts·express
张人玉18 天前
基于 Vue 3 + ECharts + Express + SQLite 的可视化大屏与业务管理系统——YOLOv8 高精度车辆行人检测与计数系统
数据库·vue.js·yolo·sqlite·echarts·express
张人玉19 天前
基于 Vue 3 + ECharts + Express + SQLite 构建的鞋类零售数据分析与毛利预测平台——基于深度学习的鞋类销售数据分析系统
vue.js·sqlite·echarts·express
张人玉23 天前
基于 Vue 3 + ECharts + Express + SQLite 的世界数据可视化大屏系统——世界态势数据可视化大屏
vue.js·echarts·express