<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

AMD Versal AI Edge自適應計算加速平臺之PL LED實驗(3)

ALINX ? 來源:ALINX ? 2024-03-22 17:12 ? 次閱讀

實驗Vivado工程為“led

對于Versal來說PL(FPGA)開發是至關重要的,這也是Versal比其他ARM的有優勢的地方,可以定制化很多ARM端的外設,在定制ARM端的外設之前先讓我們通過一個LED例程來熟悉PL(FPGA)的開發流程,熟悉Vivado軟件的基本操作,這個開發流程和不帶ARM的FPGA芯片完全一致。

在本例程中,我們要做的是LED燈控制實驗,每秒鐘控制開發板上的LED燈翻轉一次,實現亮、滅、亮、滅的控制。

1.1 LED硬件介紹

開發板的PL部分連接了1個紅色的用戶LED燈。這1個燈完全由PL控制。如果PL_LED1為高電平,三級管導通,燈則會亮,否則會滅。

db17b8f0-e82b-11ee-a297-92fbcf53809c.png

1.2創建Vivado工程

(1).啟動Vivado,在Windows中可以通過雙擊Vivado快捷方式啟動 (2).在Vivado開發環境里點擊“Create New Project”,創建一個新的工程。

db221494-e82b-11ee-a297-92fbcf53809c.png

(3).彈出一個建立新工程的向導,點擊“Next”

db38c004-e82b-11ee-a297-92fbcf53809c.png

(4).在彈出的對話框中輸入工程名和工程存放的目錄,我們這里取一個led的工程名。需要注意工程路徑“Project location”不能有中文空格,路徑名稱也不能太長。

db4a1e6c-e82b-11ee-a297-92fbcf53809c.png

(5).在工程類型中選擇“RTL Project”

db57bb12-e82b-11ee-a297-92fbcf53809c.png

(6).目標語言“Target language”選擇“Verilog”,雖然選擇Verilog,但VHDL也可以使用,支持多語言混合編程。

db6da1f2-e82b-11ee-a297-92fbcf53809c.png

(7).點擊“Next”,不添加任何文件

db7ac044-e82b-11ee-a297-92fbcf53809c.png

(8).選擇“xc2302-sfva784-1LP-e-S”

db8c3c66-e82b-11ee-a297-92fbcf53809c.png

(9).點擊“Finish”就可以完成以后名為“led”工程的創建。

dba2ecfe-e82b-11ee-a297-92fbcf53809c.png

(10).Vivado軟件界面

dbb7e8de-e82b-11ee-a297-92fbcf53809c.png

1.3創建Verilog HDL文件點亮LED

(1).點擊Project Manager下的Add Sources圖標(或者使用快捷鍵Alt+A)

dbd50c5c-e82b-11ee-a297-92fbcf53809c.png

(2).選擇添加或創建設計源文件“Add or create design sources”,點擊“Next”

dbe9a356-e82b-11ee-a297-92fbcf53809c.png

(3).選擇創建文件“Create File”

dbfa2ad2-e82b-11ee-a297-92fbcf53809c.png

(4).文件名“File name”設置為“led”,點擊“OK”

dc09b3e4-e82b-11ee-a297-92fbcf53809c.png

(5).點擊“Finish”,完成“led.v”文件添加

dc1de0f8-e82b-11ee-a297-92fbcf53809c.png

(6).在彈出的模塊定義“Define Module”,中可以指定“led.v”文件的模塊名稱“Module name”,這里默認不變為“led”,還可以指定一些端口,這里暫時不指定,點擊“OK”。

dc3aa530-e82b-11ee-a297-92fbcf53809c.png

(7).在彈出的對話框中選擇“Yes”

dc4580fe-e82b-11ee-a297-92fbcf53809c.png

(8).雙擊“led.v”可以打開文件,然后編輯

dc4fd900-e82b-11ee-a297-92fbcf53809c.png

(9).編寫“led.v”,這里定義了一個32位的寄存器timer, 用于循環計數0~199999999(1秒鐘), 計數到199999999(1秒)的時候, 寄存器timer變為0,并翻轉四個LED。這樣原來LED是滅的話,就會點亮,如果原來 LED為亮的話,就會熄滅。由于輸入時鐘為200MHz的差分時鐘,因此需要添加 IBUFDS 連接差分信號,編寫好后的代碼如下:

timescale1ns/1ps
module led(
//Differential system clock
input sys_clk_p,
input sys_clk_n,
input rst_n,
outputreg led
);
reg[31:0] timer_cnt;
wire sys_clk ;
IBUFDSIBUFDS_inst (
.O(sys_clk), // Buffer output
.I(sys_clk_p), // Diff_p buffer input (connect directly to top-level port)
.IB(sys_clk_n)// Diff_n buffer input (connect directly to top-level port)
);
always@(posedge sys_clk)
begin
if(!rst_n)
begin
led<=1'b0;
timer_cnt<=32'd0;
end
elseif(timer_cnt >=32'd199_999_999) //1 second counter, 200M-1=199999999
begin
led<=~led;
timer_cnt<=32'd0;
end
else
begin
led<= led;
timer_cnt<= timer_cnt +32'd1;
end
end
endmodule

(10).編寫好代碼后保存

1.4 添加管腳約束

Vivado使用的約束文件格式為xdc文件。xdc文件里主要是完成管腳的約束,時鐘的約束, 以及組的約束。這里我們需要對led.v程序中的輸入輸出端口分配到FPGA的真實管腳上。

(1).新建約束文件

dc5c39e8-e82b-11ee-a297-92fbcf53809c.png

(2).Create File

dc8f470c-e82b-11ee-a297-92fbcf53809c.png

dca1ad7a-e82b-11ee-a297-92fbcf53809c.png

(3).將復位信號rst_n綁定到PL端的按鍵,給LED和時鐘分配管腳、電平標準,約束如下

dcb0e902-e82b-11ee-a297-92fbcf53809c.png

set_property PACKAGE_PIN AB23 [get_ports sys_clk_p]
set_property PACKAGE_PIN F21 [get_ports rst_n]
set_property PACKAGE_PIN E20 [get_ports led]
set_property IOSTANDARD LVCMOS15 [get_ports led]
set_property IOSTANDARD LVCMOS15 [get_ports rst_n]
set_property IOSTANDARD LVDS15 [get_ports sys_clk_p]
create_clock -period 5.000 -name sys_clk_p -waveform {0.000 2.500} [get_ports sys_clk_p]













1.5 生成pdi文件

(1).編譯的過程可以細分為綜合、布局布線、生成bit文件等,這里我們直接點擊“Generate Device Image”,直接生成pdi文件。

dcc391f6-e82b-11ee-a297-92fbcf53809c.png

(2).在彈出的對話框中可以選擇任務數量,這里和CPU核心數有關,一般數字越大,編譯越快,點擊“OK”

dccabf26-e82b-11ee-a297-92fbcf53809c.png

(3).編譯的時候發現有報錯

dcdbcabe-e82b-11ee-a297-92fbcf53809c.png

[DRC CIPS-2] Versal CIPS exists check - wdi: Versal designs must contain a CIPS IP in the netlist hierarchy to function properly. Please create an instance of the CIPS IP and configure it. Without a CIPS IP in the design, Vivado will not generate a CDO for the PMC, an elf for the PLM.

從報錯來看,versal設計是必須包含CIPS的,也就是PS端,因此需要添加CIPS核。

(4).選擇Create Block Design

dceacda2-e82b-11ee-a297-92fbcf53809c.png

dcf7afcc-e82b-11ee-a297-92fbcf53809c.png

(5).添加CIPS

dd0977ac-e82b-11ee-a297-92fbcf53809c.png

dd134b6a-e82b-11ee-a297-92fbcf53809c.png

(6).雙擊CIPS,選擇PL_Subsystem,只有PL端的邏輯

dd20b17e-e82b-11ee-a297-92fbcf53809c.png

(7).右鍵Generate Output products

dd2e5748-e82b-11ee-a297-92fbcf53809c.png

dd456226-e82b-11ee-a297-92fbcf53809c.png

(8).之后右鍵創建HDL

dd5c2eac-e82b-11ee-a297-92fbcf53809c.png

dd6c1c9a-e82b-11ee-a297-92fbcf53809c.png

(9).在led.v中例化PS端文件

dd7eb364-e82b-11ee-a297-92fbcf53809c.png

dd91d106-e82b-11ee-a297-92fbcf53809c.png

(10).之后再Generate Bitstream,編譯中沒有任何錯誤,編譯完成,彈出一個對話框讓我們選擇后續操作,可以選擇“Open Hardware Manger”,當然,也可以選擇“Cancel”,我們這里選擇 “Cancel”,先不下載。

ddb9f69a-e82b-11ee-a297-92fbcf53809c.png

1.6 Vivado仿真

接下來我們不妨小試牛刀,利用Vivado自帶的仿真工具來輸出波形驗證流水燈程序設計結果和我們的預想是否一致(注意:在生成bit文件之前也可以仿真)。具體步驟如下:

(1).設置Vivado的仿真配置,右擊SIMULATION中Simulation Settings。

ddc92a20-e82b-11ee-a297-92fbcf53809c.png

(2).在Simulation Settings窗口中進行如下圖來配置,這里設置成50ms(根據需要自行設定),其它按默認設置,單擊OK完成。

dde19b5a-e82b-11ee-a297-92fbcf53809c.png

(3).添加激勵測試文件,點擊Project Manager下的Add Sources圖標,按下圖設置后單擊Next。

ddeb08b6-e82b-11ee-a297-92fbcf53809c.png

(4).點擊Create File生成仿真激勵文件。

ddf5b6e4-e82b-11ee-a297-92fbcf53809c.png

在彈出的對話框中輸入激勵文件的名字,這里我們輸入名為vtf_led_test。

de12be10-e82b-11ee-a297-92fbcf53809c.png

(5). 點擊Finish按鈕返回。

de24c966-e82b-11ee-a297-92fbcf53809c.png

這里我們先不添加IO Ports,點擊OK。

de39a73c-e82b-11ee-a297-92fbcf53809c.png

在Simulation Sources目錄下多了一個剛才添加的vtf_led_test文件。雙擊打開這個文件,可以看到里面只有module名的定義,其它都沒有。

de4c57f6-e82b-11ee-a297-92fbcf53809c.png

(6). 接下去我們需要編寫這個vtf_led_test.v文件的內容。首先定義輸入和輸出信號,然后需要實例化led_test模塊,讓led_test程序作為本測試程序的一部分。再添加復位和時鐘的激勵。完成后的vtf_led_test.v文件如下:

timescale1ns/1ps
//////////////////////////////////////////////////////////////////////////////////
// Module Name: vtf_led_test
//////////////////////////////////////////////////////////////////////////////////
module vtf_led_test;
// Inputs
reg sys_clk_p;
reg rst_n ;
wire sys_clk_n;
// Outputs
wire led;
// Instantiate the Unit Under Test (UUT)
led uut (
.sys_clk_p(sys_clk_p),
.sys_clk_n(sys_clk_n),
.rst_n(rst_n),
.led(led)
);
initial
begin
// Initialize Inputs
sys_clk_p=0;
rst_n=0;
// Wait for global reset to finish
#1000;
rst_n=1;
end
//Create clock
always#2.5 sys_clk_p =~ sys_clk_p;
assign sys_clk_n =~sys_clk_p ;
endmodule

(7). 編寫好后保存,vtf_led_test.v自動成了這個仿真Hierarchy的頂層了,它下面是設計文件led_test.v。

de59e81c-e82b-11ee-a297-92fbcf53809c.png

(8). 點擊Run Simulation按鈕,再選擇Run Behavioral Simulation。這里我們做一下行為級的仿真就可以了。

de6a9c98-e82b-11ee-a297-92fbcf53809c.png

如果沒有錯誤,Vivado中的仿真軟件開始工作了。

(9). 在彈出仿真界面后如下圖,界面是仿真軟件自動運行到仿真設置的50ms的波形。

de7ac140-e82b-11ee-a297-92fbcf53809c.png

由于LED[3:0]在程序中設計的狀態變化時間長,而仿真又比較耗時,在這里觀測timer[31:0]計數器變化。把它放到Wave中觀察(點擊Scope界面下的uut, 再右鍵選擇Objects界面下的timer, 在彈出的下拉菜單里選擇Add Wave Window)。

de8c7282-e82b-11ee-a297-92fbcf53809c.png

添加后timer顯示在Wave的波形界面上,如下圖所示。

de9cc2ae-e82b-11ee-a297-92fbcf53809c.png

(10). 點擊如下標注的Restart按鈕復位一下,再點擊Run All按鈕。(需要耐心?。。。?,可以看到仿真波形與設計相符。(注意:仿真的時間越長,仿真的波形文件占用的磁盤空間越大,波形文件在工程目錄的xx.sim文件夾)

dea7fdcc-e82b-11ee-a297-92fbcf53809c.png

deba670a-e82b-11ee-a297-92fbcf53809c.png

我們可以看到led的信號會變成1,說明LED燈會變亮。

1.7下載

(1). 連接好開發板的JTAG接口,給開發板上電,注意拔碼開關要選擇JTAG模式,也就是全部拔到”ON”,“ON”代表的值是0,不用JTAG模式,下載會報錯。

ded1ef38-e82b-11ee-a297-92fbcf53809c.png

defc06f6-e82b-11ee-a297-92fbcf53809c.png

(2). 在“HARDWARE MANAGER”界面點擊“Auto Connect”,自動連接設備

df12ad8e-e82b-11ee-a297-92fbcf53809c.png

(3). 選擇芯片,右鍵“Program Device...”

df23e3b0-e82b-11ee-a297-92fbcf53809c.png

(4). 在彈出窗口中點擊“Program”

df2ea87c-e82b-11ee-a297-92fbcf53809c.png

(5). 等待下載

df41d38e-e82b-11ee-a297-92fbcf53809c.png

(6). 下載完成以后,我們可以看到PL LED開始每秒變化一次。到此為止Vivado簡單流程體驗完成。后面的章節會介紹如果把程序燒錄到Flash,需要PS系統的配合才能完成,只有PL的工程不能直接燒寫Flash。在”體驗ARM,裸機輸出”Hello World”一章的常見問題中有介紹。



審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • led燈
    +關注

    關注

    22

    文章

    1563

    瀏覽量

    107134
  • 寄存器
    +關注

    關注

    30

    文章

    5164

    瀏覽量

    118133
  • RTL
    RTL
    +關注

    關注

    1

    文章

    382

    瀏覽量

    59185
  • FPGA芯片
    +關注

    關注

    3

    文章

    246

    瀏覽量

    39577
  • Vivado
    +關注

    關注

    18

    文章

    791

    瀏覽量

    65377

原文標題:【ALINX 技術分享】AMD Versal AI Edge 自適應計算加速平臺之 PL LED 實驗(3)

文章出處:【微信號:ALINX,微信公眾號:ALINX】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    AMD Versal AI Edge自適應計算加速平臺Versal介紹(2)

    Versal 包含了 Cortex-A72 處理器和 Cortex-R5 處理器,PL 端可編程邏輯部分,PMC 平臺管理控制器,AI Engine 等模塊,與以往的 ZYNQ 700
    的頭像 發表于 03-06 18:12 ?963次閱讀
    <b class='flag-5'>AMD</b> <b class='flag-5'>Versal</b> <b class='flag-5'>AI</b> <b class='flag-5'>Edge</b><b class='flag-5'>自適應計算</b><b class='flag-5'>加速</b><b class='flag-5'>平臺</b>之<b class='flag-5'>Versal</b>介紹(2)

    【ALINX 技術分享】AMD Versal AI Edge 自適應計算加速平臺之準備工作(1)

    AMD Versal AI Edge 自適應計算加速平臺
    的頭像 發表于 03-07 15:49 ?366次閱讀
    【ALINX 技術分享】<b class='flag-5'>AMD</b> <b class='flag-5'>Versal</b> <b class='flag-5'>AI</b> <b class='flag-5'>Edge</b> <b class='flag-5'>自適應計算</b><b class='flag-5'>加速</b><b class='flag-5'>平臺</b>之準備工作(1)

    【ALINX 技術分享】AMD Versal AI Edge 自適應計算加速平臺Versal 介紹(2)

    【ALINX 技術分享】AMD Versal AI Edge 自適應計算加速
    的頭像 發表于 03-07 16:03 ?405次閱讀
    【ALINX 技術分享】<b class='flag-5'>AMD</b> <b class='flag-5'>Versal</b> <b class='flag-5'>AI</b> <b class='flag-5'>Edge</b> <b class='flag-5'>自適應計算</b><b class='flag-5'>加速</b><b class='flag-5'>平臺</b>之 <b class='flag-5'>Versal</b> 介紹(2)

    AMD Versal AI Edge自適應計算加速平臺PL LED實驗(3)

    對于Versal來說PL(FPGA)開發是至關重要的,這也是Versal比其他ARM的有優勢的地方,可以定制化很多ARM端的外設
    的頭像 發表于 03-13 15:38 ?535次閱讀
    <b class='flag-5'>AMD</b> <b class='flag-5'>Versal</b> <b class='flag-5'>AI</b> <b class='flag-5'>Edge</b><b class='flag-5'>自適應計算</b><b class='flag-5'>加速</b><b class='flag-5'>平臺</b><b class='flag-5'>PL</b> <b class='flag-5'>LED</b><b class='flag-5'>實驗</b>(3)

    在Vivado中構建AMD Versal可擴展嵌入式平臺示例設計流程

    為了應對無線波束形成、大規模計算和機器學習推斷等新一代應用需求的非線性增長,AMD 開發了一項全新的創新處理技術 AI 引擎,片內集成該AI Engine的FPGA系列是
    的頭像 發表于 04-09 15:14 ?585次閱讀
    在Vivado中構建<b class='flag-5'>AMD</b> <b class='flag-5'>Versal</b>可擴展嵌入式<b class='flag-5'>平臺</b>示例設計流程

    深度學習推理和計算-通用AI核心

    ,支持廣泛的應用程序和動態工作負載。本文將討論這些行業挑戰可以在不同級別的硬件和軟件設計采用Xilinx VERSAL AI核心,業界首創自適應計算加速
    發表于 11-01 09:28

    Xilinx推出Versal:業界首款自適應計算加速平臺,支持快速創新

    賽靈思公司(Xilinx)首席執行官 Victor Peng 宣布推出 Versal – 業界首款自適應計算加速平臺 (Adaptive Compute Acceleration P
    發表于 10-18 16:50 ?1429次閱讀

    賽靈思發布自適應計算加速平臺芯片系列Versal

    2018年10月16日,FPGA大廠賽靈思(Xilinx)在北京召開了一年一度的“Xilinx開發者大會 ”(XDF) 。在本次會議上,賽靈思發布了全球首款自適應計算加速平臺 (ACAP)芯片系列
    的頭像 發表于 10-22 16:52 ?5414次閱讀

    賽靈思Versal自適應計算加速平臺助于高效實現設計目標

    解決的問題?賽靈思 Versal 自適應計算加速平臺的設計方法論是幫助精簡 Versal 器件設計進程的一整套最佳實踐,遵循這些步驟和最佳實
    的頭像 發表于 05-27 11:08 ?1558次閱讀
    賽靈思<b class='flag-5'>Versal</b><b class='flag-5'>自適應計算</b><b class='flag-5'>加速</b><b class='flag-5'>平臺</b>助于高效實現設計目標

    賽靈思Versal自適應計算加速平臺指南

    賽靈思 Versal 自適應計算加速平臺 (ACAP) 設計方法論是旨在幫助精簡 Versal 器件設計進程的一整套最佳實踐。鑒于這些設計的
    的頭像 發表于 10-11 11:33 ?3866次閱讀

    Versal啟動文件簡述

    Versal? 是由多個高度耦合的可配置塊組成的自適應計算加速平臺?(ACAP)
    的頭像 發表于 07-07 14:15 ?730次閱讀
    <b class='flag-5'>Versal</b>啟動文件簡述

    Versal:首款自適應計算加速平臺(ACAP)

    電子發燒友網站提供《Versal:首款自適應計算加速平臺(ACAP).pdf》資料免費下載
    發表于 09-18 09:28 ?1次下載
    <b class='flag-5'>Versal</b>:首款<b class='flag-5'>自適應計算</b><b class='flag-5'>加速</b><b class='flag-5'>平臺</b>(ACAP)

    AMD CES 2024:AI計算引領未來

    AMD最新推出的Versal AI Edge XA自適應SoC搭載AI引擎,為
    的頭像 發表于 01-12 16:37 ?826次閱讀
    <b class='flag-5'>AMD</b> CES 2024:<b class='flag-5'>AI</b><b class='flag-5'>計算</b>引領未來

    AMD推出第二代Versal器件,為AI驅動型嵌入式系統提供端到端加速

    Versal AI Edge 系列和第二代 Versal Prime 系列自適應 SoC,其將預處理、
    的頭像 發表于 04-10 10:25 ?185次閱讀

    AMD發布第二代Versal自適應SoC,AI嵌入式領域再提速

    AMD表示,第二代Versal系列自適應SoC搭載全新的AI引擎,相較上一代Versal AI
    的頭像 發表于 04-11 16:07 ?349次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>