Vivado FPGA 開發 | 創建工程 / 仿真 / 燒錄

注:本文為 “Vivado FPGA 開發 | 創建工程 / 仿真 / 燒錄” 相關文章合輯。

略作重排,未整理去重。
如有內容異常,請看原文。


Vivado 開發流程(手把手教學實例)(FPGA)

不完美先生 于 2018-04-20 11:38:22 發布

歡迎界面

新建工程

打開 Vivado 軟件,在歡迎界面點擊 Create New Project,或在開始菜單中選擇 File - New Project 即可新建工程。

新建工程

點擊 Next

下一步

輸入工程名稱和路徑。

輸入工程信息

選擇 RTL Project,勾選 Do not specify……(這樣可以跳過添加源文件的步驟,源文件可以后面再添加)。

選擇項目類型

根據自己的開發板選擇器件型號,可以直接通過型號進行搜索。例如,Basys3 開發板上的芯片型號為 xc7a35tcpg236-1。如果不了解或者暫時不確定開發板,可以隨便選一個型號,后面需要時再修改。

選擇器件型號

點擊 Finish,項目新建完成。

項目完成

添加 Verilog 設計文件(Design Source)

Project Manager 窗口中,選擇 Source 子窗口,在空白處或任意文件夾上右擊,選擇 Add Sources

添加源文件

選擇 Add or Create Design Sources,點擊 Next

選擇設計文件

點擊 Create File 按鈕,在彈出的小窗口中輸入文件名,點擊 OK

創建文件

可以一次性新建或添加多個文件,最后點擊 Finish

完成添加

稍后會彈出定義模塊的窗口,也就是剛剛添加的 test 文件。可以在這里設置 test 模塊的輸入輸出端口;或者直接點擊 OK,稍后再自行編寫。

定義模塊

點擊 OK 后,如果彈出下面窗口直接點擊 Yes

確認操作

test 文件和對應的模塊即創建完成,如圖。

模塊完成

添加 Verilog 仿真文件(Simulation Source)

操作和上一步添加 Verilog 設計文件基本一致,唯一的區別是選擇 Add or Create Simulation Sources。我們新建一個名為 simu 的仿真文件。

添加仿真文件

設計文件新建完成后,在 Design SourcesSimulation Sources 中都有,而仿真文件只會出現在 Simulation Sources 文件夾中。設計文件可以用于仿真,也可以用于最終燒寫進開發板,而仿真文件僅用于仿真。

文件分類

編寫代碼

打開 test 模塊,編寫代碼實現一個簡單的非門電路如下:

module test (input in,output out
);assign out = ~in;
endmodule

行為仿真(Behavioral Simulation)與 Testbench

為了驗證代碼是否正確,可以對代碼進行行為仿真。我們給上面的 test 模塊輸入端 in 接入一個時鐘信號,則輸出端 out 就會產生一個電平相反的時鐘信號。

行為仿真時,輸入信號可以使用 Testbench 編寫。

如果直接修改 test 模塊,在其中添加 Testbench 代碼,再進行仿真,是一種不太正確的做法。因為 test 模塊是設計文件,后面可能會直接燒寫進板子。進行仿真時添加了 Testbench 代碼,之后再燒寫進板子又得刪掉 Testbench 代碼,這樣容易出現錯誤,而且操作起來也比較麻煩。尤其是接口數量多,內部比較復雜的模塊。

因此,我們將 Testbench 代碼全部寫到仿真文件 simu 中,并在 simu 文件中調用 test 模塊,從而進行仿真。

編寫仿真代碼

simu 模塊中編寫代碼如下:

module simu ();// testbench 時鐘信號reg clk = 0;always #10 clk <= ~clk;// 輸出信號wire out;// 調用 test 模塊test mytest (clk, out);
endmodule

代碼說明

  • reg clk = 0 聲明了一個 reg 信號,并賦初值為 0
  • always #10 clk <= ~clk 為 Testbench 代碼,讓 clk 每隔 10 ns 翻轉一次,產生周期為 20 ns 的時鐘信號。
  • wire out 聲明了一個 wire 信號,用于連接到 test 模塊的輸出。
  • test mytest (clk, out) 調用了前面寫好的 test 模塊,其中 mytest 是模塊名稱,這里的 clkout 分別連接了 mytest 模塊內部的 inout 信號。

這種寫法類似于面向對象的編程語言中,對象的實例化,test 為類名,而 mytest 為對象名稱。同樣,Verilog 中調用模塊時,可以實例化多個 test 對象。

更多 Testbench 的寫法請上網搜索相關資料。

行為仿真

右擊 simu 模塊,選擇 Set as Top,將 simu 模塊設置為仿真時的頂層模塊。頂層模塊類似于 C 編程時的入口函數,即 main 函數。main 函數可以調用其他子函數;類似的,頂層模塊可以調用其他模塊。

設置頂層模塊

Flow Navigator 窗口中點擊 Run Simulation - Run Behavioral Simulation;或者在菜單中選擇 Flow - Run Simulation - Run Behavioral Simulation,即可啟動行為仿真。

啟動仿真

操作技巧

雙擊圖中右側的 Untitled 2 標簽,可以最大化仿真波形窗口。在波形窗口按住 Ctrl 鍵并滾動鼠標滾輪,可以橫向縮放波形;按住 Shift 并滾動鼠標滾輪,可以橫向平移波形。

如圖,可以看出 clk 為周期 20 ns 的時鐘信號,而 outclk 的電平始終相反,即 test 模塊中的非門工作正確。

波形分析

Behavioral Simulation 窗口中的 Scopes 子窗口,根據模塊調用關系選中 mytest,在右側的 Objects 窗口即可看到 test 模塊中所有的信號(包括內部信號,即沒有寫到模塊聲明語句 module (a,b,c) 括號中的信號)。

右擊信號,選擇 Add To Wave Window,可將波形添加到右側的仿真波形窗口,保存仿真文件,再次仿真時就可以看到該信號的波形。

添加波形

對于一些輸出數字信號波形的情況,例如讓 reg [7:0] sine_out 輸出正弦波,仿真后右擊信號,選擇 Waveform Style - Analog,即可以波形的形式查看信號。如圖顯示的就是正弦波信號(注意這里信號本身還是數字信號,并不是模擬信號,只是用軟件顯示出了其幅值隨時間變化的波形)。

正弦波顯示

對于多位信號例如 wire [7:0] p,默認使用二進制形式顯示,可以根據需要修改。例如右擊選擇 Radix - Unsigned Decimal 即可設置為無符號十進制顯示。

信號顯示方式


【FPGA】Vivado 基本開發流程

Louis1874 于 2020-07-22 20:37:25 發布

本文為 FPGA 學習總結,歡迎分享交流。

Vivado 軟件的使用著實讓人頭疼,尤其對于新手來說更是一種折磨。本篇文章通過簡單的 MUX 程序教你快速簡單地掌握 Vivado 基本開發流程。

運行環境

  • Windows 10
  • Vivado 2018.3
  • Modelsim 10.7

創建工程

首先在主頁面點擊 Create Project 創建一個新的工程:

創建工程

然后點擊 Next,默認選擇工程名稱及路徑(路徑中最好不要有中文),再點擊 Next

然后選擇 RTL 工程,勾選 不在此時創建源文件,點擊 Next

選擇項目類型

在這里我們直接輸入器件型號,然后點擊我們需要的型號,點擊 Next

選擇器件型號

然后點擊 Finish。工程的創建到此結束。

主界面

主界面各部分用途見下圖:

主界面

創建源文件

首先點擊 Add Sources,再勾選 添加或創建設計文件,點擊 Next

添加設計文件

首先點擊 Create File 創建文件,在彈出窗口中選擇 Verilog 語言,給文件命名為 mux21a,點擊 OK

創建文件

在第一行就可以看到剛才添加的文件,點擊 Finish

完成添加

在這個窗口中需要定義模塊的輸入和輸出管腳,我們選擇不定義:

定義管腳

這樣就創建好了設計源文件:

源文件完成

編程

將下面的代碼粘貼到 mux21a.v 文件中:

module mux21a (input wire D0,input wire D1,input wire SEL,output wire LED
);assign LED = (~SEL & D0) | (SEL & D1);
endmodule

代碼示例

下面我們還需要創建一個設計源文件作為頂層模塊,創建步驟與上面相同。

創建頂層模塊

將下面的代碼粘貼到 mux21topv.v

module mux21topv (input wire [2:0] sw,output wire led
);mux21a M1 (.D0 (sw [0]),.D1 (sw [1]),.SEL (sw [2]),.LED (led));
endmodule

通過頂層模塊調用 mux21a,可以讓約束文件的信號和二選一多路選擇器模塊的信號相連接。

仿真

完成源文件的創建后,我們就可以進行仿真了。仿真是指在綜合編譯之前對所設計的電路進行基本功能驗證,驗證設計是否滿足需求。在這里我們還需要創建一個仿真文件,首先勾選 創建仿真源文件,點擊 Next

創建仿真文件

后面操作與設計源文件相同,不再贅述。

仿真文件完成

將下面的代碼粘貼到仿真文件中:

module mux21_simulation ();reg D0, D1, SEL;wire LED;mux21a test ( // 實例化二選一多路選擇器模塊.D0 (D0),.D1 (D1),.SEL (SEL),.LED (LED));initial begin // 8 種狀態作為激勵#0 SEL = 0;    // 000D1 = 0;D0 = 0;#100 SEL = 0;    // 001D1 = 0;D0 = 1;#100 SEL = 0;    // 010D1 = 1;D0 = 0;#100 SEL = 0;    // 011D1 = 1;D0 = 1;#100 SEL = 1;    // 100D1 = 0;D0 = 0;#100 SEL = 1;    // 101D1 = 0;D0 = 1;#100 SEL = 1;    // 110D1 = 1;D0 = 0;#100 SEL = 1;    // 111D1 = 1;D0 = 1;#100 $finish;end
endmodule

Testbench 的概念可參考文章 Vivado 仿真。

這時把仿真源文件設置為 top

設置頂層

然后就可以進行仿真了!點擊 Run Simulation 后,點擊 Run Behavioral Simulation 進行仿真:

啟動仿真

點擊 Untitled 1 打開仿真波形窗口,點擊 Zoom Fit 進行可視化,將 SEL 拖拽到第一個,展示出波形如圖:

波形展示

我們對波形進行分析:當 SEL = 0 時,若 D0 = 1,則 LED 輸出高電平;當 SEL = 1 時,若 D1 = 1,則 LED 輸出高電平。仿真結果表明,我們的設計是正確的。

然后我們就可以在 RTL Analysis 中查看原理圖。點擊 Open Elaborated Design,再點 OK

查看原理圖

雙擊 Schematic 打開原理圖窗口,點擊加號可以展開原理圖:

原理圖

原理圖中門電路與硬件描述語言一致:

assign LED = (~SEL & D0) | (SEL & D1);

原理圖代碼

綜合

綜合的過程是由 FPGA 綜合工具箱將 HDL 原理圖或其他形式源文件進行分析,進而推演出由 FPGA 芯片中底層基本單元表示的電路網表的過程。通俗來講,就是將自己的設計映射到 FPGA 中。

點擊左側的 Run Synthesis 進行綜合,點擊 OK

啟動綜合

綜合完成后,查看綜合后的原理圖,點擊 OK,下個彈窗點擊 YES

查看綜合結果

在左側點擊 Schematic 查看綜合后的原理圖:

綜合后原理圖

綜合后的原理圖如下。中間是與器件相關的 LUT

LUT

引腳約束

在綜合后我們就可以進行引腳約束了,即指定 FPGA 的引腳。

首先創建引腳約束文件,其添加方式與前面其他文件相同。勾選 添加引腳約束文件

添加約束文件

Basys3 的引腳約束文件粘貼到 mux21_xdc.xdc 中(見 Basys3 開發板 的設計資源下的 Master XDC-zip):

粘貼約束文件

這里面我們需要的引腳是在 Basys3 上的三個開關和一個 LEDsw [0], sw [1], sw [2] 作為三個輸入,解開對應注釋:

輸入引腳

一個引腳為 U16LED 作為 MUX 的輸出,解開對應注釋:

輸出引腳

此時,我們完成了約束文件的創建。我們可以運行實現,點擊 Run Implementation,再點 OK

運行實現

耐心等待實現成功后會有彈窗提示,點擊 Cancel

實現成功

實現后仿真

FPGA 在門電路形成映射后,需要查看電路的時序分析,是否有產生延時或毛刺,符合要求才能使用。

運行后仿真,點擊 Run Simulation,點擊 Run Post-Implementation Timing Simulation

啟動后仿真

得到后仿真波形圖:

后仿真波形

SEL = 0,若 D0 = 1,則 LED 亮;當 SEL = 1,若 D1 = 1,則 LED 亮。注意在 D0 為高電平時,LED 有時會延遲一會才會亮,此處不明顯。這里的后仿真與前面的行為仿真不同,可能因為硬件原因而出現延遲。

比特流文件

生成比特流文件后,就可以下載到 FPGA 中,完成 FPGA 的配置。

點擊左側 Generate Bitstream 生成比特流文件:

生成比特流文件

成功后會有彈窗,打開硬件管理:

打開硬件管理

點擊 Open target,自動連接:

連接硬件

然后點擊 Program

燒錄程序

這樣就可以將自己的比特流文件下載到 FPGA 中了,隨后可以在 Basys3 開發板上驗證設計是否正確。至此,Vivado 基本開發流程就結束啦。


Vivado 工程創建(從新建到下板)

筱羊冰冰 于 2020-12-17 09:32:20 發布

新建項目

雙擊軟件,注意是三個菱形的快捷方式,有時可能會看到兩個不一樣的 Vivado,選擇第二個。

軟件啟動

然后是:

歡迎界面

選擇一個地址和項目名稱,注意項目名稱和路徑 不要有中文

項目信息

接下來是選擇項目類型,這里注意在 導入不源文件(Do not specify sources at this time) 要選上。

項目類型

然后需要選擇器件類型,也就是使用的 FPGA 板子的類型。按自己的板子選,不要照抄。然后搜索和選項卡的篩選會在這個環節幫你省下不少時間。

選擇器件

然后一路繼續即可。

進入界面

主界面

首先是 source 框,其中有三項是我們經常使用的。

  • 第一部分的藍筆:是我們寫程序的地方。
  • 黃色熒光筆部分:是約束文件,是連接主文件的輸入輸出和板子上的管腳連接的重要部分。
  • 紅色部分:是仿真文件,用于驗證代碼是否正確。

注意:仿真和最后的綜合和實現不大一樣,仿真沒問題不代表綜合和實現過程中會順利完成。

然后是 source 右側的代碼區,下面是控制臺和報錯提示(有一些沒有用的報錯直接用垃圾箱按鍵刪除即可,能刪掉的都是沒用的)。

最左邊是項目需要使用的一些流程。

添加源代碼

設計(design)、仿真和約束文件的創建方式基本相同,注意以下幾點:

  • 右鍵點擊 source(表示三種 source 中的一個)。
  • 一定要確定好自己要選擇的文件類型,有時在對應文件類型下的選項并不是當前的文件類型(可能有一點繞,但遇到了就懂了)。

添加文件

點擊加號,選擇 Create File,然后為其命名。

創建文件

這樣就創建好了:

文件創建完成

點擊 Finish 后會有一個彈窗,這是讓你選擇文件的管腳等信息。因為我們有 約束文件,所以直接關閉即可。

每一種文件的類型在后續小項目中會進行介紹,這里不做贅述。

其他功能(左側功能介紹)

仿真

仿真可以在一定程度上判斷程序的運行是否正確,雖然本文沒有關于仿真文件寫法的講述,但還是要介紹這個主要功能的使用。

我們有一個叫 a 的 design 模塊,仿真文件 調用了這個模塊,所以在仿真區中可以看到 a_sim(仿真文件)下面顯示的子文件為 a

仿真文件結構

點擊 Run Simulation(左邊藍色部分)。

啟動仿真

仿真開始后,我們會看到這樣的界面:

仿真界面

最左邊的一條是整個工程文件中的設計文件(design),中間框是對應的文件中的變量(輸入輸出變量和中間變量都有),右邊是仿真文件產生的波形,通過這個就能看到程序的運行。

設置中可以調整輸出的進制(其實也可以在左側的 swled 中一個個右鍵調整)。

調整進制

上面的一行是一些功能,介紹一些常用的:

  • 播放鍵:表示運行,需要點擊 暫停鍵 截止。
  • 播放鍵右下角有 m 標記的按鍵:定時運行,到時間就自動停止,在它右邊是設置時間。
  • 黃色熒光筆按鍵:將整個波形安排在一個窗口上。
  • 紅筆的位置:將當前位置調整到開始 / 結束。
  • 黑筆部分:一個變量波形的下一個 / 上一個變化位置,例如當前 sw63,點擊 “上一個” 就能達到上一個值的位置。
  • 藍筆:添加光標位置,這樣就可以用兩條線來測量時間(在物理儀器中確實蠻常用的)。

仿真功能鍵

在關閉仿真時(點擊圖示的位置),會提示你要不要保存仿真波形,如果有需要就保存一下,但會導致整體文件變大很多。

保存波形

綜合

接下來部分就是下板三件套了,如果我們希望將一個文件真正的在板子上運行,對你按下的按鍵或者是撥碼開關有反應,那么接下來的步驟就是不可或缺的。

(按照順序,黃色熒光筆依次為綜合、實現和生產比特流,實際應用也是按照這個順序來進行)

下板流程

綜合:將高級抽象層次的語言描述轉化成較低層次的電路結構。

我們一定要知道,FPGA 的含義(百度百科截圖):

FPGA 定義

我們在編程的過程中,盡管有幾種不同層次的書寫方式,但這種語言還是屬于一種高級語言,也就是說我們可以只寫代碼,讓軟件幫我們設計電路圖。

(這也是為什么仿真過了有時候下板還是不對,實際的電路圖可能因為書寫不規范產生一些問題導致)

言歸正傳,這里還有一個查看管腳分配(個人暫且還沒用上):

(在綜合和實現之間的 RTL ANALYSIS,點擊 Open Elaborated Design

查看管腳分配

實現 & 生產比特流

這兩個步驟和上面基本一致,只要進行點擊即可,重點是 一定要好好看看彈出的 warning!有時可能確實能生成比特流,但結果并不滿意,這時這些報錯就很重要了。

下板

當生產比特流成功,會有這樣的彈窗,按照圖片選擇打開硬件。

打開硬件

連接方式:(注意一定要先打開板子的電源)

  • 這種比較快:

    快速連接

  • 這種是在操作欄里面尋找,在左下角 open target

    操作欄連接

然后在選中的部位右鍵,選擇 Program Device,彈出窗口。選擇繼續。

燒錄程序

然后我們的板子就讀入比特流,實現了按照我們編程的內容進行工作。

其他細節

快速實現下板三件套

快速操作

在快捷欄里面就有,甚至如果你直接點擊比特流,會提醒你沒有綜合、實現,然后按照提示進行點擊直接一步到位。

報錯在這里,旁邊還有控制臺

報錯信息

更改背景顏色

更改背景

這里面有很多項可以修改,按照自己的意愿就好,如果有選擇困難就上網找一個博客,挑一個搭配好的顏色,個人的調色多少沾點陰間就不展示了。

改完了記得 save as……

最后介紹一下項目的文件構成

項目文件

選中處可以直接打開項目,不需要通過 Vivado;

直接打開項目

這里面是項目源碼,source 是源文件,sim 是仿真文件,應該還有一個 constrs_1 文件夾,是約束文件(這里在舉例子的時候沒寫)。

文件分類

這個 sim 是存放項目中仿真波形圖的,之前提到過那個可能會導致整個項目變大的波形圖。如果是自己可以考慮留一部分,如果是傳遞文件這部分還是省了吧。(之前見過一個仿真波形圖文件達到 600M 的,如果跑的時間長確實很占空間)

有一些應該還有一個 .runs 文件夾的,這里面能找到你生成的比特流文件。(截圖是另一個項目的)

比特流文件

如果 沒有按照提示的順序來 或者是 用錯了板子導致生成了兩份綜合實現文件,軟件就可能不會自己為你找到 bit 文件的位置,就需要在框中自己選擇 bit 文件。

選擇 bit 文件


Vivado 開發 FPGA 使用流程、教程 Verilog(建立工程、編譯文件到最終燒錄的全流程)

xingxing 點燈 已于 2023-08-10 20:15:31 修改

一、概述

Vivado 開發 FPGA 流程分為創建工程、添加設計文件、編譯、線上仿真、布局布線(添加約束文件)、生成比特流文件、燒錄等步驟,下文將按照這些步驟講解 Vivado 從創建工程到程序燒錄到 FPGA 里的操作流程。

二、工程創建

打開 Vivado 軟件后,出現下圖:

歡迎界面

選擇 Create Project 后,出現下圖:

創建工程

選擇 Next 后,出現下圖:

下一步

Project Name 中修改文件名稱(名稱和路徑最好不要有中文),然后點擊 Next,出現下圖:

輸入工程信息

繼續點擊 Next,出現下圖:

選擇項目類型

文件的添加和創建后面可以進行,這里可以直接點擊 Next,然后出現下圖:

添加文件

約束文件后面也可以添加,所以繼續點擊 Next,出現下圖:

添加約束文件

選擇對應的 FPGA 的型號以后點擊 Next,出現下面的總結圖:

工程總結

點擊 Finish,空的工程就創建完畢了。

三、添加設計文件并編譯

空的工程創建完畢后,如下圖所示,點擊 ? 按鈕,添加 Verilog 文件。

添加文件

然后在下圖中,我們現在在創建設計文件,所以默認的第二個就好,然后點擊 Next

選擇文件類型

然后出現下圖:

創建文件

這里點擊 Create File,有的 Vivado 會出現下面的圖片,有的不出現,如果出現下面的圖片,起一個名字,創建 Verilog HDL 文件(也可以點擊 Add Files,添加已有文件,這里以創建新的文件為例)。

文件命名

選擇名字和文件位置,然后點擊 OK,位置默認情況會放在工程文件夾下,點擊 OK,出現下圖:

文件創建成功

上圖表示一個設計文件已經添加成功了,然后可以繼續上述創建文件的操作,直到創建完畢,然后點擊 Finish,出現下圖:

完成添加

點擊 OK,出現下圖:

確認操作

點擊 Yes,此時一個空的文件就創建好了,然后寫 Verilog 代碼(可以在 Vivado 里編輯,也可以在其他的文字編輯器,諸如 VSCode、Notepad++、電腦自帶的 txt 文本等進行代碼編輯,具體用什么進行編輯這里不再贅述)。下圖是代碼已經寫完的情況:

代碼完成

寫完代碼以后,就要進行編譯操作了,點擊左側導航欄的 Run Synthesis 進行編譯,這個編譯在哪可以參考下圖:

啟動編譯

然后出現下圖,點擊 OK

確認編譯

此時正在進行編譯操作(具體 Vivado 編譯、布局布線、生成比特流文件都是什么意思,有什么意義,這里不再贅述,本文主要是講解 Vivado 開發 FPGA 的操作流程,流程的意義不再贅述),編譯是否完成可以在下圖所示的位置查看:

編譯狀態

編譯成功后,有的會出現下圖所示的提示,有的不會出現,出現的話可以點 × 關掉這個提示框(編譯不成功會報錯,此時說明代碼有問題,具體如何解決代碼中出現的問題本文不再贅述),此時編譯已經結束,說明 Verilog 代碼沒有出現語法上的錯誤。

編譯成功

四、線上仿真

三的操作只是寫了代碼,并且代碼沒有語法錯誤,但并不代表代碼的功能也和預期一樣,此時需要進行功能驗證,也就是進行線上仿真。

第一步還是添加文件,三里添加的是設計文件,這次要添加仿真文件,也叫 tb 文件,還是點擊 +,然后選擇第三個選項(仿真文件),如下圖所示:

添加仿真文件

具體點了 Next 以后怎么操作參考三里怎么添加的設計文件,流程一模一樣,只是一個添加的是設計文件,一個添加的是仿真文件,這里不再贅述。

同樣,仿真文件添加完以后要寫對應的代碼,代碼寫完以后進行仿真,具體點哪里進行仿真可以參考下圖:

啟動仿真

如果報錯,說明 tb 文件寫的有問題,沒問題會出現下圖的仿真界面:

仿真界面

然后出現的仿真界面觀察波形是否有問題,藍色代表高阻態,紅色代表未知態,綠色代表邏輯 01,具體仿真界面的操作本文不再贅述,仿真沒有問題以后,說明代碼現在不僅沒有語法錯誤,功能同樣也沒有錯誤。

五、布局布線

現在代碼沒有語法錯誤、功能錯誤,就可以考慮布局布線了,把具體的輸入、輸出映射到 FPGA 對應的引腳上,操作如下所示:

點擊左側導航欄的 Run Implementation,讓 Vivado 先自動進行布局布線,點哪里可以參考下圖:

啟動布局布線

等待一段時間,成功以后出現下面的框:

布局布線成功

可以 × 掉上面的框,在左側導航欄打開 Open Implemented Design,也可以點擊上圖的 Open Implemented 后點擊 OK

打開布局布線設計以后,出現下面的圖:

布局布線設計

上圖選擇 I/O ports,如果找不到,就點擊 layout,再點擊 I/O Planning(注意,只有 open implementation 時才可以在 layout 里找到 I/O Planning)。

然后如下圖,點擊 scalar ports,進行引腳約束:

引腳約束

在上圖里,在 Scalar ports 更改端口的位置(Package Pin)、以及電壓標準(I/O Std)。

具體設置到什么端口看原理圖,電壓標準大多數時候選擇 LVCMOS33 就好,只有差分等特殊情況選擇別的電壓標準,這里不再介紹如何查看原理圖,不同電壓標準的區別。

然后端口、電壓標準等設置好以后,鍵盤按 Ctrl + S 進行約束文件的保存(約束文件里就是剛才對引腳、電壓標準等的約束)。

現在,我們設計文件、仿真文件、約束文件就都寫好了,可以看一下下面的圖:

文件結構

這就是剛才我們創建的設計文件、仿真文件、約束文件,然后再點一次 Run Implementation,因為我們更改了約束文件,所以重新進行一下編譯和布局布線操作,具體的對話框的提示都很簡單,大概意思就是文件已經改變了是否重新編譯這種意思,點擊 Yes 重新編譯、布局布線就好了,然后布局布線在這里也就結束了。

六、生成比特流文件

現在已經可以生成比特流文件了(這個文件就是燒錄到 FPGA 里的文件),點擊左側的 Generate Bitstream,如下圖所示:

生成比特流文件

點一些框的 OKYes 之類的,然后生成比特流文件成功(如果不成功,考慮是約束文件的問題,這里不再對約束文件進行太過詳細的解釋,可以百度約束文件的作用,然后查看自己剛才保存的約束文件是否有問題,通常 Ctrl + S,如果有默認的沒有改變的引腳號,它不會保存在約束文件里,自己添加即可)。

七、燒錄

接下來就是燒錄操作了,點擊左側導航欄的 Open Hardware Manager,然后點擊 Open Target 然后點擊 Auto Connect 進行連接,如下圖所示:

硬件連接

然后點擊 Program Device 選擇型號:

選擇設備

出現下圖,直接點 Program 即可:

燒錄程序

現在文件就可以燒錄到 FPGA 里了,觀察上板后的情況即可。


via:

  • vivado工程創建(從新建到下板)_vivado怎么新建工程-CSDN博客
    https://blog.csdn.net/rebortt/article/details/111304264_

  • Vivado開發FPGA使用流程、教程 verilog(建立工程、編譯文件到最終燒錄的全流程)_vivado燒寫程序步驟-CSDN博客
    https://blog.csdn.net/weixin_45676874/article/details/132215573

  • Vivado 開發流程(手把手教學實例)(FPGA)_vivado設計流程示例-CSDN博客
    https://blog.csdn.net/Gentleman_Qin/article/details/80016273

  • 【FPGA】Vivado 基本開發流程_vivado設計流程-CSDN博客
    https://blog.csdn.net/weixin_44413191/article/details/107522317

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/79670.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/79670.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/79670.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【PINN】DeepXDE學習訓練營(13)——operator-antiderivative_aligned.py

一、引言 隨著人工智能技術的飛速發展&#xff0c;深度學習在圖像識別、自然語言處理等領域的應用屢見不鮮&#xff0c;但在科學計算、工程模擬以及物理建模方面&#xff0c;傳統的數值方法仍然占據主導地位。偏微分方程&#xff08;Partial Differential Equations, PDEs&…

NPP庫中libnppc模塊介紹

1. libnppc 模塊簡介 libnppc 是 NVIDIA Performance Primitives (NPP) 的 核心基礎模塊,提供跨模塊的通用數據類型、內存管理和基礎運算功能,不直接實現圖像或信號處理算法,而是為其他模塊(如 libnppi、libnpps)提供支持。 主要功能包括: 基礎數據類型定義(如 Npp8u、…

#基于PCL的多平面分割系統技術文檔

多平面分割系統技術文檔 一、數據結構定義 /*** @brief 平面分割結果結構體* @param coefficients 平面方程系數(ax+by+cz+d=0)* @param cloud 屬于該平面的點云子集* @param centroid 平面質心坐標(齊次坐標)* @param plane_id 平面編號(主平面為1)*/ struct PlaneSegmentRes…

PyTorch_張量拼接

張量的拼接操作在神經網絡搭建過程中是非常常用的方法&#xff0c;例如&#xff1a;殘差網絡&#xff0c;注意力機制中都使用張量拼接。 torch.cat 函數的使用 可以將兩個張量根據指定的維度拼接起來。 import torch import numpy as np def test01():data1 torch.randint(…

【SQL觸發器、事務、鎖的概念和應用】

【SQL觸發器、事務、鎖的概念和應用】 1.觸發器 (一)觸發器概述 1.觸發器的定義 觸發器(Trigger)是一種特殊的存儲過程,它與表緊密相連,可以是表定義的一部分。當預定義的事件(如用戶修改指定表或者視圖中的數據)發生時,觸發器會自動執行。 觸發器基于一個表創建,…

設計模式每日硬核訓練 Day 17:中介者模式(Mediator Pattern)完整講解與實戰應用

&#x1f504; 回顧 Day 16&#xff1a;責任鏈模式小結 在 Day 16 中&#xff0c;我們學習了責任鏈模式&#xff08;Chain of Responsibility Pattern&#xff09;&#xff1a; 將請求沿鏈傳遞&#xff0c;節點可選擇處理或傳遞下一節點。實現了請求發送者與多個處理者的解耦…

如何提升個人情商?

引言 提升個人情商&#xff08;EQ&#xff09;是一個持續的自我修煉過程&#xff0c;涉及自我認知、情緒管理、人際溝通等多個方面。以下是一些具體且可實踐的方法&#xff0c;幫助你逐步提升情商&#xff1a; 一、提升自我覺察能力 1. 記錄情緒日記 每天回顧自己的情緒…

STM32Cube-FreeRTOS任務調度與任務管理-筆記

STM32Cube-FreeRTOS任務調度與任務管理-筆記 一、任務調度機制1.1 調度算法類型 二、搶占式調度實現與分析2.1 時間片輪轉機制2.2 調度觸發條件2.3 搶占式調度例子 三、合作式調度實現3.1 核心邏輯3.1 合作式調度例子 四、任務管理函數詳解4.1 任務創建4.1.1 動態創建任務4.1.2…

對稱加密算法(AES、ChaCha20和SM4)Python實現——密碼學基礎(Python出現No module named “Crypto” 解決方案)

文章目錄 一、對稱加密算法基礎1.1 對稱加密算法的基本原理1.2 對稱加密的主要工作模式 二、AES加密算法詳解2.1 AES基本介紹2.2 AES加密過程2.3 Python中實現AES加密Python出現No module named “Crypto” 解決方案 2.4 AES的安全考量 三、ChaCha20加密算法3.1 ChaCha20基本介…

MATLAB圖像加密案例

下面是一個使用 MATLAB 編寫的簡單圖像塊置亂加密/解密程序,主要利用了函數來組織代碼。 這個程序通過將圖像分割成小塊,然后根據一個密鑰(用于隨機數生成器種子)打亂這些塊的順序來實現加密。解密過程則使用相同的密鑰恢復原始塊順序。 核心思想: 分塊: 將圖像劃分為 …

阿里云服務器全棧技術指導手冊(2025版)

阿里云服務器全棧技術指導手冊&#xff08;2025版&#xff09; 一、基礎配置與核心架構設計 1. 精準實例選型策略 ? 通用計算場景&#xff1a;選擇ECS通用型&#xff08;如ecs.g7&#xff09;實例&#xff0c;搭載第三代Intel Xeon處理器&#xff0c;適合Web應用、中小型數…

word批量轉pdf工具

word批量轉pdf工具 圖片 說到了辦公&#xff0c;怎能不提PDF轉換哦&#xff1f; 這是一款一鍵就可以批量word轉換為PDF的小工具&#xff0c;簡直是VB界的一股清流。 圖片 操作簡單到不行&#xff0c;只要把需要轉換的word文件和這個工具放在同一個文件夾里&#xff0c;雙擊…

C++類_協變返回類型

協變返回類型定義 在 C11 中&#xff0c;協變返回類型是指在基類和派生類的虛函數重寫時&#xff0c;派生類中重寫的虛函數的返回類型可以是基類中對應虛函數返回類型的派生類型。也就是說&#xff0c;當基類的虛函數返回一個基類指針或引用時&#xff0c;派生類中重寫該虛函數…

補充:建立實體類與數據表的映射關系

目錄 前言 1 成員變量數據類型和字段類型 保持對應 2 成員變量的變量名&#xff0c;應采用小駝峰命名法 3 數據表中的主鍵如id 應采用自增方式 4 數據表中的時間類型數據與實體類中的時間類型的變量無法實現自動映射可以使用JsonFormat 注解 4.1 配置全局時間處理器&#x…

HTML/CSS 魔法第二彈:會逃跑的調皮按鈕(懸停自動閃避)

引言 在網頁設計中&#xff0c;交互性是吸引用戶的關鍵因素之一。普通的按鈕在用戶懸停時可能只是顏色或樣式發生改變&#xff0c;但今天我們要創造一個 “調皮” 的按鈕&#xff0c;當用戶鼠標懸停在上面時&#xff0c;它會自動閃避&#xff0c;仿佛在和用戶玩游戲。本文將詳…

**Java面試:技術大比拼**

互聯網大廠Java面試&#xff1a;一場嚴肅與搞笑交織的技術拷問 場景&#xff1a;互聯網大廠面試間 面試官&#xff08;嚴肅&#xff09;&#xff1a;請坐。馬小帥&#xff0c;我們今天主要考察一下你在Java技術棧上的掌握程度&#xff0c;以及如何將這些技術應用于實際業務場景…

25考頻高的前端面試題

請求失敗會彈出一個toast&#xff0c;如何保證批量請求失敗&#xff0c;只彈出一個toast 設置全局標志位&#xff0c;定義一個全局變量&#xff08;如isToastShown)來表示是否已經彈出過toast。在請求失敗的處理邏輯中&#xff0c;首先檢查該標志位。如果尚未彈出toast&#xf…

命令模式(Command Pattern)詳解

文章目錄 1. 什么是命令模式?2. 為什么需要命令模式?3. 命令模式的核心概念4. 命令模式的結構5. 命令模式的基本實現5.1 簡單的燈光控制示例5.2 家電控制示例6. 帶有撤銷功能的命令模式6.1 修改命令接口6.2 實現可撤銷的燈光命令6.3 實現可撤銷的風扇命令6.4 修改調用者,支持…

《Vue3學習手記8》

vue3中的一些API shallowRef ( ) 和shallowReactive ( ) shallowRef (淺層響應式) 1.作用:創建一個響應式數據&#xff0c;但只對頂層屬性進行響應式處理。 2.用法: const originalref(...) const original2shallowRef(original) 3.特點:只跟蹤引用值的變化&#xff0c;不關心…

雙列集合——map集合和三種遍歷方式

雙列集合的特點 鍵和值一一對應&#xff0c;每個鍵只能對應自己的值 一個鍵和值整體稱為鍵值對或鍵值對對象&#xff0c;java中叫做entry對象。 map常見的api map接口中定義了雙列集合所有的共性方法&#xff0c;下面三個實現類就沒有什么額外新的方法要學習了。 map接口…