Vivado2015.4使用教程(一个完成工程的建立)

  Vivado的功能真是太强大了,学习Xilinx准没错,把一个工程的完整流程整理出来,为自己以后看。

双击桌面的vivado图标,(可能有点慢)

弹出主菜单界面,点击create new project

这是介绍界面,next~

添加好工程名,和工程位置,next~

选择rtl Project,next~

选择板卡型号,我这里使用的是A-7系列的basys3,用户根据自己的板卡型号自定义,next~

这一面是总结,finish~

左边这一栏,我们用到哪里解释哪里,首先,点击add source 添加verilog HDL文件

选择新建一个设计文件,next~

左边是添加已有的文件,右边是新建一个verilog HDL文件,我们前面没有文件,所以选择新建一个新的文件

上面是文件类型,我用的是verilog,添加文件名,我这里用的是流水灯,文件名为led_water

添加成功,点击finish

点击OK

Yes

双击这个文件,打开编写

 1 `timescale 1ns / 1ps
 2 //////////////////////////////////////////////////////////////////////////////////
 3 // Company: 
 4 // Engineer: NingHeChuan
 5 // 
 6 // Create Date: 2017/05/19 17:06:50
 7 // Design Name: 
 8 // Module Name: led_water
 9 // Project Name: 
10 // Target Devices: 
11 // Tool Versions: 
12 // Description: 
13 // 
14 // Dependencies: 
15 // 
16 // Revision:
17 // Revision 0.01 - File Created
18 // Additional Comments:
19 // 
20 //////////////////////////////////////////////////////////////////////////////////
21 module led_water(
22     input                 clk,
23     input                 rst_n,
24     output    reg    [7:0]    led   
25     );
26      
27     reg[25:0] cnt;//设定一个26位的计数器
28     parameter TIME = 26'd50000000;
29     //parameter TIME = 26'd500;//just test
30     
31 always@(posedge clk or negedge rst_n)
32 begin
33     if(!rst_n)
34         cnt <= 1'b0;
35     else if(cnt == TIME-1'b1)
36         cnt <= 1'b0;//当cnt计数达到50mhz时,计数器清零
37     else
38         cnt <= cnt +  1'b1;//否则计数器+1        
39 end
40 
41 always@(posedge clk or negedge rst_n)
42 begin
43     if(!rst_n)
44         led <= 8'b0000_1111;
45     else if(cnt == TIME - 1'b1)//当计数器达到1s时钟执行此条件
46         led <= {led[0], led[7:1]};
47     else
48         led <= led; 
49 end
50 
51 endmodule

led_water

这是一个流水灯工程

编写完成后,点击如图所示可以,编译文件,也可查看工程的RTL图

这是生成的RTL图,双击如图所示部分可以将窗口放大。

原理图出来后,说明该工程没有语法错误,然后再次add source,选择add or create simulation source添加测试文件,

同样选择新建一个文件

Yes

找到到tb_led_water文件双击打开

 1 `timescale 1ns / 1ps
 2 //////////////////////////////////////////////////////////////////////////////////
 3 // Company: 
 4 // Engineer: NingHeChuan
 5 // 
 6 // Create Date: 2017/05/19 17:19:00
 7 // Design Name: 
 8 // Module Name: tb_led_water
 9 // Project Name: 
10 // Target Devices: 
11 // Tool Versions: 
12 // Description: 
13 // 
14 // Dependencies: 
15 // 
16 // Revision:
17 // Revision 0.01 - File Created
18 // Additional Comments:
19 // 
20 //////////////////////////////////////////////////////////////////////////////////
21 
22 
23 module tb_led_water(
24     );
25 
26 reg                 clk;
27 reg                 rst_n;
28 wire         [7:0]    led;
29     
30 led_water uut_led_water(
31     .clk            (clk),
32     .rst_n            (rst_n),
33     .led            (led)
34     );    
35 
36 always #10 clk = ~clk;
37 
38 initial begin
39     clk = 0;
40     rst_n = 0;
41 #100;
42     rst_n = 1;
43     
44 end
45     
46 endmodule

tb_led_water

编写测试文件

点击run simulation 点击 run behavioral simulation 进行仿真

1      
2     reg[25:0] cnt;//设定一个26位的计数器
3     parameter TIME = 26'd50000000;
4     //parameter TIME = 26'd500;//just test

注意,仿真前把测试文件改小一点,不然跑的太慢,

点击run-all让流水灯跑起来,

可以看到流水灯的数值在变化,说明设置正确。然后要做的是下板子仿真

点击add source 添加约束文件,add constraints

新建一个引脚约束文件,OK

点击新建好的文件,

set_property IOSTANDARD LVCMOS33 [get_ports {led[7]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[6]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[5]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[4]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[0]}]
set_property PACKAGE_PIN V14 [get_ports {led[7]}]
set_property PACKAGE_PIN U14 [get_ports {led[6]}]
set_property PACKAGE_PIN U15 [get_ports {led[5]}]
set_property PACKAGE_PIN W18 [get_ports {led[4]}]
set_property PACKAGE_PIN V19 [get_ports {led[3]}]
set_property PACKAGE_PIN U19 [get_ports {led[2]}]
set_property PACKAGE_PIN E19 [get_ports {led[1]}]
set_property PACKAGE_PIN V16 [get_ports {led[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports clk]
set_property IOSTANDARD LVCMOS33 [get_ports rst_n]
set_property PACKAGE_PIN W5 [get_ports clk]
set_property PACKAGE_PIN V17 [get_ports rst_n]

xdc约束

将约束文件内容复制进去,

最后点击大综合,对工程进行综合,综合完成后就可以下板子了。(下板子的时候要把测试时候改的代码改回来)

点击open target——>auto connect,会自动连接设备,或者直接连接recent target,直接选择你的设备

点击program device

点击program。即可下载成功。

转载请注明出处:NingHeChuan(宁河川)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏meteorzx

FTP错误详解及解决方案

这个问题在于你输入的网址有错误。有可能是你要连接的服务器不能识别你要求浏览的文档,或者你没有访问它的权利甚至它根本就是不存在的。仔细检查一下 你是否将网址写错,...

2476
来自专栏技术点滴

告别S! S! H! 秒杀终端工具——FastLogin快捷登录安装步骤功能测试卸载功能介绍

题记:自从接触到“跳板机”的概念后,一直就被烦不胜烦的机器名,ip地址,用户名,密码折腾的死去活来,心说能有个小精灵随时帮我输入那些重复的登录信息就好了。我见过...

761
来自专栏漏斗社区

工具| PowerShell的内网渗透之旅(二)

3676
来自专栏圣杰的专栏

eShopOnContainers 知多少[3]:Identity microservice

通常,服务所公开的资源和 API 必须仅限受信任的特定用户和客户端访问。那进行 API 级别信任决策的第一步就是身份认证——确定用户身份是否可靠。

672
来自专栏Netkiller

PHP 安全与性能

PHP 安全与性能 摘要 我的系列文档 Netkiller Architect 手札Netkiller Developer 手札Netkiller PHP 手札...

3826
来自专栏落影的专栏

iOS开发笔记(五)

前言 社会的模式很多是重复的,当你做一样事情很擅长时,与之类似的事情也能触类旁通。 正文 Code开发 1、delegate的trick 很多人习惯在调用de...

3544
来自专栏Netkiller

PHP 安全与性能

PHP 安全与性能 摘要 我的系列文档 Netkiller Architect 手札Netkiller Developer 手札Netkiller PHP 手札...

2785
来自专栏沈唁志

在Debian 7上安装和配置OSSEC

OSSEC是一个开源的,基于主机的入侵检测系统(HIDS),可执行日志分析,完整性检查,rootkit检测,基于时间的警报和主动响应,使其成为服务器监控的理想选...

1132
来自专栏北京马哥教育

手把手教你用永恒之蓝(Eternalblue)勒索病毒漏洞的高阶用法

? 作者:7sDream 来源: https://www.zybuluo.com/7sDream/note/729295 安装 MSF Linux & Ma...

3938
来自专栏点滴积累

OpenStack(企业私有云)万里长征第四步——DevStack整体安装规划及使用

一、前言 前期成功通过DevStack安装OpenStack,现将从机房规划到虚拟机搭建的整个过程总结如下,以供日后查阅或有需之人参考。 二、机房规划 这个整个...

3939

扫码关注云+社区