HLS编程入门

目录一、HLS简介二、入门级HLS程序(点亮led灯)(一)仿真(二)烧录一、HLS简介HLS是高层综合(High level Synthesis)是将C或者c++语言编译为FPGA能够读懂和运行的RTL级别的语言与VHDL或者verilog的比较优点:用高级语言完成期望在硬件电路上实现的功能,更加抽象和容易实现。缺点:尽管是用高级语言描述实现在硬件电路上实现功能,但会有很多限制,例如动态分配内存等函数或定义的禁用,也有很多不足,例如循环的优化始终是个大难题。HLS关键技术1、将高级语言转化
摘要由CSDN通过智能技术生成

一、HLS简介

HLS是高层综合(High level Synthesis)
是将C或者c++语言编译为FPGA能够读懂和运行的RTL级别的语言
与VHDL或者verilog的比较
优点:用高级语言完成期望在硬件电路上实现的功能,更加抽象和容易实现。
缺点:尽管是用高级语言描述实现在硬件电路上实现功能,但会有很多限制,例如动态分配内存等函数或定义的禁用,也有很多不足,例如循环的优化始终是个大难题。
HLS关键技术
1、将高级语言转化为RTL电路
2、循环优化,并行处理

二、入门级HLS程序(点亮led灯)

(一)仿真

环境:xilinx20.2
板子: Z7-Lite7020
1、新建工程
在这里插入图片描述
在这里插入图片描述
选择定成函数 这里直接next
在这里插入图片描述
添加c仿真文件,testbench文件,next
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
这里选择xc7z020clg400-2,对应Z7-Lite7020
在这里插入图片描述
在这里插入图片描述
新建工程完成页面
在这里插入图片描述
2、添加源文件
在这里插入图片描述
在这里插入图片描述
同样方法添加头文件
在这里插入图片描述
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

其中计数最大值 CNT_MAX 100000000 是在 100M 时钟频率下计数一秒钟所需要的计数次数
FLASH_FLAG 是 LED 闪烁的标志,当计数到该值
时,LED 发生变化
flash_led是该工程需要设计的定成函数
后续优化代码
led.h

 #ifndef _SHIFT_LED_H_
 #define _SHIFT_LED_H_

 #include "ap_int.h"
 #define CNT_MAX 100000000
 //#define CNT_MAX 100
 #define FLASH_FLAG CNT_MAX-2
 //typedef int led_t;
 //typedef int cnt_t;
 typedef ap_int<1>led_t;
 typedef ap_int<32>cnt_t;
 void flash_led(led_t *led_o , led_t led_i);
 #endif

led.h代码

 #include "led.h"

 void flash_led(led_t *led_o 
  • 7
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值