![基于MATLAB与FPGA的图像处理教程](https://wfqqreader-1252317822.image.myqcloud.com/cover/918/47548918/b_47548918.jpg)
1.3.2 仿真验证平台介绍
通常情况下,在完成相关的RTL设计之后,接下来要做的事情就是对设计功能进行仿真,验证它是否满足我们的设计需求。本节基于ModelSim,搭建了一个简易的仿真验证平台,用于本书中RTL设计的功能仿真。
该平台是基于批处理脚本、do脚本、一键化可运行图形界面或命令形式的仿真机制的。图1.18所示为仿真验证平台的文件组织架构,下面分别对各文件夹和文件的作用进行介绍。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_20.jpg?sign=1739252072-GVOq1pK3KQljq8cy1vVcbK9ZsRv5v5og-0-ffc4246f5455c3989006f8791e89d866)
图1.18 仿真验证平台的文件组织架构
(1)sim_log:存放ModelSim仿真过程中产生的文件,包括编译文件、仿真波形文件等。
(2)source_files:存放ModelSim仿真用的数据源。
(3)print_files:存放ModelSim仿真的打印结果。
(4)design_ver.f:存放Verilog设计文件列表。
(5)read_wave.bat:用于打开仿真波形文件的批处理脚本。
(6)run.bat:启动ModelSim仿真的批处理脚本。
(7)run.do:执行ModelSim仿真的相关指令,包括建立库、映射库、编译、启动仿真。
(8)testbench.sv:存放ModelSim仿真的顶层文件。
仿真验证平台的运行机制,如图1.19所示。通过批处理脚本和do脚本文件之间的调用来启动仿真验证平台。运行run.bat时,启动ModelSim对run.do进行编译(包括design_ver.f和testbench.sv)和仿真。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_21.jpg?sign=1739252072-VYuQRyBeU9eC2U0SMWGPHzFhfZaPSIgk-0-05141d670d0239bdec92d45ccf503380)
图1.19 仿真验证平台的运行机制
接下来对批处理脚本和do脚本的内容进行介绍。
1.3.2.1 read_wave.bat
关闭显示信息,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_22.jpg?sign=1739252072-cn2U34d9npTrF5ITysPvhj8kyBjmrqfn-0-3d413a88bc1e512d5e8fbf1a04dae3ef)
将当前路径作为cmd窗口的标题显示,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_23.jpg?sign=1739252072-jBONt3QFG3ANnfuSzu19a6DuJ2kAd9G6-0-45968e95fe286ad3327cc68d46b89dd3)
进入sim_log目录,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_24.jpg?sign=1739252072-gQ6Qpo9OmWou8hYYISc9OMaE0A0XnL5i-0-7567f42d12a9eb0f0cc5d7898204b193)
打开仿真波形文件vsim.wlf,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_25.jpg?sign=1739252072-7Ec7K8Zz4W0xm55VsJD130Q1SuNoVWtb-0-85995d1c21a7a174954d7c6b5ba79c78)
1.3.2.2 run.bat
关闭显示信息,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_26.jpg?sign=1739252072-N1GfhjnJsly4Ej7noAgO9nD2Rc41Ohpo-0-61322f0c208889e4b5ac8f8888da639c)
将当前路径作为cmd窗口的标题显示,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_27.jpg?sign=1739252072-7tcecvoi03wInm2UWhVFeXPZYrkzWHKD-0-60225fd0d22a92f00ba9281d00aa8306)
删除sim_log目录下的内容,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_28.jpg?sign=1739252072-ky3YQpeVFUNL2xdzM91nj4c9JGdsWyuW-0-88178ec8e457ab24daa9bde90607d937)
删除print_files目录下的内容,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_29.jpg?sign=1739252072-QmPJNWhHkxMvzwxAzQmKRVOWvg6rDOcw-0-cfff8bed85faa0d7b5ffe3eef2eaaec3)
进入sim_log目录,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_30.jpg?sign=1739252072-o34Mw8eDFuNT2w62UBVKk5vk1WH5WtnZ-0-e0e345b075a12ac08444072f6c1f2424)
后台模式启动ModelSim软件执行run.do进行仿真,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_31.jpg?sign=1739252072-F6wu298RirZ82tVBhTtRQm2H93e2pGqn-0-db9d9f20f2fc2521029b50b09e98840a)
终止cmd窗口并退出,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_32.jpg?sign=1739252072-JiMYvrOZtq9sgrycJdFdVzw8sNIAFmzG-0-da53ea3f26919817d3582df258e8a9f0)
1.3.2.3 run.do
将ModelSim的配置文件ModelSim.ini拷贝到当前目录,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_33.jpg?sign=1739252072-HU0IFsPL4QcKaLesiKXhla6yzH8PfFXr-0-83ff993b3d8b645c89e48552f6dc68ae)
建立库目录和映射库,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_34.jpg?sign=1739252072-ekJwqeJkZ7ZojUGtc465a1WqYbrcHHEK-0-868fb7c303229838c3aeeca80fd451b4)
编译testbench.sv和design_ver.f,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_35.jpg?sign=1739252072-aU9sSjdyOJ9JCjt6AftTz3Azr5U39zv8-0-54f9fab115961bb7a8e365aa2b583ec7)
启动仿真并使用相关的器件库,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_36.jpg?sign=1739252072-DUznJGllgkPJ7Wh2TsDRYUFRM5BVzXNU-0-e6cbf949da80a6e3484f41a5eef8377a)
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_37.jpg?sign=1739252072-ekb9Wn3YrSRzgmcqGrGMgs5fkq1VDyBF-0-5de103982a0682bdbe4065f905142f3e)
添加波形;记录波形;设置仿真时间,代码如下所示。
![](https://epubservercos.yuewen.com/8C9D65/26947326504592806/epubprivate/OEBPS/Images/txt001_38.jpg?sign=1739252072-QyFVdRfWkbTYQ3UMtMXOeMnfnwQ96jvd-0-83cb1e0fa4618498f2252366c5533477)
关于仿真验证平台的具体使用流程,请参考第2章2.4.2节仿真流程的详解。