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)

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

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云服务器如何搭建Discuz! 论坛

腾讯云云服务器如何搭建Discuz! 论坛

CrossdayDiscuz! Board(简称 Discuz!)是北京康盛新创科技有限责任公司推出的一套通用的社区论坛软件系统。自2001年6月面世以来,Di...

17860
来自专栏FreeBuf

Sudomy:子域名枚举与分析工具

Sudomy是一个使用bash脚本创建的子域枚举工具,用于快速全面地分析域和收集子域。

12000
来自专栏Linux知识积累

使用netstat命令验证DDOS入侵

般来说,服务器非常慢可能原因是多方面的,有可能是配置错误,脚本错误或者是一些奇诡的硬件。当然也有可能是有人对你的服务器进行 Dos (拒绝服务攻击)或者 DDO...

9220
来自专栏翟菜花

盲盒就像巧克力,你永远不知道下一个能开出什么

美国电影《阿甘正传》中,阿甘吃的巧克力是没有标志的,一盒分为12块或是24块,每一块都有不同的包装、形状、颜色、口味。只有拆开放在嘴里,品尝之后才能知晓个中滋味...

5800
来自专栏跟着阿笨一起玩NET

虚拟IP(VIP)

   高可用性HA(High Availability)指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间,以提高系统和应用的可...

18900
来自专栏飞总聊IT

如何更好地结构化表示一个 URL?

相信各位 Python 开发者都用过 Requests 库,有些朋友还用过 WebSockets 库。这里回顾一下它们的基本用法,例如使用 Requests 库...

6810
来自专栏怎么建网站

腾讯云域名解析教程_腾讯云购买的域名如何解析IP地址

在2019年建网站的步骤和过程一文里面,奶爸给大家说的建网站第一步就是注册域名,那么如果你是在腾讯云注册的域名,注册完毕后怎么解析到自己的网站服务器的IP地址呢...

90420
来自专栏Java研发军团

哎,我早就料到你获取IP地址的姿势不对啦!

来源:https://blog.csdn.net/takeurhand/article/details/52512200

12710
来自专栏腾讯社交用户体验设计

邂逅二次元爱豆 | 波洞星战设定

? 腾讯ISUX isux.tencent.com 社交用户体验设计 ? ? ? 导语 在ACG圈有着这样一种赛事:没有硝烟战火,没有(广义上的)明星参与...

7040
来自专栏FreeBuf

DNS隧道流量分析

DNS协议又称域名系统是互联网的基础设施,只要上网就会用到,因而DNS协议是提供网络服务的重要协议,在黑客进入内网后会使用DNS、ICMP、HTTP等协议隧道隐...

18000

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励