FPGA:逻辑功能的仿真与验证

简介: ⭐本专栏针对FPGA进行入门学习,从数电中常见的逻辑代数讲起,结合Verilog HDL语言学习与仿真,主要对组合逻辑电路与时序逻辑电路进行分析与设计,对状态机FSM进行剖析与建模。
🔥文章和代码已归档至【Github仓库: hardware-tutorial】,需要的朋友们自取。或者关注公众号【AIShareLab】,回复 FPGA 也可获取。

HDL产生的最初动因就是为了能够模拟硬件系统,可以分析系统的性能,验证其功能是否正确。

要测试一个设计块是否正确,就要用Verilog再写一个测试模块(Test Bench)。这个测试模块应包括以下三个方面的内容:

  • 测试模块中要调用到设计块,只有这样才能对它进行测试;
  • 测试模块中应包含测试的激励信号源;
  • 测试模块能够实施对输出信号的检测,并报告检测结果;

写出测试模块的过程又称为搭建测试平台(Test Bench)

例:2选1数据选择器的测试模块

module test_mux;
  reg a,b,s; 
  wire out;
   
  mux2to1 u1(out, a, b, s);
  initial
  begin
    a=0; b=1; s=0;
#10 a=1; b=1; s=0;
#10 a=1; b=0; s=0;
#10 a=1; b=0; s=1;
#10 a=1; b=1; s=1;
#10 a=0; b=1; s=1;
#10 $finish;
   end
 initial
$monitor($time, “a=%b b=%b s=%b out=%b”, a,b,s,out);
endmodule
module mux2to1(out,a,b,sel);
 output out;
 input a,b,sel; 
 wire selnot,a1,b1;  
 not (selnot, sel);
 and (a1, a, selnot);
 and (b1, b, sel);
 or (out1, a1, b1);
endmodule
0  a=0 b=1 s=0 out=0
10 a=1 b=1 s=0 out=1
20 a=1 b=0 s=0 out=1
30 a=1 b=0 s=1 out=0
40 a=1 b=1 s=1 out=1
50 a=0 b=1 s=1 out=1

测试激励块(TB)与设计块(Design Block)之间的关系

仿真时,信号线a、b、s上要加一组测试激励信号,这组激励信号的产生,是通过initial内部的过程语句产生的,而过程语句只能给reg型变量赋值。

仿真时,信号线a、b、s上的激励信号是不能消失的,需要有“寄存”效应,能够描述这种“寄存”行为的,只能是reg型。

端口连接时有关变量数据类型的一些规定

仿真过程简介

使用软件ModelSim-Altera 6.5b Starter Edition 进行仿真验证的大致过程

ModelSim仿真软件的使用

  • 创建一个工作目录
  • 输入源文件
  • 建立工作库

编译设计文件

装入设计文件到仿真器

运行仿真器


欢迎关注个人公众号【AIShareLab】,一起交流更多相关知识,前沿算法,Paper解读,项目源码,面经总结。

目录
相关文章
|
7月前
|
存储 算法 数据处理
FPGA:可编程逻辑设备的领军者及其在数字信号处理中的应用
FPGA:可编程逻辑设备的领军者及其在数字信号处理中的应用
115 2
|
2月前
|
监控 算法 数据安全/隐私保护
基于三帧差算法的运动目标检测系统FPGA实现,包含testbench和MATLAB辅助验证程序
本项目展示了基于FPGA与MATLAB实现的三帧差算法运动目标检测。使用Vivado 2019.2和MATLAB 2022a开发环境,通过对比连续三帧图像的像素值变化,有效识别运动区域。项目包括完整无水印的运行效果预览、详细中文注释的代码及操作步骤视频,适合学习和研究。
|
7月前
|
编解码 算法 异构计算
基于FPGA的NC图像质量评估verilog实现,包含testbench和MATLAB辅助验证程序
在Vivado 2019.2和Matlab 2022a中测试的图像质量评估算法展示了效果。该算法基于NC指标,衡量图像与原始图像的相似度,关注分辨率、色彩深度和失真。提供的Verilog代码段用于读取并比较两个BMP文件,计算NC值。
|
3月前
|
监控 算法 安全
基于颜色模型和边缘检测的火焰识别FPGA实现,包含testbench和matlab验证程序
本项目展示了基于FPGA的火焰识别算法,可在多种应用场景中实时检测火焰。通过颜色模型与边缘检测技术,结合HSV和YCbCr颜色空间,高效提取火焰特征。使用Vivado 2019.2和Matlab 2022a实现算法,并提供仿真结果与测试样本。FPGA平台充分发挥并行处理优势,实现低延迟高吞吐量的火焰检测。项目包含完整代码及操作视频说明。
|
6月前
|
算法 计算机视觉 异构计算
基于FPGA的图像一维FFT变换IFFT逆变换verilog实现,包含tb测试文件和MATLAB辅助验证
```markdown ## FPGA 仿真与 MATLAB 显示 - 图像处理的 FFT/IFFT FPGA 实现在 Vivado 2019.2 中仿真,结果通过 MATLAB 2022a 展示 - 核心代码片段:`Ddddddddddddddd` - 理论:FPGA 实现的一维 FFT/IFFT,加速数字信号处理,适用于高计算需求的图像应用,如压缩、滤波和识别 ```
|
6月前
|
算法 计算机视觉 异构计算
基于FPGA的图像直方图均衡化处理verilog实现,包含tb测试文件和MATLAB辅助验证
摘要: 在FPGA上实现了图像直方图均衡化算法,通过MATLAB2022a与Vivado2019.2进行仿真和验证。核心程序涉及灰度直方图计算、累积分布及映射变换。算法旨在提升图像全局对比度,尤其适合低对比度图像。FPGA利用可编程增益器和查表技术加速硬件处理,实现像素灰度的均匀重分布,提升视觉效果。![image preview](https://ucc.alicdn.com/pic/developer-ecology/3tnl7rfrqv6tw_a075525027db4afbb9c0529921fd0152.png)
|
5月前
|
异构计算
FPGA进阶(3):SDRAM读写控制器的设计与验证(二)
FPGA进阶(3):SDRAM读写控制器的设计与验证(二)
42 0
|
5月前
|
异构计算 内存技术
FPGA进阶(3):SDRAM读写控制器的设计与验证(一)
FPGA进阶(3):SDRAM读写控制器的设计与验证
128 0
|
5月前
|
异构计算
FPGA入门(4):时序逻辑(二)
FPGA入门(4):时序逻辑(二)
41 0
|
5月前
|
存储 异构计算
FPGA入门(4):时序逻辑(一)
FPGA入门(4):时序逻辑
53 0

热门文章

最新文章