0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

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

ALINX ? 來源:ALINX ? 2024-03-13 15:38 ? 次閱讀

實驗Vivado工程為“led

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

在本例程中,我們要做的是LED燈控制實驗,每秒鐘控制開發(fā)板上的LED燈翻轉(zhuǎn)一次,實現(xiàn)亮、滅、亮、滅的控制。

1.1 LED硬件介紹

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

6f0b5aa8-e10b-11ee-a297-92fbcf53809c.png

1.2創(chuàng)建Vivado工程

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

6f15e7b6-e10b-11ee-a297-92fbcf53809c.png

(3).彈出一個建立新工程的向?qū)Вc擊“Next”

6f2b110e-e10b-11ee-a297-92fbcf53809c.png

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

6f3a1ea6-e10b-11ee-a297-92fbcf53809c.png

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

6f471cdc-e10b-11ee-a297-92fbcf53809c.png

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

6f5d630c-e10b-11ee-a297-92fbcf53809c.png

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

6f70e22e-e10b-11ee-a297-92fbcf53809c.png

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

6f7c7d14-e10b-11ee-a297-92fbcf53809c.png

(9).點擊“Finish”就可以完成以后名為“l(fā)ed”工程的創(chuàng)建。

6f8dc06a-e10b-11ee-a297-92fbcf53809c.png

(10).Vivado軟件界面

6fa30826-e10b-11ee-a297-92fbcf53809c.png

1.3創(chuàng)建Verilog HDL文件點亮LED

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

6fbaafda-e10b-11ee-a297-92fbcf53809c.png

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

6fc79e02-e10b-11ee-a297-92fbcf53809c.png

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

6fdd29a2-e10b-11ee-a297-92fbcf53809c.png

(4).文件名“File name”設(shè)置為“l(fā)ed”,點擊“OK”

6ff3697e-e10b-11ee-a297-92fbcf53809c.png

(5).點擊“Finish”,完成“l(fā)ed.v”文件添加

7019be6c-e10b-11ee-a297-92fbcf53809c.png

(6).在彈出的模塊定義“Define Module”,中可以指定“l(fā)ed.v”文件的模塊名稱“Module name”,這里默認不變?yōu)椤發(fā)ed”,還可以指定一些端口,這里暫時不指定,點擊“OK”。

702caab8-e10b-11ee-a297-92fbcf53809c.png

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

703dbede-e10b-11ee-a297-92fbcf53809c.png

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

704ae924-e10b-11ee-a297-92fbcf53809c.png

(9).編寫“l(fā)ed.v”,這里定義了一個32位的寄存器timer, 用于循環(huán)計數(shù)0~199999999(1秒鐘), 計數(shù)到199999999(1秒)的時候, 寄存器timer變?yōu)?,并翻轉(zhuǎn)四個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).新建約束文件

705fd546-e10b-11ee-a297-92fbcf53809c.png

(2).Create File

7074a05c-e10b-11ee-a297-92fbcf53809c.png

70853ee4-e10b-11ee-a297-92fbcf53809c.png

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

708c19bc-e10b-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文件。

70a28eea-e10b-11ee-a297-92fbcf53809c.png

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

70b3c606-e10b-11ee-a297-92fbcf53809c.png

(3).編譯的時候發(fā)現(xiàn)有報錯

70c4e0ee-e10b-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設(shè)計是必須包含CIPS的,也就是PS端,因此需要添加CIPS核。

(4).選擇Create Block Design

70d4fd30-e10b-11ee-a297-92fbcf53809c.png

70e2edd2-e10b-11ee-a297-92fbcf53809c.png

(5).添加CIPS

70e96bee-e10b-11ee-a297-92fbcf53809c.png

70f9200c-e10b-11ee-a297-92fbcf53809c.png

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

7107774c-e10b-11ee-a297-92fbcf53809c.png

(7).右鍵Generate Output products

711d93a6-e10b-11ee-a297-92fbcf53809c.png

712e8d78-e10b-11ee-a297-92fbcf53809c.png

(8).之后右鍵創(chuàng)建HDL

7142a484-e10b-11ee-a297-92fbcf53809c.png

7164b47a-e10b-11ee-a297-92fbcf53809c.png

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

717842f6-e10b-11ee-a297-92fbcf53809c.png

7185b148-e10b-11ee-a297-92fbcf53809c.png

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

71a2a2bc-e10b-11ee-a297-92fbcf53809c.png

1.6 Vivado仿真

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

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

71ad6422-e10b-11ee-a297-92fbcf53809c.png

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

71beead0-e10b-11ee-a297-92fbcf53809c.png

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

71d09410-e10b-11ee-a297-92fbcf53809c.png

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

71e0f7e2-e10b-11ee-a297-92fbcf53809c.png

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

71f0647a-e10b-11ee-a297-92fbcf53809c.png

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

71feac2e-e10b-11ee-a297-92fbcf53809c.png

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

7212f224-e10b-11ee-a297-92fbcf53809c.png

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

72252214-e10b-11ee-a297-92fbcf53809c.png

(6). 接下去我們需要編寫這個vtf_led_test.v文件的內(nèi)容。首先定義輸入和輸出信號,然后需要實例化led_test模塊,讓led_test程序作為本測試程序的一部分。再添加復(fù)位和時鐘的激勵。完成后的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的頂層了,它下面是設(shè)計文件led_test.v。

723c06e6-e10b-11ee-a297-92fbcf53809c.png

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

724e9752-e10b-11ee-a297-92fbcf53809c.png

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

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

7252b134-e10b-11ee-a297-92fbcf53809c.png

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

726a01c2-e10b-11ee-a297-92fbcf53809c.png

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

72813c8e-e10b-11ee-a297-92fbcf53809c.png

(10). 點擊如下標(biāo)注的Restart按鈕復(fù)位一下,再點擊Run All按鈕。(需要耐心?。。。梢钥吹椒抡娌ㄐ闻c設(shè)計相符。(注意:仿真的時間越長,仿真的波形文件占用的磁盤空間越大,波形文件在工程目錄的xx.sim文件夾)

729288cc-e10b-11ee-a297-92fbcf53809c.png

729c154a-e10b-11ee-a297-92fbcf53809c.png

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

1.7下載

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

72aa5d8a-e10b-11ee-a297-92fbcf53809c.png

72d34d08-e10b-11ee-a297-92fbcf53809c.png

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

72f60546-e10b-11ee-a297-92fbcf53809c.png

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

7306b616-e10b-11ee-a297-92fbcf53809c.png

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

7317a7fa-e10b-11ee-a297-92fbcf53809c.png

(5). 等待下載

731cb7a4-e10b-11ee-a297-92fbcf53809c.png

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



審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • led燈
    +關(guān)注

    關(guān)注

    22

    文章

    1592

    瀏覽量

    107999
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5343

    瀏覽量

    120363
  • 差分信號
    +關(guān)注

    關(guān)注

    3

    文章

    378

    瀏覽量

    27685
  • FPGA芯片
    +關(guān)注

    關(guān)注

    3

    文章

    246

    瀏覽量

    39799
  • Vivado
    +關(guān)注

    關(guān)注

    19

    文章

    812

    瀏覽量

    66537

原文標(biāo)題:【ALINX 技術(shù)分享】AMD Versal AI Edge 自適應(yīng)計算加速平臺 PL LED 實驗(3)

文章出處:【微信號:ALINX,微信公眾號:ALINX】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

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

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

    【ALINX 技術(shù)分享】AMD Versal AI Edge 自適應(yīng)計算加速平臺之準(zhǔn)備工作(1)

    AMD Versal AI Edge 自適應(yīng)計算加速平臺
    的頭像 發(fā)表于 03-07 15:49 ?802次閱讀
    【ALINX 技術(shù)分享】<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'>自適應(yīng)計算</b><b class='flag-5'>加速</b><b class='flag-5'>平臺</b>之準(zhǔn)備工作(1)

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

    【ALINX 技術(shù)分享】AMD Versal AI Edge 自適應(yīng)計算加速
    的頭像 發(fā)表于 03-07 16:03 ?1037次閱讀
    【ALINX 技術(shù)分享】<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'>自適應(yīng)計算</b><b class='flag-5'>加速</b><b class='flag-5'>平臺</b>之 <b class='flag-5'>Versal</b> 介紹(2)

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

    對于Versal來說PL(FPGA)開發(fā)是至關(guān)重要的,這也是Versal比其他ARM的有優(yōu)勢的地方,可以定制化很多ARM端的外設(shè)
    的頭像 發(fā)表于 03-22 17:12 ?2400次閱讀

    AMD Versal AI Edge自適應(yīng)計算加速平臺PL通過NoC讀寫DDR4實驗(4)

    Versal的DDR4是通過NoC訪問,因此需要添加NoC IP進行配置。
    的頭像 發(fā)表于 03-22 17:18 ?2320次閱讀
    <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'>自適應(yīng)計算</b><b class='flag-5'>加速</b><b class='flag-5'>平臺</b>之<b class='flag-5'>PL</b>通過NoC讀寫DDR4<b class='flag-5'>實驗</b>(4)

    在Vivado中構(gòu)建AMD Versal可擴展嵌入式平臺示例設(shè)計流程

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

    自適應(yīng)計算加速平臺 功能超CPU和FPGA

    2019年06月19日,中國北京 —— 自適應(yīng)和智能計算的全球領(lǐng)先企業(yè)賽靈思公司(Xilinx, Inc.,(NASDAQ:XLNX))今天宣布已開始面向參與公司“早期試用計劃”的多家一線客戶交付Versal
    發(fā)表于 06-23 10:16 ?1614次閱讀

    Xilinx推出Versal:業(yè)界首款自適應(yīng)計算加速平臺,支持快速創(chuàng)新

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

    賽靈思發(fā)布自適應(yīng)計算加速平臺芯片系列Versal

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

    賽靈思Versal自適應(yīng)計算加速平臺助于高效實現(xiàn)設(shè)計目標(biāo)

    Versal 自適應(yīng)計算加速平臺的設(shè)計方法論是幫助精簡 Versal 器件設(shè)計進程的一整套最佳實踐,遵循這些步驟和最佳實踐進行操作,將有助
    的頭像 發(fā)表于 05-27 11:08 ?1820次閱讀
    賽靈思<b class='flag-5'>Versal</b><b class='flag-5'>自適應(yīng)計算</b><b class='flag-5'>加速</b><b class='flag-5'>平臺</b>助于高效實現(xiàn)設(shè)計目標(biāo)

    賽靈思Versal自適應(yīng)計算加速平臺指南

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

    Versal啟動文件簡述

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

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

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

    AMD發(fā)布第二代Versal自適應(yīng)SoC,AI嵌入式領(lǐng)域再提速

    AMD表示,第二代Versal系列自適應(yīng)SoC搭載全新的AI引擎,相較上一代Versal AI
    的頭像 發(fā)表于 04-11 16:07 ?795次閱讀

    ALINX受邀參加AMD自適應(yīng)計算峰會

    近日,AMD 自適應(yīng)計算峰會(AMD Adaptive Computing Summit, 即 AMD ACS)在深圳舉行,聚焦 AMD
    的頭像 發(fā)表于 08-02 14:36 ?615次閱讀