vivado

VsCode与Vivado的灵活使用

匿名 (未验证) 提交于 2019-12-02 23:38:02
VsCode与Vivado的灵活使用 引言 站在前人的肩膀上 步骤一、更换Vivado自带文本编辑器 步骤二、用VsCode舒适的编写verilog 在vscode扩展商店搜索verilog ,安装Verilog HDL的拓展即可以舒适的编写Verilog代码。他能帮你实现的功能主要有:语法高亮,自动补齐。 步骤三、自动生成Testbench 扩展商店搜索Verilog_TestBench,安装过后,任意编写一段verilog程序。按下ctrl+shift+p,选择testbench即可生成testbench对应的程式。 效果如上图所示。执行脚本之后,其出结果导向powershell的输出结果之中。其帮我们自动生成了了时钟信号,复位信号,以及进行了模块的例化。 步骤四、进一步优化 可以看到,美中不足的是,生成的文本你还需复制粘贴到新建的testbench文件中去,真是有些麻烦了!但是?从命令行执行的命令可以看到,这个脚本是用python编写的!顺着文件目录找到原本的python源文件,即可修改输出内容,至于自动生成新的文本文件?那就简单了,上一段powershell脚本~ 理清一下我们的思路:脚本需要将命令执行,输入的第一个参数为文件名a.v,输出的文件名为tb_a.v.可以将整个脚本的初始化条件写入powershell的profile文件中(就和bash里的.bashrc一样

Xilinx Vivado Slice IP核说明

匿名 (未验证) 提交于 2019-12-02 23:38:02
介绍 Slice IP用来在总线上进行截位操作, 可配置输入总线位宽,配置输出所需要的位宽,进行截位操作。 如上图,Din Width为输入总线位宽。Din From为需要截取的最高bit位,Din Down to为需要截取的最低bit位,例如,如果需要从32bits中截取低12bits,则Din Width设置为32,Din from设置为11,Din Down To设置为0;如果只截取1bit,则将Din from与Din Down To设置为同样的数,如果截取bit位为5,则Din from与Din Down To同时设置为5. 文章来源: https://blog.csdn.net/shiyangcool/article/details/90753805

vivado生成.mcs文件

江枫思渺然 提交于 2019-12-02 08:05:11
TCL命令:将bit复制到工程的根目录    write_cfgmem -format MCS -size 256 -interface spix4 loadbit "up 0 FPGA_TOP.bit" FPGA_TOP.mcs 完整格式(带路径,不需要复制bit到根目录)    write_cfgmem format MCS -size 256 -interface spix4 loadbit "up 0x0 F:/FPGA_project/FPGA_TOP/FPGA.runs/impl_2/fpga>bit" -file F:/FPGA_project/FPGA.mcs 来源: https://www.cnblogs.com/liyan1994/p/11736518.html

Vivado出现编译错误:[USF-XSim 62] 'compile' step failed with error(s) while executing...

廉价感情. 提交于 2019-12-02 04:59:55
在vivado执行仿真过程中出现了如下错误: [USF-XSim 62] 'compile' step failed with error(s) while executing 'D:/vivado_pro/led_8lights/led_8lights.sim/sim_1/behav/compile.bat' script. Please check that the file has the correct 'read/write/execute' permissions and the Tcl console output for any other possible errors or warnings. 出现该错误的原因可能是代码有误,可在项目文件>仿真文件>仿真文件.sim>compile.log文件中查看编译错误。 我在该次编译出错的原因: 原来是因为忘记在counter8模块的输出端口定义时添加reg。 根据查询自己项目中的log文件,找出错误,解决。 来源: https://blog.csdn.net/a1211545688/article/details/102718174

强大的Vivado IP工具——自定义IP的使用(IP packager)

ぃ、小莉子 提交于 2019-11-30 19:29:55
转自http://blog.chinaaet.com/detail/37169 首先,要指出,本文不描述任何 IP 的功能与使用。 在开发一个大型 FPGA 项目时,多人协作是必不可少的。这个时候,如何提交设计给负责集成的人,是项目开发中最关键的问题之一。 常用的一个方法是,提交网表。网表的提交可以算是相当方便的操作了,这在 ISE 的时期还体会不到,但到了 Vivado 中,正如 amazing icecream在博文 http://blog.chinaaet.com/detail/37153 中描述的, dcp 的引入,让网表这一非常好用的功能发挥了其应有的作用。对于部分设计,直接使用 dcp 提交设计,已经足够。 但正如amazing icecream在博文 http://blog.chinaaet.com/detail/37165 中描述的, dcp 不支持嵌套这一问题,成为 Vivado 在工程化管理中最严重的问题之一。比如,如果遇到如下的设计 设计中包含了两个 IP 的 xci 。如果 IP 使用的 OOC 模式,则和 dcp 模块一样,都使用网表提交给顶层 ADC_SPI 。如果再将 ADC_SPI 模块打包成 dcp ,就会出现 dcp 文件的嵌套。调用 ADC_SPI 这个 dcp 网表时,会出现错误,无法读取其中的 dcp 模块的信息。 这就意味着,使用 dcp

How to initialize contents of inferred Block RAM (BRAM) in Verilog

放肆的年华 提交于 2019-11-29 10:26:26
I am having trouble initializing the contents of an inferred ram in Verilog. The code for the ram is as below: module ram( input clock, // System clock input we, // When high RAM sets data in input lines to given address input [13:0] data_in, // Data lines to write to memory input [10:0] addr_in, // Address lines for saving data to memory input [10:0] addr_out, // Address for reading from ram output reg data_out // Data out ); reg [13:0] ram[2047:0]; // Initialize RAM from file // WHAT SHOULD GO HERE? always @(posedge clock) begin // Save data to RAM if (we) begin ram[addr_in] <= data_in; end

Vivado ILA Advanced Trigger的使用

微笑、不失礼 提交于 2019-11-29 09:41:44
在FPGA工程中经常会因为debug手段有限无法捕捉到错误状态,ila的basic使用能够满足大部分捕捉要求,在不能满足捕捉条件时,编写中间逻辑也可以触发异常状态。vivado提供了 ILA Advanced Trigger,通过编写触发状态机达到触发条件。今天写了简单的debug程序,跑了下 ILA Advanced Trigger,没有太多惊喜,可能小程序,体验不出其特殊价值,期待后面复杂工程的检验。 程序是一个计数器,在循环计数,通过设置VIO来产生触发条件。代码段如下: //计数器循环计数 reg[31:0] timer_cnt; always@(posedge sys_clk) timer_cnt <= (timer_cnt >= 32'd49_999_999) ? 0 : timer_cnt + 32'd1; //产生trigger信号 wire vio_in;//默认初值是0 reg vio_1r; reg vio_2r; reg vio_rise; always@(posedge sys_clk) begin vio_1r <= vio_in; vio_2r <= vio_1r; vio_rise <= ~vio_2r & vio_1r; end //例化VIO核 vio_0 vio( .clk(sys_clk), .probe_out0(vio_in) ); /

How to initialize contents of inferred Block RAM (BRAM) in Verilog

霸气de小男生 提交于 2019-11-28 00:24:58
问题 I am having trouble initializing the contents of an inferred ram in Verilog. The code for the ram is as below: module ram( input clock, // System clock input we, // When high RAM sets data in input lines to given address input [13:0] data_in, // Data lines to write to memory input [10:0] addr_in, // Address lines for saving data to memory input [10:0] addr_out, // Address for reading from ram output reg data_out // Data out ); reg [13:0] ram[2047:0]; // Initialize RAM from file // WHAT SHOULD

那些年在vivado上踩到的坑

断了今生、忘了曾经 提交于 2019-11-27 02:35:26
1.如果在vivado里面的一个工程,调用了两个不同的 自定义IP(举例模块A和B) ,但这两个IP分别调用了 同一个 子代码(举例 test.v),则需要注意如下问题:如果在 A 和 B 里面, 这两个test.v 完全一致的话,那编译的时候不存在问题,也不会报 critical waring ;如果不巧,A B 模块都没想到对方模块会和自己有一个同样名字的子代码,两个模块下这个子代码的功能还不一样,那在编译时,后面编译的模块的 test.v会将前面编译完成的模块的test.v文件覆盖掉,并报critical waring 。 来源: https://blog.csdn.net/brave_xiaojie/article/details/99292493

vivado三人表决仿真

南笙酒味 提交于 2019-11-26 14:51:09
概述 下面以三人表决电路的verilog仿真来了解一下vivado软件的使用。 编写设计文件 首先可以在开始的界面通过create new project来新建工程,也可以通过 file-->project-->new... 来新建工程 点击next 然后给文件起个名字,见名知意最好 一开始我们不需要通过程序来添加源文件,所以这个勾可以勾上 相应器件默认选择就好 点击完成项目就新建成功了 在source面板中点击加号,如图右半部分可以新建三种文件,即约束文件、源(设计)文件、仿真文件,这里首先新建源文件即可。 点击create file对文件的名字、路径和语言进行设置,这里只设置设计文件的名字即可。 点击完成。 这里要我们设置设置文件的输入输出端口,我们可以在这设置,也可以在代码中自行编写。 在source面板中双击源文件即可查看其中代码,这里我已编写完成,按 ctrl S 保存,source文件中不出现错误文件,即表明代码编写无误 12345678 module srbj( input a, input b, input c, output d ); assign d=a&b|a&c|b&c;endmodule 错误示例: 点击左侧的 RTL ANALYSIS 可以生成相关的逻辑图,检查逻辑是否有问题 编写仿真文件 同理新建仿真文件,且无需设置输入输出端口 编写代码如下