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(寧河川)

個人微信訂閱號:NingHeChuan

如果你想及時收到個人撰寫的博文推送,可以掃描左邊二維碼(或者長按識別二維碼)關注個人微信訂閱號

知乎ID:NingHeChuan

微博ID:NingHeChuan

原文地址:http://www.cnblogs.com/ninghechuan/p/6882077.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM