目录
本文是对 UG994 的 Addressing for Block Designs 的翻译整理,在做 Block Design 的 AXI 主从接口的地址映射很关键,这篇文章讲了地址映射的实现方法以及需注意事项。
处理器等主设备需要访问外围设备和内存等从设备。主设备通过 AXI 等接口读取和写入特定地址来访问从机。IP 集成器可以创建地址分配,从从机可以在指定的地址范围被主机访问。这些地址分配用于配置主机和互连 IP,例如 SmartConnect,以便它们根据地址进行访问。
在 IP 集成器中,在主机接口和从机接口之间的框图上建立了连接,可能通过互连 IP。这称为地址路径。从机接口将有一个或多个从属段,它们是内存的可寻址区域或主机想要访问的寄存器。
每个主机块具有一个或多个地址空间(例如,指令和数据地址空间)。从属段在主控地址空间中的特定地址处对主控可见。地址分配是选择基地址(即起始地址)和范围的行为在主机的地址空间内,从机将对主机可见。这分配然后将地址与主机的地址空间一起存储为主机段。主段只是一个地址分配,它分配了主机可以使用的基地址和范围访问从机。
上图说明了从主机接口 (master_block) 跨越的地址路径从接口 (slave_block) 的地址路径,允许主机的地址空间访问从属段资源。在主地址中创建主段地址分配期间的空间。主段专用于主地址的一部分用于访问从属段资源的空间(由基地址和范围定义)。
主机中可能有多个地址空间,包括指令、数据地址等,用于对从机进行控制或读写数据。
Bus Interface
一组共享共同功能的信号,请参阅使用总线接口。主总线接口启动总线事务,通常命名为 m_axi 或类似,其中 是一个类似 00 的数字。主总线接口提供对主地址空间。从总线接口响应总线事务,通常命名为 s_axi 或类似,其中 是一个类似 00 的数字。从总线接口提供对 00 的访问或多个从属段,可以分配到主控的地址空间。
TCL命令:
Tcl:get_bd_intf_pins
Slave Segment
可通过从接口访问的内存或寄存器的可寻址区域。一个从机段可以分配到主机的地址空间。从属段具有范围(大小)。主机可以访问全部或部分从机段。通常,从属段是浮动的,这意味着它可以在主地址空间。一个固定的从属段有一个固定的偏移量,它必须在一个主控段内分配地址空间。
注意:以前,在 IP-XACT 中,从属网段称为地址块。
TCL命令:
Tcl:get_bd_addr_segs(返回主段和从段)
Address Space
可以分配从属段的主机的可寻址范围。一个地址空间可以由多个主接口共享。一个主机可能有多个地址空格。
TCL命令:
Tcl:get_bd_addr_spaces
Master Segment
从属段分配到主控地址空间。它有一个偏移量和范围,并与主机的地址空间一起保存。当从 Master's 中排除 slave Segment 时,也会创建 Master Segment地址空间。
注意:以前,在 IP-XACT 中,主段称为地址段。
TCL命令:
Tcl:get_bd_addr_segs(返回主段和从段)
Address Width
地址宽度是地址总线的位宽。它决定了最大值可寻址的高地址。地址宽度为 N 的接口可以寻址从 0 到 2^N-1。
一些主机和 IP 具有固定的地址宽度。某些 IP(例如 SmartConnect)将自动调整它们的地址宽度以适应所有分配的网络地址。
Aperture
限制地址分配的偏移量和范围。一些主接口和一些互连接口有范围。地址分配必须适合在地址路径上看到的范围。
一个总线接口可以有一个或多个明确的范围。如果总线接口没有一个显式范围,那么它的范围是由它的地址宽度给出的整个范围。这互连 IP(例如 SmartConnect)的地址宽度通常计算为容纳它需要支持的所有地址分配。
范围显示在接口的属性窗口和地址路径中属性窗口。
Excluded Address
一种显式标记从属设备为主设备不可访问的机制,以确保互连网络(例如 SmartConnect)被配置为阻止访问。
Address Path
地址路径是 IP 集成器框图上来自主接口的路径,通过互连网络,到从接口。
地址编辑器中的行代表地址路径。选择行中的地址编辑器还将在框图上选择地址路径,并显示地址路径属性窗口。
Address Network
地址网络是通过共享互连的地址路径的集合网络。网络中的每个从机必须占用单独的网络地址(不是重叠)。不同网络中的从站可以分配相同的地址。
地址编辑器是一个列出所有地址路径的树表视图。
地址编辑器工具栏允许您根据状态控制显示哪些行:
当从机被设定为不可访问,则会将地址分配移除。
例如一个设计当中,其中两个主机通过一个 SmartConnect 连接到两个从机。通常情况下,SmartConnect 将完全连接,就是两个主机可以访问到任一从机。如果需要指定一个主机不去访问其中一个从机,这时可以将路径标记为排除,会将网络配置阻止不需要的地址路径。
在验证期间,如果有任何未分配的路径,将收到严重警告,因此路径必须标记为已分配或已排除。
在某些情况下,可能存在没有有效地址分配的路径,例如,如果路径上没有重叠的范围。在这种情况下自动分配将排除这些路径。
已分配但断开连接的路径将在地址编辑器中显示为不完整路径。要解决此问题,请取消分配或重新连接路径。
地址路径显示在视图中,并且可以通过各种方式进行分组。使用齿轮图标在视图的右上角自定义分组。
比如下面BD中的MicroBlaze处理器(如下图所示)就是具有两个网络的单主机 (microblaze_0) 系统,并且具有不同的主接口(DLMB、ILMB 和 M_AXI_DP),提供对单独数据和指令的访问地址空间。
从菜单中选择 Group by Networks 以排列不同的地址段表格如下:
从菜单中选择按主模块和主接口分组以查看地址段如下:
通过右键单击列标题可以显示和隐藏地址编辑器列。
主行的名称列给出对象的名称(网络名称和地址空间姓名)。对于地址路径,名称列在开始时给出主节点的名称的地址路径。
必须先分配路径,然后才能编辑基地址和范围。
地址路径菜单具有分配和取消分配路径以及排除和取消分配路径的条目包括路径。
可以将多个地址范围分配给可以连接到多个外部主端口 IP 集成器设计环境之外的从设备。考虑以下示例,其中 master 可以连接多个外部 slave。
它表示为一个虚拟从属段,M_AXI/Reg,如下图所示,在地址编辑器。该段可以映射到图中主设备的地址空间,在本例 master_1 和 master_2。
该段的偏移量是主master_1用来发起事务的偏移量连接到 To_External_Slaves 接口的从机。这个界面也可以用于通过创建访问不一定在相同偏移量和范围内的其他从机下面的 assign_bd_address Tcl 命令中描述的其他段:
- assign_bd_address -external -dict {offset 0x00000000 range 64M offset 0x20000000range 4M}
- [get_bd_addr_segs /master_1/Data/SEG_M_AXI_Reg] -target_address_space[get_bd_addr_space
- /jtag_axi_0]
执行这个 Tcl 命令会创建两个独立的地址空间,一个在 0x00000000,一个范围为 64M,第二个位于 0x20000000,范围为 4M。另一种看待方式这个特性是假设本例中的master_1,需要通过寻址其他 slave 相同的从接口 To_External_Slaves。
可以将 .csv 文件中的现有地址映射导入地址编辑器以执行地址任务。现有设计的地址映射也可以导出到 .csv 文件。为此,右键单击地址编辑器中的任意位置,然后选择导出到文件(以写出)或导入自文件(引入)从上下文菜单。
对应的Tcl命令如下图:
- assign_bd_address -import_from_file <path_to_csv_file_input> assign_bd_address -
- export_to_file <path_to_the_csv_file_output>
预先存在的地址映射信息(或来自预先分配的地址映射的特定段)可以也可以通过读取包含新地址映射的 .csv 文件来覆盖。
在地址编辑器中选择地址路径时,属性窗口会显示地址路径属性。
通用页面列出了地址路径的主要组成部分。从这个页面你可以去主从接口、主从接口或主从接口的各个属性页从属段。
路径页面显示路径的每个部分,包括路径上的范围。
孔径在地址分配中很重要。如术语部分所述,孔径是一个偏移量和范围,它限制了从属段可以在主地址中分配的位置空间,即分配必须适合孔径。
例如,如果一个孔径只能接受从 0 到 1G 的地址,那么就不能分配一个通过该孔径从 2G 开始的地址。硬核处理器,例如 Zynq 中的处理器设备的主接口上可能有多个孔径。
孔径也可能来自地址宽度。例如,32 位 MicroBlaze 处理器可以生成0到4G的地址,所以不能通过这个分配8G开始的地址孔径。
Vivado IP 集成器提供交叉探测地址路径或网络的能力地址编辑器到块设计画布中的相应元素。
例如地址编辑器中的两个地址路径 axi_gpio_0 和 axi_timer_0 是选择。
如果现在切换到块设计窗口,可以看到对应的地址路径已在画布上突出显示。
并排显示块设计和寻址视图通常很有用。为此,请右键单击地址编辑器选项卡或图表选项卡,然后选择新建垂直组。
随着设计中的寻址变得越来越复杂,设计人员需要更好地理解并更轻松地可视化设计的系统地址图。在 IP 集成商中,地址编辑器功能在由主机分组的表视图中显示地址。为了增强这一点,地址映射功能以直观的从属中心视图和图形方式显示寻址表示 AXI 从设备在网络地址空间中的布局。这在以下情况下特别有用多个主机访问一个从机,结果地址映射的清晰表示是必要的。
地址映射窗口,类似于地址编辑器信息,总是自动显示每当 IP 集成器图包含寻址信息时。
地址图中的主要分组是按地址网络。地址网络是一组共享互连的主机和从机,因此具有共享的“网络地址空间”。每个网络显示在两个部分:主机(显示在左侧)和从机(显示在右侧)。
标题为 Slaves 的右栏是网络地址空间。从列中的每个条目代表一个从机。从机的偏移量在左边给出,范围在右边。这总线接口名称在代表从机的块中给出。每个从机都有一个工具提示给出从属段的名称、偏移量和范围。
一个从机可以分配给多个主机。一个从机的所有分配创建一个网络部分。单击从属设备将在图中选择它。
右键单击地址映射窗口并选择新建垂直组通常很有帮助并排排列窗户。
从属设备左侧的主机部分显示了按 BD 单元分组的主机。每个BD单元格有一组主界面,由单元格中的垂直列表示。
上图显示了一个名为 ps_cips 的单元格,其中有 8 个主接口,全部显示为垂直列。
每个主机接口可能有多个分配或主段,显示为较小的主界面内的蓝色框。这些与从列水平对齐。这些以图形方式显示从机映射到每个主机地址空间的位置。他们是与从属部分中的从属相同的颜色,表示它们代表所见的从属由主人。
将鼠标悬停在从机列或主段中的从机上时,从机和所有关联的主段都以较浅的颜色显示,以表明它们都代表从机。
当两个相邻的主机接口具有完全相同的分配集时,它们是靠得很近,如上图所示,前两个 FPD_AXI_NOC 接口,下一个一组四个 FPD_CCI_NOC 接口。当分配有差异时,则更大主接口之间显示间隙。
将鼠标悬停在主段上显示一个工具提示,其中包含有关分配的信息。
可以单击 Master、Master Interface、Master Segment 或 Slave 以在两个地址映射和图表窗口。单击主段时,整个地址在图中选择了路径,并选择了地址编辑器中的相应行。
不同的 master 可能对同一个 slave 有不同的分配。在下图中,第一个和第三个master只看到slave的一部分,第二个master看到整个区域。如果排除地址分配(下面的第三个主控),它显示为灰色,工具提示表示“排除段”。
缩放
从站可以使用三个比例选项显示:对数、线性和恒定大小。
默认为对数刻度,其中从属的垂直大小基于其范围的对数。这个在从站大小差异很大的许多情况下效果最佳。
当显示更接近相同大小的从机时,最好使用线性比例。如果有两个从机,一个的范围是另一个的两倍,线性比例会显示更大小者的两倍大。如果从机变得非常大,则会用弯曲的切割标记绘制。
恒定大小选项将所有从站显示为相同大小,而不管它们的范围大小。在对数和线性比例,从机之间的视觉差距也根据差距的大小进行缩放。Ctrl键+鼠标滚轮可用于垂直放大和缩小
在浏览器中显示
Scale 旁边的工具栏按钮允许在 Web 浏览器中显示地址图。这地址地图在浏览器中仍然是完全交互式的。如果浏览器支持将页面另存为HTML(通常带有右键菜单)这对于文档和共享很有用,但是保存的页面不会是交互式的。
Vivado IP 集成器提供预置预设以显示模块设计的寻址视图帆布。当选择此视图时,只有块设计画布上的寻址连接显示,它提供了一个简化的视图。不属于地址路径的所有单元或网络选择此选项时,将从块设计画布中消失。
常见的寻址相关的严重警告和错误如下:
- [BD 41-971] “Slave segment <name of slave segment> assigned into <addressspace> at <offset>
- overlaps with slave segment <name of slave segment>already assigned at <offset>. Please
- assign at the next available address.
此消息通常在验证期间显示。每个外设都必须映射到地址空间内不重叠的内存范围。
- [BD 41-1356] Slave segment
is not assigned intoaddress space - of address space>. Please use Address Editor to eitherassign or exclude it.
此消息通常在验证期间显示。如果 master 可以访问 slave,它应该是要么映射到主机的地址空间,要么被排除在外。
- [BD 41-1353] Slave segment
is mapped at disjointaddresses inaddress - space
address space> at and in address spaceaddress space>at . It is illegal to have the same slave segment mapped todifferentaddresseswithin - the same network. Peripherals must either be mapped to thesame offset in allmasters, to
- addresses that are subsets of a larger aligned address, or tocontiguous addresses that can
- be combined.
此消息通常在验证期间显示。在定义为一组的网络内主机访问通过一组互连连接的同一组从机,每个从机必须映射到每个主地址空间、孔径或子集内的相同地址的最大地址范围。