Windows下HLS入门

一.HLS简介

1.什么是HSL

HLS,即高层次综合(High-Level Synthesis),是一种将高级语言描述的功能转换为硬件描述语言(HDL)的技术。它使得设计者可以使用C、C++或System C等高级语言来编程FPGA,从而提升抽象层级,并显著减少使用传统的RTL(寄存器传输级)描述进行FPGA开发所需的时间.

2.HLS与VHDL/Verilog编程技术有什么关系?

HLS与VHDL/Verilog编程技术有很大的关系,因为它们都是用于编写硬件描述语言的工具。然而,HLS与传统的VHDL/Verilog编程技术不同之处在于,HLS更加高级,可以让开发人员使用更加直观和易于理解的语言来描述硬件功能,从而提高开发效率和代码质量。HLS的流程与传统的VHDL/Verilog编程技术也不同,它更加依赖于自动化工具来完成硬件代码的生成和优化。

3.HLS关键技术

  • 语言映射:如何将高级语言转换为硬件描述语言,生成硬件电路。
  • 时序约束:如何对生成的硬件电路进行时序优化,以达到最佳的性能。
  • 存储器优化:如何最大限度地利用FPGA中的存储器资源,提高性能和资源利用率。
  • 并行化:如何将硬件电路并行化,以提高性能。

4.技术局限性

  • 没有早期的性能估计以及任何违反设计和平台限制的行为
  • 没有利用所有可能的数据通信方式
  • 没有功能概述,也没有对用户代码进行优化转换
  • 支持代码报告得太晚了
  • 在某些情况下,工具的高效实施是不可能的,例如当必须将太多的加速器
  • 映射到硬件部分时。 HLS工具无法预先检测到这种情况,也无法在用户坚持的情况下尽量减轻其影响。

二.环境配置

1.安装Vivado2018.3

Vivado2018.3的下载安装

三.HLS - LED闪烁仿真

1.项目的创建

  • Create New Project
    在这里插入图片描述
  • 设置工程名及路径
    在这里插入图片描述

2.c仿真

  • 添加源文件
    右键 Source,点击 New file,在弹出的窗口中,选中我们存放源码的目录后。新建一个 led.cpp 文件和led.h头文件。
    在这里插入图片描述
  • 头文件代码:
#ifndef _SHIFT_LED_H_
#define _SHIFT_LED_H_
#define CNT_MAX 100000000
//#define CNT_MAX 100
#define FLASH_FLAG CNT_MAX-2
typedef int led_t;
typedef int cnt_t;
void flash_led(led_t *led_o , led_t led_i);
#endif

  • 源文件代码:
#include "led.h"
void flash_led(led_t *led_o , led_t led_i){
cnt_t i;
for(i=0;i<CNT_MAX;i++){
if(i==FLASH_FLAG){
*led_o = ~led_i;
}
}
}

  • 添加C仿真文件
    右键 Test Bench,选择添加新建文件,在弹出窗口新建一个 test_led.cpp。
    在这里插入图片描述
  • C仿真代码:
#include "led.h"
#include <stdio.h>
int main(){
led_t led_i=0x01;
led_t led_o;
const int SHIFT_TIME = 4;
int i;
 for(i=0;i<SHIFT_TIME;i++){
 flash_led(&led_o , led_i);
 led_i = led_o;
 printf("shift_out is %d \n",(int)(led_o&0x01));
 }
 }

  • 设置顶层文件
    点击 project >选择project seethings>选择 synthesis>browser>选择 flash_led 作为顶层函数

在这里插入图片描述
在这里插入图片描述

  • 然后点击 project >Run C simulation进行仿真

在 Console 窗口中,我们可以看到输出的结果时 01 交替变化,证明 C 仿真的结果正确。
在这里插入图片描述

3.综合

  • 点击 Solution>Run C Synthesis >Active Solution进行C综合
    编译器会将 C++代码映射到 RTL 电路
    在这里插入图片描述

  • C综合后生成的 代码
    在这里插入图片描述

  • 联合仿真
    在这里插入图片描述
    *在弹出的窗口进行相应选择

在这里插入图片描述

在这里插入图片描述

  • 结果
    在这里插入图片描述
    在这里插入图片描述
    通过改变数据类型为自定义位宽后,综合生成所需要的触发器与查找表都减少了
    在这里插入图片描述
    添加 directive 后综合的接口信号,HLS 已经为输入输出信号添加上了输入输出的有效标志。这样,我们再将来调用这个 IP 的时候,就能够控制它的时序。
  • 23
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值