Xilinx 7A 開發流程——工程模式 ARTY XC7A35T

Xilinx 7A 開發流程——工程模式
ARTY XC7A35T

在這裏插入圖片描述
一、新建工程

1、 Create Project–Next
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

二、設計文件輸入
Flow Navigator–Project Manager–add sources或Sources窗口的 在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
Ok—Finish

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

雙擊flowing_light(flowing_light.v),右側編輯窗口打開flowing_light.v,會自動生成一個module,
下一步編寫代碼
在這裏插入圖片描述

`timescale 1ns / 1ps //1個時間(時延)單位爲1ns,精度爲1ps.
module flowing_light(
input clk,
input rst,
output [3:0] led
);
reg [23:0] cnt_reg;
reg [3:0] light_reg;

always @(posedge clk)
    begin
        if(rst)
            cnt_reg<=0;
        else
            cnt_reg<=cnt_reg+1;
    end
always @(posedge clk)
    begin
        if(rst)
            light_reg<=4'b0001;
        else if(cnt_reg==24'hffffff)
            begin
                if(light_reg==4'b1000)
                    light_reg<=4'b0001;
                else
                    light_reg<=light_reg<<1;
            end
     end
 assign led = light_reg;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

endmodule
三、RTL詳細描述和分析
詳細描述(Elaboration)是指將RTL優化到FPGA技術,Vivado集成開發環境允許實現下面的功能。
1)、設計者導入和管理RTL源文件,包括Verilog、System Verilog、VHDL、NGC(The ISE Netlist format),或者測試平臺文件。
2)、通過RTL編輯器創建和修改源文件。
3)、源文件試圖。
a) 層次:以層次化的形式顯示設計中的模塊
b) 庫:以目錄的形式顯示源文件
在基於RTL的設計中,詳細描述是第一步。當打開一個詳細描述的RTL設計時,Vivado集成環境編譯RTL源文件,並且加載RTL網表,用於交互式分析。設計者可以查看RTL結構、語法和邏輯定義。分析和報告能力包括:
 RTL編譯的有效性檢查和語法檢查
 網表和原理圖研究
 設計規則檢查
 使用一個RTL端口列表的早期I/O引腳規劃
 可以在一個視圖中選擇一個對象,然後在其他視圖中交叉檢測包含在RTL內定義的實例和邏輯定義
RTL詳細描述的實現
① 在“Sources”窗口下,選擇flowing_light.v文件
② 展開Vivado左側的“Flow Navigator”(流程管理)窗口中的“RTL ANALYSIS”選項
③ 在展開的選項中單擊“Open Elaborated Design”,vivado 開始運行“Elaborated Design”過程,該過程提供了下面選項
 Report Methodology 運行設計方法學檢查,以發現當前設計中的錯誤或問題
 Report DRC 運行設計規則檢查,並報告檢查結果
 Report Noise 基於XDC文件,在設計上檢查SSD(同時開關輸出)
 Schematic 打開原理圖
④ 自動打開Pakeage界面,如圖所示
在這裏插入圖片描述

四、添加約束文件
添加約束文件,有兩種方法可以添加約束文件,一是利用vivado中IO planning功能,二是可以直接新建XDC的約束文件,手動輸入約束命令。
a、 利用IO planning
第三步完成後,vivado右上角的下拉框中自動爲I/O Planning
或在主菜單中選擇Layout–I/O planning,在窗口下面出現I/O Ports
根據原理圖的添加管腳、電壓信息

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

led[0]: LED4—IO_L24N_T3_35(H5)
led[1]: LED5—IO_25_35(J5)
led[2]: LED6—IO_L24P_T3_A01_D17_14(T9)
led[3]: LED7—IO_L24N_T3_A00_D16_14(R10)
clk : E3
rst:BTN0 D9
電壓爲3.3V
在這裏插入圖片描述

    Scalar ports (標量端口),位寬爲1
  • 1

器件屬性對於生成比特流,以及後續的FPGA配置過程都有影響。
設置BANK的預設電壓:Tools—Edit Device Properties
在這裏插入圖片描述

Configuration 設置如下

在這裏插入圖片描述

點擊保存按鈕,彈出以下對話框,我們要Create a new file,輸入File name --OK
在這裏插入圖片描述

此時,在Sources 下Constraints 中會找到新建的xdc文件
在這裏插入圖片描述

xdc語句已經加載到xdc文件中

在這裏插入圖片描述

b、 利用第二種方法添加約束文件
點擊Add Sources,選擇第一項 Add or Create Constraints,點擊Next
點擊Create File,新建一個XDC文件,輸入xdc文件名,點擊OKFinish
雙擊打開建好的xdc文件,並按照相應規則,輸入相應的FPGA管腳約束信息和電平標準
五、利用vivado進行功能仿真
1、 創建激勵測試文件,在Simulation Sources中右鍵選擇Add Source,選擇add or create simulation sources
在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

點擊Create File 創建一個仿真激勵文件

在這裏插入圖片描述

確認添加完之後點擊finish,因爲是激勵文件不需要對外端口,所以port 部分直接空着,點擊OK
在這裏插入圖片描述

在Sources下的Simulation Sources下的sim_1下
雙擊test(test.v),完成對將要仿真的module的實例化和激勵代碼的編寫
`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 2021/01/07 17:42:20
// Design Name:
// Module Name: test
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//

module test();

reg clk;
reg rst;
wire[3:0] led;
flowing_light u0(
.clk(clk),
.rst(rst),
.led(led)
);

parameter PERIOD = 10;

always begin
clk = 1’b0;
#(PERIOD/2)
clk=1’b1;
#(PERIOD/2);
end

initial begin
clk = 1’b0;
rst = 1’b0;
#100;
rst = 1’b1;
#100;
rst = 1’b0;
end
endmodule
保存,此時進入仿真,在左側的Flow Navigator 中點擊Simulation 下的Run Simulation 選項,並選擇Run Behavioral Simulation(行爲仿真) 一項,進入仿真界面。

在這裏插入圖片描述
在這裏插入圖片描述

六、設計綜合和分析
綜合是將RTL級的設計描述轉換成門級的描述。在該過程中將進行邏輯優化,並且映射到Xilinx 器件原語(也稱爲技術映射)
Vivado集成環境綜合是基於時間驅動的,專門爲存儲器的利用率和性能進行了優化。
 在綜合過程中,使用XDC約束驅動綜合優化,因此必須存在XDC文件(第四步已經初步生成/建立XDC文件)
 時序約束考慮,首先進行綜合設計,但沒有用於約束編輯器的時序約束;綜合時,可以使用約束嚮導初步定義時序約束。
 綜合設置提供了對額外選項的訪問
 當打開被綜合的設計後,注意設計流程管理器的變化。通過設置調試點,這樣允許將調試特性集成在vivado環境中。
設計綜合選項
在Flow Navigator 窗口下,選中SYNTHESIS,單擊鼠標右鍵,下拉菜單中執行Synthesis Settings,彈出綜合屬性設置對話框
在這裏插入圖片描述

通過“Default constraint set”下拉框,可以選擇用於綜合的多個不同的設計約束集合。一個約束集合又是多個文件的集合,它包含XDC文件中用於該設計的約束條件。有兩種類型的設計約束,物理約束和時序約束。
物理約束:定義了引腳的位置和內部單元的絕對或相對位置。內部單元包括塊RAM、LUT、觸發器和器件配置設置。
時序約束:定義了設計要求的頻率。如果沒有時序約束,viviado只對佈線長度和佈局阻塞進行優化。
通過“Options”區域“Strategy”(策略)的下拉框,可以選擇用於運行綜合的預定義綜合策略。設計者可以定義自己的策略。
執行設計綜合
Flow Navigator—SYNTHESIS—Run Synthesis
完成綜合後打開綜合設計Open Synthesized Design
在這裏插入圖片描述

展開左側Open Synthesized Design選項
① Constraints Wizard
② Edit Timing Constraints
③ Set up Debug
④ Report Timing Summary
⑤ Report Clock Networks
⑥ Report Clock Interaction
⑦ Report Methodology
⑧ Report DRC
⑨ Report Noise
⑩ Report Utilization(利用率)
⑪ Report Power
⑫ Schematic
打開原理圖
在這裏插入圖片描述

IBUF 輸入緩衝器
OBUF 輸出緩衝器
LUT 查找表
FDRE D觸發器 D flip flop with clock enable and synchronous reset
CARRY4 進位邏輯鏈

七、添加時序約束
在綜合完成後選擇Open Synthesis Design,或者從Flow Navigator 中選擇Open Synthesis Design

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

選擇Open Synthesized Design–Edit Timing Constraints

打開時序約束界面開始進行時序約束
雙擊Clock–Create Clock(0)
在這裏插入圖片描述

編輯一個Clock name
然後點擊Source objects 的索引圖標

在這裏插入圖片描述

在這裏插入圖片描述

點擊Find按鈕,把clk從左側框移至右側,點擊set

在這裏插入圖片描述

時鐘輸入是100MHz, T=10ns,窗口中的數據是一個週期。在0ns時上升沿,在5ns處下降沿。則clk是以50%爲佔空比的100MHz的頻率。將Command 中create_clock -period 10.000 -waveform {0.000 5.000} [get_ports clk]複製,OK後將複製的command,添加到XDC文件末尾。Ctrl+S保存

設置Input Delay
雙擊InputSet Input Delay

Clock選擇clk_pin,Objects 選擇rst,Delay選擇0ns –>OK

再次雙擊InputSet Input Delay

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

OK
同樣設置Output Delay
在這裏插入圖片描述
在這裏插入圖片描述

先點擊Apply
然後fileConstraintsSave
這時,打開Sources 界面可以看到約束已經寫入XDC文件了
在這裏插入圖片描述

點擊Reload
在這裏插入圖片描述

在FlowNavigator 中選擇SYNTHSISOpen Synthesized DesignReport Timing Summary,並將Option 標籤裏Path delay type 設置成min_max

在這裏插入圖片描述
在這裏插入圖片描述

在完成時序報告後,大家可以在報告中看到Hold 下的地方顯示紅色,即時序約束後,需求沒有滿足。然後在進行Implementation的時候,vivado會自動優化佈線路徑,來滿足用戶設定的約束時間。如果在Implementation中還是顯示無法滿足,則需要分析電路進行進一步約束。
八、設計實現與分析
Vivado 集成開發環境的實現處理過程包括對設計的邏輯和物理轉換。
Vivado 工具實現流程,Tcl命令
link_design 對設計進行翻譯,應用約束文件
opt_design 對邏輯進行優化,使其容易適配到目標Xilinx 器件
power_opt_design 對設計元素進行優化,以降低目標Xilinx器件的功耗要求
place_design 在目標Xilinx器件上對設計進行佈局
phys_opt_design 對高扇出網絡驅動器進行復制,對其負載進行分散,即降低高扇區負載量,以優化設計時序
route_design 在目標Xilinx器件上對設計進行佈線
report_timing_summary 分析時序,並生成時序分析報告‘
write_bitstream 生成比特流文件
設置實現選項
Flow Navigator—IMPLEMENTATION
右鍵選則Implementation Settings…
在這裏插入圖片描述
在這裏插入圖片描述

各優化策略功能描述
vivado Implementation Default 平衡運行時間,努力實現時序收斂
Performance_Explore 使用多個算法進行優化、佈局和佈線,爲了得到潛在的較好的優化結果
。。。
各選項Options 功能描述
Design Initialization(init_design)
Opt Design(opt_design) 用戶控制邏輯優化過程
Power Opt Design(power_opt_design) 控制功耗優化過程
。。。
設計實現和分析
Flow navigator—IMPLEMENTATION—Run Implementation
設計實現完成後彈出Implementation Completed 對話框,選中打開實現後的設計
在這裏插入圖片描述

在右側窗口中出現Device窗口顯示器件的結構圖。
可以顯示佈線資源,綠色線顯示,放大查看
在這裏插入圖片描述

在Open Implemented Designed 下拉菜單中有一些報告文件,在窗口下面也有一個Reports窗口,裏面也有一些報告。可供查看。
靜態時序分析
九、設計時序仿真
時序仿真和行爲級仿真最大的不同點在於時序仿真有標準的延遲格式(Standard Delay Format,SDF)的信息,而行爲級仿真不帶有時序信息,毛刺和競爭冒險等時序問題都會表現在設計時序仿真中。
在Sources窗口中選中test.v 文件
Flow Navigator—SIMULATION—Run Simulation
在Simulation 菜單中選則Run Post-Implementation Timing Simulation(運行實現後的時序仿真)
在這裏插入圖片描述

十、生成編程文件
在Flow Navigator 中點擊 Program and Debug下的Generate Bitstream 選項
在這裏插入圖片描述

Open Target
Program Device

在這裏插入圖片描述

十一、寫入配置flash
在這裏插入圖片描述

右鍵xc7a35t_0(1),選擇Add Configuration Memory Device

選擇電路板上的flash,上一步已經生成 了要用的bin文件

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

總結,Xilinx 7A 開發流程
新建工程
設計源文件輸入verilog HDL、VHDL。。。
RTL詳細描述和分析
XDC約束—IO規劃
行爲仿真
綜合
時序約束
實現
時序仿真
編程和調試
外部memory 下載程序

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章