摘要:讨论了一种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控制:
%26;#183;仲裁DCC_RX发过来的数据申请;
%26;#183;从SRAM内读取数据到内部;
%26;#183;按照要求添加前10个字节的信息;
%26;#183;按照协议产生新的16位CRC;
%26;#183;按照协议发送数据;
%26;#183;按照协议进行重发操作;
%26;#183;在操作正确完成后,更新BD和发送指针。ECC_RX控制;
%26;#183;实时监控HDLC总线上的变化;
%26;#183;解析正确的HDLC数据包,进行CRC检查;
%26;#183;接收属于本地址的数据包到SRAM内;
%26;#183;在发生错误的情况下,放弃已经存入SRAM内的数据;
%26;#183;在数据包正确接收到SRAM之后,产生新BD并更新接收指针;
DCC_RX控制:
%26;#183;接收的逻辑有8组,可同时接收;
%26;#183;实时监控HDLC点对点的数据变化;
%26;#183;解析正确的HDLC数据包,进行CRC检查;
%26;#183;接收数据包到SRAM内;
%26;#183;在发生错误的情况下,放弃已经存入SRAM内的数据;
%26;#183;在数据包正确接收到SRAM之后,产生新BD并更新接收指针。
DCC_TX控制:
%26;#183;发送是由自己控制,只需一套逻辑,8个通道轮流发送;
%26;#183;判断是否有新的数据要发送(判断发送指令是否与接收指针一致);
%26;#183;从SRAM内读取数据到内部;
%26;#183;分析前10个字节的信息,决定8个发送端口的其中1个发送;
%26;#183;去除前10个字节的信息;
%26;#183;按照协议产生新的16位CRC;
%26;#183;按照协议发送数据;
%26;#183;在操作正确完成之后,更新BD和发送指针。
图4
SRAM控制器:
%26;#183;这一部分实现数据的存取,ECC接收和发送各1个,DCC接收8个,DCC发送1个,共有11个数据申请;
%26;#183;考虑到数据流量,SRAM采用16位宽。
CPU接口:
%26;#183;配置前10个字节的信道,设置源地址和目标地址;
%26;#183;复位通道;
%26;#183;提供统计信息,供CPU分析运作情况。
3 数据流
(1)上行数据流
如图4所示,DCC接收到的数据(8个同时)→正确数据存放于SRAM内→数据取出,添加10字节,从ECC_TX发送出去。
(2)下行数据流
如图5所示,HDLC总线的数据→地址匹配且正确的数据存到SRAM内→数据取出,从DCC_TX的其中一个端口发送出去。
4 CPU干预程度分析和性能分析
(1) 系统使能后硬件即可正常工作,不需要CPU任何配置,相当于一个自动的微引擎;
(2) 发送部分不受寄存器控制,始终在动作,通过与接收的BD指针比较决定有没有数据要发送;同理、接收部分通过BD指针的比较决定SRAM中还有没有BD空间存放数据,通过BUF指针比较决定要不要存放数据;
(3) 接收部分和发送部分有一个共同的BD和BUF基准地址,有一个各自初始值为0的指针,接收部分每接收一帧数据,指针加2,发送部分可以看到这个批易地的变化;
(4) 通过BD的结构,可以完成接收与发送部分关于数据帧的长度通知;接收部分收到一帧,将统计下来的帧长度存放在BD中,发送部分读到BD中的帧长度,按该长度向SRAM申请数据;
(5) 通过wrap设置,可以完成自动检测空间和返回缓冲区起始地址,重用缓冲区;
(6) 错误处理可以自动恢复和重发。只有发生致命错误,如下溢时,才需要CPU对系统进行复位;
图5
(7) 如果考虑最差情况下的速率,最高速度是5MHz(ECC_HDLC接口),现在SRAM采用16位操作,并且FIFO只有一级,则访问频率为5MHz/16, 一次SRAM访问需要5个时钟, 此时最坏情况是其它9个接口也同时申请数据操作(共11个接口,ECC_HDLC占两个接口,但在5MHz情况下这两个接口只能有一个在运作之中)。此时系统时钟必须满足以下条件才不会产生下溢错误:5MHz/16
引用地址:一种HDLC数据转发的全自动硬件引擎设计
上一篇:一种MQAM调制器的设计与实现
下一篇:硬件协议栈芯片W3100A
- 热门资源推荐
- 热门放大器推荐
小广播
热门活动
换一批
更多
最新网络通信文章
- 芯原推出新一代高性能Vitality架构GPU IP系列 支持DirectX 12和先进的计算能力
- 应对 AI 时代的云工作负载,开发者正加速向 Arm 架构迁移
- NVIDIA 推出高性价比的生成式 AI 超级计算机
- Gartner发布2025年影响基础设施和运营的重要趋势
- 智谱清言英特尔酷睿Ultra专享版发布,离线模型玩转AIPC
- Quobly与意法半导体建立战略合作, 加快量子处理器制造进程,实现大型量子计算解决方
- RTI Connext Drive参展CES 2025,以领先通信框架加速SDV开发
- 黑莓 1.6 亿美元甩卖网络安全业务 Cylance,远低于其 14 亿美元的收购价
- eIQ® Time Series Studio简介:简化边缘 AI 开发
更多精选电路图
更多热门文章
更多每日新闻
- 芯启源(上海)将持续发力,“做深做精”EDA及IP产品
- 本田严厉警告日产:若与鸿海合作,那么本田与日产的合作将终止
- Microchip推出新款交钥匙电容式触摸控制器产品 MTCH2120
- Matter对AIoT的意义:连接AIoT设备开发人员指南
- 我国科学家建立生成式模型为医学AI训练提供技术支持
- Diodes 推出符合车用标准的电流分流监测器,通过高精度电压感测快速检测系统故障
- Power Integrations面向800V汽车应用推出新型宽爬电距离开关IC
- 打破台积电垄断!联电夺下高通先进封装订单
- Ampere 年度展望:2025年重塑IT格局的四大关键趋势
- 存储巨头铠侠正式挂牌上市:首日股价上涨超10%
更多往期活动
厂商技术中心