开发者分享 | Alveo加速卡上管理子系统 CMC 介绍

本文转载自:XILINX开发者社区微信公众号

本文来自 XILINX 高级产品应用工程师, 赛灵思中文论坛经理 Zhendong Wu.

Alveo 加速卡除了有我们 ultrascale+系列的芯片以外,还有 TI 的 MSP432,它的作用就是监控板子的状态,比如电流电压温度等信息。主控端可以通过 FPGA,访问 MPS432,然后获取这些信息。那么怎么样简单的获得这些信息呢,为此我们准备了 CMSIP。

系统构架

下面这个图就是整个主控与 FPGA 以及 MPS432 的模块图

有几个关键的点简单说一下,

首先图中的红色框可以看到 CMS 和 MSP432 的数据通过 UART 接口。

然后获取的板上的信息都是存储在 BRAM 中(绿色)

Microblaze 是 CMS 的主控模块,控制 UART 接口,以及将获取的数据存储到 BRAM 中。

最后 CMS 本身有 AXI4-Lite 接口可以连接到 XDMA,主控端就可以访问到 BRAM 中的数据了。

CMS example 设计

CMS 的 IP 本身不用配置,而且 example 设计可以直接跑。下面介绍下步骤。

1). 首先打开 Vivado,选择 board,这里我用 U50 板卡。

然后在 IP catalog 里找到 CMS IP,选择 IP,然后不用配置,直接生成。

2). 在 source 窗口右键这个 IP,然后点击 “openexample design”

Vivado 会打开一个新的例子工程。一般例子工程会根据你选择的板卡,做好所有的管脚约束,所以只需要直接点击 generatebitstream。

Vivado 会自动给 cms IP 分配一个地址。打开 addresseditor,我们可以看到这个工程里的offset 恰好是 0x00000000,记住这个地址。后面在主机端访问时会用到。

3). 生成 bit 文件以后,将 U50 板子插在主机 PCIe 槽中,连上 “alveoprogramming cable”,上电,将 bit 文件烧录到 U50 板卡的 FPGA 以后,热启动主机,使其能够再次 scan并发现板卡。如果一切正常,在主机端使用 lspci 命令可以找到板卡。

Lspci-vd 10ee:

0xee800000 就是 bar 空间地址,加上刚才 vivado 里看到 cms 的 offset 就可以直接访问cms的 register 空间。

CMS 的 register 空间可以在 PG348 里找到。

所有的板卡的电压,电流,功耗以及温度等信息都放在REG_MAP空间里,offset 时0x0280000。

所以如果要访问 CMS 的 REG_MAP 里的某一个寄存器的话,

地址= PCIebar 地址 + CMSoffset 地址 + REG_MAPoffset address+ 特定寄存器地址

简单的方法你可以使用 devmem2 直接访问,这样不需要任何驱动。

不过 CMS 的 microblaze 控制器时 resetactive 状况,所以我们先要解复位。

devmeme2 0xee820000 b 0x1

然后举个例子我们要读取下 12V 的平均功耗。

devmem20xee8282DC w

你就可以在终端看到 12V 电压的平均功耗。

用同样的方法你可以访问任何 CMS 的寄存器(首先记得要解复位 microblaze 哟)

最新文章