University Program VWF仿真步骤__全加器

本教程将以全加器为例,选择DE2-115开发板的Cyclone IV EP4CE115F29C7 FPGA,使用Quartus Lite v18.1,循序渐进的介绍如何创建Quartus工程,并使用Quartus Prime软件的University Program VWF工具创建波形文件,对全加器的功能进行仿真。

使用University Program VWF工具进行仿真,其实也是调用ModelSim软件仿真,只是不用写testbench文件,而是创建波形文件,因此也必须安装ModelSim软件。

一、创建Quartus工程

1、点击Quartus--File--New Project Wizard,一步步创建全加器(full_adder)工程。

2、打开后的Quartus工程界面如下图所示。

image-20240205103908670

二、创建Verilog模块

3、点击Quartus-->File-->New-->Verilog HDL,将以下代码复制到.v文件,并保存为full_adder.v。

module full_adder(input a,input b,input cin,output sum,output cout
);assign sum = a ^ b ^ cin;               //将a、b、cin进行与或运算,赋值给sum
assign cout= (a & b) | ((a^b) & cin);   //将a、b、cin进行组合逻辑运算,赋值给coutendmodule

三、综合与分析Verilog代码

4、点击Quartus软件菜单栏的Processing --> Start --> Start Analysis & Synthesis,对Verilog HDL代码执行语法检查和综合。

如果该过程成功完成,在Quartus软件窗口的Tasks页面中,Analysis & Synthesis旁边将显示一个绿色勾型标记,如下图所示。如果在该过程中提示有错误,请检查Verilog HDL代码语法,确保与上述代码块完全一致。

四、仿真Quartus工程

介绍如何用University Program VWF工具创建vwf波形文件,对全加器的Verilog代码进行功能仿真。

5、点击Quartus软件菜单栏的Tools --> Options,打开Options窗口,选择General中的EDA Tools Options,设置ModelSim-Altera的路径为C:\intelFPGA_lite\18.1\modelsim_ase\win32aloem(注意:这里的路径为Quartus的实际安装路径),点击OK

6、点击Quartus软件菜单栏的File --> New --> University Program VWF,打开Simulation Waveform Editor窗口。

7、点击Simulation Waveform Editor窗口菜单栏的Edit --> Insert --> Insert Node or Bus,打开Insert Node or Bus窗口。

8、点击Node Finder按钮打开Node Finder窗口,按下图序号标注的步骤,添加输入、输出信号节点,最后点击OK按钮。

9、返回到Insert Node or Bus窗口,点击OK按钮。

10、点击Simulation Waveform Editor窗口菜单栏的Edit --> Set End Time...,设置结束时间,举例设置为120.0 ns。至此,Simulation Waveform Editor窗口如下图所示。

11、在Simulation Waveform Editor窗口编辑输入信号节点a的值。如下图所示,在输入信号节点的波形区域单击鼠标左键不放并移动鼠标,释放后会看到一段阴影区域,点击Force High (1)按钮可以设置这段区域的信号节点值为1,点击Force Low (0)可以设置值为0;同样的操作可自行再设置b和cin的值。

12、下图所示,举例设置了abcin节点的值后的波形图。

13、点击Simulation Waveform Editor菜单栏的File --> Save,保存文件并保持默认文件名Waveform.vwf不变。

14、点击Simulation Waveform Editor菜单栏中的Simulation --> Run Functional Simulation,开始仿真,仿真后的波形图如下图所示。

五、实验现象与结果分析

仿真结果分析:

  • 在0ns~10ns,a=1b=1cin=0,此时count=1sum=0

  • 在10ns~20ns,a=0b=1cin=1,此时count=1sum=0

  • 在20ns~30ns,a=1b=0cin=0,此时count=0sum=1

  • 在30ns~40ns,a=1b=1cin=1,此时count=1sum=1

  • 在40ns~50ns,a=0b=0cin=1,此时count=0sum=1

依次再分析50ns~120ns,根据结果可判断全加器功能仿真是正确的。

六、生成的Test bench验证

以上在Run Functional Simulation过程中自动生成了与波形文件对应的Test Bench文件,一般在工程的simulation\qsim文件路径里,名称为Waveform.vwf.vt。

我们可以用该Test Bench文件再进行ModelSim仿真。将Waveform.vwf.vt命名为full_adder_tb,并修改格式为.v,再打开full_adder_tb.v将module名称改为full_adder_tb即可。ModelSim仿真所必须的设置和步骤此处就不再说明。

设置完成后点击Quartus Tools--Run Simulation Tools--RTL Simulation,即可仿真。可以看到仿真波形与以上的仿真波形一致。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/461774.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux——进程池(管道)

经过了管道的介绍之后,我们可以实现了进程间通信,现在我就来简单介 绍一下管道的应用场景——进程池。1. 引入 在我们的编码过程中,不乏会听到,内存池,进程池,空间配置器等等名词,这些是用来干…

PV、UV、IP

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言1. PV1.1 PV 计算1.2 PV 的影响因素 2. UV2.1 UV 计算2.2UV 的影响因素 3. IP3.1 IP和UV①UV大于IP②UV小于IP 三者的关系PV 和 UV 前言 PV、UV、IP是我们在运…

【汇编】简单的linux汇编语言程序

一、Linux系统汇编语言 Linux系统上的汇编语言可以使用不同的语法风格,主要包括Intel语法和AT&T语法。这两种语法有各自的特点和风格区别,尽管它们表示的底层机器指令相同。下面分别对两种语法进行简要说明: Intel语法 Intel语法是由I…

RedissonClient妙用-分布式布隆过滤器

目录 布隆过滤器介绍 布隆过滤器的落地应用场景 高并发处理 多个过滤器平滑切换 分析总结 布隆过滤器介绍 布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是…

GPT-4模型中的token和Tokenization概念介绍

Token从字面意思上看是游戏代币,用在深度学习中的自然语言处理领域中时,代表着输入文字序列的“代币化”。那么海量语料中的文字序列,就可以转化为海量的代币,用来训练我们的模型。这样我们就能够理解“用于GPT-4训练的token数量大…

《Git 简易速速上手小册》第6章:Git 在持续集成/持续部署(CI/CD)中的应用(2024 最新版)

文章目录 6.1 CI/CD基础6.1.1 基础知识讲解6.1.2 重点案例:为 Python Web 应用实现 CI/CD6.1.3 拓展案例 1:自动化部署到云平台6.1.4 拓展案例 2:使用 Docker 容器化部署 6.2 Git 与自动化测试6.2.1 基础知识讲解6.2.2 重点案例:为…

C++类和对象(7)

目录 3. 友元 3.1 友元函数 3.2 友元类 4. 内部类 5.匿名对象 6.拷贝对象时的一些编译器优化 7. 再次理解类和对象 3. 友元 友元提供了一种突破封装的方式,有时提供了便利。但是友元会增加耦合度,破坏了封装,所以 友元不宜多用。 友元…

Python数据分析 可视化数据Seaborn图表 这篇就够了

目录 1.Seaborn图表概述 2.安装Seaborn图表 3.Seaborn图表的基本设置 3.1设置图表的背景风格 3.2 设置图表的边框 4.常见图表的绘制 41 .柱形图的绘制 4.2 折线图的绘制 4.3 散点图的绘制 1.Seaborn图表概述 Seaborn是一个基于Matplotlib的Python数据可视化库&#xff…

树与二叉树---数据结构

树作为一种逻辑结构,同时也是一种分层结构,具有以下两个特点: 1)树的根结点没有前驱,除根结点外的所有结点有 且只有一个前驱。 2)树中所有结点可以有零个或多个后继。 树结点数据结构 满二叉树和完全二…

元素的显示与隐藏

目录 1.元素的显示与隐藏 1.1 display属性 1.2 visibility 可见性 1.3 overflow 溢出 1.元素的显示与隐藏 1.1 display属性 1.2 visibility 可见性 1.3 overflow 溢出

kmeans聚类选择最优K值python实现

Kmeans算法中K值的确定是很重要的。 下面利用python中sklearn模块进行数据聚类的K值选择 数据集自制数据集,格式如下: 维度为3。 ①手肘法 手肘法的核心指标是SSE(sum of the squared errors,误差平方和), 其中,Ci是第…

机器学习11-前馈神经网络识别手写数字1.0

在这个示例中,使用的神经网络是一个简单的全连接前馈神经网络,也称为多层感知器(Multilayer Perceptron,MLP)。这个神经网络由几个关键组件构成: 1. 输入层 输入层接收输入数据,这里是一个 28x…