使用Vitis HLS生成 IP核 (verilog版和图形化版)
创始人
2024-01-31 17:57:47
0

文章目录

  • 实验一、 自动旋转式栅门
    • 1.1 实验题目
    • 1.2 实验建模
      • 1.2.1 Verilog建模IP
      • 1.2.2 图形化建模IP
    • 1.3 实验总结
  • 实验二、 餐巾纸售货机
    • 2.1 实验题目
    • 2.2 实验建模
      • 2.2.1 Verilog建模IP
      • 2.2.2 图形化建模IP
    • 2.3 实验总结

实验一、 自动旋转式栅门

1.1 实验题目

旋转式栅门是一个由三个齐腰高旋转柄组成的门,其中一个旋转柄在进道
口。旋转式栅门一般安装在地铁站出入口等公共场所人行道,控制行人的进出。
初始时这旋转柄是锁住的,挡住进口,阻止行人通过。当交通卡(或投币)
在旋转式栅门上的刷卡机扫描(或投币)成功时,这旋转柄就解锁了,允许一个
行人通过。在行人通过后,旋转柄又锁住了。

1.2 实验建模

以两种形式来对栅门进行IP建模,分别是图形化建模IP和Verilog建模IP。

1.2.1 Verilog建模IP

首先是Turnstile.h

#include
uint8 turnstile(uint8 C, uint8 P, uint8 reset);

函数声明完成后,需要具体实现该函数,Turnstile.cpp内容如下所示:

#include "turnstile.h"
uint8 S = 0;
uint8 reset = 0;
uint8 S0 = 0;
uint8 S1 = 1;
uint8 C_last = 0;uint8 turnstile(uint8 C, uint8 P, uint8 reset)
{if(reset){S = S0; }else{switch (S){case 0:if(C){S = S1;}else{S = S0;}break;case 1:if(P){S = S0;}else{S = S1;}break;default:break;}}return S;
}

最后还需要一个test bench文件,Turnstile_tb.cpp内容如下所示:

#include 
#include#include "turnstile.h"
using namespace std;
int main()
{uint8 reset = 0;uint8 C = 0;uint8 P = 0;const uint8  time = 8;for(uint8 i = 0; i < time; i++){if(i<=2){reset = 1;}else if(i<=4){   reset = 0;C = 1;}else if(i <= 6){C = 0;P = 1;}else{P = 0;}uint8 result = turnstile(C, P, reset);// cout<

添加设计文件

在这里插入图片描述

添加测试文件
在这里插入图片描述

C Simulation
在这里插入图片描述
在这里插入图片描述

C Synthesis

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

C/RTL Cosimulation

左侧的C,P,reset 分别代表输入, return 代表状态:0表示闸门关,1表示闸门开,从波形图可以看出当C=1时 闸门开。
在这里插入图片描述

导出生成verilog 版IP。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

1.2.2 图形化建模IP

打开Vivado,创建新项目,在Settings里的Ip下的Repository加载之前导出的verilog核。
在这里插入图片描述

打开IP Catalog,找到Turnstile。
在这里插入图片描述

双击Turnstile得到图形化核

在这里插入图片描述

1.3 实验总结

相同性:两者都有相同的输入和输出端口C、P、 reset、clk。
差异性:使用HLS生成的verilog代码更加复杂,端口种类也更多,多了一些控制端口,C/C++ 的参数输入作为输入端口,参数返回作为输出端口。而在自己写的verilog中是自己设定的。

实验二、 餐巾纸售货机

2.1 实验题目

一款餐巾纸售货机,只接受 5 角和 1 元硬币,1 包餐巾纸价格为 1.5 元,没有找零功能。其中, Mealy型自动机如图2.1所示。
在这里插入图片描述

2.2 实验建模

使用两种形式来对售货机进行IP建模,分别是图形化建模IP和Verilog建模IP。

2.2.1 Verilog建模IP

首先是Vender.h

typedef unsigned char uint8;
uint8 vender(uint8 J, uint8 Y, uint8 reset);

函数声明完成后,需要具体实现该函数,vender.cpp的内容如下所示:

#include "vender.h"
uint8 S = 0;
uint8 reset = 0;
uint8 S0 = 0, S5 = 1, S10 = 2;
uint8 state = 0;
uint8 open = 1;
uint8 close = 0;
uint8 vender(uint8 J, uint8 Y, uint8 reset)
{state = 0;if(reset){S = S0;state = 0;}else{switch (S){case 0:if(J){S = S5;state = 0;}else if(Y){S = S10;state = 0;}else{S = S;}break;case 1:if(J){S = S10;state = 0;}else if(Y){S = S0;state = 1;}else{S = S;}break;case 2:if(J){S = S0;state =  1;}else if(Y){S = S0;state =  1;}else{S = S;}break;default:break;}}if(state == 1)return open;elsereturn close;
}

最后还需要一个test bench文件,vender_tb.cpp内容如下所示:

#include 
#include#include "vender.h"
using namespace std;
int main()
{uint8 reset = 0;uint8 J = 0;uint8 Y = 0;uint8 result = 0;const uint8  time = 4;for(uint8 i = 0; i <= time; i++){if(i<=1){reset = 1;}else if(i<=2){   reset = 0;J = 1;Y = 0;}else if(i <= 3){J = 0;Y = 1;}else{Y = 0;J = 1;}result = vender(J, Y, reset);// cout<

源代码添加到vitis HLS的源文件中,需要添加Top Function。

在这里插入图片描述

测试文件vender_tb.cpp添加到TestBench中。
在这里插入图片描述

运行C simulation,结果如下图所示。
在这里插入图片描述

运行C Synthesis,Part选择xc7z20clg484-1;
在这里插入图片描述

综合结果如下图所示,可以得到运行时间和LUT、FF等一系列资源的使用情况。
在这里插入图片描述

执行CoSimulation,结果如下。
在这里插入图片描述

当收到J和Y = 1 的时候,售货机打开。

在这里插入图片描述

导出Verilog 版IP
在这里插入图片描述

导出成功。
在这里插入图片描述
在这里插入图片描述

2.2.2 图形化建模IP

打开Vivado,创建新项目,在Settings里的Ip下的Repository加载之前导出的verilog核。
在这里插入图片描述

打开IP Catalog,找到Vender。
在这里插入图片描述

双击Turnstile得到图形化核
在这里插入图片描述

2.3 实验总结

相同性:两者都有相同的输入和输出端口J、Y、 reset、clk,都能实现相同的功能。
差异性:使用HLS生成的verilog代码更加复杂,没有自己编写的verilog代码简洁,端口种类也更多,多了一些控制端口,C/C++ 的参数输入作为输入端口,参数返回作为输出端口。HLS使得设计师不掌握硬件描述语言就可以使用一些硬件IP核。

相关内容

热门资讯

​印花税按件贴花的应税凭证有哪... 印花税按件贴花的应税凭证有哪些印花税法所称应税凭证,是指本法所附《印花税税目税率表》列明的合同、产权...
​个人代开材料发票需要哪些资料 个人代开材料发票需要哪些资料个人代开发票时,需要准备以下资料:一、书面证明个人在申请代开发票时,必须...
​固定资产盘盈的会计和税务差异 固定资产盘盈的会计和税务差异会计准则与税法在盘盈处理上存在差异,企业需在税务申报中调整。同样,《企业...
​留抵退税后收到的退款款怎么记... 留抵退税后收到的退款款怎么记账在收到退税款前,企业需完成税务机关核准程序:1、核准留抵退税:税务机关...
​政府补助的总额法和净额法区别 政府补助的总额法和净额法区别政府补助总额法和净额法的区别如下:1、定义:总额法:将政府补助金额作为收...
西班牙高铁脱轨事故已致至少21...   据英国天空新闻报道,西班牙南部科尔多瓦省当地时间18日发生两列高速列车脱轨事故。根据西班牙内政部...
视频丨年用电量首超10万亿度 ...   国家能源局今天发布的最新数据显示,2025年,我国全社会用电量首次突破10万亿千瓦时。这一数字在...
多措并举,破解部分农村“取暖贵...   近来,我国北方一些地区农村“煤改气”后,有读者网友反映,用气价格高,导致出现有的村民“取不起暖”...
小城大市|传统果品在“养生赛道...   一杯养生茶,连接起田间地头与消费市场;两颗小果实,承载着产业升级与乡村振兴。  在广西桂林的青山...
美国防官员称或向明尼苏达州部署...   新华社洛杉矶1月17日电(记者高山)美国媒体17日晚援引美国国防官员消息报道称,大约1500名来...