FPGA——HLS入门-LED闪烁仿真

这篇具有很好参考价值的文章主要介绍了FPGA——HLS入门-LED闪烁仿真。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

系列文章目录


一、HLS介绍

1、什么是HLS

HLS就是高综合(High level Synthesis)的缩写,通过HLS,我们可以将C或者c++语言编译为FPGA能够读懂和运行的RTL级别的语言。

这个术语是行为和电子系统的结合:是一门技术,也是一门科学,它把设计意图抽象化,抽象视图可以自动地将人类设计者的努力付诸现实。最终生成的设计应遵循一系列要求,包括芯片面积、时钟频率、功耗和时间性能的要求等等。

通过HLS将电路设计规范的算法级或行为级描述在一定的约束条件下转化为电路结构描述的方法和过程。高层次综合又称为行为级综合、算法级综合等。它使设计者能够在更高层次进行电子设计,更快速有效地在较高层次设计验证和仿真,而较低层次的工作由工具来自动完成,从而让数字电路系统设计工程师可以有更多的精力和更充分的条件去进行设计空间的搜索,寻求最佳的设计方案。

HLS 的过程通常基本包括预处理、编译、转换、调度、分配、控制器、综合、RTL 、生成、和反编译等几个部分。编译、转换部分决定了软件的兼容性和易用性,调度(schedule)和分配(binding)主要决定了产生的 RTL 的性能、资源大小等。

2、与VHDL/Verilog有什么关系?

verilog 适合于RTL 级别的硬件描述,但是RTL 级别的硬件描述其实还是过于底层,因此这也带来了很多繁重的编码和设计工作,类似于汇编程序一样,Verilog可以精准的控制电路实现,但实现起来需要较长的周期,而HLS虽然可快速迭代,但其从软件到硬件翻译无论是面积还是资源均难以控制。

VHDL/Verilog两者结构基本相似,并行语句的种类也类似;

VHDL语言需要进行大量说明,程序通常比较长;

Verilog HDL通常不进行说明,或只进行非常简短的说明,程序比较简短。

3、关键技术局限性

关键技术
输入语言采用了类 C语言而非前两代的 HDL 语言,如 C、C++、SystemC 以及 SpecC、HandelC 等,这能够使得系统模型得到复用,进行进一步的软硬件实现。
实现了对时序(timing)比较精确的评估和调度。
实现了对验证环境的重复使用,通过 TLM 建模技术可以将系统验证环境复用于 RTL 级验证,降低了验证的复杂度。

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

二、Vivado HLS - LED闪烁仿真

1、项目配置

1.点击Vivado HLS 中的Create New Project

FPGA——HLS入门-LED闪烁仿真,fpga开发
FPGA——HLS入门-LED闪烁仿真,fpga开发

2.接下来选择定成函数,我们在这里暂不不添加,直接点击 Next
FPGA——HLS入门-LED闪烁仿真,fpga开发
3.接下来是添加 C 仿真文件,我们同样先不添加,点击 Next
FPGA——HLS入门-LED闪烁仿真,fpga开发
4.接下来进行器件的选择,在首先我们点击图中所示位置选择元器件

FPGA——HLS入门-LED闪烁仿真,fpga开发
FPGA——HLS入门-LED闪烁仿真,fpga开发
5.在导航栏中,文件列表所示
FPGA——HLS入门-LED闪烁仿真,fpga开发
6.添加源文件
FPGA——HLS入门-LED闪烁仿真,fpga开发

2、C仿真

1.编写代码
Helloworld.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

Helloworld.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));
	}
}


2、仿真
FPGA——HLS入门-LED闪烁仿真,fpga开发

FPGA——HLS入门-LED闪烁仿真,fpga开发

弹出这个界面,什么都不用选。

运行仿真后,出现下面这个界面就说明仿真成功了:

FPGA——HLS入门-LED闪烁仿真,fpga开发
3、综合
进行综合之前,先选择Top Function。

点击Project -> Project Setting -> Synthesis ,点击Helloworld.cpp,并点击Browse选择函数flash_led。

FPGA——HLS入门-LED闪烁仿真,fpga开发
FPGA——HLS入门-LED闪烁仿真,fpga开发

结束后,会有一个总结文件如下:
FPGA——HLS入门-LED闪烁仿真,fpga开发
在这个文件的最后,有关于端口的表格:
FPGA——HLS入门-LED闪烁仿真,fpga开发
文件:

FPGA——HLS入门-LED闪烁仿真,fpga开发

3、联合仿真

FPGA——HLS入门-LED闪烁仿真,fpga开发
FPGA——HLS入门-LED闪烁仿真,fpga开发
在Helloworld.cpp界面,右边的Drective界面,右键led_o,进入如下界面:

FPGA——HLS入门-LED闪烁仿真,fpga开发
按上图来配置,并点击OK。

然后点击联合仿真:

FPGA——HLS入门-LED闪烁仿真,fpga开发

三、总结

通过HLS工具进行LED闪烁仿真可以帮助我们验证设计的正确性和功能性。在仿真过程中,我们可以观察LED的闪烁模式是否与我们预期的一致,并进行必要的调试和修正。仿真还可以帮助我们评估性能指标,如时序约束和资源利用率。文章来源地址https://www.toymoban.com/news/detail-681183.html

到了这里,关于FPGA——HLS入门-LED闪烁仿真的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FPGA开发之Vivado安装及HLS环境配置,并实现流水灯实例

    HLS(High-Level Synthesis)高层综合,就是将 C/C++的功能用 RTL 来实现,将 FPGA 的组件在一个软件环境中来开发,这个模块的功能验证在软件环境中来实现,无缝的将硬件仿真环境集合在一起,使用软件为中心的工具、报告以及优化设计,很容易的在 FPGA 传统的设计工具中生成 IP。

    2024年02月05日
    浏览(49)
  • 超详细FPGA新手小白入门点亮LED灯

    其实之前早已用过Vivado进行FPGA的开发学习,但由于每次都是浅尝辄止地学了一些时间,加上Vivado软件和FPGA开发流程的复杂性,长时间不用就会遗忘。因此今天还是简单地写个笔记记录一下Vivado软件的一些基本操作,实现一个“hello world工程”:控制LED灯的闪烁。 实验基于的

    2024年02月04日
    浏览(49)
  • FPGA入门————LED流水灯(超详细教程)

    本文使用软件为vivado,其实用哪个软件都是一样的,主要是掌握核心编程思想。 如有需要下载vivado软件下载可以参考: vivado及ISE各版本软件下载方法、链接及详细步骤,官方网页下载_ise软件下载_千寻xun的博客-CSDN博客 目录 一、新建工程及设计文件 二、编写LED流水灯程序

    2024年02月08日
    浏览(41)
  • STM32F103 点亮LED闪烁与仿真

    今天给大家分享一下STM32 流水灯简单的仿真吧,我感觉这个提供有用的,但是自己也是第一次使用,主要是感觉曲线很高级。在PWM中查看脉宽很有用。 code: led.c #include \\\"led.h\\\" #include \\\"delay.h\\\" /* GPIO的控制寄存器的配置 1、配置输出引脚 2、打开对应的输出的寄存器的时钟 3、配置

    2024年02月16日
    浏览(41)
  • 使用STM32和C51实现LED闪烁(仿真+程序)

    1、新建程序(如下图) 先点击project,在单击new uvision project。 2.命名文件 3.生成main文件 (右键source group再点击Add new item…) 点击c File (.c) 4.在main.c项目中输入以下代码 5.生成 .hex 文件 魔术棒- Output - 勾选Create HEX File - ok 1.上传.hex文件到proteus 双击芯片在program file 中选择刚刚

    2024年02月04日
    浏览(40)
  • FPGA/Verilog HDL/AC620零基础入门学习——第一个项目按键控制LED

    最近要考试了,所以我赶紧补习FPGA,我们用的是小梅哥的AC620开发板,软件是Quartus。推荐看这个视频教程:零基础轻松学习FPGA,小梅哥FPGA设计思想与验证方法视频教程 用按键控制LED灯的亮灭就是一个二选一多路器,两个IO,a、b,可以是高电平,也可以是低电平。 输入按键

    2024年02月05日
    浏览(51)
  • 【【萌新的FPGA学习之Vivado下的仿真入门-2】】

    我们上一章大概了解了 我们所需要进行各项操作的基本框架 对于内部实现其实一知半解 我们先从基本的出发 但从FPGA 了解一下 vivado下的仿真入门 正好帮我把自己的riscV 波形拉一下 行为级仿真 step1: 进入仿真界面:SIMULATION-单击 Run Simulation-单击 Run Behavioral Simulation。 Step2:设

    2024年02月08日
    浏览(39)
  • FPGA HLS 卷积单元 数据类型&hls优化&约束设置

    自定义精度整形: 自定义定点数 为了替换float,double类型的数,加快运算,节约资源 根据输入的数据,找到卷积层的数据范围 特征的内存排布方式 权重的内存排布方式 卷积的大小不固定,需要根据在内存中的排布方式算出地址 新建conv_core项目 conv_core.h conv_core.cpp main.cpp

    2024年02月03日
    浏览(49)
  • FPGA在校学习记录系列---实验4不同状态的LED+开发板(Verilog HDL)

    此系列记录FPGA在学校的学习过程。 FPGA系列 需要用到的软硬件: 软件:Quartus II 15.0 (64-bit) 硬件: 5CEBA4F23C7芯片 链接: FPGA在校学习记录系列—新建一个FPGA工程编写程序并仿真(Verilog HDL) 创建的工程名字为:LED (这次不用仿真,直接用开发板验证) 编译文件 按键资源:

    2024年04月09日
    浏览(46)
  • Vivado仿真数据导出至.txt文件——FPGA开发

    在FPGA开发过程中,仿真是验证设计的重要环节。在Vivado设计套件中,我们可以使用仿真工具来验证设计的功能和性能。本文将介绍如何将Vivado仿真数据导出至.txt文件,以方便后续分析和处理。 步骤如下: 打开Vivado设计套件并创建一个新的工程。 在工程中添加设计文件和约

    2024年02月05日
    浏览(184)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包