文章目录
- 1.HLS简介
- 2.led闪烁实验
- 2.1 函数撰写
1.HLS简介
HLS(High-Level Synthesis,高级综合)是一种将高级硬件描述语言(如C/C++)转换为硬件描述语言(如Verilog或VHDL)的过程。这种技术允许设计者使用类似于软件编程的方法来设计硬件,从而提高设计效率和灵活性。
HLS的主要特点包括:
高级语言编程:使用C/C++等高级语言进行设计,使得设计过程更加直观和易于理解。
自动化综合:HLS工具可以自动将高级语言代码转换为硬件描述,简化了设计流程。
性能优化:HLS工具能够进行资源优化和时序优化,以满足特定性能要求。
可扩展性:设计者可以轻松修改和扩展设计,适应不同的应用需求。
多平台支持:HLS支持多种硬件平台,包括FPGA和ASIC。
HLS的应用领域非常广泛,包括但不限于:
数字信号处理(DSP):如滤波器、FFT等算法的实现。
图像和视频处理:如图像压缩、视频编解码等。
机器学习:实现神经网络的硬件加速。
通信系统:如基带处理、调制解调等。
HLS工具的例子包括Xilinx的Vivado HLS、Intel的HLS Compiler等。这些工具帮助设计者快速从概念到实现,缩短了产品开发周期。
2.led闪烁实验
打开Vivada 点击创建工程
输入工程名
点击添加函数
2.1 函数撰写
Helloword.h
//helloworld.h
#ifndef _HELLOWORLD_H_
#define _HELLOWORLD_H_
#include "ap_int.h"
typedef ap_int<1> led_t;
void flash_led(led_t *led_o);
#endif
Helloword.cpp
//Helloworld.cpp
#include "HelloWorld.h"
void flash_led(led_t *led_o){
#pragma HLS INTERFACE ap_ovld port=led_o
int i;
for(i=0;i<10000;i++){
if(i==9999){
*led_o = ~(*led_o);
}
}
}
tb_Helloworld.cpp
#include "HelloWorld.h"
#include <stdio.h>
int main(){
led_t led_o;
const int SHIFT_TIME = 4;
int i;
for(i=0;i<SHIFT_TIME;i++){
flash_led(&led_o);
printf("result : %d \n",(int)(led_o&0x01));
}
}
保存代码进行仿真
查看仿真结果
可以看到,按照我们的预期输出了仿真的结果