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 条评论
登录 后参与评论

相关文章

来自专栏极客日常

极客工具之 Alfred 与 Dash

使用 Alfred 可以让你在 macOS 程序间自由切换、快速查找或打开文件、调起浏览器进行网页搜索、 还可以做计算器。 另外,还有许多其它搜索功能以及付费的...

1473
来自专栏熊二哥

JMeter快速入门

今天的年会已过,仍然是空手而归,不过俺坚信能让生活稳定永远都是努力。由于隔壁组负责年会的抢红包项目,因而趁此机会把通过工具模拟高并发的知识补了补,通过和身边大师...

2555
来自专栏游戏杂谈

恢复低版本的FlashPlayer

做页游开发,经常会遇到一些很奇怪的问题。我最近就遇到一个问题:用户进入游戏,只显示游戏部分界面,chrome浏览器是正常的,就IE死活不行,而我自己的IE却又...

2213
来自专栏Vamei实验室

Linux进程间通信

我们在Linux信号基础中已经说明,信号可以看作一种粗糙的进程间通信(IPC, interprocess communication)的方式,用以向进程封闭的内...

20410
来自专栏Albert陈凯

【网易严选】iOS持续集成打包(Jenkins+fastlane+nginx)

严选iOS客户端的现有打包方式是通过远程连接打包机执行脚本去打包,打完包会输出相应的ipa的二维码,扫一扫二维码可以安装,但是随着测试队伍的壮大,外包同学越来越...

1082
来自专栏SpringBoot 核心技术

第四十三章: 基于SpringBoot & RabbitMQ完成TopicExchange分布式消息消费

31115
来自专栏小怪聊职场

Java|Spring+SpringMVC+MyBatis框架科普

2535
来自专栏FreeBuf

利用Web查询文件(.iqy)有效钓鱼

几天前我在Casey Smith的twitter上看到了有关iqy文件的一些介绍,和大多数渗透测试人员或者技术狂热者一样我也在探寻它的价值。能够通过使用本地/可...

2626
来自专栏生信宝典

生信人写程序2. Editplus添加Perl, Shell, R, markdown模板和语法高亮

前言 “工欲善其事必先利其器”,生信工程师每天写代码、搭流程,而且要使用至少三门编程语言,没有个好集成开发环境(IDE,Integrated Developme...

2888
来自专栏坚毅的PHP

hbase问题总结

 1 java.io.IOException: java.io.IOException: java.lang.IllegalArgumentException:...

4826

扫码关注云+社区