Vivado

Vivado中异步FIFO的实现和使用

FIFO应用:
1、在千兆以太网数据写入,往DDR3里面写数据时候
2、AD采样时钟和内部时钟不同时,需要FIFO进行转换
3、同频异相时也需要用FIFO进行转换

Vivado中FIFO generator的配置方法

1、

2、standard FIFO
read mode读取时会延迟一个周期时钟,first word fall through
read mode 读取时没有延时时钟周期,给使能就有数据,read latency=0。

3、

Vivado VIO (virtual input output)虚拟IO使用

一般情况下ILA和VIO都是用在chipscope上使用,VIO可以作为在chipscope时模拟IO。

譬如:
在使用chipscope时需要使用按键出发,但是没有设计按键或者板子不再身边,所以需要模拟按键输入还有其他信号的输出。

参数配置,配置输入探针数量和输出探针数量。分别可以设置0-256个。

probe in ports参数配置,配置数据探针位宽

Vivado与SDK的联合调试方法-使用ILA

首先介绍一下我的硬件平台:使用的开发板为米联客出的MIZ702,这个开发板与ZedBoard是兼容的。

Vivado硬件调试有几种手段:ILA(集成逻辑分析器Integrated Logic Analyzer)、VIO(虚拟I/O Virtual Input/Output)、Jtag-to-AXI等,本方法主要使用了ILA 。

本实验系统使用了两种调试手段:ILA和VIO,ILA的引入方式又用了两种,一种是标记Debug mark,一种是添加ILA_IP两种方式我认为是一致的。其中ILA-IP抓取的LED的寄存器的波形,而Debug mark标记的是接到一个自主IP的AXI总线系统的Block Design如下图

联调步骤:
STEP1:在block design设计完系统硬件后,点击想要抓取波形的网络,右击选择mark debug,此时网络两端会显示一个Debug标识如下图,保存。

Vivado中各个目标(object)的含义与区别

在Vivado中进行约束时,时常需要对目标进行定位,我们知道Vivado中目标有ports、pins、cells的区别。但是之前都不清楚其区别,在一个Tcl基础应用中看到了一个图,很清晰的展示了他们的区别。

如上图所示,设计顶层的I/O称作ports,其余底层模块或是门级网表上的元件端口都称作pins。而包括顶层在内的各级模块,blackbox以及门级元件,都称作cells。连线称作nets,加上XDC中定义的clocks,在Vivado中一共将网表文件中的目标定义为五类。

文章转载自:hu_li的博客

Vivado使用技巧(二):封装自己设计的IP核

概述

  Vivado在设计时可以感觉到一种趋势,它鼓励用IP核的方式进行设计。“IP Integrator”提供了原理图设计的方式,只需要在其中调用设计好的IP核连线。IP核一部分来自于Xilinx官方IP;一部分来自于第三方IP,其中有的是在网络上开源的;另一部分就是自己设计的IP。有时候我们需要把自己的一个设计反复用到以后的工程中,利用Vivado的“IP Package”将其封装起来,再以后的工程中直接调用即可。

  本文致力于讲述如何将自己的设计封装为IP核,以及示范一下如何在其它工程中调用自己设计好的IP核。本文采用的设计是一个简单的位宽可设置的加法器。博主使用的Vivado版本是2017.1,其它版本在一些设置的地方可能存在一些差异。

封装IP

  1. 首先建立一个工程用于设计IP核,这个工程最好放在Vivado目录下或不会被删除的地方。添加一个源文件,输入一个简单的组合逻辑加法器的代码:
`timescale 1ns / 1ps

module Add_USR_IP #(parameter WIDTH = 1)(
input [WIDTH:0] a,
input [WIDTH:0] b,
output cout,

Vivado SPI Flash程序下载

由于Vivado下载程序步骤和ISE有较大差异,特此写此文章,希望对大家有所帮助。

1,下载文件生成
在.bit文件生成后,在TCL中输入
write_cfgmem -format mcs -interface spix4 -size 16 -loadbit "up 0x0 F:/Git/XGA/Display_HDMI/Display.runs/impl_2/Display.bit" -file FPGA_TOP.mcs

spix4为模式设置。
-size 16为Flash大小,单位Byte。
即可得到FPGA_TOP.mcs和FPGA_TOP.prm两个文件,后边需要用到这两个文件。

A&Q:提示bit位宽错误

概述

  通常我们使用的是Vivado IDE进行FPGA的开发,IDE提供了图形化的界面和自动化管理方案,我们只需要点击几个按钮就会得到结果。有时候还会用到另外一种开发方式:在Vivado Tcl Shell中使用Tcl命令的方式控制开发设计流程。使用Tcl的好处是每一个命令都有一个具体的操作,我们可以详细的控制设计过程中的每一步,设计更加灵活,也更有效率。

  通常的情况下都会根据需求事先编辑好一个完整的Tcl脚本,直接运行即可得到想要的结果。本文将会保留一个设计过程的每一步(实际使用时不会用到这么多的步骤)。以下Tcl命令对于所有的Vivado版本都是通用的。进行操作前需要准备好已经设计好的Verilog文件和约束XDC文件,并放在一个固定目录下。本文参考了Xilinx官方文档与《Xilinx FPGA权威设计指南》这本书中的内容。

一.准备

  1.1 在开始菜单的Xilinx工具集中找到“Vivado xxxx.x Tcl Shell”,xxxx.x代表安装的Vivado版本号。在Shell中先将当前环境指向设计源文件的目录(注意路径中斜线方向是左斜杠):
Vivado% cd C:/Users/GodWa/Desktop/SDK_Test/gate

视频:使用 Vivado IP Integrator 和 Amazon F1

本视频介绍了如何使用Vivado IP Integrator 流程与 Amazon F1 硬件开发套件或 HDK 协同工作。

FPGA congestion

作者:East FPGA那点事儿

目前很多设计由于资源问题,IO分布不合理等问题。整个设计很容易出现congestion如何分析和解决呢?

A.客户实例中vivadocongestion report 和ISE的布线结果

Vivado防止信号被综合掉的三种方法

1、 信号前面将keep hierarchy选择YES ,或者选择soft(在综合时保持层次),这样有利于你从模块中找到你想抓取的信号和信号名不被更改。

2、 信号前面使用 (* KEEP = “{TRUE|FALSE |SOFT}” *),可以防止信号被综合掉,但是无法防止在布局布线的时候优化掉

3、 信号前面使用(* DONT_TOUCH= “{TRUE|FALSE}” *),可以防止信号在综合,以及布局布线的时候被优化掉。

注意: 右边的TRUE|FALSE必须要大写,否则会报错,无法识别TRUE|FALSE为1|0.


同步内容