基于 Nios® V 处理器的 Agilex®7 Mailbox Client IP 应用实践 (下) — 读取芯片 ID 和温度

作者
Richard Wang
文章來源
Cytech Engineer

基于 Nios® V 处理器的 Agilex®7 Mailbox Client IP 应用实践 (下) — 读取芯片 ID 和温度

在上一篇《基于 Nios® V 处理器的 Agilex® 7 Mailbox Client IP 应用实践 (上) — FPGA 多镜像切换》中,我们介绍了在 Altera Agilex® 7 FPGA 平台上,通过 Nios® V 处理器操作 Mailbox Client IP 实现 FPGA 多镜像切换的参考方案。本文为下篇,将继续为大家展开说明如何使用 Nios® V 读取芯片 ID 和温度。

数据获取方法

Altera Agilex® 7 器件提供片上电压和温度传感器,可以使用这些传感器来监控外部电压和片上操作条件,例如内部电源轨和片上结温。Agilex® 7 芯片内部温度传感器位置如下图 (图1) 所示:

图1 Agilex 7 芯片内部温度传感器位置
 图1 Agilex® 7 芯片内部温度传感器位置

不同的器件传感器标号可以通过《Altera Agilex® 7 Power Management User Guide》中的表格查询。下图 (图2) 是读取芯片 ID 和温度的 Nios® 关键代码示例。其中 Id = 0x1 指令读取芯片 IDCODE,arg[0] = 0x00000001表示读取 SDM 位置温度。

图2 Nios® 关键代码示例
图2 Nios® 关键代码示例

在代码中,arg[0] 的取值决定了读取的温度传感器位置,具体规则如下列:

0x00010000 = 0x0 (Reserved) + 0x001 (Location 1) + 0x0001 (TSD 1 with the highest temperature in Location 1)
0x00020000 = 0x0 (Reserved) + 0x002 (Location 2) + 0x0001 (TSD 1 with the highest temperature in Location 2)
0x00030000 = 0x0 (Reserved) + 0x003 (Location 3) + 0x0001 (TSD 1 with the highest temperature in Location 3)
0x00040000 = 0x0 (Reserved) + 0x004 (Location 4) + 0x0001 (TSD 1 with the highest temperature in Location 4)

另外,在实际测试中发现,即使 TSD=0 ,也可以读出温度值,但建议根据文档规范设置以确保数据准确性。

图3 读取 IDCODE 和温度效果
图3 读取 IDCODE 和温度效果

温度值的计算方法如下:

图4 温度值计算公式
图4 温度值计算公式

温度是负值时 = 整数 (oxFFFEE-1) 取反 +0x80/256 = -2 + 0.5 = -1.5
温度是正值时 = 0x23A0/256 = 9120/256 = 35.625

图5 温度为正值时的计算方法
图5 温度为正值时的计算方法

温度是负值时 = 整数 (oxFFFE1-1) 取反 +0xC0/256 = -31+0.75 = -30.25

图6 温度为负值时的计算方法
图6 温度为负值时的计算方法

代码调试问题总结

1、删除 jtag_uart 模块,否则需要在 Nios® V command shell 中输入 juart-terminal 才可以正常切换 (替换掉循环切换问题,改为通过 key 值切换,需要读取 slot 与 key 做比较)。

图7 带有 jtag_uart 复位失败
图7 带有 jtag_uart 复位失败

2、S10 平台不需要删除 jtag_uart 模块,复位切换镜像正常。

3、在 altera_s10_mailbox_client_flash_rsu.c 中添加 printf ("ret_code = %d\n", ret_code);// 失败,需要删除 build 文件夹,重新 build 工程。

4、根据需求,代码只做了 7 个槽位镜像的切换,没有实现 RSU 部分功能,后续有需要可以添加代码到 Nios® V 中,其他架构不需要更改 (on-chip memory 容量不够就需要重新调整 Qsys 设置,生成 BSP,重新生成HDL)。

5、若镜像中使用了收发器、EMIF、HPS,需要确保这些部分的参考时钟稳定,否则无法正常切换成功。

上板测试

上板测试验证了不同镜像的功能表现,具体测试结果如下:

Factory image = D10 D9 D8 D7 计数点亮
APP1 image = 4 个 LED 同时闪烁
APP2 image = D10 D9 D8 D7 计数点亮
APP3 image = D10 闪烁
APP4 image = 4 个 LED 同时闪烁
APP5 image = D10 D9 D8 D7 计数点亮
APP6 image = D10 闪烁
APP7 image = 4 个 LED 同时闪烁

图8 正常切换显示的打印信息
图8 正常切换显示的打印信息

总结

以上两篇内容完整地介绍了通过 Nios® V 操作 Mailbox Client IP 实现 Agilex® 7 FPGA 多镜像切换,以及读取芯片 ID 和温度的完整方案,涵盖硬件平台搭建、软件系统开发及关键问题解决。

另外,我们还提供完整的镜像切换工程地址和 IDCODE / 温度工程地址,如有需要或欲了解更多 Altera 相关方案及技术信息,可点击下方「联系我们」,提交您的需求,骏龙科技公司愿意为您提供更详细的技术解答。

 

参考资料

《Altera Agilex® 7 Power Management User Guide

相关阅读

《基于 Nios® V 处理器的 Agilex®7 Mailbox Client IP 应用实践 (上) — FPGA 多镜像切换》

更多資訊: