1394总线拓扑建立过程(速度协商-树标识-自标识-根节点确定过程)

本文详细介绍了1394总线初始化后的拓扑连接、速度协商、树标识以及自标识过程,包括节点间如何通过信号交互确定角色和速率,形成稳定的总线结构,以便于数据通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1394总线初始化之后,会形成确定的拓扑连接结构,根据总线物理层信息,可绘制直观的总线拓扑结构图,如下图所示:

当总线某一节点物理层电源状态改变、节点接入总线或从总线移除、物理层接收到软件发起的复位信号、节点端口禁止或挂起操作时,会发生总线复位,引起总线初始化过程。总线初始化包含速度协商、树标识、自标识三个阶段。

 1、速度协商

速度协商阶段,两个相互连接的端口都会向对方发送速度代码来标识自己的最大速度,同时监听对方发送的速度代码,在接收到对方的速度代码后,与自身的速度代码进行比较,并再次发送包含确认状态的二者中的较小速度代码,当端口接收到包含确认状态的速度码时,以此速率作为协商速率,并停止发送速度代码,完成速度协商过程。

2、树标识

总线初始化时,树标识过程可将总线网络拓扑结构转变为一个树状结构,在此过程中,还可以确定总线的根节点,并标识出每个节点每个端口的状态,未连接的端口被标识为关闭状态,不再参与后续的仲裁和工作;总线中靠近总线根节点的端口为父端口,远离总线根节点的端口为子端口。树标识过程如下:

a) 所有叶节点(只有一个端口有连接)向其可能的父端口(有连接的端口)发送父通知(下图中的节点A、C、E),这是“父-子”握手过程的开始,如下图所示:

树标识-父通知

b) 当B、D节点的端口接收到父通知后,标识对应端口为子端口,此时,B、D节点开始向未标识的连接端口发送父通知,同时向他们的子端口发送子通知;

c)如果节点物理层的“强制根节点”位被置位,那么这个节点会在发送父通知前等待160us,这样可以确保其他节点在这个时间内都已发送父通知,从而被设置根节点的节点端口都标识为子端口;如下图中节点B与节点D之间,设置节点B的“强制根节点”位,则节点B处于等待状态,节点D通过端口①发送父通知,节点B接收到父通知后,将端口②标识为子端口,并向节点D发送子通知,完成父-子握手过程;

强制根节点的树标识过程

d)当叶节点收到父节点发来的子通知时,对应端口确认该端口连接到父节点,并完成他们之间的树标识过程。此时,节点B与节点D同时接收到对方发来的父通知,产生冲突,这种现象叫“根节点竞争”,因此,这两个节点同时撤销父通知发送,开始根节点选择过程,如下图所示:

根节点产生竞争时的树标识过程

e)根节点选择过程开始时,双方各启动一个随机定时器并开始递减,当定时器减为0时,检查自身端口是否是空闲状态或接收到父通知,如处于空闲状态,则发送父通知给对方,并标识自身端口为父端口;如果接收到父通知,则标识自身端口为子端口,并发送子通知;如果两个节点恰好选择了相同时长的计时器,再次遇到冲突时会重新开始根节点选择过程,直到二者选择了不同的计时器为止。

f)在下图中,节点D选择了较短的计时器,当节点B的计时器为0时,节点B检测到端口2收到了节点D的父通知,标记该端口为子端口,并向节点D发送子通知,此时节点B的所有端口都被标记为子端口,因此节点B就成为根节点。

根节点选择结束后的树标识过程

g)节点D接收到子通知后,停止向其子节点C、E发送子通知和向父节点B发送父通知,完成父握手过程;

h)当根节点即节点B停止接收D的父通知后,停止向其他子节点发送子通知,完成总线树标识过程;

3、自标识

树标识完成后,总线开始自标识过程,自标识可以为每个节点分配一个唯一的物理ID(即PHYID),便于总线管理设备识别总线中的每一个节点;在自标识过程中,每一个节点都要向总线发送一个包含自身端口连接状态、速率信息、供电信息的自标识包。总线中每个节点除了能记录自身发送的自标识包外,也可以接收到总线上其他节点发送的自标识包,但不解析自标识包的内容,只统计自总线复位后在本节点发送自标识包时接收到的自标识包的个数,并以此作为自身的物理ID,因此,总线上第一个发送自标识包的节点物理ID为0,第二个节点为1,依次类推。

自标识是一个具有确定性的过程,根节点先从其最小的有连接的端口开始授权,当最小的有连接端口报告其完成自标识后,接着授权下一个较小的有连接的端口,所有的子节点都以相同的方式递归,直至所有子端口都完成自标识后,根节点才开始自身的自标识过程,当根节点自标识完成后,标志着总线自标识过程结束。以树标识过程的拓扑为例,具体如下:

a)下图中,总线刚完成树标识过程,此时,自标识包计数selfID_count = 0,未连接端口会自动标识为“已标识”状态;自标识过程开始后,节点B通过端口1向节点A发送授权信号,同时(向其他端口)端口2发送数据前缀信号,接收到数据前缀信号的端口和节点均处于等待状态;

自标识-授权开始

b)节点A接收到授权后,会从小到大依次检查自身未标识的子端口,如果没有符合条件的端口,则节点A会以当前的selfID_count值作为自己的物理ID(PHYID),并开始发送自标识包,自标识包以一个特定的数据前缀开始,如下图所示:

第一个节点自标识开始

当节点B接收到节点A发送的数据前缀时,撤销授权;当节点D接收到节点B转发的数据前缀时,会自动将数据前缀转发给子节点C和E,当所有节点都接收到数据前缀后,节点A会将自标识包发送到总线上,自标识包的发送速率为基本速率98.304Mbps;

c)节点A自标识包发送完成后,向节点B发送一个自标识完成信号(Ident_done),节点B标识对应端口为“已标识”状态,并向节点A发送一个特定的数据前缀使得A退出自标识状态,同时向其他端口发送空闲状态标志,总线上所有节点的selfID_count会增加1,如下图所示;

第一个节点自标识完成

d)节点B向下一个较小的端口(即与节点D连接的端口2)授权,同时向其他端口(与节点A连接的端口)发送数据前缀信号使其处于等待状态,如下图所示;

根节点端口2自标识开始

e)因为节点D有未标识的子端口,因此,节点D继续向未标识的较小端口号授权,并向其他端口子端口发送数据前缀,如下图所示;

子节点继续授权过程

f)节点C没有未标识的子端口,因此,使用当前的selfID_count作为自己的物理ID并发送自标识包;

g)节点C发送自标识完成信号,节点D标识对应端口为“已标识”状态,并向节点C发送一个特定的数据前缀使得C退出自标识状态,同时向其他端口发送空闲状态标志(Idle),总线上所有节点的selfID_count会增加1;

h)当节点B接收到Idle信号时,继续向较小的未标识的子端口发送授权(即与D连接的端口),节点D接收到授权后,再向下一个较小的未标识的端口(连接节点E的端口)授权进行自标识;

i)节点B授权后,当节点D所有子端口都为“已标识”状态时,节点D发送自身的自标识包,完成本节点的自标识;

j)节点B接收到节点D发送的自标识完成信号“Ident_done”后,发送自身的自标识包,并向所有端口发送空闲状态标志(Idle),整个总线退出自标识过程,进入空闲状态,等待总线仲裁进行数据通信。

若有任何疑问,或想进一步了解关于1394总线的知识或产品、测试设备,可发邮件至 zf_shaanxi@126.com(陕西筑飞科技有限公司)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值