数字电路入门生
你这个毕设选题挺有意思的,IoT安全现在确实是热点。结合我的经验,给你捋一下思路。
首先,平台选择上,我强烈建议你用VexRiscv软核。它非常轻量,文档和社区支持都不错,而且有完整的SoC例子(比如用SpinalHDL写的)。EOS S3这类硬核虽然性能好,但可能不够灵活,而且生态相对封闭,对于毕设来说调试起来更麻烦。你可以在GitHub上搜“VexRiscv”或“Litex”,后者是一个用Python生成SoC的框架,里面集成了VexRiscv,能快速搭建带外设(比如SPI、UART)的系统,特别适合你这种需要和外部MCU通信的场景。
PUF这块是难点。SRAM PUF实现起来相对简单,就是利用FPGA上电时SRAM单元的随机初始值。但关键在后处理——模糊提取。这个在FPGA上实现需要一些数字电路设计。你可以找开源的“Fuzzy Extractor”或“Helper Data Algorithm”的Verilog/VHDL代码,GitHub上有一些学术项目开源了。核心是纠错编码(比如BCH码或重复码)。注意,PUF的稳定性需要大量测试,你要在代码里加入校准逻辑,可能还需要在软核里跑一些辅助算法来处理原始响应。
关于和主MCU的安全交互,思路要清晰。你的FPGA协处理器应该作为一个“黑盒”存在。通过SPI接口,主MCU发送命令(比如“加密此数据”)和接收结果。关键是要在协议层面设计好:1. 身份认证(可以用PUF生成的密钥来做双向认证);2. 防止重放攻击(加入随机数或序列号)。你可以在RISC-V软核里跑一个简单的固件,来解析SPI命令、调用AES/ECC硬件加速模块、并管理PUF。
开源模块推荐:
1. Crypto加速器:搜“riscv-crypto”或“AES32”(RISC-V指令集扩展),也有独立的AES/ECC Verilog内核。
2. PUF:搜“FPGA PUF SRAM”或“RO PUF”,注意看有没有包含后处理。
3. 整个SoC参考:Litex项目里有一个“vexriscv_secure”的例子,可能直接相关。
最后提醒,毕设时间有限,别贪多。先把VexRiscv+SPI在FPGA上跑通,再逐步集成PUF和加密模块。稳定性测试要早点开始。祝你顺利!
