FPGA实现Bad Apple
参考教程
有屏幕的地方就有Bad Apple:0.96寸的屏幕播放Bad Apple
实现的效果
OLED屏幕上播放视频
用到的硬件
- OLED SSD1306 0.96寸128x64 蓝光OLED显示屏 4SPI
- CH340G串口调试器模块
- FPGA Xilinx ARTIX-7 XC7A35TCSG324-1 EGO1
用到的软件
- Python
- MATLAB
- Vivado
代码文件
具体代码详见GitHub
图像处理
- vedioprocesser.py
MATLAB串口通信发送数据
- opendatafile.m
- badapple.m
FPGA缓存数据,OLED上输出图像
Verilog
xdc约束文件
实现的功能
- PC端通过UART通信协议,实时发送处理过的视频数据到FPGA。
- FPGA通过SRAM缓存数据。
- PC端数据发送完毕,FPGA读SRAM。
- FPGA把读到数据通过SPI通信协议,发送到OLED。
操作过程
- 准备好所有硬件、软件和文件,下载好Bad Apple视频。
- 用vedioprocesser.py处理视频文件,这里用到了opencv的库。py脚本和视频文件要放到一个文件夹,然后在命令行输入:
python vedioprocesser.py
或者py vedioprocesser.py
进行视频处理。这里做了两件事,一是对视频采样,采样出来的帧数没那么高,二是对采样的图像进行二值化以及分辨率处理,以适应OLED屏幕。视频处理完毕,在当前文件夹会生成默认叫做testtest.txt的文件。 - 打开MATLAB,进入当前文件夹,运行opendatafile.m,将数据文件内的数据传送到MATLAB,以便通过UART发送。
- 对FPGA板子供电,并烧录bit文件。
- 连接OLED屏到FPGA上。
- 运行badapple.m,MATLAB正往FPGA板子传数据。UART速率很慢,待PC端的数据都传完了,OLED屏上开始播放视频。通过对开关引脚的控制,可以暂停视频或者重新播放视频。