TaterLi 个人博客

我做了一个实用价值为 0 的 SPI 转 HDMI

最近把一个想了几天的东西做完了,在 FPGA 上模拟 ILI9341 的 SPI 接口, 然后输出HDMI.

MCU侧基本不需要知道后面接的是HDMI,还是发送2A,2B,2C命令,设置坐标范围,再连续发送 RGB565 像素,接收数据后写入 SDRAM,保存一幅完整的1920x1080帧缓冲, 最后以 1920x1080@25 Hz 输出到 HDMI.

使用的板子是 AC620v2,FPGA 为 Cyclone IV EP4CE10F17C8,综合布线后,SPI 在50 MHz下连续刷屏可以稳定工作.继续提高频率就不太好了,可能是 FPGA 比较老,也可能是现在用108.333 MHz系统时钟过采样 SPI,时序余量已经不多.

当然, 50MHz SPI用来刷1920x1080 RGB565,速度不可能快,实际全屏更新需要几秒,就当是得到了一个尺寸很大,分辨率很高,但是刷新速度很低的ILI9341.

整个过程中其实遇到了不少问题,包括 SDRAM 调度,HDMI 读通道重新对齐,AXI 突发长度,SPI 采样位置和复位顺序.不过现在不太想详细复盘了,能稳定跑起来就算完成.

这个工程的实用价值基本为 0,但是好玩程度很高.工程已经完整开放:

https://github.com/nickfox-taterli/AC620_SPI_HDMI

退出移动版