新闻中心

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

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

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

  1 提高抽象层次

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

   HLS能提高系统设计的抽象层次,为设计人员带来切实的帮助。 HLS通过下面两种方法提高抽象层次:

  ● 使用作为编程语言,充分利用该语言中提供的高级结构;

  ● 提供更多数据原语,便于设计人员使用基础硬件构建块(位向量、队列等)。

  与使用RTL相比,这两大特性有助于设计人员使用 HLS更轻松地解决常见的协议系统设计难题。最终简化系统汇编,简化访问,实现控制流程的抽象。HLS的另一大优势是便于架构研究和仿真。

  Vivado HLS把C++函数视为模块,函数定义等效于模块的RTL描述,函数调用等效于模块实例化。这种方法能减少需要用户编写的代码量,进而显著简化用于系统描述的结构代码,最终加速系统汇编进程。

  在Vivado HLS中,可通过两种方法访问。一种是通过合适的对象(比如对流对象的读写)。另一种是直接访问综合工具随后将实现为Block 或分布式的标准C阵列。综合工具会根据需要处理额外的信令、同步或寻址问题。

  从控制流的角度,Vivado HLS从简单的接口到完整的AXI4-Stream均可提供整套流控制感知接口。使用这些接口,设计人员可直接访问数据,无需检查背压或数据可用性。Vivado HLS会适当地调度执行,应对一切紧急情况,同时确保正确完成执行。

  设计人员还会感激Vivado HLS提供的另一项功能,即简便的架构研究功能。用户只需在代码中插入程序指令(如使用GUI或批处理模式时的Tcl命令),就可以把设计所需特性传递给综合工具。这样用户可以在不修改设计代码本身的情况下研究大量备选架构方案。研究的范围可以是模块流水线化等根本性问题,也可以是FIFO队列深度等较常见的问题。

  最后,C和RTL仿真是Vivado HLS另一个大放异彩的地方。设计一般采用两步流程验证:第一步是C语言仿真。这个步骤中的编译和执行与常见的程序相同;第二步是C/RTL协仿真。在这步骤中,Vivado HLS会根据C/C++测试平台自动生成RTL测试平台,然后设置并执行RTL仿真,检查实现方案8的正确性。

  如能充分发挥这些优势,这将对于用户的系统设计大有裨益。这不仅体现在开发时间和生产力上,还由于Vivado HLS代码更加紧凑的特点,体现在代码可维护性和可读性上。此外通过高层次综合,用户仍能有效控制架构及其特性。正确理解和使用Vivado HLS程序对实现这一控制起着根本作用。

  高层次综合在赛灵思提供的包处理解决方案的层级结构中起着承上启下、承前启后的作用。而Vivado SDNet和RTL则对其起到补充作用。Vivado SDnet使用特定领域语言,提供一种大为简便但相当受限的协议处理系统表达方法。RTL则可以用于Vivado HLS无法表达的大量系统的实现工作(例如使用DCM或差分信号并需要详细时钟管理的各类系统)。虽然有种种局限,Vivado HLS仍然是在保证结果质量或设计人员灵活性的前提下设计大部分协议处理解决方案的有效途径。

  2 设置简单系统

  开始新设计时需要完成的最基本工作首先是确定设计的结构,然后将其实现在Vivado HLS中。Vivado HLS中的基本系统构建块是C/C++函数。构建一个由模块和子模块组成的系统意味着需要用一个顶层函数来调用底层函数。图1所示的是一个极为简单的三级流水线,我们以此为例来介绍Vivado HLS中系统构建的基本思路。一般采用流水线化设计执行协议处理,由每一级负责解决处理的特定部分。

  如图1所示。

  构建一个由模块和子模块组成的系统意味着需要用一个顶层函数来调用底层函数。

  例1:在Vivado HLS中创建简单系统

  1 void topLevelModule(stream&inData,

  stream&outData) {

  2 #pragma HLS dataflow interval=1

  3

c语言相关文章:c语言教程


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



上一页 1 2 下一页

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

评论


相关推荐

技术专区

关闭