前面做过一个DIP40封装的MCU + FPGA功能模块,考虑到很多用户的应用需要灵活搭配MCU和FPGA二者之间的连接关系,故在原来MCU和FPGA之间通过四根IO连接(MCU侧连接到SPI端口)的同时,增加了一个双排16Pin的插座,用户可以根据需要增加它们之间的连接,不需要相互连接的管脚可以用在对外设的连接上。
因此将DIP40的核心板扩展成为了兼容Arduino扩展板的MCUPuino(取名来自MCU + UP + Arduino)。
这个板上仍旧采用了:
- STM32G031微控制器 - 性价比超高的一款MCU,有了FPGA做伴侣,这颗MCU主要用于任务的控制,我们硬禾学堂的“寒假在家一起练”有两个平台都是基于这个控制器,积累了大量的开源应用案例
- iCE40UP5K FPGA - 这是Lattice半导体的一颗非常著名的FPGA芯片,当初为苹果手机设计的低功耗外设扩展用,虽然运行速度只能到48MHz,但其有5000多个LUTs、1Mb的RAM、内置乘法器、支持摄像头连接、简单的人工智能应用以及RISC-V软核的移植,并支持开源的设计工具链,可玩性极强
- 板载支持DAPLink的下载器,可以同时通过USB Type C端口配置FPGA和STM32G031,一根USB线连接电脑,可以随时随地学习FPGA和MCU的编程及应用开发
- 为方便嵌入式系统爱好者的深度调试,板上也留下了用于调试STM32G031的SWD调试端口
作为学习用的开发板,用于控制输入的按键和用于显示信息的LED是必不可少,在这个板子上我们预留了4个挂在FPGA上的按键、一个挂在FPGA上的三色灯、4个挂在FPGA上的单色LED、1个挂在MCU上的单色灯,挂在FPGA上的LED可以通过FPGA/MCU之间的连接通道映射到MCU的IO上,在学习FPGA的时候可以直接用这些按键和LED,对于学习MCU的同学,可以通过我们提供的FPGA JED文件把FPGA当成一个连接器,用MCU操作这些按键和LED。
- 4个按键 - 连接到FPGA的4个IO,用于控制输入,在学习STM32G031编程时,可以通过我们提供的FPGA JED文件,将这4个按键映射到STM32G031的IO上
- 4个单色LED - 连接到FPGA的4个IO,用于显示输出,在学习STM32G031编程时,可以通过我们提供的FPGA JED文件,将这4个LED映射到STM32G031的IO上
- 一个RGB三色灯 - 连接到FPGA的3个IO上,这3个LED的亮度可调用FPGA的IPCore来进行更精准的控制
- 一个单色LED - 链接在STM32G031的管脚上
该板内部构成框图
MCU和FPGA的组合,可以支持非常多的应用,FPGA弥补了MCU对高速并行数据处理方面的不足,FPGA部分连接摄像头、高速ADC、高速DAC等外设,这是一板的MCU所不能实现的;MCU则弥补了FPGA在任务调度方面编程困难的不足,用户可以使用C/C++非常方便通过指令实现人机交互界面方面的功能。
你可以用它构成一个测试测量系统、通信系统等。
该板的应用举例
当然,单独的MCU和FPGA本身也可以支持很多应用,尤其是我们这款ICE40UP5K,内置比较大的SRAM以及数字信号处理的功能,支持神经网络加速、SenseAI、图像识别等功能,国外开源届有很多开源的RISC-V的软核是基于该FPGA,通过移植可以学习处理器的构成原理,并可以构建自己的一个微处理器系统
该板的PCB布局图
此开发板已经完成硬件的测试,可于国庆后批量供货。
相关技术文档在陆续完善中。