FPGA设计中的HLS 工具应用

时间:2025-05-02  作者:Diven  阅读:0

1 概述

FPGA设计中的HLS 工具应用

在集成电路行业飞速发展的今天,缩短产品开发的周期而又不牺牲验证过程,这不可避免地成为了商业市场的一个关键因素。Xilinx Vivado High Level Synthesis (即Vivado HLS,高层综合)。这个工具直接使用C、C++或SystemC 开发的高层描述来综合数字硬件,这样就不再需要人工做出用于硬件的设计,像是VHDL 或Verilog 这样的文件,而是由HLS 工具来做这个事情。

图 1 FPGA设计中的抽象层次

从图1 可知,抽象的层次越高可见的细节就越少,对于设计者来说设计起来越容易。

2 lABS 1 vivado hls 生成RTL级文件
本次实验以fir(Finite Impulse Response)滤波器,有限长单位冲激响应滤波器为例。
Fir.c源代码:

fir_test.c源码:
******************************************************************************/
#include
#include
#include "fir.h"

int main () {
  const int    SAMPLES=600;
  FILE         *fp;


  data_t signal, output;
  coef_t taps[N] = {0,-10,-9,23,56,63,56,23,-9,-10,0,};


  int i, ramp_up;
  signal = 0;
  ramp_up = 1;
  
  fp=fopen("out.dat","w");
  for (i=0;i<=SAMPLES;i++) {
  if (ramp_up == 1) 
  signal = signal + 1;
  else 
  signal = signal - 1;


// Execute the function with latest input
    fir(&output,taps,signal);
    
    if ((ramp_up == 1) && (signal >= 75))
    ramp_up = 0;
    else if ((ramp_up == 0) && (signal <= -75))
    ramp_up = 1;
   
// Save the results.
    fprintf(fp,"%i %d %d\n",i,signal,output);
  }
  fclose(fp);
  
  printf ("Comparing against output data \n");
  if (system("diff -w out.dat out.gold.dat")) {


fprintf(stdout, "*******************************************\n");
fprintf(stdout, "FAIL: Output DOES NOT match the golden output\n");
fprintf(stdout, "*******************************************\n");
     return 1;
  } else {
fprintf(stdout, "*******************************************\n");
fprintf(stdout, "PASS: The output matches the golden output!\n");
fprintf(stdout, "*******************************************\n");
     return 0;
  }
}

本次实验将通过vivado hls将fir.c生成verilog代码,实现c到verilog的转换,展示了如何创建一个高层次的合成项目,验证C代码,合成对RTL进行设计,并对RTL进行验证。

第一步:创建工程

打开Vivado hls点击创建新工程


工程名字:fir_prj下一步


点击浏览,添加fir.c文件下一步

添加fir_test.c文件以及out.gold.dat文件下一步

Part选择自己开发板对应的器件。

点击ok

点击finish

工程创建完成。Source 包括我们的设计源文件,Test Bench是我们的仿真文件。

第二步:验证C源代码

点击project>run c simulation 点击ok


C代码仿真完成 0 errors

第三步:高级综合

点击solution > run c synthesis>active solution


综合完成。

第四步:RTL验证
点击solution>run c/rtl cosimulation   ok

第五步:IP创建

Verilog代码以及ip已经生成。


Fir滤波器工程也已经生成。

至此vivado hls的基本使用,以及fir滤波器从c代码已经完全转化为verilog和vhdl的代码以及ip。下节将演示如何使用vivado添加fir滤波器ip。

猜您喜欢

贴片电阻是电子电路中很重要的元件,其封装尺寸直接影响电路板的设计和空间利用。了解常用的贴片电阻封装类型,对于电子爱好者和工程师都很重要。本文将简要介绍几种常见的...
2024-11-29 10:25:42

在选择螺丝批套装时,了解其参数非常重要。螺丝批的类型有多种,包括十字、平头、梅花等,不同类型适用于不同的螺丝。套装中的螺丝批数量通常在5到20把之间,数量越多,...
2013-05-22 00:00:00

在物流和仓储行业中,木托盘是不可少的运输工具。了解木托盘的规格尺寸对于选择合适的产品非常重要。木托盘的标准尺寸有1200mm x 1000mm、1200mm x...
2011-04-02 00:00:00

许多人想用PoE供电交换机简化网络布线,特别是连接网络摄像机时。但如果你使用的是普通的网络摄像机,而不是PoE摄像机,事情就没那么简单了。本文将为你解答PoE供...
2024-10-09 00:00:00

加湿器是能够增加空气湿度的设备,应用于多个领域。在家庭中,尤其是在干燥的冬季,加湿器能够有效改善室内空气质量,缓解干燥引起的皮肤问题和呼吸不适,提升居住舒适度。...
2013-08-21 00:00:00

液压泵是应用于各个行业的重要设备,其主要功能是将机械能转化为液体的压力能。液压泵的应用领域非常,覆盖了工业、建筑、农业等多个领域。在工业领域,液压泵被用于机械制...
2009-08-08 00:00:00

很久没有看基于FPGA的神经网络实现的文章了,因为神经网络加速设计做的久了就会发现,其实架构都差不多。大家都主要集中于去提高以下几种性能:FPGA算力,网络精度...
2024-04-08 09:48:00

防浪涌电阻作为保护电路的重要元件,起到了抑制电压突变、保护设备安全的关键作用。随着电子产品的不断升级,对防浪涌电阻的性能要求也越来越高。AVX作为知名的电子元器...
2015-06-10 21:16:56

贴片电阻,也叫片式电阻或SMD电阻,属于固定电阻器的一种。它采用片状结构,体积小巧,适合表面贴装技术(SMT)在印刷电路板上进行自动化装配。从材料上分,贴片电阻...
2024-11-26 11:29:26