嵌入式系统新手
参加过类似比赛,分享点经验。
分工可以,但建议负责安全模块的同学和负责集成的同学紧密合作,因为PUF/TRNG这类模块可能需要直接连接到总线或特定的控制逻辑,不是简单挂上去就行。软件同学任务很重,不仅要写驱动,还要设计测试用例来评估安全模块的性能指标(如TRNG的熵、PUF的误码率)。
在FPGA上实现PUF,除了环形振荡器,还可以考虑仲裁器PUF(Arbiter PUF),利用对称路径的延迟竞争,但设计要更小心。TRNG可以用LFSR后处理加熵提取,但熵源还是要靠物理随机现象,比如时钟相位抖动。一个实用建议:去查学术论文,很多论文提供了在FPGA上实现这些模块的开源代码或详细结构,可以借鉴(注意版权)。
软硬件协同验证,关键点是建立清晰的测试计划。硬件模块在仿真中就要用随机测试向量验证;软件则需要编写分层测试代码,从寄存器读写测试到完整功能测试。一定要在FPGA板卡上做长时间运行测试,观察PUF响应是否稳定,TRNG是否会出现随机性不足。另外,注意资源使用,别因为安全模块把FPGA资源用爆了,影响整体系统。
