主要内容

socAXIManager

读取和写入硬件板上的内存位置MATLAB

自从R2019a

描述

socAXIManager对象与MATLAB通信®在硬件板上运行的AXI管理IP。对象使用JTAG连接将读写命令转发到硬件板上的IP和访问从内存位置。通过一项socAXIManager对象作为参数时创建socIPCore对象,以便对象可以访问板上IP核内的内存位置。

创建

描述

例子

axiManagerObj= socAXIManager (供应商创建一个连接到指定的AXI管理器IP的对象供应商此连接使您能够从MATLAB中访问SoC设计中的内存位置。

axiManagerObj= socAXIManager (hw在指定的硬件板上创建一个连接到AXI管理器IP的对象。

axiManagerObj= socAXIManager (___、名称、值)创建具有一个或多个指定的附加属性的对象名称,值对参数。将每个属性名用引号括起来。在以前的语法中,指定除了输入参数之外的属性。

输入参数

全部展开

FPGA品牌名称,指定为“英特尔”“Xilinx”.AXI管理器IP取决于您拥有的FPGA类型。

硬件对象,指定为socHardwareBoard对象,表示到SoC硬件板的连接。

属性

全部展开

用于与FPGA板(仅限Xilinx板)通信的JTAG电缆类型,指定为“汽车”“FTDI”.当有多根电缆连接到主机时,此属性最有用。

当此属性设置为“汽车”(默认值),对象自动检测JTAG电缆类型。对象优先搜索Digilent®电缆,并使用该过程自动检测电缆类型。

  1. socAXIManager对象搜索Digilent电缆。如果对象发现:

    • 恰好一根Digilent电缆——对象使用该电缆与FPGA板通信。

    • 多于一条Digilent电缆——该对象返回一个错误。要解决此错误,请使用JTAGCableName财产。

    • No Digilent电缆——对象搜索FTDI电缆(参见步骤2)。

  2. 如果没有发现Digilent电缆,则socAXIManager对象搜索FTDI电缆。如果对象发现:

    • 恰好一根FTDI电缆——对象使用该电缆与FPGA板通信。

    • 超过一条FTDI电缆——该对象返回一个错误。要解决此错误,请使用JTAGCableName财产。

    • No FTDI电缆——该对象返回一个错误。若要解决此错误,请连接Digilent或FTDI电缆。

电缆搜索“汽车”mode优先使用Digilent电缆连接。如果一根Digilent和一根FTDI电缆连接到主机,且此属性设置为“汽车”,对象选择Digilent电缆与FPGA板通信。

当此属性设置为“FTDI”,则搜索FTDI线缆。如果对象发现:

  • 恰好一根FTDI电缆——对象使用该电缆与FPGA板通信。

  • 超过一条FTDI电缆——该对象返回一个错误。要解决此错误,请使用JTAGCableName财产。

  • No FTDI电缆——该对象返回一个错误。若要解决此错误,请连接Digilent或FTDI电缆。

有关示例,请参见选择“Multiple JTAG电缆”

用于与FPGA板通信的JTAG电缆用户名,指定为“汽车”或者一个字符向量。如果有多个相同类型的JTAG电缆连接到主机,则指定此属性。如果主机计算机有多个JTAG电缆,而您没有指定此属性,则该对象将返回一个错误。错误消息包含可用的JTAG电缆的名称。有关示例,请参见选择“Multiple JTAG电缆”

JTAG时钟频率,以MHz为单位,指定为正整数。对于英特尔®fpga的JTAG时钟频率必须为12mhz或24mhz。对于Xilinx fpga, JTAG时钟频率必须为33mhz或66mhz。JTAG时钟频率由线缆类型和FPGA板支持的最大时钟频率决定。金宝app

FPGA在JTAG链中的位置(仅限Xilinx板),指定为正整数。如果有多个FPGA或Zynq,请指定此属性值®设备在JTAG链上。

目标FPGA之前所有设备的指令寄存器长度之和(仅限Xilinx板),指定为非负整数。如果JTAG链上有多个FPGA或Zynq设备,则指定此属性值。

目标FPGA之后所有设备的指令寄存器长度之和(仅限Xilinx板),指定为非负整数。如果JTAG链上有多个FPGA或Zynq设备,则指定此属性值。

对象的功能

readmemory 从AXI4内存映射位置读取数据
释放 释放JTAG电缆资源
writememory 将数据写入AXI4内存映射位置

例子

全部折叠

有关如何在设计中配置和使用AXI管理器IP的示例,请参见外部存储器的随机存取.具体地说,回顾soc_image_rotation_axi_master.m脚本,初始化设备上的内存,启动FPGA逻辑,读取修改后的数据。本例只显示内存初始化步骤。

加载一个.mat包含从板配置参数派生的结构的文件。该文件由SoC建设者.这些结构也描述了该设计板的IP核和内存配置。创建一个JTAG AXI管理器连接socHardwareBoard对象,并将其传递给socAXIManager对象。的socAXIManager对象连接到硬件板并确认IP存在。

负载(“soc_image_rotation_zc706_aximaster.mat”);hwObj = socHardwareBoard(Xilinx Zynq ZC706评估试剂盒“连接”、假);AXIManagerObj = socAXIManager(hwObj);

通过加载图形数据并将其写入来初始化设备上的内存内容Region1.FPGA逻辑设计用于读取这些数据,旋转它,并将其写入Region2.清除的内容Region2

负载(“soc_image_rotation_inputdata.mat”);inputFigure = smallage;[x, y] = size(inputFigure);inputImage = uint32(重塑(inputFigure',1,x*y));writememory (AXIManagerObj memRegions.AXI4MasterMemRegion1 inputImage);writememory (AXIManagerObj memRegions.AXI4MasterMemRegion2 uint32 (0 (1, x * y)));

对于本例,必须在连接到MATLAB主机的硬件板上运行设计。

创建一个MATLAB AXI管理器对象。对象与硬件板连接,确认IP存在。可以使用供应商名称或名称创建对象socHardwareBoard对象。

mem = socAXIManager(“Xilinx”);

用一个命令读写一个或多个地址。默认情况下,函数为每个数据字自动增加地址。例如,写入10个地址,然后从单个位置读取数据。

写入内存(mem,140,[10:19]) rd_d = readmemory(mem,140,1)
Rd_d = uint32 10

现在,阅读来自十个地点的书面数据。

Rd_d = readmemory(mem,140,10)
Rd_d = 1×10 uint32行向量10 11 12 13 14 15 16 17 18 19

设置BurstType财产“固定”关闭自动递增并多次访问同一地址。例如,从同一个地址读写入的数据十次。

Rd_d = readmemory(mem,140,10,“BurstType”“固定”
Rd_d = 1×10 uint32行向量10 10 10 10 10 10 10 10 10 10

将增量数据写入同一地址十次。存储在address中的最终值14029

writememory (mem, 140,(二十29),“BurstType”“固定”) rd_d = readmemory(mem,140,10)
Rd_d = 1×10 uint32行向量29 11 12 13 14 15 16 17 18 19

或者,将地址指定为十六进制字符串。将读取的数据转换为uint32,使用OutputDataType财产。

writememory (mem、“1 c”,[0:4:64]) rd_d = readmemory(mem,“1 c”, 16岁,“OutputDataType”numerictype(0、6、4))
rd_d =列1到10 0 0.2500 0.5000 0.7500 1.0000 1.2500 1.5000 1.7500 2.0000 2.2500列11到16 2.5000 2.7500 3.0000 3.2500 3.5000 3.7500 DataTypeMode:定点:二进制点缩放signdness: Unsigned WordLength: 6 FractionLength: 4

当您完成对电路板的访问后,释放JTAG连接。

发行版(mem)

当多条JTAG电缆连接到主机计算机时,该对象优先使用Digilent电缆而不是FTDI电缆。要使用FTDI电缆,请指定JTAG电缆类型属性。

h = socAXIManager(“Xilinx”“JTAGCableType”“FTDI”

如果有两根相同类型的电缆连接到您的主机计算机,请指定JTAGCableNameJTAG管理器IP正在运行的板的属性。要查看JTAG电缆标识符,请尝试创建socAXIManager对象,在本例中,该对象会出错并返回当前JTAG电缆名称的列表。

h = socAXIManager(“Xilinx”
发现多个JTAG电缆:0 (JtagSmt1): #tpt_0001#ptc_0002#210203991642 1 (Arty): #tpt_0001#ptc_0002#210319789795请断开额外的电缆,或指定电缆名称作为输入参数。作为AXI管理器,请参阅FPGA Data Capture或MATLAB文档,了解如何设置电缆名称。

要与该Arty板通信,请指定匹配的JTAG电缆名称。

h = socAXIManager(“Xilinx”“JTAGCableName”“# tpt_0001 # ptc_0002 # 210319789795”

版本历史

在R2019a中引入