FPGA之新套件Vivado的新性能

本文介绍了Vivado在SOC设计中的应用优势,包括支持AMBA AX14总线互联规范,提供了IP-XACT IP封装元数据,采用Tcl脚本语言代替ucf,支持Synopsys系统约束等。这些特性不仅提高了综合速度,还减少了使用面积。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        之前我们进行SOC设计使用的是ISE,现在使用的是Vivado,搞芯片设计的人好辛苦,现在又要学习Vivado的使用了。不过Xilinx为什么会使用Vivado这个新套件呢?在看《嵌入式系统软硬件协同设计》的时候我发现Vivado真是高大上啊!主要表现在以下高大上方面,先记住这几个名词和别人吹吹水吧!以后具体要用的时候就可以learn by doing,慢慢体会这些的优越性!

        AMBA AX14总线互联规范:(高大上的词,完全不知道在说什么,百度一下)AMBA 协议是用于连接和管理片上系统 (SoC) 中功能模块的开放标准和片上互连规范。它有助于首次开发带有大量控制器和外设的多处理器设计。AMBA 通过使用 AXI、AHB、APB 和 ATB 的规范对 SoC 模块的共同主干进行定义,这有助于设计的重复使用。AMBA 4 是最新增添到 AMBA 系列中的规范,增加了三个新接口协议:AXI4 有助于最大化性能和能效;AXI4-Lite 和 AXI4-Stream 是 FPGA 中实现的理想选择。AMBA 4 规范在 AMBA 3 规范的基础上另外新增了三个接口协议。AXI4 协议是对 AXI3 的更新,在用于多个主接口时,可提高互连的性能和利用率。它包括以下增强功能:

对于突发长度,最多支持 256 位;发送服务质量信号;支持多区域接口。好像是ARM公司定的一个标准。
        IP-XACT IP封装元数据:这个我之前看的是这个使用的是IP核封装的便利性,软硬核都有,就是自己做一个IP核或者调用什么的都很方便,有一个IP核库。我说的不对可别介意希望指正。
       Tcl脚本语言:不再是ucf了,Tcl这个脚本是全局都有用,不是之前那个ucf定义十分麻烦。这个也叫做XDC。
       Synopsys系统约束:不用多说,工业标准,你们懂得!

       这些高大上的词语不懂也没有关系,不过用它做综合速度真的更快了很多,还有使用面积也少了。接下来就花谢些时间看些看这个的使用吧!做硬件的真是太辛苦了!

Vivado软件的使用 一、 建立工程 1.1建一个工程 或者: 1.2设置工程名字和路径。输入工程名称、选择工程存储路径,并勾选Create project subdirectory选项,为工程在制定存储路径下建立独立的文件夹设置完成后,点击Next。注意: 工程名称和存储路径中不能出现中文和空格,建议工程名称以字母、数字、下划线来组成。 1.3选择RTL Project一项,并勾选Do not specify sources at this time,勾选该选项是为了跳过在建工程的过程中添加设计源文件。点击Next。根据使用的FPGA开发平台,选择对应的FPGA目标器件. 1.4确认相关信息与设计所用的FPGA器件信息是否一致,一致请点击Finish,不一致,请返回上一步修改。 1.5得到如下的空白的Vivado工程界面,完成空白工程建 二、 工程设计 2.1设计文件输入,如下图所示,点击Flow Navigator下的Project Manager->Add Sources或中间Sources中的对话框打开设计文件导入添加对话框。 2.2添加设计文件,然后Next 2.3如果有v/vhd文件,可以通过Add File一项添加。在这里,我们要建文件,所以选择Create File一项。 2.4在Create Source File中输入File Name,点击OK。注:名称中不可出现中文和空格。 2.5在弹出的Define Module中的I/O Port Definition,输入设计模块所需的端口,并设置端口防线,如果端口为总线型,勾选Bus选项,并通过MSB和LSB确定总线宽度。完成后点击OK. 2.6建的设计文件(此处为flow_led.v)即存在于Source中的Design Source中。双击打开该文件,输入相应的设计代码。 三、 添加约束 添加约束文件,有两种方法可以添加约束文件,一是利用Vivado中planning功能,二是可以直接建XDC的约束文件,手动输入约束命令。 3.1利用IO planning 3.1.1点击Flow Navigator 中Synthesis中的Run Synthesis,先对工程进行综合。 3.1.2综合完成后,选择Open Synthesized Design,打开综合结果。 3.1.3此处应该出现如下界面,如果没有出现,在图示位置layout中选择IO planning在右下方的选项卡中切换I/O ports 一栏,并在对应的信号后,输出对应的FPGA管脚标号,并制定I/O std。(具体的FPGA约束管脚和IO电平标准,可参考对应板卡的用户手册或原理图)。 3.1.4完成后,点击上方工具栏中的保存按钮,工程提示建XDC文件或选择工程中已有的XDC文件。在这里,我们要Create a new file,输入File name,点击OK完成约束过程。 3.1.5、此时在Source下的Constraints中会找到建的XDC文件。 3.2建立XDC文件 3.2.1、点击Add Source ,选择第一项Add or Create Constraints一项,点击Next。 3.2.2、点击Create File ,建一个XDC文件,输入XDC文件名,点击OK。点击Finish。 3.2.3、双击打开建好的XDC文件,按照如下规则,输入相应的FPGA管脚约束信息和电平标准。 四、 功能仿真 4.1创建激励测试文件,在Source中右击选择Add source。在Add Source界面中选择第三项Add or Create Simulation Source,点击Next。 4.2选择Creat File,创建一个的激励测试文件。输入激励测试文件名,点击OK,然后点击Finish。 4.3弹出module端口定义对话框,由于此处是激励文件,不需要有对外的接口,所以为空。点击OK,空白的激励测试文件就建好了。 4.4在source 下双击打开空白的激励测试文件,完成对将要仿真的module的实例化和激励代码的编写。激励文件完成后,工程目录如下图: 4.5此时,进入仿真。在左侧Flow Navigator中点击Simulation 下的Run Simulation 选项,并且选择Run Behavioral Simulaiton一项,进入仿真界面。 4.6下图为仿真界面。 4.7可以通过左侧的Scope一栏中的目录结构定位到设计者想要查看的module内部寄存器,在Objects对应的信号名称上右击选择Add To Wave Window,将信号加入波形中。 4.8可通过选择工具栏中的如下选项来进行波形的仿真时间控制,如下工具条,分别是复位波形(即清空现有波形)、运行仿真、运行特定时长的仿真、仿真时长设置、仿真时长单位、单步运行、暂停…… 4.9最终得到的仿真效果图如下。核对波形与预设的逻辑功能是否一致,仿真完成。 五、综合下载 5.1在Flow Navigator中点击Program and Debug下的Generate Bitstream选项,工程会自动完成综合、实现、Bit文件生成过程,完成之后,可点击Open Implemented Design 来查看工程实现结果。 5.2点击Flow Navigator中的Open Hardware Manager一项,进入硬件编程管理界面。 5.3在Flow Navigator中展开Hardware Manager ,点击Open New Target 5.4在弹出的Open hardware target向导中,先点击Next,进入Server选择向导。 5.5保持默认,next。 5.6选中FPGA芯片型号,点击Next。完成建Hardware Target。 5.7此时,Hardware一栏中出现硬件平台上可编程的器件。(此处以zynq为例,如果是纯的FPGA的平台,该出只有一个器件。)在对应的FPGA器件上右击,选择Program Device 5.8选择bit文件位置,默认,直接Program。 观察实验结果,设计完成。
LeNet-5神经网络 C源代码,这个写的比较好,可以用gcc编译去跑,结合理论可以对深度学习有更深刻的了解 介绍 根据YANN LECUN的论文《Gradient-based Learning Applied To Document Recognition》设计的LeNet-5神经网络,C语言写成,不依赖任何第三方库。 MNIST手写字符集初代训练识别率97%,多代训练识别率98%。 DEMO main.c文件为MNIST数据集的识别DEMO,直接编译即可运行,训练集60000张,测试集10000张。 项目环境 该项目为VISUAL STUDIO 2015项目,用VISUAL STUDIO 2015 UPDATE1及以上直接打开即可编译。采用ANSI C编写,因此源码无须修改即可在其它平台上编译。 如果因缺少openmp无法编译,请将lenet.c中的#include和#pragma omp parallel for删除掉即可。 API #####批量训练 lenet: LeNet5的权值的指针,LeNet5神经网络的核心 inputs: 要训练的多个图片对应unsigned char二维数组的数组,指向的二维数组的batchSize倍大小内存空间指针。在MNIST测试DEMO中二维数组为28x28,每个二维数组数值分别为对应位置图像像素灰度值 resMat:结果向量矩阵 labels:要训练的多个图片分别对应的标签数组。大小为batchSize batchSize:批量训练输入图像(二维数组)的数量 void TrainBatch(LeNet5 *lenet, image *inputs, const char(*resMat)[OUTPUT],uint8 *labels, int batchSize); #####单个训练 lenet: LeNet5的权值的指针,LeNet5神经网络的核心 input: 要训练的图片对应二维数组 resMat:结果向量矩阵 label: 要训练的图片对应的标签 void Train(LeNet5 *lenet, image input, const char(*resMat)[OUTPUT],uint8 label); #####预测 lenet: LeNet5的权值的指针,LeNet5神经网络的核心 input: 输入的图像的数据 labels: 结果向量矩阵指针 count: 结果向量个数 return 返回值为预测的结果 int Predict(LeNet5 *lenet, image input, const char(*labels)[LAYER6], int count); #####初始化 lenet: LeNet5的权值的指针,LeNet5神经网络的核心
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值