IP 集成
Holoscan 传感器桥接 IP 的顶层模块是 “HOLOLINK_top”。
Holoscan 传感器桥接 IP 设计为易于配置,以适应 IP 的各种用例,例如传感器和以太网端口的数量。它还设计为与多个 FPGA 供应商兼容。以下描述了用户可用的配置。
宏定义
Holoscan 传感器桥接定义文件 “HOLOLINK_def.svh” 定义了以下宏。
宏可以配置为用户 Holoscan 传感器桥接 IP 的应用。默认宏值是已经过测试和验证的配置。
表 13
**宏 | 测试值 | 描述 |
---|---|---|
FPGA_VENDOR | LATTICE, PSG, MICROCHIP | 定义所使用的 FPGA 供应商。 |
HIF_CLK_FREQ | 156250000(对于 DATAPATH_WIDTH=64) 201416016 (对于 DATAPATH_WIDTH=512) |
主机接口的时钟频率。单位为 Hz |
APB_CLK_FREQ | 19531250(对于 DATAPATH_WIDTH=64) 100000000 (对于 DATAPATH_WIDTH=512) |
APB 接口的时钟频率。单位为 Hz |
BOARD_ID[15:0] | 16’h02 用于 Lattice LF-SNSR-ETH-EV 16’h04 用于 Microchip MPF200-ETH-SENSOR-BRIDGE |
用于枚举数据包 |
ENUM_EEPROM | 已定义或未定义 | 定义后,从外部非易失性存储器读取枚举数据包的内容。如果未定义,请使用下面定义的宏… |
MAC_ADDR[47:0] | 任何值 | 如果未定义 ENUM_EEPROM,则用于枚举数据包。 |
BOARD_VER[159:0] | 任何值 | 如果未定义 ENUM_EEPROM,则用于枚举数据包。 |
BOARD_SN[55:0] | 任何值 | 如果未定义 ENUM_EEPROM,则用于枚举数据包。 |
FPGA_CRC[15:0] | 任何值 | 如果未定义 ENUM_EEPROM,则用于枚举数据包。 |
MISC[31:0] | 任何值 | 如果未定义 ENUM_EEPROM,则用于枚举数据包。 |
DATAPATH_WIDTH | 64, 512 | 传感器 AXI 流 TDATA 的宽度,以位为单位。此数字必须是字节对齐的。即,它必须是可以被 8 整除的数字。 |
DATAKEEP_WIDTH | DATAPATH_WIDTH/8 | 传感器 AXI 流 TKEEP 的宽度。不应更改此值。 |
DATAUSER_WIDTH | 1 | 传感器 AXI 流 TUSER 信号的宽度。 |
SENSOR_IF_INST | 1-2 | 传感器接口的数量。 |
HOST_WIDTH | 64, 512 | 主机 AXI 流 TDATA 的宽度,以位为单位。此数字必须是字节对齐的。即,它必须是可以被 8 整除的数字。 |
HOSTKEEP_WIDTH | DATAPATH_WIDTH/8 | 主机 AXI 流 TKEEP 的宽度。不应更改此值。 |
HOSTUSER_WIDTH | 1 | 主机 AXI 流 TUSER 信号的宽度。 |
HOST_IF_INST | 1-2 | 主机接口的数量。 |
HOST_MTU | 1500 (对于 10G 系统,请勿更改) | 以太网数据包的大小,以字节为单位。 |
SPI_INST | 1-8 | SPI 接口的数量。 |
I2C_INST | 1-8 | I2C 接口的数量。 |
GPIO_INST | 0-255 | GPIO 输入和输出位的数量。 |
GPIO_RESET_VALUE[GPIO_INST-1:0] | 0 | GPIO 位的复位值。 |
REG_INST | 1-8 | 用户寄存器的数量。 |
SIF_SORT_RESOLUTION | 请勿触摸 | 待定。请勿更改。 |
SIF_VP_COUNT | 请勿触摸 | 待定。请勿更改。 |
SIF_VP_SIZE | 请勿触摸 | 待定。请勿更改。 |
SIF_NUM_CYCLES | 请勿触摸 | 待定。请勿更改。 |
SIF_DYN_VP | 请勿触摸 | 待定。请勿更改。 |
SIF_MIXED_VP_SIZE | 请勿触摸 | 待定。请勿更改。 |
N_INIT_REG | 整数值 | 初始化寄存器的数量。 |
构建版本
参数 “HOLOLINK_REV” 可以传递到 “HOLOLINK_top” 模块。此参数用于标识 FPGA 和 HOLOLINK 的版本,并作为枚举数据包的一部分发送到主机。
从实例化 “HOLOLINK_top” 模块的模块中,对于 Holoscan SDK v2.0.0 版本,实例化的参数 HOLOLINK_REV[15:0] 必须设置为 16’h2412。
枚举数据包
Holoscan 传感器桥接 IP 大约每秒传输一次广播 UDP 枚举数据包。枚举数据包的内容可以来自板载非易失性存储器或 “HOLOLINK_def.svh” 中定义的宏。
批量生产带有 HOLOLINK IP 的板卡需要外部 EEPROM 来存储唯一的 MAC 地址和板卡序列号。当使用评估平台进行测试和启动时,使用宏的固定值是可以接受的。
下面进一步解释了用于枚举数据包的每个宏。
BOARD_ID:此宏定义了板卡 ID。Holoscan 使用此值来识别它正在与哪个板卡接口。此宏必须定义,并且不是可选地存储在非易失性存储器中。
ENUM_EEPROM:当定义此宏时,以下宏的内容会在启动时从板载非易失性存储器中检索。以下宏的内容必须存储在非易失性存储器的特定地址中。更多详细信息可应要求提供。
仅当未定义 ENUM_EEPROM 宏时,才使用下面列出的宏。
MAC_ADDR:此宏定义了 FPGA 的 UDP MAC 地址。对于每个可用的主机接口,MAC 地址递增 1。例如,如果 MAC_ADDR 宏定义为 48’hCAFEC0FFEE00,则主机接口 0 的地址为 48’hCAFEC0FFEE00,主机接口 1 的地址为 48’hCAFEC0FFEE01,依此类推。
BOARD_VER:此宏定义了板卡版本。
BOARD_SN:此宏定义了板卡序列号。
FPGA_CRC:此宏定义了 FPGA 位图的 CRC,仅当未定义 ENUM_EEPROM 宏时才使用。预期功能是供软件通过检查其与软件计算结果的对比来检查 FPGA 位图的有效性。此功能尚不支持。
MISC:此宏定义了杂项信息。
Holoscan 传感器桥接 IP 提供了系统初始化功能,以便在通电时写入寄存器。此功能用于初始化以太网块,以在 FPGA 和主机之间建立以太网连接,并且可以用于顶层设计中的任何其他用户功能。
要初始化的寄存器列表在 “Hololink_def.svh” 中定义为 “init_reg” 数组。“init_reg” 是一个解压缩数组,大小为 [N_INIT_REG] [63:0],其中 N_INIT_REG 宏定义了要初始化的寄存器数量,而 64 位向量用于定义 [63:32] 处的 32 位寄存器地址和 [31:0] 处的 32 位写入数据。
为了给出一个 init_reg 数组条目的示例
{32’h1000_0020, 32’h0000_00FF} //init_reg[0]
将数据 0x0000_00FF 写入 User REG_INST_0 块地址偏移 0x0000_0020。
系统初始化完成后,“o_init_done” 端口将在 “i_apb_clk” 域中被置为高电平。如果用户的逻辑依赖于以太网块初始化,则可以使用此信号来门控他们的逻辑。