Vivado hls入门一

Vivado hls入门一

作者:OpenS_Lee

1 概述

在集成电路行业飞速发展的今天,缩短产品开发的周期而又不牺牲验证过程,这不可避免地成为了商业市场的一个关键因素。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 <stdio.h>

#include <math.h>

#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。

本文分享自微信公众号 - FPGA开源工作室(leezym0317),作者:OpenS_Lee

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-05-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • FPGA卡拉ok系统--均衡器

    音频模拟信号经过音频adc采集后转化为数字信号通过I2S送入FPGA,FPGA内部可做均衡器算法,反馈抑制算法,高低通滤波器混响回声以及变声的音频处理算法。

    FPGA开源工作室
  • 基于FPGA视频图像水印的实现

    日常生活中我们经常见到数字图像水印的存在。例如图1所示。数字图像水印在日常生活中也起到非常重要的作用。它们以各种方法来保护所有者的权益,包括:

    FPGA开源工作室
  • 【vivado约束学习二】 IO延时约束

    要在设计中精确建模外部时序,必须为输入和输出端口提供时序信息。Xilinx Vivado集成设计环境(IDE)仅在FPGA边界内识别时序,因此必须使用以下命令指...

    FPGA开源工作室
  • 2014网络安全热点问题

    1.威胁由网络层转向应用层 如今,许多行业用户将大量有价值的客户数据存储于在线数据库,通过网络应用与外界交互。不论是电子政务、通信、金融、电子商务抑或是小小的个...

    安恒信息
  • RSA会议:2015六大新型攻击趋势

    SANS专家在RSA会议上向大家展示了未来攻击方式的趋势。 该项研究由SANS主管John Pescatore主导,Counter Hack Challenge...

    FB客服
  • [Oracle故障处理]记一次INST_DRTLD_MISMATCH导致的version count过多的问题

    查下来一看hash_value的值是一样的,说明不是绑定变量的问题,而是version count过多,而且是五分钟一次,接下来我们来分析原因

    bsbforever
  • 用python实现TCP协议传输功能(服务端代码)

    与客户端代码不同(客户端代码请看我的上一篇博客),服务端需要绑定端口号,设置监听服务,多了两个特殊的步骤,需要两行新的代码实现 准备:windows作为客户端...

    gzq大数据
  • 测试工程师SQL面试题

    测试人员工作在工作中会用到SQL来辅助测试,求职时也常常会在笔试环节遇到各种各样的sql设计题目,张老师整理了一些工作中常用的sql知识点,希望对大家有所帮助。

    张树臣
  • 使用Nagios监控你的Ubuntu服务器

    Nagios是一个流行的电脑系统和网络监控程序,它检测主机和服务,当异常发生和解除时能提醒用户。它是基于GPLv2开发的开源软件,可免费获得及使用。 使用Nag...

    灬半痴
  • 使用python登陆dvbbs

    #! /usr/bin/env python #coding=utf-8 import urllib,httplib params = urllib.urlen...

    py3study

扫码关注云+社区

领取腾讯云代金券