0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

AMD Versal AI Edge自适应计算加速平台PL LED实验(3)

ALINX 来源:ALINX 2024-03-13 15:38 次阅读

实验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为高电平,三级管导通,灯则会亮,否则会灭。

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

1.2创建Vivado工程

(1).启动Vivado,在Windows中可以通过双击Vivado快捷方式启动 (2).在Vivado开发环境里点击“Create New Project”,创建一个新的工程。

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

(3).弹出一个建立新工程的向导,点击“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).目标语言“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”就可以完成以后名为“led”工程的创建。

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

(10).Vivado软件界面

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

1.3创建Verilog HDL文件点亮LED

(1).点击Project Manager下的Add Sources图标(或者使用快捷键Alt+A)

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

(2).选择添加或创建设计源文件“Add or create design sources”,点击“Next”

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

(3).选择创建文件“Create File”

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

(4).文件名“File name”设置为“led”,点击“OK”

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

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

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

(6).在弹出的模块定义“Define Module”,中可以指定“led.v”文件的模块名称“Module name”,这里默认不变为“led”,还可以指定一些端口,这里暂时不指定,点击“OK”。

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

(7).在弹出的对话框中选择“Yes”

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

(8).双击“led.v”可以打开文件,然后编辑

704ae924-e10b-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).新建约束文件

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

(2).Create File

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

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

(3).将复位信号rst_n绑定到PL端的按键,给LED和时钟分配管脚、电平标准,约束如下

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).在弹出的对话框中可以选择任务数量,这里和CPU核心数有关,一般数字越大,编译越快,点击“OK”

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

(3).编译的时候发现有报错

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设计是必须包含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).之后右键创建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,编译中没有任何错误,编译完成,弹出一个对话框让我们选择后续操作,可以选择“Open Hardware Manger”,当然,也可以选择“Cancel”,我们这里选择 “Cancel”,先不下载

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

1.6 Vivado仿真

接下来我们不妨小试牛刀,利用Vivado自带的仿真工具来输出波形验证流水灯程序设计结果和我们的预想是否一致(注意:在生成bit文件之前也可以仿真)。具体步骤如下:

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

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

(2).在Simulation Settings窗口中进行如下图来配置,这里设置成50ms(根据需要自行设定),其它按默认设置,单击OK完成。

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

(3).添加激励测试文件,点击Project Manager下的Add Sources图标,按下图设置后单击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文件的内容。首先定义输入和输出信号,然后需要实例化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。

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

(8). 点击Run Simulation按钮,再选择Run Behavioral Simulation。这里我们做一下行为级的仿真就可以了。

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

如果没有错误,Vivado中的仿真软件开始工作了。

(9). 在弹出仿真界面后如下图,界面是仿真软件自动运行到仿真设置的50ms的波形。

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

由于LED[3:0]在程序中设计的状态变化时间长,而仿真又比较耗时,在这里观测timer[31:0]计数器变化。把它放到Wave中观察(点击Scope界面下的uut, 再右键选择Objects界面下的timer, 在弹出的下拉菜单里选择Add Wave Window)。

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

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

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

(10). 点击如下标注的Restart按钮复位一下,再点击Run All按钮。(需要耐心!!!),可以看到仿真波形与设计相符。(注意:仿真的时间越长,仿真的波形文件占用的磁盘空间越大,波形文件在工程目录的xx.sim文件夹)

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

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

我们可以看到led的信号会变成1,说明LED灯会变亮。

1.7下载

(1). 连接好开发板的JTAG接口,给开发板上电,注意拔码开关要选择JTAG模式,也就是全部拔到”ON”,“ON”代表的值是0,不用JTAG模式,下载会报错。

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

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

(2). 在“HARDWARE MANAGER”界面点击“Auto Connect”,自动连接设备

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简单流程体验完成。后面的章节会介绍如果把程序烧录到Flash,需要PS系统的配合才能完成,只有PL的工程不能直接烧写Flash。在”体验ARM,裸机输出”Hello World”一章的常见问题中有介绍。



审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led灯
    +关注

    关注

    22

    文章

    1592

    浏览量

    107881
  • 寄存器
    +关注

    关注

    31

    文章

    5328

    浏览量

    120116
  • 差分信号
    +关注

    关注

    3

    文章

    367

    浏览量

    27663
  • FPGA芯片
    +关注

    关注

    3

    文章

    246

    浏览量

    39786
  • Vivado
    +关注

    关注

    19

    文章

    808

    浏览量

    66370

原文标题:【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 1408次阅读
    <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 763次阅读
    【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 988次阅读
    【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-22 17:12 2287次阅读

    AMD Versal AI Edge自适应计算加速平台PL通过NoC读写DDR4实验(4)

    Versal的DDR4是通过NoC访问,因此需要添加NoC IP进行配置。
    的头像 发表于 03-22 17:18 2159次阅读
    <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>通过NoC读写DDR4<b class='flag-5'>实验</b>(4)

    在Vivado中构建AMD Versal可扩展嵌入式平台示例设计流程

    为了应对无线波束形成、大规模计算和机器学习推断等新一代应用需求的非线性增长,AMD 开发了一项全新的创新处理技术 AI 引擎,片内集成该AI Engine的FPGA系列是
    的头像 发表于 04-09 15:14 1378次阅读
    在Vivado中构建<b class='flag-5'>AMD</b> <b class='flag-5'>Versal</b>可扩展嵌入式<b class='flag-5'>平台</b>示例设计流程

    自适应计算加速平台 功能超CPU和FPGA

    2019年06月19日,中国北京 —— 自适应和智能计算的全球领先企业赛灵思公司(Xilinx, Inc.,(NASDAQ:XLNX))今天宣布已开始面向参与公司“早期试用计划”的多家一线客户交付Versal
    发表于 06-23 10:16 1604次阅读

    Xilinx推出Versal:业界首款自适应计算加速平台,支持快速创新

    赛灵思公司(Xilinx)首席执行官 Victor Peng 宣布推出 Versal – 业界首款自适应计算加速平台 (Adaptive Compute Acceleration P
    发表于 10-18 16:50 1547次阅读

    赛灵思发布自适应计算加速平台芯片系列Versal

    2018年10月16日,FPGA大厂赛灵思(Xilinx)在北京召开了一年一度的“Xilinx开发者大会 ”(XDF) 。在本次会议上,赛灵思发布了全球首款自适应计算加速平台 (ACAP)芯片系列
    的头像 发表于 10-22 16:52 5683次阅读

    赛灵思Versal自适应计算加速平台助于高效实现设计目标

    Versal 自适应计算加速平台的设计方法论是帮助精简 Versal 器件设计进程的一整套最佳实践,遵循这些步骤和最佳实践进行操作,将有助
    的头像 发表于 05-27 11:08 1804次阅读
    赛灵思<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 4232次阅读

    Versal启动文件简述

    Versal™ 是由多个高度耦合的可配置块组成的自适应计算加速平台 (ACAP)
    的头像 发表于 07-07 14:15 1061次阅读
    <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发布第二代Versal自适应SoC,AI嵌入式领域再提速

    AMD表示,第二代Versal系列自适应SoC搭载全新的AI引擎,相较上一代Versal AI
    的头像 发表于 04-11 16:07 761次阅读

    ALINX受邀参加AMD自适应计算峰会

    近日,AMD 自适应计算峰会(AMD Adaptive Computing Summit, 即 AMD ACS)在深圳举行,聚焦 AMD
    的头像 发表于 08-02 14:36 590次阅读