新闻中心

EEPW首页 > 网络与存储 > 设计应用 > Vivado HLS推动协议处理系统蓬勃发展(下)

Vivado HLS推动协议处理系统蓬勃发展(下)

作者:KimonKarras JamesHrica时间:2015-04-29来源:电子产品世界收藏

  7 用多级层级创建系统

本文引用地址:http://www.eepw.com.cn/article/273295.htm

  上文讨论了如何使用 HLS实现简单的三级流水线。但是一般的包处理系统可能会包含分布在层级结构中多个层面的多个模块。图2即是这种系统的示例。在本例中,层级结构的第一层由两个模块组成,每个模块下面包括三个子模块。这个示例中的顶层模块与前面介绍的简单系统中顶层模块相似。但包含有三个子模块的较低层模块使用INLINE编译指令来解析函数,将其子模块推送到顶层,如例6所示。

  例6: HLS中的中间模块

  1 void module2 (stream < axiWord > &inData,
  stream&outData) {
  2 #pragma HLS INLINE
  3
  4 ………

  因此在 HLS完成综合后,系统基本如图3所示。这样Vivado HLS就能正确地根据这些模块创建数据流架构,完成模块的流水线化,然后同步执行。在嵌入该函数后,各模块和信号保持原来的名称不变。

  8 使用高级语言结构

  高层次综合的主要优势之一在于可以使用高级语言结构来表达复杂对象,与传统RTL设计相比,显著提高了抽象水平。下面的例子是描述一个小型查找表。

  例7中的代码用于内容可寻址(CAM)类定义,它使用类对象创建一个表,供存储和恢复上述原型系统的ARP数据。该类有一个私有成员,这个私有成员是一个由“noOfArpTableEntries”条“arpTableEntry”类型记录组成的阵列。这种类型属于一种数据结构,包括MAC地址、对应的IP地址和用于说明该条记录是否包含有效数据的一个数位。

  例7:CAM类定义

  1 class cam {
  2 private:
  3 arpTableEntry filterEntries[noOfArpTableEntries];
  4 public:
  5 cam();
  6 bool write(arpTableEntry writeEntry);
  7 bool clear(ap_uint<32> clearAddress);
  8 arpTableEntry compare(ap_uint<32>
  searchAddress);
  9 };

  这个类也包括四种在这个表上运算方法(其中一个是构造器)。其中的一个,即比较法,用于实现真正的查找功能。本例通过提供IP地址来返回相应的MAC地址。处理的方法是使用“for”循环查找表中的每一条记录,搜索有相同IP地址的有效记录。然后完整地返回这条记录。如果没有找到,就返回无效记录。为让设计实现II=1的目标,必须完全展开这个循环。

  例8:用于CAM类的比较法

  1 arpTableEntry cam::compare(ap_uint<32> searchAddress)
  {
  2 for (uint8_t i=0; i
  3 if (this->filterEntries[i].valid == 1 &&
  searchAddress == this->filterEntries[i].ipAddress)
  4 return this->filterEntries[i];
  5 }
  6 arpTableEntry temp = {0, 0, 0};
  7 return temp;
  8 }

  上述经验和示例明确说明,用户可以使用Vivado HLS充分发挥高级编程结构的作用,用类似软件的方法描述包处理系统。采用RTL是难以实现的。

  9 10GBps速率下的协议处理

  与传统RTL相比,Vivado HLS可使用在FPGA上迅速方便地实现协议处理设计,充分发挥高级语言带来的效率提升优势。另外还具有下列优点:使用C函数轻松完成系统构建;数据通过流交换,提供类似的标准化接口;灵活的流控制和HLS编译指令,便于使用该工具实现需要的架构。借助这些功能,用户无需重写源代码就能够迅速判研多种不同设计方案的利弊。

  出于解释这类设计的基本概念的目的,上文讨论了一种能够应答ping和ARP请求,解析IP地址查询的简单ARP服务器。结果证明用Vivado HLS设计的模块能够以10Gbp乃至更高的线速完成协议处理。

c++相关文章:c++教程



上一页 1 2 3 下一页

关键词: Vivado FIFO 存储器 RAM C/C++

评论


相关推荐

技术专区

关闭