基于FPGA和IP Core的定制缓冲管理的实现

发布者:郑大大最新更新时间:2010-10-08 来源: 电子发烧友关键字:FPGA  IPCore  缓冲管理  通信协议 手机看文章 扫描二维码
随时随地手机看文章

  随着通信协议的发展及多样化,协议处理部分PE在硬件转发实现方面,普遍采用现有的商用芯片NP(Network Processor,网络处理器)来完成,流量管理部分需要根据系统的需要进行定制或采用商用芯片来完成。在很多情况下NP芯片、TM芯片、交换网芯片无法选用同一家厂商的芯片,这时定制TM成为了成本最低、系统最优化的方案,一般采用FPGA来实现,TM的常规结构如图1所示。

  图1 TM的常规结构图

  目前主流的TM接口均为SPI4-P2接口形式,SPI4-P2接口信号速率高,TCCS(Chan nel-to-channel skew,数据通道的抖动,包含时钟的抖动)难以控制,在常规情况下很难做到很高的速率。SPI4-P2接口为达到高速率同时避免TCCS问题在很多情况下都对接收端提出了DPA(动态相位调整)的要求。对于SPI4-P2接口形式可直接采用Altera公司的IP Core实现。Altera的主流FPGA均实现了硬件DPA功能,以Stratix II器件为例,在使能DPA的情况下使用SPI4-P2 IP Core可实现16Gb/s的接口数据速率。

  SEG模块为数据切分块,根据交换网的数据结构要求,在上交换网的方向上负责把IP包或数据包切分为固定大小的数据块,方便后期的存储调度以及交换网的操作处理,SEG模块可配合使用SPI4-P2 IP Core来实现。与SEG模块对应的是RSM模块,RSM模块将从交换网下来的数据块重新组合成完整的IP包或数据包。

  BM(Buffer Management)模块为缓冲管理模块,管理TM的缓冲单元,完成DRAM的存取操作。外部DRAM的控制部分可使用使用DDR SDRAM IP Core实现。

  QM模块为队列管理模块,负责完成端口的数据队列管理功能,接收BM模块读写DRAM时的数据入队、出队请求,TM所能支持的数据流的数目、业务类型数目、端口的数目等性能指标在QM模块处体现出来。

  Scheduler模块为调度模块,根据数据包类型及优先级和端口分配的带宽进行调度,TM流量整形、QOS等功能通过调度模块实现。

  CELL_EDIT模块完成输出数据的封装,把由DRAM中读出的数据封装后发送出去。

  在TM中需要基于数据服务策略对于不同服务等级的数据包进行不同的管理策略,同时要保证流媒体的数据包不能乱序,数据包有大有小,经过SEG模块所分割成的数据块的数目也有多有少,这样就必须有一套行之有效的数据结构基于链表的方法管理这些数据。QM模块基于业务、数据流的方式管理队列,包的管理便由BM模块完成。[page]

  BM模块中基于包的数据结构方面由两部分构成:BRAM和PRAM。BRAM为数据缓冲区,对应片外的DRAM。BRAM负责存储数据单元,相对于SEG模块切分的数据单元,BRAM内有相应大小的存储单元BCELL与之对应,BCELL在BRAM内以地址空间划分,每个BCELL相同大小,BCELL为BRAM的最小存取单元。在实际系统中基于SEG模块切分的数据单元大小,BCELL一般为64~512B。

  PRAM为指针缓冲区,PRAM对应片外的SSRAM。PRAM内部同样以地址空间分为PCELL,PCELL与BCELL一一对应,每一个PCELL对应于一个BCELL,对应的PCELL与BCELL地址相同。

  PCELL的地址对应的代表相应单元的BCELL的地址,PCELL中的基本信息是下一跳指针。PRAM与BRAM关系如图2所示。

  图2 PRAM与BRAM关系图

  在PRAM中存在两种链表形式,PQ List代表已经存储的数据包链表。为方便数据读出,PQ List需要记录数据包的第一个数据块地址,即首指针Pq_Hptr,为方便新的数据写入,PQ List需要记录数据包的最后一个数据块地址,即尾指针Pq_Tptr。PQ List同时需要记录该链表的长度作为调度模块进行调度的权值计算使用。

  Free List代表空闲的地址队列。为方便地辨识、管理空闲的地址,避免地址冲突,在BM中将所有空闲的地址使用一个链表进行管理。这个链表就是空闲地址队列。空闲地址队列依据系统需求的不同有着不同的形式,一般空闲地址队列的构成和PQ List相似,由空闲地址首指针Free_Hptr和空闲地址尾指针Free_Tptr构成。BM模块的所有操作都围绕着空闲的地址队列Free List进行。[page]

  基于BM模块的数据流结构,BM模块一般分为Write CONtrol模块、Free List control模块、Read Control模块、PRAM Control模块、BRAM Control模块。BM的结构如图3所示。

  图3 BM结构图

  Write Control模块从Free List模块处得到空闲地址,向BRAM Control模块提出写请求,同时更新PRAM中的内容。Free List control模块负责管理空闲地址列表,提供Write Control模块的写BRAM地址及PRAM地址,回收经Read Control模块读出数据块后释放的地址。Read Control模块根据调度器的调度结果,通过BRAM Control模块读出需要发送的数据单元,同时将释放的缓冲单元地址写入空闲地址列表。PRAM Control模块为外部SSRAM的控制模块,可直接使用参考设计完成。BRAM Control模块为外部DRAM控制模块,一般分为Datapath与Controler两个子模块。Datapath模块专门负责数据接口部分,完成DRAM接口的DQ、DQS处理以及相应的延时调整,Controler模块负责完成DRAM的控制需求。

  在BM模块中,BRAM的带宽与PRAM的带宽一般为TM的瓶颈。PRAM的带宽主要受限于访问的次数,而BRAM的带宽受限于接口带宽。例如对于一个10G的TM,BRAM的有效带宽必须保证20G,以接口利用率最差只能达到65%计算(考虑SEG模块切分信元出现的N+1问题),需要保证接口带宽达到30G。使用64位的DRAM接口,接口速率不能低于500MB/s,这样对Datapath模块的设计提出了更高的要求。在实际系统中,BRAM主要使用DDR SDRAM、DDR II SDRAM。

  当使用Stratix II FPGA,BRAM使用DDR II SDRAM时,测试表明DDR II SDRAM接口速率可达到800MB/s。在常规使用的情况下,DDR II SDRAM接口速率可保证达到667MB/s。对于一个64位的DRAM接口,接口速率可达到42.7GB/s,完全可以满足一个10G的TM系统。

  BM模块作为缓冲管理模块,缓冲的基本单元为BCELL,基于对BCELL的管理,对于BM的操作都牵涉到空闲地址队列的操作以及链表的操作。最基本的操作就是写入操作和读出操作。BM模块的写入操作由Write Control模块发起。[page]

  对于Write Control模块,有数据单元需要写入,首先向Free List模块申请空闲地址,Free List将首指针a给Write Control模块,作为该数据块的写地址,同时读出首指针a对应在PRAM中的内容,得到下一跳地址b,将下一跳地址b作为新的空闲地址首指针。

  PQ List将尾指针n更新为新写入的地址a,同时更新PRAM中n地址的内容,将a作为下一跳添入n地址。基于节省操作周期,NULL的内容保留原值,不再更新。这样,一次BRAM的写入操作需要一次PRAM的读取操作及一次PRAM的写入操作。

  QM模块接收调度模块的出队信息,将出队的PQ链表信息传送给BM模块进行读取操作。

  图4 BM模块的写入操作

  图5 读出操作的Free List堆栈结构

  BM模块的读取操作由Read Control模块发起完成,当有数据单元需要读出,相应的数据单元地址则需要回收进入空闲地址队列Free List。对于不同的系统需求,空闲地址队列Free List有不同的形式。比较简单的操作是将Free List作为堆栈形式使用。

  Read Control模块由PQ List的首地址0读出相应的BRAM中的内容,同时读出PRAM中对应的下一跳地址1,更新地址1为新的首地址。Free List将首指针a更新为刚释放的地址0,同时地址0中写入下一跳指针a。这样一次BRAM的读出操作需要一次PRAM的读取操作及一次PRAM的写入操作。[page]

  作为堆栈形式的空闲地址队列在实际操作中会把一部分空闲地址队列放入片内缓冲中。这样在读BRAM释放地址进入空闲地址队列时可以节省PRAM的一次写入操作,在写BRAM时申请空闲地址时可以节省PRAM的一拍读取操作。PRAM堆栈结构下内置空闲地址队列表如图6所示。

  图6 PRAM堆栈结构下内置空闲地址队列表

  以图5的读出操作为例,当Read Control模块由PQ List的首地址0读出相应的BRAM中的内容,同时读出PRAM中对应的下一跳地址1,更新地址1为新的首地址。这时,地址0为已经释放的地址,按空闲队列的操作要求,地址0需要进入空闲地址队列中,在写操作时再将地址0读出提供给Write Control模块用于写BRAM。而基于图6的结构,地址0在被释放后不再进行更新PRAM中的空闲地址队列Free List的操作,直接写入片内缓冲中,在Write Control模块申请地址时由片内缓冲中读出提供给Write Control模块 。仅在片内Free List缓冲几乎满时,进行PRAM中的空闲地址队列Free List的更新操作,或在片内Free List缓冲空时进行PRAM中的空闲地址队列Free List的读取操作。基于图6的结构,在一个读写周期内,可以节省两次PRAM的操作,在最坏情况下也可节省一次PRAM的操作。但基于堆栈的结构,栈顶的地址被高频率的反复的调用,栈底的地址很难被使用,DRAM的工作寿命会因此受到影响。为保证DRAM的工作寿命,在有些系统中将空闲地址队列Free List做成链表形式,从而保证每个DRAM的存储空间都能被平均的使用。读出操作的Free Lis链表结构如图7所示。

  图7 读出操作的Free Lis链表结构

  Read Control模块由PQ List的首地址0读出相应的BRAM中的内容,同时读出PRAM中对应的下一跳地址1,更新地址1为新的首地址。

  Free List相对于堆栈模式增加尾指针d。Free List在回收地址时维持首指针a不变,将尾指针d更新为刚释放的地址0,同时地址d中写入下一跳指针0。这样一次BRAM的读出操作同样需要一次PRAM的读取操作及一次PRAM的写入操作。对于链表方式的空闲地址队列Free List,在每个读、写周期必须进行两次PRAM的写入操作及两次PRAM的读取操作,PRAM的效率不高。[page]

  针对两种空闲地址队列的效率及对DRAM的影响,在很多系统中采用了折中的方法,即在PRAM中使用链表方法管理空闲地址队列Free List,在片内采用堆栈模式另建一个空闲地址队列Free List,在这种情况下,每个读、写周期需要三次PRAM的操作。

  在实际系统中,BRAM的带宽与PRAM的带宽一般为TM的瓶颈,PRAM主要受限于访问的次数,而BRAM受限于接口带宽。

  在10G的TM系统中,片内数据总线的位宽定为128位,系统时钟定为150MHz,BCELL的大小定为64B。在这种情况下,读取操作和写入操作均为4个时钟周期。在满足10G系统的需求下,读取、写入操作周期为7个时钟周期。在前面曾计算过,在满足10G TM系统的情况下,BRAM采用64位 DDR II SDRAM,接口时钟使用250MHz即可满足数据接口的需求。PRAM采用32位ZBT SRAM ,接口时钟使用系统时钟,每个PCELL为64位,每个读、写周期需要6个时钟周期完成。在实际系统中采用Altera FPGA,BM的设计可以满足10G的TM线速工作的需求。

  在40G核心网的TM系统中,片内数据总线的位宽为256位,系统时钟采用250MHz(在40GE的系统中可选用200MHz)。采用DDR II SDRAM,接口时钟使用333MHz,则192位的BRAM可以满足40G的TM需求。此时,BCELL可为96B、192B、384B,在这里选用192B。当BCELL选用192B时,读取操作和写入操作同样均为6个时钟周期。在满足40G系统的需求下,读取、写入操作周期为9个时钟周期。PRAM采用48位QDR SRAM,接口时钟使用150MHz,每个PCELL为96位,在每个读、写时钟周期内,PRAM最多可被操作5次。在采用Altera FPGA的情况下,BRAM采用192位 DDR II SDRAM,PRAM采用48位QDR SRAM,BM的设计可以满足40G的TM线速工作的需求。

关键字:FPGA  IPCore  缓冲管理  通信协议 引用地址:基于FPGA和IP Core的定制缓冲管理的实现

上一篇:FPGA全局时钟资源相关原语及其使用
下一篇:基于纹理分析的改进型Nagao滤波器

推荐阅读最新更新时间:2024-05-02 21:09

最新FPGA的DSP性能介绍
“今天, FPGA 越来越多地应用在多种 DSP 中。我们预计这一趋势在未来几年会更加明显。”美国调查机构Berkeley设计技术公司做了上述预测。以Xilinx和Altera为主的两大 FPGA 厂商多年前就涉足了 DSP 应用领域,近一、两年,随着3G通信、视频成像等领域的发展,FPGA for DSP (FPGA的 DSP )再次成为了热点。   为什么会用FPGA做 DSP ?Xilinx中国区运营总经理吴晓东从DSP的概念上进行了分析:DSP表示数字信号处理器,也可以表示为数字信号处理—并不代表某一种芯片。实际上,数字信号处理有很多种不同的解决方法,可以用普通的数字信号处理器、MCU(微控制器)等实现,同样,FPGA也
[应用]
设计工程师五步实现FlexRay稳健网络拓朴
FlexRay已开始在单通道高速动力传动、驾驶辅助和提高舒适程度的汽车电子应用中大展身手。在新款BMW X5汽车中,FlexRay用于悬架控制之中,这样就可以在利用双通信信道和总线监控把这种具有容错功能的确定性协议运用在安全驾驶功能中之前,让工程师和开发人员有一个逐渐适应的学习过程,降低了相关风险。 在FlexRay应用的开发过程中,设计工程师可以通过五个基本步骤来构建一个稳健的网络拓朴。 步骤1:首先必须定义车辆底盘上节点的数量及其假定位置,然后才能确定实现无stub(一种被称为“菊花链”的拓朴结构)无源总线所需的线缆长度,该总线终端即是线缆终端处,如图1所示。如果线缆长度小于10米,则拓朴完成,其被认为可用于系列生产。
[嵌入式]
一种使用ARM+FPGA高速访问USB设备的设计方案详解
引言 目前FPGA通过USB接口获取USB设备中数据的方案大致分为两大类,一类为在FPGA内部实现USB设备控制,另一类为在FPGA外部实现USB设备控制。在FPGA内部实现的方案需要在FPGA内部实现USB控制器,在内部实现或者外接USB收发器。该方案的实现具有较大难度,同时由于USB协议和文件系统都相当复杂,需要使用相当多的FPGA资源,因此完全不能满足快速开发和低FPGA资源占用率的要求。在FPGA外部实现的方案通常使用单芯片的USB解决方案,典型的方案有两种:一种是集成了USB控制器和USB收发器,但需自行实现文件系统,如美国Cypress公司的CY7C67300;另一种是实现了包括文件系统在内的所有USB读取U盘所需的软
[单片机]
一种使用ARM+<font color='red'>FPGA</font>高速访问USB设备的设计方案详解
FPGA:纵向创新与横向整合引领变革
FPGA在先进工艺路上的狂飚猛进带来了如影随形的挑战:一方面,进入20nm和14nm阶段后,不光是FPGA复杂度提升,对其外围的电源管理等芯片也提出了“与时俱进”的要求。另一方面,随着SoC FPGA和3D IC技术的发展,FPGA不断在加速取代ASSP和ASIC,但这还需要更多的突破,其中最大的障碍就是互联问题,需在纵向架构上“守正出奇”。此外,随着FPGA系统复杂度的提升,竞争已不仅仅是产品性能的较量,还在于如何帮助客户简化设计、加快上市等,这就要求在整合度和设计工具上突破。应对这些挑战最近FPGA两大巨头均采取了“殊途同归”的路数。 跨界收购提速横向整合 FPGA已成为复杂的数字处理器,为其提供电流非常具有挑战
[嵌入式]
FPGA如何让工业4.0大放异彩
技术领域最热门的话题之一就是工业4.0,它本质上是指将数字化、自动化和互连计算智能融入制造业。 这背后的思路就是将云计算、物联网(IoT)和人工智能(AI)的价值与功能相融合,从而在制造也和其他工业环境中实现更智能、更可靠、更高效的运营。 工业4.0愿景的一个重要部分是创造智能互联机器。 几十年来,在这类的环境中使用的大部分设备与外界交互的方式非常有限。物理旋钮、仪表和其他简单的视觉机制通常是了解设备当前状态的唯一手段。随着时间的推移,各个行业开发了一些简单的连接和监控形式,包括PLC(可编程逻辑控制器)和SCADA(监控和数据采集),分别用于这些机器的硬件物理连接和软件监控。 随着技术的发展以及对这些不同设备的需求
[焦点新闻]
<font color='red'>FPGA</font>如何让工业4.0大放异彩
Xilinx收购Modelware 推出100G FPGA芯片样本
    OFweek通信国际译文/Valiant 2011年5月10日消息,FPGA芯片生产商,Xilinx昨日宣布,其已经成功收购网络传输管理和传送分组处理,IP硅核心芯片供应商,Modelware。与此同时,Xilinx将在其Virtex-6 HTX FPGA芯片基础上,揭开100G传输网络管理芯片设计样本神秘面纱,100G FPGA芯片(OFweek通信国际注:FPGA是Field Programmable Gate Array的缩写,即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。)。     Xilinx公司有线通信事业部总监,GillesGarcia表示:“此次收购Modelwar
[嵌入式]
基于FPGA和单片机的多功能计数器设计
一、系统方案   方案1:采用中小规模数字电路构成系统,由计数器构成主要的测量模块。用定时器组成主要的控制电路。此方案软件设计简单,但外围芯片过多,且频带窄,实现起来较复杂,功能不强,而且不能程控和扩展。   方案2:采用单片机实现。被测信号经调理后送入单片机,利用其内部的计数器完成计数,然后再进行数据处理和显示,但单片机在处理高速信号时略显吃力。   方案3:利用FPGA对调理后的被测信号实现高速计数,单片机软件执行高精度浮点数运算并显示。单片机完成系统的数据处理、逻辑控制和人机交互功能;大规模现场可编程器件(FPGA)实现外围计数功能。电路框图如图1所示。    图1 方案3系统框图   方案比较与选择:方案1 采用
[模拟电子]
基于<font color='red'>FPGA</font>和单片机的多功能计数器设计
北京至芯:坚守Verilog和FPGA技术培训的十二年
日前,北京至芯成立十二年之际,夏宇闻和李凡老师分别撰文,共同庆祝成长的历程,并对未来至芯的成长给出了寄语和期望。李凡表示:“北京至芯在FPGA和EDA培训这条前无古人的道路上,的确证明它的眼光和成功。” 夏宇闻:《北京至芯科技》创业12周年寄语 从今天起《北京至芯科技》正式告别了天真烂漫的童年时代,昂首阔步迈进了激情飞扬的少年时代。对《至芯科技》而言,渡过创业阶段的十二年真的很不容易。多少个难眠之夜,日月星辰,岁月轮回,至芯从一个呱呱坠地的婴儿成长为一个英俊少年,已经迈入其人生的第一个轮回。作为至芯诞生助产士的我真诚地向至芯的全体员工表示我诚挚的祝贺! 回忆至芯十二年成长的历程,至芯的一颦一笑,一哭一闹,每一个细枝末
[嵌入式]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved