作业:HLS入门

HLS入门

HLS

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

HLS(High-Level Synthesis)是一种技术,它允许开发者使用高级编程语言如C/C++来描述硬件设计,然后自动转换为硬件描述语言(HDL),例如VHDL或Verilog。这种技术使得软件开发人员能够利用他们现有的编程技能来设计和优化硬件结构,而无需深入了解底层硬件描述语言的细节。HLS与VHDL/Verilog编程技术的关系体现在互补关系、抽象层次不同、提高开发效率等方面。

HLS有哪些关键技术问题?目前存在什么技术局限性?

HLS(高层次综合)技术,在将高级语言如C/C++转换为RTL硬件描述语言的过程中,存在若干关键技术问题和技术局限性。关键技术问题主要体现在文件管理、性能优化和工具依赖等方面。而技术局限性则包括对平台依赖性、开发难度、性能与资源利用率等多个方面。

FPGA——HLS入门实践之led灯闪烁

创建工程

1.创建工程
在这里插入图片描述

图片1

2.输入相关工程信息
在这里插入图片描述

图片2

3.选择顶层函数
在这里插入图片描述

图片3

4.选择添加C仿真文件
在这里插入图片描述

图片4

5.选择器件
在这里插入图片描述

图片5

添加文件

1.添加源文件

led.h

``

#ifndef SHIFT_LED_H
#define SHIFT_LED_H

#include “ap_int.h”
#define CNT_MAX 100000000
//#define CNT_MAX 100,100M时钟频率下计数一秒钟所需要的计数次数
#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.cpp

``

#include “led.h”

void flash_led(led_t *led_o , led_t led_i){
#pragma HLS INTERFACE ap_vld port=led_i
#pragma HLS INTERFACE ap_ovld port=led_o
cnt_t i;
for(i=0;i<CNT_MAX;i++){
if(i==FLASH_FLAG){
*led_o = ~led_i;
}
}
}

``

添加仿真文件

test_led.cpp

``
#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));
}
}

``

仿真

1.点击project->project settings->synthesis->browser->选择顶层函数
在这里插入图片描述

图片5

2.点击project->Run C Simulation
在这里插入图片描述

图片6

3.点击Solution->Run C Synthesis->Active Solution
在这里插入图片描述

图片7

总结

通过这次学习,我知道了HLS是什么,VHDL/Verilog编程技术有什么关系。我知道了许多之前没有接触了解过的新东西,使我产生了许多兴趣。同时,通过一次实践,我初步学习了如何使用该知识。

  • 15
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值