发明名称 IEEE1394总线的链路层控制器
摘要 本发明涉及一种IEEE1394总线的链路层控制器,包括:主机接口、链路层核心模块、数据缓冲与路由控制模块、高速数据接口模块和配置寄存器;外部CPU通过所述的主机接口可以读写配置寄存器、存取数据缓冲与路由控制模块中的数据缓冲区;所述的数据缓冲与路由控制模块处于链路层核心模块和主机接口及高速数据接口之间,用于提供不同收发数据通道间的切换控制;所述的数据缓冲与路由控制模块还使用了两个异步先入先出存储器,分别用于收发数据的缓冲和跨时钟域数据的同步;所述的配置寄存器用于提供对链路层核心模块、数据缓冲与路由控制模块的初始配置和控制,通过所述的主机接口读写配置寄存器来实施控制和获取链路层控制器各模块的工作状态,有很好的可移植性。
申请公布号 CN101764795B 申请公布日期 2012.12.12
申请号 CN200810240815.1 申请日期 2008.12.23
申请人 中国科学院空间科学与应用研究中心 发明人 周庆瑞;孙辉先;陈晓敏;凡启飞;曹松
分类号 H04L29/06(2006.01)I;H04L12/40(2006.01)I 主分类号 H04L29/06(2006.01)I
代理机构 北京法思腾知识产权代理有限公司 11318 代理人 杨小蓉
主权项 一种IEEE1394总线的链路层控制器,其特征在于,所述的链路层控制器包括:主机接口、链路层核心模块、数据缓冲与路由控制模块、高速数据接口模块和配置寄存器;外部CPU通过所述的主机接口可以读写配置寄存器、存取数据缓冲与路由控制模块中的数据缓冲区;所述的数据缓冲与路由控制模块处于链路层核心模块和主机接口及高速数据接口之间,用于提供不同收发数据通道间的切换控制,其中,所述的数据缓冲与路由控制模块还使用了两个异步先入先出存储器,分别用于收发数据的缓冲和跨时钟域数据的同步;所述的配置寄存器用于提供对链路层核心模块、数据缓冲与路由控制模块的初始配置和控制,通过所述的主机接口读写配置寄存器来实施控制和获取链路层控制器各模块的工作状态;所述的链路层核心模块,用于实现IEEE1394总线协议中链路层的所有功能,包括:物理层链路层接口、数据缓冲处理单元、数据包收发单元、循环冗余校验单元以及循环控制器;所述的物理层链路层接口,用于提供IEEE1394总线协议规定的链路层与物理层间的标准接口;所述的数据缓冲处理单元,使用一个异步先入先出存储器为收发数据包提供数据缓冲功能;所述的数据包收发单元是链路层核心模块的核心,通过双向数据线与数据缓冲处理单元、循环冗余校验单元、循环控制器以及数据缓冲与路由控制模块相连;所述循环冗余校验单元,用于提供收发数据时的循环冗余校验功能;所述循环控制器,包括循环定时器和循环监视器,用于等时服务;在发送数据包时,通过主机接口写入指定格式的数据包到数据缓冲与路由控制模块;再通过数据缓冲与路由控制模块的异步先入先出存储器实现数据的缓冲、多时钟域数据的同步以及数据路由的控制;然后,进入链路层核心模块,按照IEEE1394总线协议中不同类型数据包的格式进行数据的组帧和循环冗余校验;最后通过物理层链路层接口向物理层发出相应类型的总线申请;该链路层控制器所在节点获取总线控制权后,开始通过物理层链路层接口按照指定的速度转发数据包到串行总线;数据包发送完成后,如果发送的是非广播异步包,则等待目的节点返回确认包,如果该链路层控制器所在节点是循环控制器,还会产生并发送循环开始包到总线;在接收数据包时,通过物理层链路层接口接收物理层转发的,在串行总线上传输的数据包,在链路层核心模块,所述数据包收发单元对接收的数据包进行地址和 数据包类型的译码,如果该数据包的目的节点不是本节点,则放弃数据包的接收;否则,开始接收数据包并进行CRC校验,如校验错误则放弃数据包的接收,如正确则把接收的数据按照指定的格式输出到数据缓冲与路由控制模块,在该模块中完成多时钟域数据的同步和缓冲,并根据路由控制,通过主机接口输出数据到事务层或应用程序;如果接收到的是非广播异步包,完成数据包接收后,链路层核心模块返回一个确认包到串行总线;所述的物理层链路层接口采用了容错设计,用于针对控制信号Ctl可能出现的各种错误进行分析和处理;其中,用Ctl表示物理层与链路层接口间传输的控制信号,所述容错设计为:Step1:接收Ctl信号,并判断其值;Step2:若Ctl=00B,则转到Step1,否则继续;Step3:若Ctl=01B,则连续接收数据线D上的数据,直至该状态即Ctl=01B结束,然后转到Step1,否则继续;Step4:判断Ctl是否10B,是则转到Step7,否则继续;Step5:判断链路层控制器是否发出了总线申请,否:转到Step1,是则继续;Step6:接管总线,发送数据包,发送结束后,返回到Step1;Step7:判断数据线的值是否为FFH,否:转到Step1,是则继续;Step8:接收当前的数据,进入下一个时钟周期,继续;Step9:Ctl的值是否00B,否:转到Step8,是:继续;Step10:判断是否接收到完整的4字节数据,否:转到Step8,是则返回Step1。
地址 100084 北京市海淀区中关村南二条1号