CN105320632B - 一种自主仲裁的高速差分总线实现方法 - Google Patents
一种自主仲裁的高速差分总线实现方法 Download PDFInfo
- Publication number
- CN105320632B CN105320632B CN201510612332.XA CN201510612332A CN105320632B CN 105320632 B CN105320632 B CN 105320632B CN 201510612332 A CN201510612332 A CN 201510612332A CN 105320632 B CN105320632 B CN 105320632B
- Authority
- CN
- China
- Prior art keywords
- pnb
- bus
- data
- control units
- priority
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
- G06F13/4031—Coupling between buses using bus bridges with arbitration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/36—Arbitration
- G06F2213/3604—Coding information on multiple lines
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
Abstract
本发明公开了一种自主仲裁的高速差分总线,采用非破坏性自主仲裁技术和总线流量管控及优先级管理技术,同时支持流模式和存储映像模式,支持总线广播和精确组播,非常适合对服务质量有要求的高速内部通信,并具有如下特点:1)实现真正的无源背板,系统扩展能力强;2)总线采用并行多点差分接口,时钟速率低,时序设计压力低;3)总线采用源同步模式,数据接收采用随路时钟;4)自主仲裁,不需要外部独立仲裁器;5)总线仲裁不会破坏当前帧结构;6)支持多个优先级;7)支持总线广播和精确组播;8)同时支持流模式和存储映像模式;9)数据分组描述符和数据使用同一个缓冲队列,管理简单;10)具备多主多从的突发业务传输能力。
Description
技术领域
本发明涉及一种自主仲裁的高速差分总线实现方法,适用于多业务集成嵌入式系统中多个主从设备之间的高带宽数据交换,属于嵌入式系统高速背板总线技术领域。
背景技术
目前,并行多处理技术正日益成为增加嵌入式系统处理能力的可行方法,随着电子技术和半导体工艺的发展,嵌入式处理器的性能得到了大幅提升,以往价格昂贵的多处理技术系统级的成本也在下降。此外,多业务集成已经成为当前智能电子设备(IED)主流设计目标,通过将复杂业务划分至不同智能业务子卡,可有效降低系统复杂度,容易实现基于业务的故障隔离,进一步提高系统的健壮性和可维护性。
多业务相对独立运行也就意味着系统设计需要多个智能业务子卡,随之而来是多个智能业务子卡之间的需要更多的数据交换,但是,现有的多处理器总线技术限制了处理器簇跨越长背板时的共享带宽。
为使多处理技术更加高效,同一系统中的多处理器必须能相互进行高带宽、低延迟的通信。目前,用于处理器与外设连接方式主要有以下几种,(1)传统单端总线信号,如基于处理器自身的总线、ISA、PCI/PCI-X等;(2)各业务子板间采用以太网技术经交换芯片互联;(3)采用差分总线连接技术如PCI Express、RapidIO等;上述的几种总线互联方法均存在不足之处,具体如下:
对于(1),由于采用单端总线信号,信号在经过背板连接到另一块电路板时,降入引入噪声,导致信号恶化,而且总线带宽受限于外设带宽,总线速度很难提高;
对于(2),虽然基于以太网的技术和设备相对成熟,但交换延迟比共享总线大,难以实现精确组播,高速互联时需要更高的软件开销(特别是使用TCP/IP协议栈时),系统还需要额外的交换芯片;
对于(3),虽然基于高速差分信号互联,但一般只能使用点对点互联,且由于采用编码/解码技术导致额外的硬件开销和带宽损失,控制器侧工作时钟较高,时序设计和事务处理压力很大,数据延迟也比传统总线模式大,且随着互联节点的增加,互联线和交换端点也会对应增加。
综上所述,以上几种主流的总线技术,虽然也可以解决系统内部数据互联问题,但是,(1)由于速率低、传送距离短、EMI发射大、布线困难等原因不太适合长距离,且多业务竞争总线时需要额外的总线仲裁器;而(2)和(3)都对应点对点的应用场合,需要端点交换开关,协议复杂软件或硬件开销大,且采用高速串行总线会给布局布线和连接器带来比较大的压力和额外的成本,上述的几种方式,都无法实现真正意义上的无源背板,给系统升级和运维带来困难。
发明内容
本发明的目的是为了解决现有的嵌入式系统多处理器之间的连接总线,无法实现真正意义上的无源背板,给系统升级和运维带来困难的问题。本发明的自主仲裁的高速差分总线实现方法,用于多业务智能电子设备的各业务子卡之间的通信,构建周边节点互联总线(Peripheral Node interchange Bus,以下称PNB总线),其物理层基于TIA/EIA‐899实现,采用源同步方式传送数据,通过非破坏性的自主仲裁方式来解决总线竞争,具备多主多从的突发业务传输能力,具有良好的应用前景。
为了达到上述目的,本发明所采用的技术方案是:
一种自主仲裁的高速差分总线实现方法,其特征在于:包括以下步骤,
步骤(1),构建多个周边节点互联的PNB总线控制器,各PNB总线控制器连接在PNB总线上,各PNB总线控制器包括MLVDS总线收发器、总线发送模块、流量管理模块、多个发送优先级队列、多个接收优先级队列、接收地址识别及优先级分离模块、总线接收模块、中断管理逻辑单元和MCU接口单元,所述MLVDS总线收发器与PNB总线相连接,所述MLVDS总线收发器的接收数据输出端依次通过总线接收模块、接收地址识别及优先级分离模块与多个接收优先级队列相连接,多个接收优先级队列与MCU接口单元的接收数据输入端相连接,所述MCU接口单元与嵌入式系统内业务子卡的处理器相连接,所述MCU接口单元的发送数据输出端与多个发送优先级队列相连接,多个发送优先级队列均依次通过流量管理模块、总线发送模块与MLVDS总线收发器发送数据输入端相连接;
所述总线发送模块、总线接收模块、接收地址识别及优先级分离模块还通过中断管理逻辑单元与MCU接口单元相连接;
所述总线发送模块包括总线仲裁逻辑单元和总线发送逻辑单元,负责发送数据队列查询和总线仲裁及数据发送,所述总线接收模块包括总线接收逻辑单元和数据流模式识别管理单元;
步骤(2),根据步骤(1)构建的PNB总线控制器,建立应用业务子卡后,将MLVDS总线收发器通过高速连接器与背板的差分总线相连接,将MCU接口单元与对应的业务子卡的处理器相连接,所述PNB总线控制器还通过背板连接系统级的总线参考时钟信号、全局复位信号及电源,构成多主多从的数据交换系统;
步骤(3),当业务子卡的处理器有数据需要发送时,创建数据发送分组,并根据数据服务质量要求,将该分组写入PNB总线控制器的多个发送优先级队列,并更新队列写指针和对应的发送寄存器;
步骤(4),PNB总线控制器在流量管理模块的控制下检查各发送优先级队列,一旦识别出待发送的数据分组后,启动总线发送模块内的总线仲裁逻辑单元申请占用总线;
步骤(5),PNB总线控制器在申请占用总线成功后,启动总线发送模块内的总线发送逻辑单元,进行总线传送优先权裁决,发送当前最高优先级的数据分组,在总线传送结束后发送控制逻辑更新发送队列的读指针,并根据需要触发中断管理逻辑单元产生总线发送中断;
步骤(6),处于监听状态的PNB总线控制器,在帧同步信号PNB_FS_IN的上升沿时,启动总线接收模块,把通过接收地址识别及优先级分离模块进行地址识别的分组按优先级写入不同的接收优先级队列,同时更新队列写指针,并根据需要触发中断管理逻辑单元产生接收中断;
步骤(7),处于监听状态的业务子卡的处理器通过查询PNB总线控制器的接收状态或接收中断,根据优先级或中断处理接收队列内的数据,完成PNB总线上优先级数据接收。
前述的自主仲裁的高速差分总线实现方法,其特征在于:步骤(1)的PNB总线控制器,在空闲阶段,总线驱动器关闭,输出弱0;在仲裁阶段,总线控制器利用其数据输出信号控制总线驱动器的输出使能信号,对数据的有选择性地输出1或弱0;在数据输出阶段,获得总线使用权的PNB总线控制器将总线驱动器的输出使能置高,由PNB总线控制器根据数据内容控制数据总线输出为1或0;仲裁失败的由PNB总线控制器将关闭总线输出使能,并转入PNB总线的监听状态。
前述的自主仲裁的高速差分总线实现方法,其特征在于:步骤(2)通过背板为所有PNB总线控制器提供系统级的总线参考时钟信号、全局复位信号,各PNB总线控制器总线侧的工作时钟则通过参考时钟倍频得到,而各PNB总线控制器利用总线上的源同步时钟进行接收数据锁存,各PNB总线控制器的MCU接口单元采用业务子卡的处理器提供的独立时钟业务子卡的处理器和对应的PNB总线控制器之间的跨时钟域转换,只是发生在MCU接口单元上。
前述的自主仲裁的高速差分总线实现方法,其特征在于:步骤(3),当业务子卡的处理器有数据需要发送时,创建数据发送分组,包括点到点的单播、广播和精确多播,实现过程为,
(1)、发送数据方的PNB总线控制器根据应用要求确定接收方,由此精确设定发送分组的目标地址控制字PNB_DID,使与目标方的PNB总线控制器的地址AID相对应的位置位,并提交分组;
(2)、总线接收方的PNB总线控制器通过判断接收分组的目标地址控制字PNB_DID中位序与自身地址AID相对应的位是否置位来决定接收与否,若该位为1则接收,否则拒收。
前述的自主仲裁的高速差分总线实现方法,其特征在于:步骤(4)启动总线发送模块内的总线仲裁逻辑单元申请占用总线是通过差分信号PNB_BREQ来指示总线的空闲状态和初始阶段总线仲裁,差分信号PNB_BREQ为0表示总线空闲,为1表示总线占用,最终获得总线使用权的PNB总线控制器在整个总线传输的过程中保持差分信号PNB_BREQ为高,阻止其他的PNB总线控制器对总线影响,而在随后优先权仲裁阶段失败的PNB总线控制器立即将PNB_BREQ置0,以完成本次总线争用且继续监听总线状态。
前述的自主仲裁的高速差分总线实现方法,其特征在于:步骤(5),PNB总线控制器在初始仲裁阶段申请占用总线成功后,启动总线发送模块内的总线发送逻辑单元,进行总线传送优先权裁决,包括以下步骤,
(1),有数据分组待发送的PNB总线控制器控制器选择当前最高优先级分组,并读取发送描述符,提取数据分组的软件优先级pri和目标控制字PNB_DID;
(2),检查PNB总线控制器的输入信号PNB_BREQ_IN,若为1表示总线忙转(1)继续等待;否则,置PNB总线控制器的输出信号PNB_BREQ_OUT和使能信号PNB_BREQ_OE为1后,转到(3)进行分组的软件优先权仲裁;
(3),PNB总线控制器根据数据分组的软件优级pri,按公式(1),计算软件优先权控制字PNB_PRI,
PNB_PRI=1<<pri (1)
其中,<<表示向左移位;
(4),PNB总线控制器根据公式(2)、公式(3)向PNB总线提交按公式(1)计算出的软件优先权控制字PNB_PRI,
PNB_data_out<=PNB_PRI (2)
PNB_data_oe<=PNB_PRI (3)
其中,<=表示信号赋值,PNB_data_out为PNB总线数据输出、PNB_data_oe为PNB总线输出使能控制;
(5),PNB总线控制器读取PNB总线的PNB总线数据输入PNB_data_in的值,并检查回读数据,若PNB_data_in中某位被置1且其位序比发送分组的软件优先级pri高,则清零输出信号PNB_BREQ_OUT和使能信号PNB_BREQ_OE,撤销PNB总线申请,转到(1)继续等待;否则转(6)进行设备优先权仲裁;
(6),PNB总线控制器根据公式(4)、公式(5)、公式(6)向PNB总线提交设备优先权控制字PNB_PID,
PNB_data_out<=PNB_PID (4)
PNB_data_oe<=PNB_PID (5)
PNB_PID=1<<AID (6)
其中,AID为开发者对PNB总线上的每个PNB总线控制器分配一个唯一的地址识别码,PNB_data_out为PNB总线数据输出、PNB_data_oe为PNB总线输出使能控制;
(7),PNB总线控制器读取PNB总线的PNB总线数据输入PNB_data_in值,并检查回读数据,若PNB_data_in中某一位被置1且该位的位序比控制器地址识别码AID高,则清零输出信号PNB_BREQ_OUT和使能信号PNB_BREQ_OE,撤销PNB总线申请,转到(1)继续等待;否则转到(8)准备输出随路时钟;
(8),仲裁成功的PNB总线控制器保持输出信号PNB_BREQ_OUT和使能信号PNB_BREQ_OE为1,随后置位随路时钟信号PNB_CLK_OE,并输出随路时钟准备发送数据。
前述的自主仲裁的高速差分总线实现方法,其特征在于:步骤(6),在帧同步信号PNB_FS_IN的上升沿时,启动总线接收模块,通过帧同步信号PNB_FS来指示数据分组的启动和停止,获得总线使用权的PNB总线控制器在开始帧传送时置位该信号,整个传输过程中保持该信号为1,传输完成后清除该信号,PNB总线控制器在该信号的上升沿启动总线接收模块,下降沿停止接收并进行帧校验和分组提交。
前述的自主仲裁的高速差分总线实现方法,其特征在于:所述PNB总线的单播数据分组具有硬件流量控制,当PNB总线上的PNB总线控制器的发送方在仲裁胜出传送数据之前会检查PNB_TRDY信号,PNB_TRDY信号为0表示目标未准备好,则放弃本次发送。
前述的自主仲裁的高速差分总线实现方法,其特征在于:所述PNB总线控制器为不同发送优先级队列提供一个可设置的流量控制定时器,通过给不同优先级的数据分组提供不同的调度响应延时,用来控制非实时应用的宏观流量。
前述的自主仲裁的高速差分总线实现方法,其特征在于:所述PNB总线控制器通过下面的方法实现总线存储映像模式,
(1)、在总线数据源端的数据分组中标记存储映像传送模式和目标映射地址;
(2)、目标端的PNB总线控制器的接收部件解析数据分组中存储映像传送模式标记和目标映射地址同时缓存数据;
(3)、在帧传送结束并校验通过后,目标端的PNB总线控制器的接收部件模拟MCU空间的数据写事务。
本发明的有益效果是:本发明的自主仲裁的高速差分总线实现方法,采用非破坏性自主仲裁技术和总线流量管控及优先级管理技术,同时支持流模式和存储映像模式,支持总线广播和精确组播,非常适合对服务质量有要求的高速内部通信,并具有如下特点:1)实现真正的无源背板,系统扩展能力强;2)总线采用并行多点差分接口,时钟速率低,时序设计压力小;3)总线采用源同步模式,数据接收采用随路时钟;4)自主仲裁,不需要外部独立仲裁器;5)总线仲裁不会破坏当前帧结构;6)支持多个优先级;7)支持总线广播和精确组播;8)同时支持流模式和存储映像模式;9)数据分组描述符和数据使用同一个缓冲队列,管理简单;10)具备多主多从的突发业务传输能力。
附图说明
图1是本发明的各PNB总线控制器连接在PNB总线的系统框图。
图2是本发明的PNB总线控制器的系统框图。
图3是本发明的PNB总线控制器主接口的状态转换图。
图4是本发明的PNB总线控制器从接口的状态转换图。
图5是本发明的PNB总线的传送时序图。
具体实施方式
本发明的自主仲裁的高速差分总线实现方法,采用非破坏性自主仲裁技术和总线流量管控及优先级管理技术,同时支持流模式和存储映像模式,支持总线广播和精确组播,非常适合对服务质量有要求的高速内部通信。下面将结合说明书附图,对本发明作进一步说明。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
1.系统连接方式
本发明的高速差分总线应用连接方式,如附图1所示,图中多个不同业务应用子板通过PNB总线控制器经高速差分总线链接到背板(母板)。其中业务子板的MCU系统连接到PNB总线控制器的MCU接口单元,PNB总线控制器将内部数据缓冲区、控制寄存器映射到MCU的地址空间,PNB总线控制器通过高速差分信号对A/B连接数据总线、随路时钟及高速的随路控制信号,通过单端信号组C为所有的控制器提供全局的控制信号如参考时钟、全局复位等信号。总线控制器的址编码信号,系统设计者可选择将地址编码信号组连接到背板扩展槽,但无论如何,开发者应为每个控制器分配不同的地址,即地址识别码AID。
2.总线信号描述
所述PNB总线的差分信号采用TIA/EIA-899(M-LVDS Type II)标准,在系统背板上采用高速差分线对,单端信号采用3.3V LVTTL,系统背板设计为无源背板,所述PNB总线实现方法的信号分为全局控制信号、子板地址、总线差分业务信号和控制器MCU接口信号等。
其中差分信号用PNB_xx_P/PNB_xx_N信号对表示,总线空闲电平为低电平,控制信号高电平有效,控制器总线侧信号描述如下表1:
表1 PNB总线侧信号描述
序 | 信号 | 描述 | 位 | 方向 | 电平标准 |
1 | /RST | 复位 | 1 | 输入 | 3.3V LVTTL |
2 | RefCLK | 参考时钟 | 1 | 输入 | 3.3V LVTTL |
5 | PNB_FS_P/PNB_FS_N | 帧同步 | 1 | 双向 | TIA/EIA-899 |
6 | PNB_BREQ_P/PNB_BREQ_N | 总线请求/保持 | 1 | 双向 | TIA/EIA-899 |
7 | PNB_CLK_P/PNB_CLK_N | 随路时钟 | 1 | 双向 | TIA/EIA-899 |
9 | PNB_TRDY_P/PNB_TRDY_N | 总线目标端就绪 | 1 | 双向 | TIA/EIA-899 |
10 | PNB_data_P/PNB_data_N | 数据总线 | n | 双向 | TIA/EIA-899 |
所述总线通过差分总线收发器连接背板总线,总线收发器通过单端信号连接总线控制器。附图1中,差分总线上的信号转成单端信号后,一个信号将分别对应输出、输入、输出使能,分别用PNB_xx_OUT/PNB_xx_IN/PNB_xx_OE表示,全部PNB总线控制器侧信号如下表2所示:
表2 PNB总线控制器侧单端信号列表
表2中,A0~An为总线地址识别码,一种可选的方法是从背板引入,由背板扩展槽位置决定总线控制器AID编址。在以下描述中控制器侧信号均为单端信号,总线侧为差分信号,如无附加说明,则PNB总线信号用于输入描述的隐含指PNB_xx_IN,用作输出描述的隐含指PNB_xx_OUT;
3.总线控制器的结构
本发明所述PNB总线控制器结构如附图2所示,包括MLVDS总线收发器、总线发送模块、流量管理模块、多个发送优先级队列、多个接收优先级队列、接收地址识别及优先级分离模块、总线接收模块、中断管理逻辑单元和MCU接口单元,所述MLVDS总线收发器与PNB总线相连接,所述MLVDS总线收发器的接收数据输出端依次通过总线接收模块、接收地址识别及优先级分离模块与多个接收优先级队列相连接,多个接收优先级队列与MCU接口单元的接收数据输入端相连接,所述MCU接口单元与嵌入式系统内业务子卡的处理器相连接,所述MCU接口单元的发送数据输出端与多个发送优先级队列相连接,多个发送优先级队列均依次通过流量管理模块、总线发送模块与MLVDS总线收发器发送数据输入端相连接;
所述总线发送模块、总线接收模块、接收地址识别及优先级分离模块还通过中断管理逻辑单元与MCU接口单元相连接;
所述总线发送模块包括总线仲裁逻辑单元和总线发送逻辑单元,负责发送数据队列查询和总线仲裁及数据发送,所述总线接收模块包括总线接收逻辑单元和数据流模式识别管理单元;
4.总线报文
所述PNB总线实现方法采用分组传送的方法,所有总线事务均以数据分组为单位,其中数据分组由分组描述符指针确定边界,一个完整的数据分组包括分组描述符和分组数据两部分,以下针对本发明的一个实例,对其采用的分组及描述符进行描述。
4.1.数据分组
表3给出本发明的一个实例下的总线数据分组格式(不同的实现实例由于实现方式会导致分组略有不同)。本实例分组按16-bit对齐,其中分组的前32-bit为分组描述符,其后48-bit本的分组协议控制部分,最后为数据部分,各字段含义描述如下:
表3数据分组格式表
Priority(2-bit):报文软件优先权,0-3级,接收方根据这两位选择数据的优先权队列,是发送方选择发送时机和总线仲裁的依据
Mode(2-bit):分组传送模式,接收方根据这两位选择数据存储方式。
<D13>--传送模式,0--流模式,1--存储映射模式
<D12>--传送方向,0--输出/写,1--输入/读
对应存储映射模式时,在PDU的头部将包含4byte对应到MCU的地址空间的数据分组目标地址,由软件写入。
Len(12-bit):包括校验码在内的PNB原始数据长度,
PNB_DID:数据分组目标地址控制字,软件以此精确指定发送目标;
DSAP:数据分组目标服务访问点,由软件封装;
PNB_SLT:数据分组的源地址识别码,对应总线控制器地址<An,..,A0>;SSAP:数据分组源服务访问点,由软件封装;
Opcode:数据分组的操作码,操作码和端到端的服务访问点决定随后协议数据单元PDU的解释方法,该字段由软件封装;
PLen:协议数据PDU的长度,由软件封装,不包含长度本身;
PDU:用户协议数据,由软件封装,自动填充到偶数字节;
XorSum:异或校验和,由硬件计算,包括DID到校验和前的所有数据,在接收方,如果该字段为0xffff表示接收正确。
4.2.数据分组描述符
所述PNB总线实现方法采用描述符控制数据收发,描述符和数据位于同一个数据队列,以简化队列管理。如表3所示的实现案例中,分组描述符占用数据区的最前面32-bit(4字节),包括分组软件优先级Priority(2-bit)、分组传送模式Mode(2-bit)、分组长度Len(12-bit)和16-bit分组目标地址控制字PNB_DID。总线控制器为每一个优先级队列分别提供一对队列读指针和队列写指针,总线控制器和MCU通过这两组指针来握手和管理相关优先级队列。
对于数据发送,描述符由驱动程序填写,指明数据分组的软件优先级、传送模式、分组长度和期望的接收方(通过设置PNB_DID中特定的位为1实现),填充协议数据后修改发送队列的写指针,总线控制器监视每一个优先级队列,一旦发现某一个优先级队列的读写指针不一致时就可以启动总线发送,发送完毕后总线控制器根据描述符中分组长度自动调整发送队列的读指针,使其指向下一分组。
对于数据接收,由于描述符已经按表3含在数据分组中,总线控制器在新的分组到达后只需要更新接收优先级队列的写指针即可,而MCU通过读取接收队列读写指针可识别新到达的数据分组,在驱动程序读取完分组数据后,根据接收描述符中的分组长度字段调整接收队列的读指针,使其指向下一个数据段。
5.总线访问机制
所述PNB总线以数据分组为单位进行传输,总线共分仲裁阶段、传输阶段和空闲阶段,每个阶段总线信号控制方法不一样,总线电平也不一样。在空闲阶段,总线驱动器关闭,输出弱0;在仲裁阶段,总线驱动器的输出使能信号和总线数据输出端一起连接到PNB总线控制器的数据输出端,对数据的有选择性地输出1或弱0;在数据输出阶段,获得总线使用权的PNB总线控制器将总线驱动器的输出使能置高,由PNB总线控制器控制数据总线输出为1或0;仲裁失败的由PNB总线控制器将关闭总线输出使能,并转入PNB总线的监听状态。
所述PNB总线综合利用总线请求信号PNB_REQ、分组软件优先权和控制器的设备优先权作为仲裁判据,总线仲裁和分组传送机制分述如下:
5.1.软件优先权
所述PNB总线采用基于优先权的报文分组传送,传送时控制器会优先搜索本地高优先权的数据分组,总线竞争时,高优先权的分组胜出。软件优先权由MCU软件在创立数据分组时指定并写入发送描述符的指定字段,总线仲裁第一阶段为软件优先权的竞争,软件优先权控制字(以下简称PNB_PRI)的计算方法如下式:
PNB_PRI=1<<pri(式中:“<<”表示向左移位)
5.2.设备优先权
所述PNB总线的每个控制器都对应一个唯一地址识别码(以下简称AID),控制器按下式构建设备优先权控制字(以下简称PNB_PID),该控制字同时也成为分组接收时的目标识别控制字:
PNB_PID=1<<AID(式中:“<<”表示向左移位)
PNB_PID在总线仲裁的第二阶段由控制器送上总线,在设备优先权竞争阶段胜出总线控制器可以启动后续的数据发送。
5.3.分组目标寻址
所述PNB总线上数据分组的目标寻址采用位寻址方式,当接收的数据分组的目标控制字(以下简称PNB_DID)和设备优先权控制字PNB_PID逻辑与的结果为PNB_PID时,表明该数据分组应该被接收,否则控制器拒收该分组。
PNB_DID&PNB_PID=PNB_PID
当上述的逻辑表达式为真时,分组被接收否则拒绝接收,如此一来,发送方总线驱动程序通过合理配置PNB_DID,能够实现精确目标寻址,实现数据分组的单播、精确组播和广播传送。
5.4.总线仲裁
本发明所述PNB总线采用共享总线方式,总线上的任何控制器在数据发送之前都要进行总线申请,在多个控制器同时申请总线的情况下只有仲裁胜出的控制器可以发送数据,总线仲裁过程如下:
(1),有数据分组待发送的PNB总线控制器控制器选择当前最高优先级分组,并读取发送描述符,提取数据分组的软件优先级pri和目标控制字PNB_DID;
(2),检查PNB总线控制器的输入信号PNB_BREQ_IN,若为1表示总线忙转步骤(1)继续等待;否则,置PNB总线控制器的输出信号PNB_BREQ_OUT和使能信号PNB_BREQ_OE为1后,转到(3)进行分组的软件优先权仲裁;
(3),PNB总线控制器根据数据分组的软件优级pri,并按下面方法PNB总线提交按公式(1)计算出的软件优先权控制字PNB_PRI,
PNB_data_out<=PNB_PRI(式中:<=表示信号赋值)
PNB_data_oe<=PNB_PRI(式中:<=表示信号赋值)
其中,PNB_data_out为PNB总线数据输出、PNB_data_oe为PNB总线输出使能控制信号;
(4),PNB总线控制器读取PNB总线的PNB总线数据输入PNB_data_in的值,并检查回读数据,若PNB_data_in中某位被置1且其位序比发送分组的软件优先级pri高,则清零输出信号PNB_BREQ_OUT和使能信号PNB_BREQ_OE,撤销PNB总线申请,转到(1)继续等待;否则转(5)进行设备优先权仲裁;
(5),PNB总线控制器向PNB总线提交设备优先权控制字(PNB_PID,按公式2计算),
PNB_data_out<=PNB_PID(式中:<=表示信号赋值)
PNB_data_oe<=PNB_PID(式中:<=表示信号赋值)
上面公式中,PNB_data_out为PNB总线数据输出、PNB_data_oe为PNB总线输出使能控制;
(6),PNB总线控制器读取PNB总线的PNB总线数据输入PNB_data_in值,并检查回读数据,若PNB_data_in中某一位被置1且该位的位序比控制器地址识别码AID高,则清零输出信号PNB_BREQ_OUT和使能信号PNB_BREQ_OE,撤销PNB总线申请,转到(1)继续等待;否则转到(7)准备输出随路时钟;
(7),仲裁成功的PNB总线控制器保持输出信号PNB_BREQ_OUT和使能信号PNB_BREQ_OE为1,随后置位随路时钟信号PNB_CLK_OE,并输出随路时钟准备发送数据。
5.5.总线数据发送
所述PNB总线实现方法中总线的发送争用由状态机实现,总线仲裁阶段胜出的控制器可以发送数据分组,下面结合附图3总线控制器主接口状态变迁图来说明数据分组发送过程:
Master_Idle状态:总线空闲,总线控制器按从高到低的顺序检查个发送优先级队列,若有待发送数据分组则转Master_BREQ状态;
Master_BREQ状态:总线状态检查,检查总线状态,若PNB_BREQ_IN=0则转Master_PRI状态进行软件优先权竞争,否则转Master_Fail仲裁失败;
Master_PRI状态:软件优先权竞争,控制器向总线提交数据分组的软件优先权控制字PNB_PRI进行软件优先权总线争用,若竞争失败转Master_Fail继续等待,否则转Master_PID进行设备优先权竞争;
Master_PID状态:设备优先权竞争,控制器向总线提交设备优先权控制字PNB_PID进行总线争用,若竞争失败转Master_Fail继续等待,否则转Master_CLK准备随路时钟输出;
Master_CLK状态:随路时钟输出,控制器输出随路时钟,在等待总线时钟稳定后转Master_Trans进行数据传输;
Master_Trans状态:数据传输状态,根据发送描述指示发送分组数据,发送完成后转Master_Fin状态,若待发分组为单播则控制器在发送过程中检查信号PNB_TRDY_IN,若该信号为0表示目标空间不足或目标不存在,则放弃本次传送并转Master_Fail释放总线;
Master_Fin状态:分组发送结束,控制器将关闭随路时钟和释放数据总线,更新发送队列的描述符读指针,更新状态寄存器,并根据需要触发MCU发送中断,之后转Master_Idle等待新的分组传送;
Master_Fail状态:总线仲裁失败,控制器将关闭所有输出以释放数据总线,同时给出PNB_RE=1即允许接收模块接收来自总线上其他控制的数据分组,之后转Master_Idle等待总线空闲;
5.6.总线数据接收
所述PNB总线控制器通过从接口(接收模块)监视总线,一旦发现总线的帧同步信号FS被置位即启动接收状态机对总线上的数据进行目标地址识别,地址识别通过的数据分组将被从接口的状态机接收并写入内部缓存,作为可选控制项,可通过来自发送模块的接收使能信号PNB_RE来控制接收模块是否接收自己发送数据。下面结合附图4的从接口状态变迁图来说明数据接收过程:
Slave_Idle状态:空闲状态,状态机在帧同步信号FS的上升沿转入Slave_Filter状态;
Slave_Filter状态:分组过滤,状态机对当前数据分组的目标地址、优先级、传送模式、分组长度进行识别,识别不通过则放弃该分组,否则进入Slave_Space状态;
Slave_Space状态:接收缓冲检查,状态机根据数据分组分组描述符中的优先级去检查对应接收优先级队列,如果接收队列空间不足则放弃该分组转入Slave_Idle状态,否则进入Slave_RCV状态进行数据接收,同时置位硬件流量握手控制信号如下:
PNB_TRDY_OUT<=1(式中:"<="表示信号赋值)
PNB_TRDY_OE<=1(式中:"<="表示信号赋值)
Slave_RCV状态:数据接收,状态机接收数据分组到指定的优先级队列,同时计算帧校验,若该分组为存储映像模式,状态机还将识别数据分组的目标写入地址。当FS的下降沿到达时状态机停止接收数据转入Slave_FCS状态;
Slave_FCS状态:帧校验,状态机将读取本地校验计算结果和数据分组中的帧校验,若校验失败,则该分组被丢弃在置位相应状态位后转入Slave_Idle,否则检查分组模式,若当前分组为流模式传输随后转入Slave_FIN状态,若为存储映像模式则转入Slave_MConfig状态;
Slave_MConfig状态:转存参数配置,状态机根据数据分组中的目标地址和数据长度等数据对配置本地化写入参数,然后转Slave_MTrans进行本地化转存;
Slave_MTrans状态:数据转存,状态机进行存储映像模式下数据分组本地化转存;
Slave_FIN状态:接收事务结束,状态机更新接收队列写指针和接收状态寄存器并根据需要触发接收中断,之后转入Slave_Idle状态等待新的数据分组,同时清零硬件流量握手控制信号如下:
PNB_TRDY_OUT<=0(式中:"<="表示信号赋值)
PNB_TRDY_OE<=0(式中:"<="表示信号赋值)
5.7.总线时序
所述总线实现方法在不同总线阶段,对总线驱动器的控制方法有所不同,附图5展示了一种极端情况,总线上的所有控制器在同一时刻申请总线传送且待传送的数据分组的优先级相同,各控制器首先将BREQ_OE置高,进行总线请求,与此同时将自己的数据发分组优先级PRI送上数据总线,在PRI的仲裁阶段没有竞争出结果,随后各控制器又将自己的设备优先权PID送上总线,由于各控制器的PID各不相同,最后控制器0胜出,其余竞争失败的控制器随后将自己的BREQ_OE置低同时关闭数据总线的输出使能,转而监视总线FS_IN的状态为数据接收做准备。
附图5中竞争成功的控制器0保持BREQ_OE为高,同时置位CLK_OE输出随路时钟,待总线时钟稳定后,置位FS_OE和FS_OUT,随后进入数据传送阶段。整个数据传送结束后,控制器0先清零FS_OUT,并保持随路时钟输出3~5个总线时钟保证接收方能够提交数据,随后清零BREQ_OUT、BREQ_OE、DATA_OE和CLK_OE,总线进入空闲状态,等待新一轮的竞争和分组传送。
5.8.优先级管理
所述PNB总线控制器提供了优先分组服务,以满足不同的业务对服务质量的要求。附图2所示的实现案例中,发送和接收分别有4个独立的优先级队列,而实际实现时优先级队列的数量受限于系统资源。附图2中每个优先级有独立的控制寄存器、数据空间和中断请求信号,且编号高的优先级高,在实时多任务系统中,可以根据业务要求将驱动服务程序安排在系统不同优先级中断和任务中。
对于发送业务,发送状态机会持续监视发送优先级组,在总线空闲时,优先选择高优先级的分组,如附图2,控制器首先检查优先级队列3,其次是队列2,然后是队列1,最后是队列0,只有高优先级队列空闲时才会检查低优先级队列。对于接收业务,驱动程序应保证优先查询有高优先级的队列,或优先响应高优先级接收中断,确保高优先级分组优先得到MCU的服务。
驱动程序应根据业务服务质量要求指定数据分组中的软件优先级部分,并将数据写入对应的优先级队列。而硬件优先级则采用固定的优先级编排方法,由控制器的地址识别码直接转化而来。实际发送时,如果两个控制器的数据分组软件优先级不一样时优先级高的分组将会被优先传送,如果两个控制器的数据分组软件优先级一样则控制器优先权高的分组被优先传送。
5.9.总线流量控制
所述PNB总线实现方法在单播数据传送时还支持硬件的流控制,如附图3所示,当总线上控制器的发送方在仲裁胜出传送数据时会检查PNB_TRDY信号,如该信号为0表示目标未准备好则放弃本次发送。同时为保证各设备能够公平使用总线,任一次数据传输被限定了最大长度,此外利用一个流量控制定时器给不同优先级的数据报提供不同的调度响应延时,以此控制非实时应用的宏观流量。
控制器中优先级队列的调度定时器可由软件写入,针对附图2的一个示例如下:设置LV3的调度定时器为1us,LV2的调度定时器为10us,LV1的调度定时器为100us,LV0的调度定时器为1mS。按此设置总线控制器每隔1us检查一次LV3数据队列,每隔10uS检查一次LV2的数据队列,每隔100uS检查一次LV1的数据队列,每隔1mS检查一次LV0的数据队列,如此实现总线流量的自我控制。
通过上述基本介绍,本发明的自主仲裁的高速差分总线实现方法,包括以下步骤,
步骤(1),构建多个周边节点互联的PNB总线控制器,各PNB总线控制器连接在PNB总线上,各PNB总线控制器包括MLVDS总线收发器、总线发送模块、流量管理模块、多个发送优先级队列、多个接收优先级队列、接收地址识别及优先级分离模块、总线接收模块、中断管理逻辑单元和MCU接口单元,所述MLVDS总线收发器与PNB总线相连接,所述MLVDS总线收发器的接收数据输出端依次通过总线接收模块、接收地址识别及优先级分离模块与多个接收优先级队列相连接,多个接收优先级队列与MCU接口单元的接收数据输入端相连接,所述MCU接口单元与嵌入式系统内业务子卡的处理器相连接,所述MCU接口单元的发送数据输出端与多个发送优先级队列相连接,多个发送优先级队列均依次通过流量管理模块、总线发送模块与MLVDS总线收发器发送数据输入端相连接;
所述总线发送模块、总线接收模块、接收地址识别及优先级分离模块还通过中断管理逻辑单元与MCU接口单元相连接;
所述总线发送模块包括总线仲裁逻辑单元和总线发送逻辑单元,负责发送数据队列查询和总线仲裁及数据发送,所述总线接收模块包括总线接收逻辑单元和数据流模式识别管理单元;
步骤(2),根据步骤(1)构建的PNB总线控制器,建立应用业务子卡后,将MLVDS总线收发器通过高速连接器与背板的差分总线相连接,将MCU接口单元与对应的业务子卡的处理器相连接,所述PNB总线控制器还通过背板连接系统级的总线参考时钟信号、全局复位信号及电源,构成多主多从的数据交换系统;
步骤(3),当业务子卡的处理器有数据需要发送时,创建数据发送分组,并根据数据服务质量要求,把该分组写入PNB总线控制器的多个发送优先级队列,并更新队列写指针和对应的发送寄存器;
步骤(4),PNB总线控制器在流量管理模块的控制下检查各发送优先级队列,一旦识别出待发送的数据分组后,启动总线发送模块内的总线仲裁逻辑单元申请占用总线;
步骤(5),PNB总线控制器在申请占用总线成功后,启动总线发送模块内的总线发送逻辑单元,进行总线传送优先权裁决,发送当前最高优先级的数据分组,在总线传送结束后发送控制逻辑更新发送队列的读指针,并根据需要触发中断管理逻辑单元产生总线发送中断;
步骤(6),处于监听状态的PNB总线控制器,在帧同步信号PNB_FS_IN的上升沿时,启动总线接收模块,将通过接收地址识别及优先级分离模块进行地址识别的分组按优先级写入不同的接收优先级队列,同时更新队列写指针,并根据需要触发中断管理逻辑单元产生接收中断;
步骤(7),处于监听状态的业务子卡的处理器通过查询PNB总线控制器的接收状态或接收中断,根据优先级或中断处理接收队列内的数据,完成PNB总线上优先级数据接收。
步骤(1)的PNB总线控制器,在空闲阶段,总线驱动器关闭,输出弱0;在仲裁阶段,总线控制器利用其数据输出信号控制总线驱动器的输出使能信号,对数据的有选择性地输出1或弱0;在数据输出阶段,获得总线使用权的PNB总线控制器将总线驱动器的输出使能置高,由PNB总线控制器根据数据内容控制数据总线输出为1或0;仲裁失败的由PNB总线控制器将关闭总线输出使能,并转入PNB总线的监听状态。
步骤(2)通过背板为所有PNB总线控制器提供系统级的总线参考时钟信号、全局复位信号,各PNB总线控制器总线侧的工作时钟则通过参考时钟倍频得到,而各PNB总线控制器利用总线上的源同步时钟进行接收数据锁存,各PNB总线控制器的MCU接口单元采用业务子卡的处理器提供的独立时钟业务子卡的处理器和对应的PNB总线控制器之间的跨时钟域转换,只是发生在MCU接口单元上。
步骤(3)当业务子卡的处理器有数据需要发送时,创建数据发送分组,包括点到点的单播、广播和精确多播,实现过程为,
(1)、发送数据方的PNB总线控制器根据应用要求确定接收方,由此精确设定发送分组的目标地址控制字PNB_DID,使与目标方的PNB总线控制器的自身地址AID相对应的位置位,并提交分组;
(2)、总线接收方的PNB总线控制器通过判断接收分组的目标地址控制字PNB_DID中位序与自身地址AID相对应的位是否置位来决定接收与否,若该位为1则接收,否则拒收。
步骤(4)启动总线发送模块内的总线仲裁逻辑单元申请占用总线是通过差分信号PNB_BREQ来指示总线的空闲状态和初始阶段总线仲裁,差分信号PNB_BREQ为0表示总线空闲,为1表示总线占用,最终获得总线使用权的PNB总线控制器在整个总线传输的过程中保持差分信号PNB_BREQ为高,阻止其他的PNB总线控制器对总线影响,而在随后优先权仲裁阶段失败的PNB总线控制器立即将PNB_BREQ置0,以完成本次总线争用且继续监听总线状态。
步骤(5),PNB总线控制器在初始仲裁阶段申请占用总线成功后,启动总线发送模块内的总线发送逻辑单元,进行总线传送优先权裁决,包括以下步骤,
(1),有数据分组待发送的PNB总线控制器控制器选择当前最高优先级分组,并读取发送描述符,提取数据分组的软件优先级pri和目标控制字PNB_DID;
(2),检查PNB总线控制器的输入信号PNB_BREQ_IN,若为1表示总线忙转(1)继续等待;否则,置PNB总线控制器的输出信号PNB_BREQ_OUT和使能信号PNB_BREQ_OE为1后,转到(3)进行分组的软件优先权仲裁;
(3),PNB总线控制器根据数据分组的软件优级pri,按公式(1),计算软件优先权控制字PNB_PRI,
PNB_PRI=1<<pri (1)
其中,“<<”表示向左移位;
(4),PNB总线控制器根据公式(2)、公式(3)向PNB总线提交按公式(1)计算出的软件优先权控制字PNB_PRI,
PNB_data_out<=PNB_PRI (2)
PNB_data_oe<=PNB_PRI (3)
其中,“<=”表示信号赋值,PNB_data_out为PNB总线数据输出、PNB_data_oe为PNB总线输出使能控制;
(5),PNB总线控制器读取PNB总线的PNB总线数据输入PNB_data_in的值,并检查回读数据,若PNB_data_in中某位被置1且其位序比发送分组的软件优先级pri高,则清零输出信号PNB_BREQ_OUT和使能信号PNB_BREQ_OE,撤销PNB总线申请,转到(1)继续等待;否则转(6)进行设备优先权仲裁;
(6),PNB总线控制器根据公式(4)、公式(5)、公式(6)向PNB总线提交设备优先权控制字PNB_PID,
PNB_data_out<=PNB_PID (4)
PNB_data_oe<=PNB_PID (5)
PNB_PID=1<<AID (6)
其中,AID为开发者对PNB总线上的每个PNB总线控制器分配一个唯一的地址识别码,PNB_data_out为PNB总线数据输出、PNB_data_oe为PNB总线输出使能控制;
(7),PNB总线控制器读取PNB总线的PNB总线数据输入PNB_data_in值,并检查回读数据,若PNB_data_in中某一位被置1且该位的位序比控制器地址识别码AID高,则清零输出信号PNB_BREQ_OUT和使能信号PNB_BREQ_OE,撤销PNB总线申请,转到(1)继续等待;否则转到(8)准备输出随路时钟;
(8),仲裁成功的PNB总线控制器保持输出信号PNB_BREQ_OUT和使能信号PNB_BREQ_OE为1,随后置位随路时钟信号PNB_CLK_OE,并输出随路时钟准备发送数据。
步骤(6),在帧同步信号PNB_FS_IN的上升沿时,启动总线接收模块,通过帧同步信号PNB_FS来指示数据分组的启动和停止,获得总线使用权的PNB总线控制器在开始帧传送时置位该信号,整个传输过程中保持该信号为1,传输完成后清除该信号,PNB总线控制器在该信号的上升沿启动总线接收模块,下降沿停止接收并进行帧校验和分组提交。
所述PNB总线的单播数据分组具有硬件流量控制,当PNB总线上的PNB总线控制器的发送方在仲裁胜出传送数据之前会检查PNB_TRDY信号,PNB_TRDY信号为0表示目标未准备好,则放弃本次发送。
所述PNB总线控制器为不同发送优先级队列提供一个可设置的流量控制定时器,通过给不同优先级的数据分组提供不同的调度响应延时,用来控制非实时应用的宏观流量。
所述PNB总线控制器通过下面的方法实现总线存储映像模式,
(1)、在总线数据源端的数据分组中标记存储映像传送模式和目标映射地址;
(2)、目标端的PNB总线控制器接收部件解析数据分组中存储映像传送模式标记和目标映射地址同时缓存数据;
(3)、在帧传送结束并校验通过后,目标端的PNB总线控制器的接收部件模拟MCU空间的数据写事务。
以上显示和描述了本发明的基本原理、主要特征及优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。
Claims (10)
1.一种自主仲裁的高速差分总线实现方法,其特征在于:包括以下步骤,
步骤(1),构建多个周边节点互联的PNB总线控制器,各PNB总线控制器连接在PNB总线上,各PNB总线控制器包括MLVDS总线收发器、总线发送模块、流量管理模块、多个发送优先级队列、多个接收优先级队列、接收地址识别及优先级分离模块、总线接收模块、中断管理逻辑单元和MCU接口单元,所述MLVDS总线收发器与PNB总线相连接,所述PNB总线为周边节点互联总线,所述MLVDS总线收发器的接收数据输出端依次通过总线接收模块、接收地址识别及优先级分离模块与多个接收优先级队列相连接,多个接收优先级队列与MCU接口单元的接收数据输入端相连接,所述MCU接口单元与嵌入式系统内业务子卡的处理器相连接,所述MCU接口单元的发送数据输出端与多个发送优先级队列相连接,多个发送优先级队列均依次通过流量管理模块、总线发送模块与MLVDS总线收发器发送数据输入端相连接;
所述总线发送模块、总线接收模块、接收地址识别及优先级分离模块还通过中断管理逻辑单元与MCU接口单元相连接;
所述总线发送模块包括总线仲裁逻辑单元和总线发送逻辑单元,负责发送数据队列查询和总线仲裁及数据发送,所述总线接收模块包括总线接收逻辑单元和数据流模式识别管理单元;
步骤(2),根据步骤(1)构建的PNB总线控制器,建立应用业务子卡后,将MLVDS总线收发器通过高速连接器与背板的差分总线相连接,将MCU接口单元与对应的业务子卡的处理器相连接,所述PNB总线控制器还通过背板连接系统级的总线参考时钟信号、全局复位信号及电源,构成多主多从的数据交换系统;
步骤(3),当业务子卡的处理器有数据需要发送时,创建数据发送分组,并根据数据服务质量要求,将该分组写入PNB总线控制器的多个发送优先级队列,并更新队列写指针和对应的发送寄存器;
步骤(4),PNB总线控制器在流量管理模块的控制下检查各发送优先级队列,一旦识别出待发送的数据分组后,启动总线发送模块内的总线仲裁逻辑单元申请占用总线;
步骤(5),PNB总线控制器在申请占用总线成功后,启动总线发送模块内的总线发送逻辑单元,进行总线传送优先权裁决,发送当前最高优先级的数据分组,在总线传送结束后发送控制逻辑更新发送队列的读指针,并根据需要触发中断管理逻辑单元产生总线发送中断;
步骤(6),处于监听状态的PNB总线控制器,在帧同步信号PNB_FS_IN的上升沿时,启动总线接收模块,把通过接收地址识别及优先级分离模块进行地址识别的分组按优先级写入不同的接收优先级队列,同时更新队列写指针,并根据需要触发中断管理逻辑单元产生接收中断;
步骤(7),处于监听状态的业务子卡的处理器通过查询PNB总线控制器的接收状态或接收中断,根据优先级或中断处理接收队列内的数据,完成PNB总线上优先级数据接收。
2.根据权利要求1所述的自主仲裁的高速差分总线实现方法,其特征在于:步骤(1)的PNB总线控制器,在空闲阶段,总线驱动器关闭,输出弱0;在仲裁阶段,总线控制器利用其数据输出信号控制总线驱动器的输出使能信号,对数据的有选择性地输出1或弱0;在数据输出阶段,获得总线使用权的PNB总线控制器将总线驱动器的输出使能置高,由PNB总线控制器根据数据内容控制数据总线输出为1或0;仲裁失败的由PNB总线控制器将关闭总线输出使能,并转入PNB总线的监听状态。
3.根据权利要求1所述的自主仲裁的高速差分总线实现方法,其特征在于:步骤(2)通过背板为所有PNB总线控制器提供系统级的总线参考时钟信号、全局复位信号,各PNB总线控制器总线侧的工作时钟则通过参考时钟倍频得到,而各PNB总线控制器利用总线上的源同步时钟进行接收数据锁存,各PNB总线控制器的MCU接口单元采用业务子卡的处理器提供的独立时钟业务子卡的处理器和对应的PNB总线控制器之间的跨时钟域转换,只是发生在MCU接口单元上。
4.根据权利要求1所述的自主仲裁的高速差分总线实现方法,其特征在于:步骤(3),当业务子卡的处理器有数据需要发送时,创建数据发送分组,包括点到点的单播、广播和精确多播,实现过程为,
(1)、发送数据方的PNB总线控制器根据应用要求确定接收方,由此精确设定发送分组的目标地址控制字PNB_DID,使与目标方的PNB总线控制器的地址AID相对应的位置位,并提交分组;
(2)、总线接收方的PNB总线控制器通过判断接收分组的目标地址控制字PNB_DID中位序与自身地址AID相对应的位是否置位来决定接收与否,若该位为1则接收,否则拒收。
5.根据权利要求1所述的自主仲裁的高速差分总线实现方法,其特征在于:步骤(4)启动总线发送模块内的总线仲裁逻辑单元申请占用总线是通过差分信号PNB_BREQ来指示总线的空闲状态和初始阶段总线仲裁,差分信号PNB_BREQ为0表示总线空闲,为1表示总线占用,最终获得总线使用权的PNB总线控制器在整个总线传输的过程中保持差分信号PNB_BREQ为高,阻止其他的PNB总线控制器对总线影响,而在随后优先权仲裁阶段失败的PNB总线控制器立即将PNB_BREQ置0,以完成本次总线争用且继续监听总线状态。
6.根据权利要求1所述的自主仲裁的高速差分总线实现方法,其特征在于:步骤(5),PNB总线控制器在初始仲裁阶段申请占用总线成功后,启动总线发送模块内的总线发送逻辑单元,进行总线传送优先权裁决,包括以下步骤,
(51),有数据分组待发送的PNB总线控制器控制器选择当前最高优先级分组,并读取发送描述符,提取数据分组的软件优先级pri和目标控制字PNB_DID;
(52),检查PNB总线控制器的输入信号PNB_BREQ_IN,若为1表示总线忙转(51)继续等待;否则,置PNB总线控制器的输出信号PNB_BREQ_OUT和使能信号PNB_BREQ_OE为1后,转到(53)进行分组的软件优先权仲裁;
(53),PNB总线控制器根据数据分组的软件优级pri,按公式(1),计算软件优先权控制字PNB_PRI,
PNB_PRI=1<<pri (1)
其中,<<表示向左移位;
(54),PNB总线控制器根据公式(2)、公式(3)向PNB总线提交按公式(1)计算出的软件优先权控制字PNB_PRI,
PNB_data_out<=PNB_PRI (2)
PNB_data_oe<=PNB_PRI (3)
其中,<=表示信号赋值,PNB_data_out为PNB总线数据输出、PNB_data_oe为PNB总线输出使能控制;
(55),PNB总线控制器读取PNB总线的PNB总线数据输入PNB_data_in的值,并检查回读数据,若PNB_data_in中某位被置1且其位序比发送分组的软件优先级pri高,则清零输出信号PNB_BREQ_OUT和使能信号PNB_BREQ_OE,撤销PNB总线申请,转到(51)继续等待;否则转(56)进行设备优先权仲裁;
(56),PNB总线控制器根据公式(4)、公式(5)、公式(6)向PNB总线提交设备优先权控制字PNB_PID,
PNB_data_out<=PNB_PID (4)
PNB_data_oe<=PNB_PID (5)
PNB_PID=1<<AID (6)
其中,AID为开发者对PNB总线上的每个PNB总线控制器分配一个唯一的地址识别码,PNB_data_out为PNB总线数据输出、PNB_data_oe为PNB总线输出使能控制;
(57),PNB总线控制器读取PNB总线的PNB总线数据输入PNB_data_in值,并检查回读数据,若PNB_data_in中某一位被置1且该位的位序比控制器地址识别码AID高,则清零输出信号PNB_BREQ_OUT和使能信号PNB_BREQ_OE,撤销PNB总线申请,转到(51)继续等待;否则转到(58)准备输出随路时钟;
(58),仲裁成功的PNB总线控制器保持输出信号PNB_BREQ_OUT和使能信号PNB_BREQ_OE为1,随后置位随路时钟信号PNB_CLK_OE,并输出随路时钟准备发送数据。
7.根据权利要求1所述的自主仲裁的高速差分总线实现方法,其特征在于:步骤(6),在帧同步信号PNB_FS_IN的上升沿时,启动总线接收模块,通过帧同步信号PNB_FS来指示数据分组的启动和停止,获得总线使用权的PNB总线控制器在开始帧传送时置位该信号,整个传输过程中保持该信号为1,传输完成后清除该信号,PNB总线控制器在该信号的上升沿启动总线接收模块,下降沿停止接收并进行帧校验和分组提交。
8.根据权利要求1所述的自主仲裁的高速差分总线实现方法,其特征在于:所述PNB总线的单播数据分组具有硬件流量控制,当PNB总线上的PNB总线控制器的发送方在仲裁胜出传送数据之前会检查PNB_TRDY信号,PNB_TRDY信号为0表示目标未准备好,则放弃本次发送。
9.根据权利要求1所述的自主仲裁的高速差分总线实现方法,其特征在于:所述PNB总线控制器为不同发送优先级队列提供一个可设置的流量控制定时器,通过给不同优先级的数据分组提供不同的调度响应延时,用来控制非实时应用的宏观流量。
10.根据权利要求1所述的自主仲裁的高速差分总线实现方法,其特征在于:所述PNB总线控制器通过下面的方法实现总线存储映像模式,
(1)、在总线数据源端的数据分组中标记存储映像传送模式和目标映射地址;
(2)、目标端的PNB总线控制器的接收部件解析数据分组中存储映像传送模式标记和目标映射地址同时缓存数据;
(3)、在帧传送结束并校验通过后,目标端的PNB总线控制器的接收部件模拟MCU空间的数据写事务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510612332.XA CN105320632B (zh) | 2015-09-23 | 2015-09-23 | 一种自主仲裁的高速差分总线实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510612332.XA CN105320632B (zh) | 2015-09-23 | 2015-09-23 | 一种自主仲裁的高速差分总线实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105320632A CN105320632A (zh) | 2016-02-10 |
CN105320632B true CN105320632B (zh) | 2018-05-29 |
Family
ID=55248040
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510612332.XA Active CN105320632B (zh) | 2015-09-23 | 2015-09-23 | 一种自主仲裁的高速差分总线实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105320632B (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108108148B (zh) * | 2016-11-24 | 2021-11-16 | 舒尔电子(苏州)有限公司 | 一种数据处理方法和装置 |
US10558604B2 (en) * | 2017-12-20 | 2020-02-11 | Qualcomm Incorporated | Communication interface transaction security |
CN108234267B (zh) * | 2018-02-08 | 2023-11-07 | 卡斯柯信号有限公司 | 一种基于m-lvds实时多主高速总线的通信系统 |
CN110391960B (zh) * | 2018-04-18 | 2021-10-15 | 珠海全志科技股份有限公司 | 总线传输控制装置及方法 |
CN111413909A (zh) * | 2020-04-15 | 2020-07-14 | 联合华芯电子有限公司 | 基于机器人感知系统的神经元 |
CN111343069A (zh) * | 2020-04-15 | 2020-06-26 | 联合华芯电子有限公司 | 基于机器人感知系统的分布式控制通信总线及机器人 |
CN111478842A (zh) * | 2020-04-15 | 2020-07-31 | 联合华芯电子有限公司 | 一种高速数据传输系统和方法 |
CN111314193A (zh) * | 2020-04-15 | 2020-06-19 | 联合华芯电子有限公司 | 数据传输总线系统、装置及方法 |
CN111343068A (zh) * | 2020-04-15 | 2020-06-26 | 联合华芯电子有限公司 | 用于巨型载具的双速仲裁总线系统及载具 |
CN111400239A (zh) * | 2020-04-15 | 2020-07-10 | 联合华芯电子有限公司 | 片内分布式互联总线系统及多核处理器 |
CN111510217B (zh) * | 2020-04-15 | 2021-05-28 | 南京大学 | 一种应用于高速列车的长距离通信的光电混合总线系统 |
CN111666139B (zh) * | 2020-05-26 | 2022-11-11 | 中国人民解放军国防科技大学 | 一种多输入多输出多服务等级数据队列的调度方法及装置 |
CN112235032B (zh) * | 2020-09-17 | 2021-10-12 | 中国科学院西安光学精密机械研究所 | 基于时间服务的高光谱成像仪1553b总线通信方法 |
CN112463693A (zh) * | 2020-12-09 | 2021-03-09 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 基于m-lvds总线的多板卡通信系统及方法 |
CN112579495B (zh) * | 2020-12-25 | 2024-01-30 | 上海东软载波微电子有限公司 | Gpio控制器 |
CN112765072A (zh) * | 2021-01-28 | 2021-05-07 | 北京方天长久科技股份有限公司 | 一种串行互联总线数据帧格式及传输方法 |
CN114120662B (zh) * | 2021-12-03 | 2022-09-02 | 江苏航天大为科技股份有限公司 | 一种基于串口总线的智能信号灯同步控制系统及方法 |
CN115543913B (zh) * | 2022-11-25 | 2023-03-03 | 摩尔线程智能科技(北京)有限责任公司 | 片上系统、电子设备和基于片上系统的功率管理方法 |
CN116094867B (zh) * | 2023-04-10 | 2023-06-16 | 湖南鲸瓴智联信息技术有限公司 | 基于mlvds总线的时间敏感网络控制协议设计方法 |
CN118012799B (zh) * | 2024-04-07 | 2024-06-07 | 深圳华云信息系统科技股份有限公司 | 请求处理方法、装置、电子设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1275737A (zh) * | 1999-05-27 | 2000-12-06 | 上海大唐移动通信设备有限公司 | 消息传输总线的结构 |
CN1556642A (zh) * | 2003-12-31 | 2004-12-22 | 中兴通讯股份有限公司 | Pos-phy总线与pci总线间的数据包转发的装置和方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002307264A (ja) * | 2001-04-10 | 2002-10-23 | Nisshin Seisakusho:Kk | 自動機械加工システムの加工セルおよび自動ホーニングシステム |
CN102231142B (zh) * | 2011-07-21 | 2013-12-11 | 浙江大学 | 一种带有仲裁器的多通道dma控制器 |
CN203590252U (zh) * | 2013-11-22 | 2014-05-07 | 中国电子科技集团公司第三十二研究所 | 基于RapidIO总线的CAN控制系统 |
-
2015
- 2015-09-23 CN CN201510612332.XA patent/CN105320632B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1275737A (zh) * | 1999-05-27 | 2000-12-06 | 上海大唐移动通信设备有限公司 | 消息传输总线的结构 |
CN1556642A (zh) * | 2003-12-31 | 2004-12-22 | 中兴通讯股份有限公司 | Pos-phy总线与pci总线间的数据包转发的装置和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105320632A (zh) | 2016-02-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105320632B (zh) | 一种自主仲裁的高速差分总线实现方法 | |
US7120712B2 (en) | Communications system and method with multilevel connection identification | |
CN106411740B (zh) | 基于以太网控制器的网络端口扩展方法 | |
US7165094B2 (en) | Communications system and method with non-blocking shared interface | |
JP2584957B2 (ja) | ホスト指示結合式の装置 | |
CN105144637B (zh) | 用于交换用户数据的接口装置和方法 | |
CN103543954B (zh) | 一种数据存储管理方法和装置 | |
CN110109847A (zh) | Apb总线多个主设备的仲裁方法、系统及存储介质 | |
DE69812651T2 (de) | Mehrfachverwendbare modulen für komplexe integrierte halbleiterschaltungen | |
US5276684A (en) | High performance I/O processor | |
US20080043742A1 (en) | Transmission using multiple physical interface | |
CN107202977A (zh) | 一种基于vpx平台的综合处理系统及软件设计方法 | |
JP5333200B2 (ja) | パケット通信制御装置、メモリアクセス制御装置及び情報処理システム | |
CN101989942B (zh) | 仲裁控制方法、通信方法、仲裁器和通信系统 | |
JPH04336729A (ja) | 汎用アダプタ | |
CN108279927A (zh) | 可调整指令优先级的多通道指令控制方法及系统、控制器 | |
JPWO2014103144A1 (ja) | インタフェース装置、およびメモリバスシステム | |
JP2007220046A (ja) | バス装置、バスシステムおよび情報転送方法 | |
CN109739786A (zh) | 一种dma控制器和异构加速系统 | |
CN112131155A (zh) | 一种高扩展性的基于fpga的pcie事务层传输方法 | |
CN108156137A (zh) | 一种1553B总线与FlexRay总线的协议转换方法 | |
CN102761488A (zh) | 一种高速全双工交换以太网控制器 | |
US9407578B2 (en) | System and method of arbitrating access to interconnect | |
US8788737B2 (en) | Transport of PCI-ordered traffic over independent networks | |
EP1179785A1 (en) | Bus interconnect system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |