当前位置: 首页 > article >正文

Versal - 基本概念+PL点灯+构建CIPS+VD100+查找资料和文档

目录

1. 简介

2. 相关概念介绍

2.1 AI EDGE 框图

2.2 了解 NoC

2.2.1 NoC 组件

2.2.2 全阻塞交叉开关

2.2.3 General Tab

2.2.4 Inputs Tab

2.2.5 INI 连接策略

2.3 DDR 控制器

2.4 开发板资料及用法

3. 示例工程

3.1 PL 点灯

3.1.1 Block Design

3.1.3 PIN 绑定

3.1.4 Flow Navigator 差异

3.1.5 下载 PDI

3.2 CIPS system

3.2.1 导入 CIPS

3.2.2 PS PMC 配置

3.2.3 AXI NoC 配置

3.2.4 添加 VIO

3.2.5 PIN 绑定

3.2.6 烧写和调试

4. 技术信息

4.1 两代对比

4.2 I/O

4.3 Device Layout

4.4 PMC

4.5 AXI4 Debug Hub

4.6 Address Maps

5. 总结

6. 参考资料

6.1 查找官方文档

6.2 常用文档

6.3 视频课程


1. 简介

平台:Alinx - VD100

器件:XCVE2302-SFVA784-1LP-E-S

  • AIE and DSP Engine Features
    • INT8 Max Sparsity: 45 TOPs
    • INT8 Dense: 23 TOPs
    • BFLOAT16: 11 TOPs
    • AI Engine-ML: 34 pcs
    • DSP Engines: 464
  • Programmable Logic Features
    • System Logic Cells: 329K
    • LUTs: 150,272
  • Foundational Platform Features
    • Accelerator RAM: 32 Mb
    • Total Memory: 103 Mb
    • NoC Master/Slave Ports: 5
    • GTYP Transceivers: 8

2. 相关概念介绍

2.1 AI EDGE 框图

2.2 了解 NoC

2.2.1 NoC 组件

1)把他们当作计算机网络来理解:

  • NMU - NoC master units
  • NSU - NoC slave units
  • NPI - NoC programming interface
  • NPS - NoC packet switch

NoC 原理框图

2)NMU - NoC Master Unit

NoC Master Unit 充当数据高速公路的入口。它向用户提供一个 AXI 端口,并对信息进行分组,以便通过 NoC 资源和分组交换机进行传输。

3)NSU - NoC Slave Unit

数据必须在某个时刻退出 NoC。NoC Slave Unit 提供此出口匝道。它与 NoC 主单元一样,通过 AXI 端口与用户连接。从功能上讲,它是 NMU 的结合体,用于对数据进行解包并将其呈现给 IP。

结论:对用户的接口依然是 AXI Bus,NxU 将 AXI 数据进行解析后与 NoC 网络交互。

4)NPS - Noc Packet Switch

数据打包后,将被路由到 NoC 数据包交换机。这些交换机可以被认为是“固定的”,并且将数据从主单元移动到路由资源、从一个路由资源移动到另一路由资源、或者从路由资源移动到从属单元。除了提供连接之外,它们还根据优先级和下游设备接收数据包的准备情况来缓冲和仲裁哪些数据可以使用物理通道。

2.2.2 全阻塞交叉开关

1)交叉开关的基本概念

想象一个矩阵,行代表输入,列代表输出。每个交叉点都有一个开关,可以连接或断开对应的输入和输出。通过控制这些开关,可以实现任意输入到任意输出的连接。

2)阻塞的类型

输出阻塞(Output Blocking): 指的是如果多个输入尝试连接到同一个输出,只有一个输入能够成功连接,其他输入会被阻塞。这是所有交叉开关都固有的特性,因为一个输出端口一次只能连接到一个输入端口。
内部阻塞(Internal Blocking): 指的是即使有空闲的输出端口,由于网络内部的连接限制,某个输入也无法连接到任何输出。这种阻塞是由于网络内部的结构限制造成的。

3)全阻塞交叉开关的含义

“全阻塞”通常用来和“非阻塞”进行比较。

非阻塞交叉开关(Non-blocking Crossbar): 任何一个空闲的输入端口都可以连接到任何一个空闲的输出端口,而不会受到其他连接的影响。也就是说,只要有空闲的输出端口,就不会发生内部阻塞。
全阻塞交叉开关(Full Blocking Crossbar): 虽然它仍然是交叉开关,但它强调的是它不具备非阻塞的特性。也就是说,可能存在即使有空闲的输出端口,某个输入也无法连接的情况,即存在内部阻塞。

4)简单来说:

全阻塞交叉开关是一种基本的交叉开关结构,它能实现输入和输出之间的连接,但它不能保证在任何情况下都能建立连接。如果网络内部的连接资源被其他连接占用,即使有空闲的输出端口,新的连接请求也可能被阻塞。

2.2.3 General Tab

1)Number of AXI Clocks:这是将在一组 NMU 和 NSU 端口中使用的独立 AXI 时钟的数量。每个接口的时钟关联将由工具根据接口输入的关联时钟推断得出。

2)Inter-NoC Interface

3)Memory Controllers

2.2.4 Inputs Tab

说明部分的内容

Inter NoC Interface (INI)

A 和 B 通过 NoC 直接连接。

INI 允许 NoC 的入口和出口点放置在不同的 axi_noc 实例中,即可以在设计的一部分进入 NoC,并在设计的另一部分退出 NoC。

NoC 的入口点是 NoC 主单元(NMU),NoC 的出口点是 NoC 从单元(NSU)和内存控制器(MC)。

2.2.5 INI 连接策略

INI连接策略有三种选择:驱动、负载和自动。

1)驱动

  • 拓扑:1:N 或单一驱动(单个NMU)
  • INI代表驱动(NMU)
  • 服务质量(QoS)设置在负载端(NSU/MC)
  • 动态功能交换(DFX):
    • 驱动(NMU)是静态的——无论是否在可重配置模块(RM)中。
    • 如果负载在RM中,负载(NSU/MC)和NoC路径会被重新配置。

2)负载

  • 拓扑:N:1 或单一负载(单个NSU/MC)
  • INI代表负载(NSU/MC)
  • 服务质量(QoS)设置在驱动端(NMU)
  • 动态功能交换(DFX):
    • 负载(NSU/MC)是静态的——无论是否在RM中。
    • 如果驱动在RM中,驱动(NMU)和NoC路径会被重新配置。

3)自动

  • 在可能的情况下推断驱动/负载设置。

2.3 DDR 控制器

与之前的 Xilinx FPGA/SoC 不同,Versal ACAP 的 PS 端不再集成专用的 DDR 存储器控制器。取而代之的是,通过 NoC 连接到公共的内存控制器,该控制器可以服务于 PS 和 PL 的请求。NoC提供了必要的路由和仲裁机制,确保各个主设备(Master)能够有效地访问共享的 DDR 存储器资源。

虽然 DDRMC 并非严格意义上的 NoC 组件,但它与 NoC 紧密耦合,因为它充当 Versal 设备和外部存储器之间的主要出口点之一。由于 NoC 的大部分性能都与 DDR 访问有关,因此 DDR 内存控制器包含在大多数 NoC 中。

更多详细资料,请见官方资料:

《Adaptive SoC Programmable NoC and Integrated Memory Controller 1.1 PG (PG313)》

2.4 开发板资料及用法

  • 开发板:ALINX VD100
  • 芯片型号:XCVE2302-SFVA784-1LP-E-S
  • Github 资料如下:

GitHub - alinxalinx/VD100_2023.2: The VD100 development board is based on the Xilinx Versal AI Edge series chip xcve2302 and is designed with a core board and a bottom board.The VD100 development board is based on the Xilinx Versal AI Edge series chip xcve2302 and is designed with a core board and a bottom board. - alinxalinx/VD100_2023.2https://github.com/alinxalinx/VD100_2023.2https://github.com/alinxalinx/VD100_2023.2目录结构如下:

Mode    Length   Name
----    ------   ----
d-----           Demo
d-----           Hardware
d-----           HTMLdocs
d-----           RSTdocxs
-a----     295   .readthedocs.yaml
-a----     802   make.bat
-a----     656   Makefile
-a----    2438   README.md
-a----    2172   README_CN.md

<path>\HTMLdocs\VD100教程_CN.html 是一个网页版的操作说明。

3. 示例工程

3.1 PL 点灯

3.1.1 Block Design

`timescale 1ns / 1ps

module led_blink(
    input       sys_clk ,
    input       rst_n   ,
    output reg  led
);

reg [31:0]      timer_cnt;

always @(posedge sys_clk) begin
    if (!rst_n) begin
      led <= 1'b0 ;
      timer_cnt <= 32'd0 ;
    end
    else if(timer_cnt >= 32'd199_999_999) begin
        led <= ~led;
        timer_cnt <= 32'd0;
    end
    else begin
        led <= led;
        timer_cnt <= timer_cnt + 32'd1;
    end
end

endmodule

3.1.3 PIN 绑定

set_property PACKAGE_PIN F23   [get_ports sys_clk_p]
set_property IOSTANDARD LVDS15 [get_ports sys_clk_p]

set_property PACKAGE_PIN E20     [get_ports led]
set_property IOSTANDARD LVCMOS15 [get_ports led]

set_property PACKAGE_PIN F21     [get_ports rst_n]
set_property IOSTANDARD LVCMOS15 [get_ports rst_n]

create_clock -period 5.000 -name sys_clk_p -waveform {0.000 2.500} [get_ports sys_clk_p]

注意:不能使用 AB23 作为时钟,该时钟作为 DDR 专用时钟,会报错。

可在《Versal Adaptive SoC Package Pinout Files》中查看,该引脚为 DDRMC 专用引脚:

Versal Adaptive SoC Package Pinout Files

Pin	    Pin Name                             Bank	I/O Type	XPIOPerf	DDRMC ONLY
---------------------------------------------------------------------------------------
AC23	IO_L24N_GC_XCC_N8P1_M0P103_701       701	XPIO	    HIGH	    YES_PLUS_GC
AB23	IO_L24P_GC_XCC_N8P0_M0P102_701       701	XPIO	    HIGH	    YES_PLUS_GC

在《Versal Adaptive SoC Packaging and Pinouts Architecture Manual (AM013)》中也有提到,与之前的 Zynq MPSoC 有不同之处(见 Differences from Previous Generations 部分):

I/Os in some banks on the left and right edges of the XPIO rows do not have direct access to all I/O logic resources and can only be used for DDR memory controller (DDRMC) applications.

3.1.4 Flow Navigator 差异

3.1.5 下载 PDI

下载完毕 PDI(Programmable Device Image)后:

3.2 CIPS system

3.2.1 导入 CIPS

1)直接在 IP Integrator 中导入 CIPS IP:

2)点击 Run Block Automation

CIPS 包含一个时钟和复位输出,一个 DDR 控制器(通过新增一个 AXI NoC 连接)。

3)更改名称后,得到如下结果:

其中 ddr_cref 时钟配置为 200 MHz。

 

3.2.2 PS PMC 配置

1)QSPI 设置

2)SD0/eMMC0 设置

3)SD1/eMMC1 设置

4)USB2.0、GEM0 设置

5)UART0 设置

6)TTCx、PS GPIO EMIO 设置

7)MIO24、MIO25 设置

  • MIO24 配置成 GPIO-Input,对应 PS 端 Key 按键
  • MIO25 配置成 GPIO-Output,对应 PS 端 LED 灯

8)Clocking 设置

Input Clocks,REF_CLK 修改为 33.333 MHz。

Output Clocks,PL CLK0 修改为 200 MHz。

9)Interrupts 设置

可选,把所有 IPI 都勾选上。

10)配置 CIPS 完毕:

3.2.3 AXI NoC 配置

1)General 页面

DDR Address Regin 1 选择为 NONE。

2)DDR Basic 页面

调整 Input System Clock Period (ps) 为 5000 (200 MHz) 即可。

3)DDR Memory 页面

  • Speed Bin = DDR4-3200A (22-22-22)
  • Base Component Width = x16

 

3.2.4 添加 VIO

1)Block Design

2)led_blink

module led_blink(
    input           clk,
    output  reg     led
    );
 
parameter High_Time = 100_000_000 - 1;
 
reg [31:0]  counter = 0;
 
always @(posedge clk) begin
    if (counter < High_Time) begin
        counter <= counter + 1;
    end
    else begin
        counter <= 0;
        led = ~led;
    end
end
 
endmodule

3.2.5 PIN 绑定

set_property PACKAGE_PIN AC11 [get_ports {DDR4_act_n[0]}]
set_property PACKAGE_PIN AB12 [get_ports {DDR4_adr[0]}]
set_property PACKAGE_PIN AB17 [get_ports {DDR4_adr[10]}]
set_property PACKAGE_PIN AE13 [get_ports {DDR4_adr[11]}]
set_property PACKAGE_PIN AH12 [get_ports {DDR4_adr[12]}]
set_property PACKAGE_PIN AD15 [get_ports {DDR4_adr[13]}]
set_property PACKAGE_PIN AD21 [get_ports {DDR4_adr[14]}]
set_property PACKAGE_PIN AD17 [get_ports {DDR4_adr[15]}]
set_property PACKAGE_PIN AC13 [get_ports {DDR4_adr[16]}]
set_property PACKAGE_PIN AE22 [get_ports {DDR4_adr[1]}]
set_property PACKAGE_PIN AD22 [get_ports {DDR4_adr[2]}]
set_property PACKAGE_PIN AB15 [get_ports {DDR4_adr[3]}]
set_property PACKAGE_PIN AD12 [get_ports {DDR4_adr[4]}]
set_property PACKAGE_PIN AE17 [get_ports {DDR4_adr[5]}]
set_property PACKAGE_PIN AD16 [get_ports {DDR4_adr[6]}]
set_property PACKAGE_PIN AG11 [get_ports {DDR4_adr[7]}]
set_property PACKAGE_PIN AE14 [get_ports {DDR4_adr[8]}]
set_property PACKAGE_PIN AB14 [get_ports {DDR4_adr[9]}]
set_property PACKAGE_PIN AC16 [get_ports {DDR4_ba[0]}]
set_property PACKAGE_PIN AD11 [get_ports {DDR4_ba[1]}]
set_property PACKAGE_PIN AB18 [get_ports {DDR4_bg[0]}]
set_property PACKAGE_PIN AC19 [get_ports {DDR4_ck_t[0]}]
set_property PACKAGE_PIN AD19 [get_ports {DDR4_ck_c[0]}]
set_property PACKAGE_PIN AB21 [get_ports {DDR4_cke[0]}]
set_property PACKAGE_PIN AC17 [get_ports {DDR4_cs_n[0]}]
set_property PACKAGE_PIN AG12 [get_ports {DDR4_dm_n[0]}]
set_property PACKAGE_PIN AH13 [get_ports {DDR4_dm_n[1]}]
set_property PACKAGE_PIN AE28 [get_ports {DDR4_dm_n[2]}]
set_property PACKAGE_PIN AD24 [get_ports {DDR4_dm_n[3]}]
set_property PACKAGE_PIN V22  [get_ports {DDR4_dm_n[4]}]
set_property PACKAGE_PIN V28  [get_ports {DDR4_dm_n[5]}]
set_property PACKAGE_PIN N28  [get_ports {DDR4_dm_n[6]}]
set_property PACKAGE_PIN U25  [get_ports {DDR4_dm_n[7]}]
set_property PACKAGE_PIN AF14 [get_ports {DDR4_dq[0]}]
set_property PACKAGE_PIN AH18 [get_ports {DDR4_dq[10]}]
set_property PACKAGE_PIN AH20 [get_ports {DDR4_dq[11]}]
set_property PACKAGE_PIN AH14 [get_ports {DDR4_dq[12]}]
set_property PACKAGE_PIN AH22 [get_ports {DDR4_dq[13]}]
set_property PACKAGE_PIN AH15 [get_ports {DDR4_dq[14]}]
set_property PACKAGE_PIN AG22 [get_ports {DDR4_dq[15]}]
set_property PACKAGE_PIN AF26 [get_ports {DDR4_dq[16]}]
set_property PACKAGE_PIN AE26 [get_ports {DDR4_dq[17]}]
set_property PACKAGE_PIN AH27 [get_ports {DDR4_dq[18]}]
set_property PACKAGE_PIN AE27 [get_ports {DDR4_dq[19]}]
set_property PACKAGE_PIN AG18 [get_ports {DDR4_dq[1]}]
set_property PACKAGE_PIN AG27 [get_ports {DDR4_dq[20]}]
set_property PACKAGE_PIN AD26 [get_ports {DDR4_dq[21]}]
set_property PACKAGE_PIN AG26 [get_ports {DDR4_dq[22]}]
set_property PACKAGE_PIN AG28 [get_ports {DDR4_dq[23]}]
set_property PACKAGE_PIN AE24 [get_ports {DDR4_dq[24]}]
set_property PACKAGE_PIN AD25 [get_ports {DDR4_dq[25]}]
set_property PACKAGE_PIN AH24 [get_ports {DDR4_dq[26]}]
set_property PACKAGE_PIN AF25 [get_ports {DDR4_dq[27]}]
set_property PACKAGE_PIN AG23 [get_ports {DDR4_dq[28]}]
set_property PACKAGE_PIN AG25 [get_ports {DDR4_dq[29]}]
set_property PACKAGE_PIN AG15 [get_ports {DDR4_dq[2]}]
set_property PACKAGE_PIN AH23 [get_ports {DDR4_dq[30]}]
set_property PACKAGE_PIN AH25 [get_ports {DDR4_dq[31]}]
set_property PACKAGE_PIN Y22  [get_ports {DDR4_dq[32]}]
set_property PACKAGE_PIN V23  [get_ports {DDR4_dq[33]}]
set_property PACKAGE_PIN Y23  [get_ports {DDR4_dq[34]}]
set_property PACKAGE_PIN W24  [get_ports {DDR4_dq[35]}]
set_property PACKAGE_PIN AA22 [get_ports {DDR4_dq[36]}]
set_property PACKAGE_PIN V24  [get_ports {DDR4_dq[37]}]
set_property PACKAGE_PIN AA21 [get_ports {DDR4_dq[38]}]
set_property PACKAGE_PIN W25  [get_ports {DDR4_dq[39]}]
set_property PACKAGE_PIN AF18 [get_ports {DDR4_dq[3]}]
set_property PACKAGE_PIN V25  [get_ports {DDR4_dq[40]}]
set_property PACKAGE_PIN W27  [get_ports {DDR4_dq[41]}]
set_property PACKAGE_PIN AA28 [get_ports {DDR4_dq[42]}]
set_property PACKAGE_PIN W26  [get_ports {DDR4_dq[43]}]
set_property PACKAGE_PIN Y26  [get_ports {DDR4_dq[44]}]
set_property PACKAGE_PIN AA26 [get_ports {DDR4_dq[45]}]
set_property PACKAGE_PIN AB28 [get_ports {DDR4_dq[46]}]
set_property PACKAGE_PIN AB26 [get_ports {DDR4_dq[47]}]
set_property PACKAGE_PIN P27  [get_ports {DDR4_dq[48]}]
set_property PACKAGE_PIN K27  [get_ports {DDR4_dq[49]}]
set_property PACKAGE_PIN AF13 [get_ports {DDR4_dq[4]}]
set_property PACKAGE_PIN R28  [get_ports {DDR4_dq[50]}]
set_property PACKAGE_PIN L28  [get_ports {DDR4_dq[51]}]
set_property PACKAGE_PIN R27  [get_ports {DDR4_dq[52]}]
set_property PACKAGE_PIN K28  [get_ports {DDR4_dq[53]}]
set_property PACKAGE_PIN T28  [get_ports {DDR4_dq[54]}]
set_property PACKAGE_PIN M27  [get_ports {DDR4_dq[55]}]
set_property PACKAGE_PIN P25  [get_ports {DDR4_dq[56]}]
set_property PACKAGE_PIN L26  [get_ports {DDR4_dq[57]}]
set_property PACKAGE_PIN R26  [get_ports {DDR4_dq[58]}]
set_property PACKAGE_PIN M26  [get_ports {DDR4_dq[59]}]
set_property PACKAGE_PIN AF19 [get_ports {DDR4_dq[5]}]
set_property PACKAGE_PIN T25  [get_ports {DDR4_dq[60]}]
set_property PACKAGE_PIN K26  [get_ports {DDR4_dq[61]}]
set_property PACKAGE_PIN T26  [get_ports {DDR4_dq[62]}]
set_property PACKAGE_PIN J25  [get_ports {DDR4_dq[63]}]
set_property PACKAGE_PIN AG13 [get_ports {DDR4_dq[6]}]
set_property PACKAGE_PIN AE19 [get_ports {DDR4_dq[7]}]
set_property PACKAGE_PIN AH17 [get_ports {DDR4_dq[8]}]
set_property PACKAGE_PIN AG21 [get_ports {DDR4_dq[9]}]
set_property PACKAGE_PIN AG17 [get_ports {DDR4_dqs_t[0]}]
set_property PACKAGE_PIN AG16 [get_ports {DDR4_dqs_c[0]}]
set_property PACKAGE_PIN AG20 [get_ports {DDR4_dqs_t[1]}]
set_property PACKAGE_PIN AH19 [get_ports {DDR4_dqs_c[1]}]
set_property PACKAGE_PIN AC28 [get_ports {DDR4_dqs_t[2]}]
set_property PACKAGE_PIN AD27 [get_ports {DDR4_dqs_c[2]}]
set_property PACKAGE_PIN AF24 [get_ports {DDR4_dqs_t[3]}]
set_property PACKAGE_PIN AF23 [get_ports {DDR4_dqs_c[3]}]
set_property PACKAGE_PIN Y24  [get_ports {DDR4_dqs_t[4]}]
set_property PACKAGE_PIN AA23 [get_ports {DDR4_dqs_c[4]}]
set_property PACKAGE_PIN Y28  [get_ports {DDR4_dqs_t[5]}]
set_property PACKAGE_PIN Y27  [get_ports {DDR4_dqs_c[5]}]
set_property PACKAGE_PIN U27  [get_ports {DDR4_dqs_t[6]}]
set_property PACKAGE_PIN U28  [get_ports {DDR4_dqs_c[6]}]
set_property PACKAGE_PIN P26  [get_ports {DDR4_dqs_t[7]}]
set_property PACKAGE_PIN N27  [get_ports {DDR4_dqs_c[7]}]
set_property PACKAGE_PIN AC22 [get_ports {DDR4_odt[0]}]
set_property PACKAGE_PIN AC24 [get_ports {DDR4_reset_n[0]}]

set_property PACKAGE_PIN AB23 [get_ports {ddr_cref_clk_p[0]}]

3.2.6 烧写和调试

1)Generate Device image

2)下载 PDI 和 LTX

3)DDR4 状态

烧写完毕,默认打开 DDR MC 状态界面:

4)VIO 调试界面

VIO LED 按照1秒闪烁,可以看出, pl0_ref_clk 时钟在 PDI 下载后直接输出:

 

4. 技术信息

4.1 两代对比

Versal™ Architecture and Product Data Sheet: Overview (DS950)

4.2 I/O

1)参考资料

  • 《Versal Adaptive SoC SelectIO Resources Architecture Manual (AM010)》
  • 《Versal Adaptive SoC Packaging and Pinouts Architecture Manual (AM013)》
  • 《Versal AI Edge Series Data Sheet: DC and AC Switching Characteristics (DS958)》

2)I/O 电压等级

3)Pin 命名规则,如:IO_L24P_GC_XCC_N8P0_M0P102_701

  • L[1 to 24][P or N]: Differential pair number with P (positive) and N (negative)
  • N[0 to 8]P[0 to 5]: XPHY nibble number and pin number within the nibble (NIBBLESLICE number)
  • M[0 to number of triplets]P[0 to 161]: Triplet number and pin within the triplet
  • [bank number]: Bank number
  • XCC: XCC source-synchronous RX clock used for data capture. (Strobe input for XPHY receive interfaces)

4)XPHY

XPHY 是 XPIO bank 的高性能 I/O 接口。每个 XPIO bank 包含九个 XPHY nibble。每个 XPHY nibble 被定义为六个 XPHY NIBBLESLICE 及其相关特性。XPHY NIBBLESLICE 包含输入和输出逻辑,由串行器、解串器、I/O 延时和接收器 FIFO 组成。XPHY NIBBLESLICE 可以作为发送器、接收器或双向电路运行。一个 XPHY nibble 还执行以下功能/特性:

  • 内置自校准 (BISC) 有助于对齐,并使用电压和温度补偿 (VTC) 来调整延迟线。
  • 为 XPHY NIBBLESLICE 中的接收器和发送器功能生成时钟。
  • 提供对寄存器接口单元 (RIU) 的访问,该单元提供对 XPHY nibble 所有功能的访问。
  • 三态控制。
  • TX 到 RX 回环。
  • 串行模式,支持时钟和数据相位关系未知的接收器接口(任何非源同步的接口)。

5)triplet(三元组),即三个连续的 XPIO 组,如下图所示:

每个 DDRMC 硬核都有三个与之关联的 XPIO Bank(称为一个 Triplet)包括二十七个差分引脚对(L0P/N至L26P/N)。

VE2302 只有一个 DDRMC 硬核,故 M[x] 只有 M0。

在 IO Ports 中,打开 Advanced IO Panner,可以看到 Hard MC 个数:

参考:Versal Memory Pinout in Triplet with Inaccessible Banks

4.3 Device Layout

(Architecture and Interconnect)

4.4 PMC

PMC,Platform Management Controller,平台管理控制器负责管理 Versal 设备,主要职责包括以下几个方面:安全启动和配置平台;以及生命周期管理,其中包括设备完整性和调试,以及系统监控。

  • Boot and Configuration
  • System Monitoring
  • Device Integrity and Debug
  • External Flash Memory Interfaces
  • Slave Boot Modes

4.5 AXI4 Debug Hub

如果设计包含任何 Vivado 调试核且 CIPS 已启用 1 个或多个 PL 复位,那么 AXI4 Debug Hub 将由 Vivado 在执行 opt_design 期间自动插入,并使用 NoC 连接到 CIPS。

AXI4 Debug Hub 可手动例化并连接到 CIPS,但这样将不会执行自动插入。

4.6 Address Maps

  • 4 GB processor system address map
  • 16 TB NoC interconnect address map

1)4 GB 地址映射可以分为两个部分:

前 2 GB: DDR 内存控制器
后 2 GB:各个寄存器模块、本地内存、各种访问端口,以及从处理系统到可编程逻辑 (PL) 的接口中的小窗口。
高速缓存一致性 PCIe 模块 (CPM) 中的目标地址(如果存在)。

5. 总结

本文分享学习 Versal 器件的一些经历记录,记录 Versal 初次使用过程:

  • PL 点灯
  • 构建 CIPS system
  • 搜集了一些技术信息和参考资料

6. 参考资料

6.1 查找官方文档

AMD ׀ together we advance_AI

6.2 常用文档

  • 1.Versal Architecture and Product Data Sheet: Overview (DS950)
  • 2.Versal Premium Series Data Sheet: DC and AC Switching Characteristics (DS959)
  • 3.Versal Adaptive SoC Technical Reference Manual (AM011)
  • 4.Versal Adaptive SoC SelectIO Resources Architecture Manual (AM010)
  • 5.Versal Adaptive SoC PCB Design User Guide (UG863)
  • 6.Versal Adaptive SoC Memory Resources Architecture Manual (AM007)
  • 7.Versal Adaptive SoC GTY and GTYP Transceivers Architecture Manual (AM002)
  • 8.Versal Adaptive SoC System Monitor Architecture Manual (AM006)
  • 9.Versal Adaptive SoC Clocking Resources Architecture Manual (AM003)
  • 10.Versal Adaptive SoC GTM Transceivers Architecture Manual (AM017)

6.3 视频课程

Getting Started with the Versal Adaptive SoC Platformhttps://www.amd.com/en/training/customer/adaptive-computing/customer-training/getting-started-versal-acap.htmlhttps://www.amd.com/en/training/customer/adaptive-computing/customer-training/getting-started-versal-acap.html

1)架构概述:提供 Versal 架构的高级概述,说明 Versal 架构中可用的各种计算资源。

2)设计工具流:将 Versal 架构中的各种计算资源映射到所需的工具,并描述如何以它们为目标进行最终的映像文件组装。

3)处理系统:回顾构成处理系统的 Arm® Cortex®-A72 处理器 APU 和 Cortex-R5 处理器 RPU。还将介绍平台管理控制器 (PMC)、处理系统管理器 (PSM)、I/O 外设和 PS-PL 接口。

4)NoC 简介和概念:介绍使用片上网络的原因、其基本要素和常用术语。

5)AI 引擎:讨论 AI 引擎阵列架构、术语和 AIE 接口。

6)SelectIO 资源:描述 I/O bank、SelectIO™ 接口和 I/O 延迟特性。

7)系统仿真:解释如何在 Versal 器件设计中执行系统级仿真。

8)应用映射和分区:介绍系统设计方法,并描述如何将不同的计算模型(顺序、并发和功能)映射到 Versal 自适应 SoC。此外,还描述了什么是应用程序分区,以及如何通过使用 Versal 器件中的各种计算域来加速应用程序。


http://www.kler.cn/a/510427.html

相关文章:

  • 线上工单引发的思考:Spring Boot 中 @Autowired 与 @Resource 的区别
  • 左神算法基础提升--4
  • 如何使用C#与SQL Server数据库进行交互
  • Spark任务提交流程
  • 递归40题!再见递归
  • 【逆境中绽放:万字回顾2024我在挑战中突破自我】
  • Stable Diffusion 3.5 模型在 Linux 上的部署指南
  • 牛客周赛76B:JAVA
  • 【python_钉钉群发图片】
  • UBoot简单学习(TODO)
  • Ubuntu 24.04 LTS linux 文件权限
  • 前端实习第二个月小结
  • 数据库性能优化(sql优化)_索引详解04_深入理解B+树_yxy)
  • NPC与AI深度融合结合雷鸟X3Pro AR智能眼镜:引领游戏行业沉浸式与增强现实新纪元的畅想
  • HENGSHI SENSE 5.4 发布,ChatBI 成熟度进一步提升
  • 如何在uniapp中实现一个表格组件?
  • SpringBoot整合ShedLock,解决定时任务防止重复执行的问题
  • 【2024年华为OD机试】 (B卷,100分)- 敏感字段加密(Java JS PythonC/C++)
  • el-date-picker根据开始时间或结束时间禁用前后时间
  • C# 数据结构全面解析
  • 自动驾驶汽车目前面临的最大技术挑战是什么?
  • linux网络编程11——线程池
  • 【MySQL】事务(二)
  • 二叉树OJ题:挑战与突破
  • springboot自动配置原理(高低版本比较)spring.factories文件的作用
  • RISC-V精简指令集