FPGA开发——独立仿真和联合仿真

一、概述

我们在进行FPGA开发的过程之中,大部分情况下都是在进行仿真,从而验证代码实现结果的正确与否,这里我们引入了独立仿真和联合仿真进行一个简单介绍。

联合仿真:一般我们在进行仿真之前需要在相应的软件中建立相应的工程之后才能进行结果仿真(这里我们使用的Quartus和modelsim)。这是我们习惯上采用的方式。

独立仿真:顾名思义就是不依靠其他因素,对于代码进行直接仿真。

二、实现方式

联合仿真:这个仿真我们用的很多,这里就不做过多赘述。重点讲一下独立仿真

独立仿真:在进行独立仿真之前,我们需要再代码中编写一个.do文件,如下:

#在当前目录下生成物理工作库work
vlib work
#将物理工作库work映射到虚拟工作库work(第1个work为物理工作库 第2个work为虚拟工作库(在modelsim中))
vmap work work#编译testbench文件
vlog xxxx_tb.v#编译设计文件
vlog ../rtl/xxxx.v
vlog ../rtl/xxxx.v#指定仿真顶层 modelsim2020用参数-voptargs=+acc modelsim altera用参数-novopt
vsim -novopt work.xxxx_tb#添加波形
add wave -position insertpoint sim:/xxxx_tb/*
add wave -position insertpoint sim:/xxxx_tb/xxx/*

这里就是一个.do文件的基本模板,其中xxxx是模块名,xxxx_tb是测试文件,xxx是模块实例化的名字。

三、仿真操作

1、这里我们以modelsim仿真软件为例,打开modelsim软件,如图:

2、选中.do文件目录(这里我的目录是桌面/FPGA/f_adder/tb) ,根据自己.do文件所在目录选中就行:

3、选择好.do文件目录之后我们在Transcript窗口输入do f_adder_tb.do(这里是用户.do文件的名字) ,回车之后代码成功仿真,得到相应的波形图。

4、 Transcript窗口运行结果

 

5、最终得到的波形图

 四、总结

这里我们通过得到的波形图和运用联合仿真的波形图是一致的,两者实现的结果都一样,只不过独立仿真更适用于代码结果的仿真。

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

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

相关文章

昇思25天学习打卡营第01天|昇思MindSpore大模型基础j介绍

昇思MindSpore和华为昇思MindSpore大模型学习打卡系列文章,本文仅供参考~ 文章目录 前言一、昇思MindSpore是什么?二、执行流程三、设计理念四、层次结构五、Huawei昇腾AI全栈 前言 随着计算机大模型的不断发展,Ai这门技术也越来越重要&#…

【LeetCode 随笔】C++入门级,详细解答加注释,持续更新中。。。

文章目录 58.【简单】最后一个单词的长度🌟 🌈你好呀!我是 山顶风景独好 🎈欢迎踏入我的博客世界,能与您在此邂逅,真是缘分使然!😊 🌸愿您在此停留的每一刻,都…

使用vfbox网关实现modbus opc profinet iec61850等协议间的转换

在当今物联网(IoT)与工业自动化日益融合的时代背景下,协议转换网关作为连接不同设备与系统之间的桥梁,扮演着至关重要的角色。VFBox协议转换网关,作为这一领域内的佼佼者,以其高效、灵活、可靠的性能&#…

学习周报:文献阅读+HEC RAS案例

目录 摘要 Abstract 文献阅读:通过HEC RAS软件为罗马尼亚布加勒斯特市的Dmbovița河水管理的水力模型 文献摘要 讨论|结论 理论知识 边界条件计算 流量计算方式 曼宁公式 (Mannings Equation) 连续性方程 (Continuity Equation) 能量方程 (Energy Equatio…

API资源对象CRD、认识Operator-理论知识和认识Operator-初次上手(2024-07-17)

一、API资源对象CRD Kubernetes 自定义资源定义(Custom Resource Definition,简称 CRD)是一种强大的 Kubernetes API 扩展机制,允许你定义和创建自己的资源类型,以满足您的应用程序或基础设施需求。 CRD 的核心思想是…

Linux基础 -- 用户态原子操作之3种实现

Linux 用户态的原子操作实例 在Linux用户态编程中&#xff0c;原子操作通常使用内建的原子操作函数或GCC提供的内置函数来实现。这些操作可以保证在多线程环境中数据的同步和一致性。以下是几个常见的原子操作示例&#xff1a; 1. 使用 <stdatomic.h> 中的原子操作 C1…

LeetCode 2766题: 重新放置石块(原创)

【题目描述】 给你一个下标从 0 开始的整数数组 nums &#xff0c;表示一些石块的初始位置。再给你两个长度 相等 下标从 0 开始的整数数组 moveFrom 和 moveTo 。 在 moveFrom.length 次操作内&#xff0c;你可以改变石块的位置。在第 i 次操作中&#xff0c;你将位置在 moveF…

vue新建项目时异常解决-@babel/helper-create-regexp-features-plugin@^7.25.0.

问题&#xff1a; 本地vue新增项目时报错了&#xff1a; 4238 error code ETARGET 4239 error notarget No matching version found for babel/helper-create-regexp-features-plugin^7.25.0. 4240 error notarget In most cases you or one of your dependencies are reques…

基于Pytorch框架的深度学习densenet121神经网络鸟类行为识别分类系统源码

第一步&#xff1a;准备数据 5种鸟类行为数据&#xff1a;self.class_indict ["bowing_status", "grooming", "headdown", "vigilance_status", "walking"] &#xff0c;总共有23790张图片&#xff0c;每个文件夹单独放一…

Leetcode 2824. 统计和小于目标的下标对数目

2824. 统计和小于目标的下标对数目 2824. 统计和小于目标的下标对数目 一、题目描述二、我的想法 一、题目描述 给你一个下标从 0 开始长度为 n 的整数数组 nums 和一个整数 target &#xff0c;请你返回满足 0 < i < j < n 且 nums[i] nums[j] < target 的下标对…

从零搭建pytorch模型教程(八)实践部分(二)目标检测数据集格式转换

前言 图像目标检测领域有一个非常著名的数据集叫做COCO&#xff0c;基本上现在在目标检测领域发论文&#xff0c;COCO是不可能绕过的Benchmark。因此许多的开源目标检测算法框架都会支持解析COCO数据集格式。通过将其他数据集格式转换成COCO格式可以无痛的使用这些开源框架来训…

【计算机网络】静态路由实验

一&#xff1a;实验目的 1&#xff1a;掌握通过静态路由方法实现网络的连通性。 二&#xff1a;实验仪器设备及软件 硬件&#xff1a;RCMS-C服务器、网线、Windows 2019/2003操作系统的计算机等。 软件&#xff1a;记事本、WireShark、Chrome浏览器等。 三&#xff1a;实验方…

Spring集成ES

RestAPI ES官方提供的java语言客户端用以组装DSL语句,再通过http请求发送给ES RestClient初始化 引入依赖 <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId> </d…

《分析模式:可重用对象模型》学习笔记之四:企业财务分析中的观察和测量02

这个模型基本解决问题&#xff0c;可以方便定义层次&#xff0c;以及反映了三个不同的维数元素&#xff0c;也反映了企业部门单元和维数元素的关系&#xff0c;但是很快可以看到&#xff0c;在这里&#xff0c;维数被局限在三个&#xff1a;也就是说&#xff0c;如果维数需要改…

ROS2教程(10) - 编写接收程序、添加frame - Linux

注意 : 本篇文章接上节 (点击此处跳转到上节) 编写接收程序 cpp <the_work_ws>/src/learning_tf2_cpp/src/turtle_tf2_listener.cpp #include <chrono> #include <functional> #include <memory> #include <string>#include "geometry_…

【c++】多线程

多线程可以解决什么问题&#xff0c;最重要的用途是什么&#xff1f; 多线程技术在现代软件开发中扮演着至关重要的角色&#xff0c;它可以解决多种问题并带来显著的好处。以下是多线程最重要的几个用途&#xff1a; 资源利用最大化: 多线程可以充分利用多核处理器的能力&…

#如何在PDF文件中添加图片和文本框?

在PDF文件中添加图片 可以通过多种方法实现&#xff0c;以下是一些常用的方法&#xff1a; 一、使用PDF编辑器 下载并安装PDF编辑器&#xff1a;首先&#xff0c;需要在官网或可靠来源下载并安装一个PDF编辑器&#xff0c;如福昕PDF编辑器、Adobe Acrobat等。打开PDF文件&am…

静止轨道卫星大气校正(Atmospheric Correction)和BRDF校正

文章内容仅用于自己知识学习和分享&#xff0c;如有侵权&#xff0c;还请联系并删除 &#xff1a;&#xff09; 目的&#xff1a; TOA reflectance 转为 surface refletance。 主要包含两步&#xff1a; 1&#xff09;大气校正&#xff1b; 2&#xff09;BRDF校正 进度&#x…

抖音矩阵管理系统开发:全面解析与推荐

在数字时代&#xff0c;短视频平台如抖音已经成为人们生活中不可或缺的一部分。随着内容创作者数量的激增&#xff0c;如何高效地管理多个抖音账号&#xff0c;实现内容矩阵化运营&#xff0c;成为了众多创作者关注的焦点。今天&#xff0c;我们就来全面解析抖音矩阵管理系统的…

Java_如何在IDEA中使用Git

注意&#xff1a;进行操作前首先要确保已经下载git&#xff0c;在IDEA中可以下载git&#xff0c;但是速度很慢&#xff0c;可以挂梯子下载。 导入git仓库代码 第一次导入&#xff1a; 首先得到要加载的git仓库的url&#xff1a; 在git仓库中点击 “克隆/下载” 按钮&#xf…