一种HDLC数据转发的全自动硬件引擎设计
发布时间:2008/5/29 0:00:00 访问次数:467
摘要:讨论了一种hdlc协议数据转发的全自动硬件设计。在sdh产品的ecc接口中采用硬件实现,通过自动控制bd的方式,实现hdlc协议的数据重新打包转发、错误处理、重发帧数据等操作,不必cpu干预。该设计实现了两个ecc口收发全双工、8个dcc口点对点同时收发的高速率、多通道设计。
关键词:ecc hdlc bd
在传输产品中,ip over sdh的基本思路,是将ip数据通过点到点协议(ppp)直接映射到sdh帧,从而省掉了中间复杂的atm层。具体作法是先把ip数据报封装进ppp分组,然后再利用高级数据链路控制堆积hdlc按照rfc1662的规定组帧,最后将字节同步映射进sdh包中,加上相应的sdh开销置入stm-n帧中。ip over sdh简单的系统结构如图1所示,其中ppp层的功能包括ip多协议封装、差错检验和链路初始化控制,而hdlc为ppp封装的ip数据包提供定界,并且01111110表示一帧的开始和结束。
本文讨论如何用全自动硬件方式实现图1中所示的hdlc模块。
1 传统的cpu实现方式
在图1中,hdlc模块实现一个hdlc总线到多个点对点hdlc接口之间的数据转发。将hdlc总线的接口称为ecc口,hdlc点对点接口称为dcc口。传统的实现方法如图2所示,是若干hdlc控制器芯片加一块cpu实现ecc到dcc的数据转发功能。cpu通过软件配置,向hdlc帧中插入或提取用户自定义的10个字节(包括源地址、目标地址、dcc端口号、帧长度等)。以下行为例,hdlc控制器在ecc接口接收数据后,向cpu申请使用sram中的缓冲区,cpu进行仲裁,分配缓冲区描述符bd,数据就可以存放在sram中。cpu在这些数据发送时需要指定dcc通信。由于数据量较大,每一帧都要进行bd的处理,且数据申请导致中断处理频繁,软件很容易出错。
另外,随着单板集成度的提高,ecc接口的数据量越来越大,dcc接口的通道也越来越多。如果采用传统的cpu实现方式,就必须不断增加hdlc控制器,所要求的cpu性能也越来越高,这在技术上难以实现,成本上也不能接受,因而必须确定一种更经济、有效的技术方式来实现大容量、高效率、低成本的ecc转发技术。采用硬件方式,无须或尽量减少cpu的干预,在ecc接口实现自动的hdlc数据转发。
笔者的目的是将hdlc控制器和cpu的大部分功能用硬件实现,在整个运作过程中,不需要cpu实时协助,可实现全自动控制,cpu只需在开始进行一些初始化和配置工作,同时为cpu提供一些统计信息,方便cpu了解模块数据传送的性能。
2 全自动硬件结构设计
硬件结构如图3所示,可划分为六大块:ecc接口的发送模块、ecc接口的接收模块、dcc接口的发送模块、dcc接口的接收模块、sram控制器和cpu接口。
图3
ecc_tx控制:
·仲裁dcc_rx发过来的数据申请;
·从sram内读取数据到内部;
·按照要求添加前10个字节的信息;
·按照协议产生新的16位crc;
·按照协议发送数据;
·按照协议进行重发操作;
·在操作正确完成后,更新bd和发送指针。ecc_rx控制;
·实时监控hdlc总线上的变化;
·解析正确的hdlc数据包,进行crc检查;
·接收属于本地址的数据包到sram内;
·在发生错误的情况下,放弃已经存入sram内的数据;
·在数据包正确接收到sram之后,产生新bd并更新接收指针;
dcc_rx控制:
·接收的逻辑有8组,可同时接收;
·实时监控hdlc点对点的数据变化;
·解析正确的hdlc数据包,进行crc检查;
·接收数据包到sram内;
·在发生错误的情况下,放弃已经存入sram内的数据;
·在数据包正确接收到sram之后,产生新bd并更新接收指针。
摘要:讨论了一种hdlc协议数据转发的全自动硬件设计。在sdh产品的ecc接口中采用硬件实现,通过自动控制bd的方式,实现hdlc协议的数据重新打包转发、错误处理、重发帧数据等操作,不必cpu干预。该设计实现了两个ecc口收发全双工、8个dcc口点对点同时收发的高速率、多通道设计。
关键词:ecc hdlc bd
在传输产品中,ip over sdh的基本思路,是将ip数据通过点到点协议(ppp)直接映射到sdh帧,从而省掉了中间复杂的atm层。具体作法是先把ip数据报封装进ppp分组,然后再利用高级数据链路控制堆积hdlc按照rfc1662的规定组帧,最后将字节同步映射进sdh包中,加上相应的sdh开销置入stm-n帧中。ip over sdh简单的系统结构如图1所示,其中ppp层的功能包括ip多协议封装、差错检验和链路初始化控制,而hdlc为ppp封装的ip数据包提供定界,并且01111110表示一帧的开始和结束。
本文讨论如何用全自动硬件方式实现图1中所示的hdlc模块。
1 传统的cpu实现方式
在图1中,hdlc模块实现一个hdlc总线到多个点对点hdlc接口之间的数据转发。将hdlc总线的接口称为ecc口,hdlc点对点接口称为dcc口。传统的实现方法如图2所示,是若干hdlc控制器芯片加一块cpu实现ecc到dcc的数据转发功能。cpu通过软件配置,向hdlc帧中插入或提取用户自定义的10个字节(包括源地址、目标地址、dcc端口号、帧长度等)。以下行为例,hdlc控制器在ecc接口接收数据后,向cpu申请使用sram中的缓冲区,cpu进行仲裁,分配缓冲区描述符bd,数据就可以存放在sram中。cpu在这些数据发送时需要指定dcc通信。由于数据量较大,每一帧都要进行bd的处理,且数据申请导致中断处理频繁,软件很容易出错。
另外,随着单板集成度的提高,ecc接口的数据量越来越大,dcc接口的通道也越来越多。如果采用传统的cpu实现方式,就必须不断增加hdlc控制器,所要求的cpu性能也越来越高,这在技术上难以实现,成本上也不能接受,因而必须确定一种更经济、有效的技术方式来实现大容量、高效率、低成本的ecc转发技术。采用硬件方式,无须或尽量减少cpu的干预,在ecc接口实现自动的hdlc数据转发。
笔者的目的是将hdlc控制器和cpu的大部分功能用硬件实现,在整个运作过程中,不需要cpu实时协助,可实现全自动控制,cpu只需在开始进行一些初始化和配置工作,同时为cpu提供一些统计信息,方便cpu了解模块数据传送的性能。
2 全自动硬件结构设计
硬件结构如图3所示,可划分为六大块:ecc接口的发送模块、ecc接口的接收模块、dcc接口的发送模块、dcc接口的接收模块、sram控制器和cpu接口。
图3
ecc_tx控制:
·仲裁dcc_rx发过来的数据申请;
·从sram内读取数据到内部;
·按照要求添加前10个字节的信息;
·按照协议产生新的16位crc;
·按照协议发送数据;
·按照协议进行重发操作;
·在操作正确完成后,更新bd和发送指针。ecc_rx控制;
·实时监控hdlc总线上的变化;
·解析正确的hdlc数据包,进行crc检查;
·接收属于本地址的数据包到sram内;
·在发生错误的情况下,放弃已经存入sram内的数据;
·在数据包正确接收到sram之后,产生新bd并更新接收指针;
dcc_rx控制:
·接收的逻辑有8组,可同时接收;
·实时监控hdlc点对点的数据变化;
·解析正确的hdlc数据包,进行crc检查;
·接收数据包到sram内;
·在发生错误的情况下,放弃已经存入sram内的数据;
·在数据包正确接收到sram之后,产生新bd并更新接收指针。
深圳服务热线:13751165337 13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)

深圳市碧威特网络技术有限公司
付款方式