移动FPGA使用Verilog图像处理verilator模拟和ice40执行

概述

在verilog中实现简单的图像处理操作。 该项目围绕一个中央图像处理模块 image_processing.v 展开,该模块可以包含在使用 verilator 的模拟环境中,也可以包含在 ice40 Ultraplus fpga 的 top.v 中。

因为它针对的是低端 fpga 设备(无论是价格还是功耗),例如 ice40 ultraplus。 它使用 1Mbit 的 ram 将图像存储到两个缓冲区中,即输入缓冲区和存储缓冲区。 图像在输入缓冲区中加载和读取,计算在存储缓冲区中完成。 这两个缓冲区可以交换。 大多数操作将在存储缓冲区中完成,如果对两个图像应用操作(例如 binary_add),则生成的图像将写入存储缓冲区。

图像存储在 .h 中(使用 gimp 完成)。

代码中操作

  • 像素操作
    • 添加/减去
    • 翻转
    • 阈值
    • 乘法/除法
  • 3x3 矩阵卷积
    • 在存储缓冲区上应用卷积,将结果写回
    • 对输入缓冲区应用卷积,将结果与存储缓冲区相加
  • 二元运算(输入运算缓冲区)
  • 输入区和缓冲区转换
  • 图像加载到输入区
  • 从输入区读入图像

架构

有两种可能的操作模式:使用 verilator 进行模拟或在 ice40 fpga 上运行。

图像处理接口软件/image_processing.hpp 的两个实现通过 SPI 与 verlator 类或 ice40 fpga 通信来反映这种架构。

+---------------------+        +-----------------------+
|                     |        |                       |
|                     |        |                       |
| main.cpp            +--------+ Image_processing.hpp  |
|                     |        |                       |
|                     |        |                       |
+---------------------+        +---------+-------------+
                                         ^
                                         |
                            +------------+-----------+
                            |                        |
+----------------+      +---------+-------------+  +-------+-----------+              +-----------+
|                |      |                       |  |                   |              |           |
| Verilator      |      | IP_simulation.hpp     |  | IP_ice40.hpp      |      SPI     | FPGA      |
| Simulation     +------+ IP_simulation.cpp     |  | IP_ice40.cpp      +--------------+ Ice40     |
| obj_dir/       |      |                       |  |                   |              |           |
|                |      |                       |  |                   |              |           |
+----------------+      +-----------------------+  +-------------------+              +-----------+

通讯

简述:与ice40的通讯方式

编译和运行

简述:编译后再validator上模拟和ice40上运行

源代码

详情参阅 亚图跨际

你可能感兴趣的:(嵌入式,fpga开发,图像处理,verilog)