自己动手搭建一个简单的数字图像处理FPGA仿真系统

本文介绍如何自己动手搭建一个简单的数学图像处理仿真系统,如果手头没有FPGA开发板,那么可以通过这样一个简单的仿真系统,来验证自己所设计的硬件模块是否正确。本文所介绍的仿真系统需要用到一下几个环境:

ModelSim,笔者的版本是ModelSim SE 10.4,用于Verilog模块的仿真;

Anaconda,作为Python的开发环境,用于数据的处理和参考模型的设计。

以上两个环境可以自己参考网上教程进行安装,Anaconda安装完成后需要给Python安装opencv包,以用于图像的读写等。

如图1所示为本文所介绍的数字图像处理仿真系统结构图。

1.png

图1.1 数字图像处理仿真系统结构图

下面对图1所示的数字图像处理仿真系统中的各个组件进行介绍。

Image表示待处理的原始图像,该图像会分别送至Reference Model和Data Generator进行处理。

Reference Model是参考模型,该模型将通过Python语言实现与Verilog模块同样的功能,并将该模型产生的结果作为标准答案来验证Verilog模块的正确性。

Data Generator是数据生成器,为了更便于硬件TestBench读取图像数据,Data Generator通过Python语言读取图像数据,并将数据逐行写入另一个文件中,该文件再作为TestBench的输入。

Design Under Test就是我们所设计的Verilog模块,该模块实现图像处理算法的核心功能,TestBench将会例化该模块,并给该模块输入激励,然后将该模块的输出写入另一个文件中。

Results Checker是用于结果验证,该组件同样是用Python语言实现,其会读取Reference Model和TestBench产生的输出结果,来比较两者是否一致。

在介绍完图1所示的数字图像处理仿真系统后,下面基于该组件来设计一个小的demo,该demo中的图像处理算法非常简单,就是对一幅灰度图像各个像素点的数据进行加1操作,加1的过程中需要注意最大值不能越界。

该demo包括如图2所示5个文件夹,与图1中所示的各个组件一一对应。

2.png

图2 demo工程文件组成

Image文件夹下存储了一幅灰度图像,该图像就是待处理的图像。

DataGenerator文件夹下是一个Python文件,名称为DataGenerator.py,该文件完成数据的生成工作,其读取了原始的输入图像,然后将其像素数据逐个写入到另一文件中,写的过程是逐行进行的,该Python文件的内容如下所示。

3.png

ReferenceModel文件夹下也是一个Python文件,名称为ReferenceModel.py,该文件完成图像的处理工作,即读取原始图像的像素数据,然后将其加1后写入结果文件,写的过程中注意最大值不能越界,该Python文件的内容如下所示。

4.png

ResultsChecker目录下也是一个Python文件,名称为ResultsChecker.py,该文件会读取两个结果文件,然后逐数据进行比较,并根据比较情况输出比较结果,如果成功,则代表我们设计的Verilog模块实现了预期的功能,该文件的内容如下所示。

5.png

最后是TestBench文件夹,该文件夹下的内容如图3所示。

6.png

图3 TestBench文件夹下的内容

其中,ImageProcDemo.v是我们所设计的Verilog模块,其完成图像处理的功能,该模块的内容如下所示。

7.png

TestBench.v是用于例化我们设计的Verilog模块,读取输入数据并产生输入激励,然后将结果写入结果文件,该模块的内容如下所示。

8.png

sim.do用于ModelSim仿真,该文件包含了仿真流程中用到的几个命令,该文件内容如下所示。

9.png

cmd命令运行脚本.bat则是将windows下的几个命令做了一个组合,点击该文件即可完成ModelSim的仿真,该文件内容如下所示,注意第一行为你实际demo所在的路径。

对于该demo,首先运行DataGenerator.py、ReferenceModel.py两个文件,然后双击cmd命令运行脚本.bat文件完成ModelSim的仿真,最后运行ResultsChecker.py文件即可完成。

编辑 重设标签(回车键确认) 标为违禁 关闭 合并 删除
Altera_wiki 头像