Hyowinner的MBD技术论坛

 找回密码
 立即注册
搜索
楼主: RAIN

AI时代下的FPGA-MCU异构HIL技术链路讲解(长贴)

[复制链接]

1

主题

41

帖子

176

积分

MBD初级工程师

Rank: 2

积分
176
 楼主| 发表于 2026-6-15 10:47:03 | 显示全部楼层
本帖最后由 RAIN 于 2026-6-15 10:51 编辑

工程输入:
1.与模型逻辑相一致的C代码
2.基于MIL验证导出的golden data,电机反馈到电控侧的电流信号/转矩/转速,电控侧输出到电机的控制信号, 即预期的输入核输出结果用于保证AI设计过程中的模型一致性

工程输出:
1。通过测试且保证输出数据一致性的Keil工程电控算法C源文件


工程指令:
1检查/Keil_Proj/org_C中的原始C代码,对该代码中的Step和Init函数进行优化并保存在/Keil_Proj/opt_C中,在保证功能一致的情况下优化代码的冗余和逻辑链。


此处检查Keil_proj/Keil_proj工作区内的文件夹,对Keil_Proj文件夹中包含全部模型控制逻辑的函数Step(),及Init()进行检查,允许在保证函数功能不变的情况下对函数内的无关冗余变量及繁复逻辑进行优化。
该步骤用于提升代码效率,降低代码内存占用,同时该阶段可以额外生成描述对算法的写法做最后一轮优化。




2.在当前文件夹下建立VS2022_Proj, 在该目录下建立两个VS2022工程,对优化前后的C代码进行仿真,仿真结果(pmsm_svpwm_yh_2017rbGbOut中的6个输出)分别保存在result_org.csv 和result_opt.csv中。仿真的输入(pmsm_svpwm_yh_2017rbGbIn)来源于/Golden_data/Ctrl_input.csv中的同名变量。若结果一致,对比对比这result_org.csv文件和/Golden_data/Ctrl_output.csv.


此处为了保证MIL->SIL->PIL的可追溯性,以VS2022为例。实际上很多AI存在在线C编译仿真的平台可将结果进行快速验证。优化主要用于保证到代码层级后前后需要保证功能性一致,任何的AI操作都建议绑定对应的baseline测试。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

79

主题

158

帖子

2554

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2554
发表于 2026-6-15 11:47:36 | 显示全部楼层
RAIN 发表于 2026-6-15 10:47
工程输入:
1.与模型逻辑相一致的C代码
2.基于MIL验证导出的golden data,电机反馈到电控侧的电流信号/转矩 ...

又是KEIL又是VS,RAIN你在做的是SIL还是实机测试呢?
回复

使用道具 举报

1

主题

41

帖子

176

积分

MBD初级工程师

Rank: 2

积分
176
 楼主| 发表于 2026-6-15 13:46:59 | 显示全部楼层
admin 发表于 2026-6-15 11:47
又是KEIL又是VS,RAIN你在做的是SIL还是实机测试呢?

我们的目的是对单片机的烧录实现闭环HIL仿真,但是单片机其实已经到HIL和PIL层级了,步子太大就会有几个问题:
1.单片机的编译器是否支持
2.单片机的数据类型是否会带来精度误差?
3.如何处理不必要的内存/外存开销
因此这一段的想法是,小心驶得万年船。在模型层级和MCU层级(Keil)中间插入一个AI优化环节,对应的是完整开发流程中集成工程师的业务范围的一部分。后面会去基于这个优化后的电控算法做MCU顶层设计。
回复

使用道具 举报

108

主题

281

帖子

4508

积分

管理员

校长

Rank: 9Rank: 9Rank: 9

积分
4508
QQ
发表于 2026-6-15 14:58:33 | 显示全部楼层
RAIN 发表于 2026-6-15 13:46
我们的目的是对单片机的烧录实现闭环HIL仿真,但是单片机其实已经到HIL和PIL层级了,步子太大就会有几个 ...

模型集成到KEIL,就是校长的AutoBuild工具产品负责的范畴,你用AI做了一套。
持续学习 未来有你
基于场景 解决问题
项目合作联系微信:Hyowinners
回复

使用道具 举报

1

主题

41

帖子

176

积分

MBD初级工程师

Rank: 2

积分
176
 楼主| 发表于 2026-6-15 17:48:48 | 显示全部楼层
hyowinner 发表于 2026-6-15 14:58
模型集成到KEIL,就是校长的AutoBuild工具产品负责的范畴,你用AI做了一套。 ...

AI工具其实并不能达到校长的静态工具那么强大。AI的能力取决于工程师知道这个移植过程藏了多少坑,,像Autosar体系,Linux-C实时体系,我不懂,就没办法用AI去做静态工具,而且会持续的烧token。
校长这个水准拿到AI的话,Autobuild这个工具会更强,适用面更广。
我更接近于用AI做了一个MBD流程 的简易 Harness Engineering,在大框架下用经验避坑,静态工具我没做过,也就只能解决到脚本层级。
他就是一个无限剑制一样的东西,我能拿他做什么取决我我把什么解构了。
https://edison-a-n.github.io/202 ... ng-practical-guide/
回复

使用道具 举报

1

主题

41

帖子

176

积分

MBD初级工程师

Rank: 2

积分
176
 楼主| 发表于 2026-6-15 17:51:20 | 显示全部楼层
# 七、完成 MCU 侧顶层设计、通信逻辑设计及工程落地

算法部分完成设计后,为了保证通信和数据稳定性,和FPGA侧一样,需要在顶层配置通信交互协议和通信握手规则。
这里采用的通信协议是SPI,SPI 是 STM32 系列 MCU 常用的高速板级同步串行通信接口之一,相比UART、I2C、CAN等接口,通常具有更低协议开销和更高单次数据交互速率,适合MCU与FPGA之间进行小数据量、低延迟的周期性交互,更小的单步长数据交互可以让控制闭环的数据更加准确。
对于汽车电子领域的工程师来说用CAN协议和CANFD也没有区别,只需要在描述中对协议类型进行更新,这种固定的配置都可以交由AI处理。

## FPGA锚定MCU侧开发
相比MCU开发更依赖厂商外设库、HAL函数和模块化调用,FPGA 开发在顶层接口、时序控制、状态机设计和数据通路组织上具有更高自由度。因此,在本项目中,我们先完成FPGA侧顶层设计,再借由FPGA侧已经固化的通信结构反向约束 MCU 侧顶层设计,从而大幅提升 MCU 侧开发效率。
换句话说,FPGA侧顶层工程不仅是硬件实现代码,也可以作为 MCU 侧开发的结构化工程 Spec。它明确提供了数据输入输出关系、SPI 数据帧格式、状态机跳转条件、数据有效标志、握手规则和异常状态处理方式。相比单纯使用自然语言描述通信协议,直接提供 FPGA 侧 SPI 通信模块和状态机源码,往往能够更准确地反馈真实工程中的数据流格式和时序约束。
对工程师而言,从FPGA通信架构编写MCU侧C代码并不容易,因为这中间跨越了HDL与C语言、硬件时序与软件调度、并行逻辑与顺序执行等多重表达差异。
对于AI而言,这种边界并不存在。无论是FPGA侧HDL代码,还是MCU侧C代码,本质上都可以被AI视为可解析的程序结构:其中包含变量、状态、条件判断、数据赋值、接口调用和控制流程。AI可以将FPGA源码中的状态机、数据帧格式和握手规则提取出来,再映射到MCU侧C代码中的SPI收发流程、帧解析逻辑和软件状态机中。

## AI与MCU的模块化实例
在购买MCU时,无论是开发板还是核心板,买MCU的时候,硬件厂商都会配套送例程,因此往往对应MCU已有的功能模块及对应的HAL库函数,都有完整的可适配的调用方式。
MCU的例程种包含了Keil工程配置,HAL函数,MCU中断/初始化结构/内存结构等关键信息,能够帮助AI快速完成顶层设计。
这种基于MCU用例的,把顶层设计从底层,HAL层级抽象为应用层级,回避了在多种方式下AI因为选择过多而自己产生一些奇怪的创造。
回复

使用道具 举报

1

主题

41

帖子

176

积分

MBD初级工程师

Rank: 2

积分
176
 楼主| 发表于 2026-6-15 17:52:17 | 显示全部楼层
本帖最后由 RAIN 于 2026-6-15 17:56 编辑

工程指令:
1.检查C:\Users\TR\Desktop\Auto_HLS\Keil_Proj\Example_reference中的Keil_SPI例程以及Vivado_Proj的Vivado工程顶层设计。

让AI对整个工程的高频(FPGA)和低频(MCU)两侧进行检查和项目确认,其目的是让AI回想起FPGA侧的工作,将后续基于FPGA顶层结构设计MCU顶层结构时,近期的会话有较高优先级,回避幻觉效应。


2.将已有的C:\Users\TR\Desktop\Auto_HLS\Keil_Projopt_C中优化后的C代码集成到Keil_SPI的工程中,将原有的SPI通信工程进行修改:
SPI的通信协议握手及信号规则相关函数参考Vivado工程中的顶层设计,确保通信能够建立。
握手阶段同样以AAAA信号进行确认,整体交互与Vivado工程一致。
此时Keil工程传输的数据为对应电控算法Opt_C的数据,通过顶层main函数声明全局变量对输入和输出(pmsm_svpwm_yh_2017rbGbOut,pmsm_svpwm_yh_2017rbGbIn),并连接到SPI端口上面。
删除Keil实例中原有的无关逻辑。
为了方便物理调试,在MCU侧握手的时候绑定蜂鸣器,如果通信一直未能建立,则蜂鸣器持续鸣响。
确认Keil工程是否可通过编译生成可执行文件。

具体的架构流,以FPGA顶层工程文件作为AI的输入信息,跳过LLM大语言模型的风险。AI可以通过锚定闭环通信中的一侧/一点,基于工程文件而非自然语言进行配套工程生成,大幅度提升执行的稳定性。


3.描述FPGA侧和MCU两侧使用的通用GPIO,讲解如何连线

AI依据工程做总结,提供手动连线接线信息。

至此MCU侧电机控制算法工作完成。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

1

主题

41

帖子

176

积分

MBD初级工程师

Rank: 2

积分
176
 楼主| 发表于 2026-6-15 18:02:30 | 显示全部楼层
# Harness Engineering框架方法论
一种基于AI的开发手段。
我们告诉AI一个大的框架,怎么去做,具体里面干什么让AI自己去想,从而实现可复用的,更稳定准确的工具流程,这就是Harness Engineering。
人的描述在顶层的抽象层级,而AI的执行要跨越门级网表,布局布线,Bit流,汇编,C代码,算法。即使每个方向上的做法是一个2择选项,跨越这6个层级也会有64种可用技术路线。
因此在对流程和架构不了解的情况下,人的语言很容易给AI巨大的操作空间,tokens被用来做筛选和测试,随着技术链层级的增加,额外带来效率损失和无边无际的可能性测试,最终陷入AI幻觉。
Harness把AI的无限可能束缚在合理的框架内,是基于Skill工程的一种更高层次的开发体系。
启蒙Link:
https://edison-a-n.github.io/202 ... ng-practical-guide/



# MBD种Harness的一些思路
1.阶段去耦,渐进披露: 对开发流程进行拆分,设立baseline & golden data数据检查节点,防止过度追溯。如拆分工作流为“算法(模型)设计-算法代码优化-顶层设计-开环通信设计-闭环通信”
2.失败检测,自我迭代: 对节点数据进行自我检查和自我迭代,通常来讲AI在遇到检查需求的时候,会自动进行自我迭代。如设立检查站"MIL-SIL-PIL-HIL"逐层自迭代,优化过程让AI自动迭代设计。
3.最好的Skill 以及AI调用层级下移,通过指令/源码让AI作为造轮子的材料,通过人工描述让AI完成优化轮子的工作。如基于已有稳定模块做二开,稳定模块的抽象层级越高,留给AI做出的选择越少,工作越稳定。
当我们把我们的工作流,工作中不同的Skill,不同开发环节的输入,自我检查和自我迭代边界整理到一个目录中,以.md+脚本的形式固化下来,可以称之为一个较小的,简易的Harness系统了。

AI是工作方式的进化,但是每个人的进化程度并不平等。
回复

使用道具 举报

1

主题

41

帖子

176

积分

MBD初级工程师

Rank: 2

积分
176
 楼主| 发表于 2026-6-15 18:53:27 | 显示全部楼层
本帖最后由 RAIN 于 2026-6-15 19:06 编辑

AI的出现让技术更容易成链了,每个人都可以是工具开发者
回复

使用道具 举报

108

主题

281

帖子

4508

积分

管理员

校长

Rank: 9Rank: 9Rank: 9

积分
4508
QQ
发表于 5 天前 | 显示全部楼层
RAIN 发表于 2026-6-15 18:02
# Harness Engineering框架方法论
一种基于AI的开发手段。
我们告诉AI一个大的框架,怎么去做,具体里面干 ...

Harness这个框架概念,这几周已经被Loop Engineering这个新的概念给替代了。
探索、实现、验证在Agent如Codex下已经炉火纯青,有没有Harness甚至有没有Skill,作用差距都不大了。
变化是真的快。
持续学习 未来有你
基于场景 解决问题
项目合作联系微信:Hyowinners
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|MBD全栈技术学校|苏ICP备2025212294号-1|Hyowinner校长B站首页|手机版|小黑屋|Hyowinner的MBD技术论坛

GMT+8, 2026-6-25 06:38 , Processed in 0.108688 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表