基于Quartus II 和 ModelSim平台对Verilog HDL硬件描述语言编程仿真操作流程

简介: 基于Quartus II 和 ModelSim平台对Verilog HDL硬件描述语言编程仿真操作流程

一、独立仿真

文件夹建立

以工程4位二进制计数器为例,首先在工作目录下建立工程文件夹,其中count4用于存放编写的Verilog HDL代码,而count4_tb则用于存放要输入给Verilog HDL代码的波形信号,也就是testbench文件。

1.png

建立quartus II工程文件

运行quartus II后点击New Project Wizard建立一个新的工程。

2.png

选择工作区域时选择在文件夹建立章节中建立的count4文件夹,并命名工程名为count4,顶层设计名称默认为工程名,可根据自己需求进行改动。

3.png

VerilogHDL代码编写并编译

工程建立后在工程中建立或者添加Verilog HDL文件,并将代码写入其中保存。可以通过窗口顶部菜单栏中File->New或者工具栏中的新建文件快捷按钮进行文件创建。

4.png

通过VerilogHDL语言编写4位二进制计数器,示例代码如下:

module count4(clk,r,s,en,d,q,co);
 input clk,r,s,en;
 input  [3:0] d;
 output  [3:0] q;
 output co;
 reg  [3:0] q;
 reg  co;
 always@(posedge clk)
  if(r) q=0;
  else 
   begin
    if(s) q=d;
    else if(en)
     begin
      q = q+1;
      if(q==4'b1111) co=1;
      else co=0;
     end
    else q=q;
   end
 endmodule
 

编写完成后对代码进行编译,可以通过窗口顶部菜单栏中Processing->Start Compilation或工具栏中Start Compilation按钮进行编译。编译通过后任务栏将如下图所示。

5.png

在ModelSim中进行仿真

打开ModelSim后首先新建工作库,通过窗口顶部菜单栏中File->New->library或在library窗口中右键New->library中新建工作库

6.png

工作库建立完成后通过File->New->Project建立工程,其中工程目录选定在文件夹建立章节中建立的count4_tb文件夹,工程名为count4_tb

7.png

在工程中通过Add Existing File加入编写好的元件并通过Create New File新建用于输入测试信号的Testbench文件count4_tb.v,其中testbench文件类型应选择Verilog。

8.png

9.png

count4_tb.v文件中应写入testbench,具体代码如下:

`timescale 1ns/1ns  // 仿真时间精度
module count4_tb;      
 reg clk,r,s,en;    // 器件的输入信号在testbench中类型为reg
 reg [3:0] d;
 wire [3:0] q;      // 器件的输入信号在testbench中类型为wire
 wire co;
 initial            // initial中的信号将会顺序执行一次
  begin
   clk=0;r=1;s=0;en=1;d=4'b1001;        // 0ns时信号的初始值
   #300 r=0;        // 300ns时r为0
   #200 s=1;        // 500ns时s为1
   #200 s=0;        // 700ns时s为0
   #1000 en=0;      // 1700ns时en为0
   #300 $stop;      // 2000ns时仿真结束
  end
 always #50 clk=~clk; // always中的信号将会循环执行,此处为每50ns对clk信号执行一次取反输入
 count4 mycount4(.clk(clk),.r(r),.s(s),.en(en),.d(d),.q(q),.co(co));
endmodule

对count4和count4_tb进行编译,选择Compilation All即可。编译通过后文件status将会变为绿色对号标记。

10.png

波形仿真

编译通过后通过顶部菜单栏Simulate->Start Simulation选择count4_tb文件进行仿真。将Objects中的信号全部选中添加到wave中,并点击顶部菜单栏Simulate->run->run-all得到波形仿真结果

12.png

13.png

二、联合仿真

quartus II 提供了对仿真工具的调用接口,可以通过调用这些接口来实现更方便的联合仿真。联合仿真步骤如下。

创建testbench模板

VerilogHDL代码编写并编译之后,可以通过顶部菜单栏中Processing->Start->Start Test Bench Template Wirter来创建Testbench模板。新创建的Testbench模板文件存储为当前文件夹下./simulation/modelsim/count4.vht文件,可以通过quartus II或其他文本编辑工具打开并修改为自己所需的testbench,Testbench各部分内容作用在ModelSim中进行仿真已经给出。

14.png

联合仿真设置

在窗口顶部菜单栏Assignments->Settings->EDA Tool Settings中选择Simulation为ModelSim或者ModelSim-Altera。具体取决于你装的什么EDA工具。Assignments->Settings->Simulation中选择使用的Testbench文件。其中test bench name选项中应该填写testbench中module名。

15.png

开始联合仿真

选择窗口顶部菜单栏Tools->Run Simulation Tools->RTL simulation(此功能为RTL功能仿真,Gate Level Simulation为门级仿真,根据自己需求自选)。

此后步骤与波形仿真中步骤相同。

目录
相关文章
|
存储 编译器 C++
关于“VS2022无法打开头文件<graphics.h>” 以及编译时 “没有与参数列表匹配的重载函数实例”俩个问题的解决思路
关于“VS2022无法打开头文件<graphics.h>” 以及编译时 “没有与参数列表匹配的重载函数实例”俩个问题的解决思路
4808 0
|
机器学习/深度学习 数据可视化 算法框架/工具
Keras中神经网络可视化模块keras.utils.vis_util 的安装
Keras中神经网络可视化模块keras.utils.vis_util 的安装
913 0
|
9月前
|
JavaScript 开发者
HarmonyOS NEXT 实战系列01-ArkTS基础
ArkTS是HarmonyOS应用开发的首选语言,基于TypeScript扩展而成,保留了TS风格并强化静态检查与分析能力,提升程序稳定性和性能。它支持声明式UI开发、状态管理等功能,简化应用构建。语法涵盖变量、常量、数组、对象、语句(如if、switch)、函数(含箭头函数与泛型)、类和模块等特性,同时提供联合类型、字面量联合类型及枚举类型等丰富类型支持,助力开发者高效编写高质量代码。
|
监控 数据可视化
怎么把Logstash 通过 Kibana 可视化监控起来?
怎么把Logstash 通过 Kibana 可视化监控起来?
怎么把Logstash 通过 Kibana 可视化监控起来?
|
数据库
SAP系统不能启动解决方案
SAP系统不能启动解决方案
636 1
|
缓存 监控 Java
"Java垃圾回收太耗时?阿里HBase GC优化秘籍大公开,让你的应用性能飙升90%!"
【8月更文挑战第17天】阿里巴巴在HBase实践中成功将Java垃圾回收(GC)时间降低90%。通过选用G1垃圾回收器、精细调整JVM参数(如设置堆大小、目标停顿时间等)、优化代码减少内存分配(如使用对象池和缓存),并利用监控工具分析GC行为,有效缓解了高并发大数据场景下的性能瓶颈,极大提升了系统运行效率。
428 4
|
缓存 NoSQL 关系型数据库
MySQL与Redis的默契协作:解析数据一致性难题与解决方案
MySQL与Redis的默契协作:解析数据一致性难题与解决方案
515 0
MySQL与Redis的默契协作:解析数据一致性难题与解决方案
【乌拉喵.教程】进一步学习编写TestBench(VHDL语言),quartus与modelsim时序仿真
【乌拉喵.教程】进一步学习编写TestBench(VHDL语言),quartus与modelsim时序仿真
625 0
【乌拉喵.教程】进一步学习编写TestBench(VHDL语言),quartus与modelsim时序仿真
|
NoSQL 测试技术 API
从程序员到架构师开发运维场景实战篇:一人一套测试环境
一人一套测试环境 本篇开始讲第16次架构经历:一人一套测试环境。同样,先介绍业务场景。 业务场景:测试环境何时能释放出来使用 当时,公司的基础设施使用的是虚拟机,而且还未迁移到容器。
具有双极性输出的D/A转换器的介绍
双极性输出的D/A转换器 一、引言 D/A转换器(Digital-to-Analog Converter)是一种将数字信号转换为模拟信号的设备。它在数字系统和模拟系统之间起到了桥梁的作用。D/A转换器的输出可以是单极性的,也可以是双极性的。本文将重点介绍双极性输出的D/A转换器的原理、应用领域和设计要点。 二、工作原理 双极性输出的D/A转换器是一种能够输出正负电压的设备。它的基本原理是通过将输入的数字信号转换为相应的模拟电压,并将其输出。双极性输出的D/A转换器通常采用R-2R网络结构,其中R代表电阻。该结构由一组电阻串联和并联而成,通过改变电阻值的连接方式,可以实现不同的输出电压。
748 0