草庐IT

Vivado-FIFO

全部标签

在 Vivado 将程序烧写固化到 flash

程序的固化什么是程序的固化?通常对FPGA下载程序时,会采用JTAG口下载,完成好HDL设计,并且验证无误后,对设计文件进行综合,布局布线以及生成比特流文件,而FPGA开发板要想工作,需要将该文件烧写进FPGA芯片中。但是FPGA是基于RAM工艺(如LUT的实质就是RAM),因此会掉电丢失,再次上电后需要重新加载bit流。一般FPGA的外围会有一个非易失性存储器:Flash或SD卡等。可以将程序加载进去,这样的话,下次上电后可以直接从该存储器中加载程序,这就是固化的过程。在之前的一篇文章中,描述了如何进行在SDK端对程序的固化,这篇文章针对如何在Vivado端对程序固化,我们都知道烧写进FPG

FIFO(同步与异步)

FIFO分为两种:同步FIFO和异步FIFO,两者的却别在于读写时钟是否是同一个时钟。换句话说,异步FIFO是同步FIFO的强化版设计,更加的灵活。特征就是:地址+11、结构框图内部结构:双端口RAM、写控制逻辑、写地址、状态产生、读控制逻辑产生、读地址、格雷码同步。其中状态产生分为空信号、将空信号、满信号、将满信号。格雷码同步分为写地址格雷码从写时钟域到读时钟域的同步、读地址格雷码从读时钟域到写时钟域的同步。 2、原理设计思想:状态信号的产生和跨时钟域的转换及同步。(1)格雷码同步格雷码同步在异步fifo中的作用:用于状态产生。格雷码实现多比特跨时钟域转换的原理:因为fifo中地址是逐次+1

FIFO(同步与异步)

FIFO分为两种:同步FIFO和异步FIFO,两者的却别在于读写时钟是否是同一个时钟。换句话说,异步FIFO是同步FIFO的强化版设计,更加的灵活。特征就是:地址+11、结构框图内部结构:双端口RAM、写控制逻辑、写地址、状态产生、读控制逻辑产生、读地址、格雷码同步。其中状态产生分为空信号、将空信号、满信号、将满信号。格雷码同步分为写地址格雷码从写时钟域到读时钟域的同步、读地址格雷码从读时钟域到写时钟域的同步。 2、原理设计思想:状态信号的产生和跨时钟域的转换及同步。(1)格雷码同步格雷码同步在异步fifo中的作用:用于状态产生。格雷码实现多比特跨时钟域转换的原理:因为fifo中地址是逐次+1

基于vivado的DDR3仿真

最近在使用ddr,开发的过程中出现了好多问题,特别是在仿真这一块,现在把遇到的问题记录一下。在vivado中仿真DDR的时候,有一个关键的地方,就是添加DDR模型和参数。本文以黑金的开发例程来举例,程序主要包括三个部分:DDR测试程序、DDR控制程序、DDRIP核。这个时候直接点仿真,得不到任何结果,还需要添加DDR模型。在设置好DDRmigip核后,点击openexample,即可得到以该IP核设置的DDR模型和参数。在example工程文件中搜索得到ddr3_model.sv,ddr3_model_parameter.vh两个文件。把这两个文件加入到原工程的仿真文件里面,再编写一个test

VIVADO生成并导入网表文件

一、将预封装模块设置为顶层二、编辑I/OBufferTool—>SettingsOptions中将-faltten_hierarchy保持默认的rebuilt,试过其他教程推荐的full(意思是模块综合后的层级结构全部为平层,只剩下顶层)导致生成的edif文件识别失败。因为Vivado在综合时会自动将顶层的I/O口插入buffer,设置-modeout_of_context属性,表示在该级不插入任何I/Obuffer。 三、综合并导出网表文件注意在综合前,应该将约束文件中涉及到debug的内容删掉,否则很容易出现ila报错。综合过后,点开“OpenSynthesizedDesign”,在TCL

【Vivado】 [Place 30-574] 时钟使用普通IO时的报错解决办法

今天在创建工程时,由于只是一个测试用的工程,给时钟信号分配管脚时只是简单的使用了普通的IO管脚,在实现时报了以下错误[Place30-574]PoorplacementforroutingbetweenanIOpinandBUFG.Ifthissuboptimalconditionisacceptableforthisdesign,youmayusetheCLOCK_DEDICATED_ROUTEconstraintinthe.xdcfiletodemotethismessagetoaWARNING.However,theuseofthisoverrideishighlydiscouraged

[USF-XSim-62] ‘elaborate‘ step failed with errors.[Vivado 12-4473] Detected error while running sim

[USF-XSim-62]‘elaborate’stepfailedwitherror(s).PleasechecktheTclconsoleoutput.and[Vivado12-4473]Detectederrorwhilerunningsimulation.Pleasecorrecttheissueandretrythisoperation.出现的问题如下:翻译出来:[USF-XSim-62]'elaborate’步骤失败,出现错误。请检查Tcl控制台输出或’D:/vivado/fortest/fortest.sim/sim_1/behav/xsim/elaboration.log’文件

vivado仿真 文件读取和写入

vivado仿真文件读取和写入读取文件首先创建一个TXT文件。$readmemb和$readmemh用来从文件中读取数据到存储器中。其中readmemb要求每个数字是二进制数,readmemh要求每个数字必须是十六进制数字。数字不能包含位宽说明,数字中可以有不定值x或X,高阻值z或Z,和下划线(_),和Verilog语法中的用法是一样的。一共有下边6种用法:(1)$readmemb("",);(2)$readmemb("",,);(3)$readmemb("",,,);(4)$readmemh("",);(5)$readmemh("",,);(6)$readmemh("",,,);写入文件写入

Vivado synth 8-439 module““not found问题绝对解决,超简单,想解决问题就看这里。

        在写单片机vivado的时候,我们常常会碰到一些莫名其妙的问题,在英语界面也不知道往哪里找合适,可能一下子一个下午的时间(少说半小时)就耗费进去了,而网上目前没有找到相关的解决办法,而本人已经耗费了这么多时间给找着了解决办法,就想跟UP一样受困惑的UU们分享一下,减轻大家的时间耗费成本,如果看完了解决了问题,记得点赞。在遇到如下错误指令“synth8-439module""notfound”,我们可以点击图片右上角模块的Topmudulename,进入选择Topmudule。进入以后找到右侧的“Topmodulename”,点击的右侧"..."。然后在出现的窗口,点击现在有的“

FIFO原理及其应用

1FIFO原理FIFO(FirstInFirstOut,即先入先出),是一种数据缓冲器。先被写入的数据会按顺序先被读出。FIFO可看做一个管道,有数据写入端口和数据读取端口:如图,数据写入端口从1~10依次写入数据,则数据读取端口也从1~10依次读取数据。输出端口每读出一位数据,FIFO中的后一位数据就向前移一位。如读取端口读出1、2、3后FIFO输出端口的第一位变为4。1.1FIFO的使用写数据端口:w_clk  : 写数据时钟信号w_req  : 写请求信号w_data: 要写入的数据读数据端口:r_clk  : 读数据时钟信号r_data:  读出的数据1.2FIFO的分类SCFIFO(