1.3 Verilog 环境搭建详解教程

学习 Verilog 做仿真时,可选择不同仿真环境。FPGA 开发环境有 Xilinx 公司的 ISE(目前已停止更新),VIVADO;因特尔公司的 Quartus II;ASIC 开发环境有 Synopsys 公司的 VCS ;很多人也在用 Icarus Verilog 和 GTKwave 的方法,更加的轻便。

虽然 ISE 或者 Quartus II 都会自带仿真器,但功能还是有欠缺。所以,这里介绍下 Quartus II + Modelsim 联合仿真的测试方法,运行环境为 64bit-win10 系统。

Quartus II 安装

本次介绍使用的 Quartus 版本为 10.1。

目前 Quartus II 官网已经没有 13.1 以下版本的安装包,大家可以安装 13.1 以上版本的软件。功能都是大同小异,下载地址:https://fpgasoftware.intel.com/13.1/?edition=subscription&platform=windows

下载 13.1 以上的 quartus II 时,官网也会推荐相应版本的 Modelsim,一起下载即可。

开始安装,修改安装路径,其他按照默认设置一步步操作即可。

下图是成功安装的截图。

如果提示需要 License file,如下图所示,则需要指定购买该软件时的 license 文件。

如果 license 文件需要替换 Host-ID,只需要 license 文件中的 HOSTID 替换为 NIC 选项中随便一个 ID 即可,如下图红色框所示:

Quartus II 10.1 安装完还需要安装 Device,即安装支持各种可编程逻辑器件型号的库文件,否则 Quartus II 不能正常建立工程。

安装路径需要选择 Quartus II 的安装路径,此时 Device 安装可自动识别 Quartus II。

最新 Quartus II(例如 2016 版本)已经支持一套化安装了。

Modelsim 安装

Modelsim 选择 modelsim-win64-10.1c-se 版本。

也需要修改下安装路径,然后按照默认设置进行操作即可。

安装完毕后可能提示需要重启电脑,重启即可。

建立 Quartus II 工程

建立工程

File->New project Wizard

设置工作路径与工程名字、top module名字。

注意,路径与名字设置时,不能包含中文。

选择器件型号

我们只进行简单的仿真,不进行下载、烧录等,所以我们不用关心具体信号,随便选一种即可。

然后一直点击 Next,直到 Finish。

新建 Verilog 源文件

下面就对 4 位宽 10 进制计数器进行简单的仿真。

点击:File->New->Verilog HDL File->OK

点击:File->Save As

输入 module 名字为:counter10.v

需要注意的是,top module 名字一定要和 project 名字一致,否则会报错(如图中所示)。

把 Verilog 代码复制到文件 counter10.v 中,进行一键编译(实际包含了编译、综合、布局布线等)。

报错时,可通过点击 Error log 来定位错误,进行修改,直至没有 Error。

Quartus II 调用 Modelsim 仿真

仿真设置为 Modelsim-altera

点击:Tool->Options->EDA Tool Options

将 Modelsim 后面的地址改为 Modelsim 启动程序的路径。

选择仿真器

点击:Assignments -> Simulation

Tool name 选择 ModelSim,并设置 Format、Time scale 等,如图。。

写 testbench 文件

点击:Processing->start->Start TestBench Template Writer

如果设置正确,会在工程路径 simulation/modelsim 下产生 .vt 文件。

.vt 文件模板已经给出了端口部分的代码、接口变量的声明和例化语句映射等。我们要做的就是将测试代码填入到 testbench 合适的位置。

这里简单的写一下时钟、复位驱动代码,如下图所示。

将 testbench 添加到工程中

点击:Assignments -> Settings -> Simulation

在 Compile test bench 选项中,选择 new,设置 Test bench name,并通过 File name 查找的方式,将上一步生成的 .vt 文件添加到工程中。

需要注意的是,testbench 文件名字需要和 testbench 里的 top module 名字保持一致,否则后续启动 Modelsim 时会报错,不能进行正常的仿真。

重新一键编译

此时,你会发现,Tasks 栏编译的状态变成了问号,需要重新进行一键编译。

调用 Modelsim 仿真

点击:Tools->Run simulation Tool->RTL Simulation

这时就会自动启动 Modelsim 软件。

Modelsim 操作这里不做具体介绍。

由仿真图可知,我们的设计完成了 10 进制计数的基本功能。


总结

记忆中,Quartus II + Modelsim 的联合仿真功能既强大,又安装方便。几年后重新进行此过程,发现步骤也有些许繁琐,花费了我一晚上的时间来搞定。很多细节也在上面提出,多多注意就好。不过,大家以后有机会进行大型的数字模块仿真时,就会发现此方法的有效性。

在接下来的教程里,有些简单的仿真可能用其他软件进行,截图界面可能与 Modelsim 不一致。大家看到后不用怀疑仿真的准确性,这里特别说明。

设计模块与 testbench 源码也会全部给出,大家完全可以自己仿真、验证。

希望你也学会了,更多编程源码模板请来二当家的素材网:https://www.erdangjiade.com

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

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

相关文章

PyTorch 2.2 中文官方教程(三)

使用 PyTorch 构建模型 原文:pytorch.org/tutorials/beginner/introyt/modelsyt_tutorial.html 译者:飞龙 协议:CC BY-NC-SA 4.0 注意 点击这里下载完整示例代码 介绍 || 张量 || 自动微分 || 构建模型 || TensorBoard 支持 || 训练模型 ||…

一些学习的总结帖子

一、Spring 参考链接1 参考链接2 参考链接3 二、多线程 并发的理解 参考链接1 三、redis 参考链接1 四、rabbitmq 五、数据库 数据库事务的概念及其原理 数据库事务 六、other 添加链接描述

Why React Doesn‘t Need jQuery?

a revolution library – 一个革命性的库greatly simplified tasks such as … – 极大的简化了…任务DOM manipulation – DOM操作event handling – 事件处理animation creation – 动画创建Ajax request – Ajax请求with the rise of modern front frameworks – 随着现代前…

Java风暴:打造高效作家信息管理平台

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

Web项目利用EasyExcel实现Excel的导出操作

早期Java使用的一些解析,到处excel的框架存在种种问题被遗弃,现在使用阿里巴巴所提供的EasyExcel已成为一种主流,本篇将详细介绍该功能在Web项目中如何实际应用。 详细操作文档:写Excel | Easy Excel 一、项目演示 在后台管理界…

windows下使用bat打开程序,并解决闪退问题

1.如何使用bat打开一个已经编译好的exe文件 示例:start /d"F:\testProject\bin\Debug" Shell_Component.exestart 空格 /d(后面不要空格) 引号并包裹exe程序路径 空格 exe名称 参考:https://blog.csdn.net/zhangshengqiang168/article/d…

Nginx与history路由模式:刷新页面404问题

使用nginx部署前端项目,路由模式采用history模式时,刷新页面之后,显示404。 路由模式 前端路由的基本作用为: ①当浏览器地址变化时,切换页面; ②点击浏览器后退、前进按钮时,更新网页内容&…

基于ISO13400 (DoIP) 实现车辆刷写

近年来,在整车研发中基于以太网实现车辆高带宽通讯无疑是人们热议的话题。无论是车内基于车载以太网来减少线束成本,实现ADAS、信息娱乐系统等技术,还是基于新的电子电气架构以及远程诊断需求来实现以太网诊断(DoIP)&a…

BUGKU-WEB 留言板

题目描述 题目无需登录后台!需要xss平台接收flag, http协议需要http协议的xss平台打开场景后界面如下: 解题思路 看到此类的题目,应该和存储型xss有关,也就是将恶意代码保存到服务器端即然在服务器端,那就…

【Cocos入门】场景切换(loadScene、preloadScene)

一、loadScene 加载场景 loadScene(sceneName: string, onLaunched: Director.OnSceneLaunched, onUnloaded: Director.OnUnload) : boolean 通过场景名称进行加载场景。返回值为布尔类型 参数: NameTypeDescriptionsceneNamestring场景名称onLaunchedDirector.O…

c++信号

信号(Signals) 参考链接:具体例子 信号是 UNIX 和类 UNIX 操作系统(如 Linux)中进程间通信的一种机制。一个信号就是一个异步的通知,发送给进程以告知它发生了某个事件。当一个信号发送给进程时&#xff…

基于Chrome插件的Chatgpt对话无损导出markdown格式(Typora完美显示)

刚刚提交插件到Chrome插件商店正在审核,想尝试的可以先使用: https://github.com/thisisbaiy/ChatGPT-To-Markdown-google-plugin/tree/main 我将源代码上传至了GitHub,欢迎star, IssueGoogle插件名称为:ChatGPT to MarkDown plus…

3.1 Verilog 连续赋值

关键词:assign, 全加器 连续赋值语句是 Verilog 数据流建模的基本语句,用于对 wire 型变量进行赋值。: 格式如下 assign LHS_target RHS_expression ; LHS(left hand side) 指赋值操作…

再次讨论【二进制文件与文本文件】的区别联系

之前文章已简单讲解过二者的区别,但是探讨不够深入,这里我们重新深入讲解。 广义上的二进制文件包括文本文件,这里讨论的是狭义上的二进制文件与文本文件的比较: 能存储的数据类型不同\n文本文件只能存储char型字符变量。二进制文…

C#委托的前世今生

起因 很多C#初学者,都遇到过这样的问题——线程间操作无效,从不是创建控件的线程访问它。 今天就这个问题,展开分析。 溯源 先说下这个问题产生的根源。 大家都知道,程序运行起来之后,首先会有一个主线程&#xff…

中小型网络系统总体规划与设计方法

目录 1.基于网络的信息系统基本结构 2.网络需求调研与系统设计原则 3.网络用户调查 4.网络节点地理位置分布情况 5.网络需求详细分析 6.应用概要分析 7.网络工程设计总体目标与设计原则 8.网络结构与拓扑构型设计方法 9.核心层网络结构设计 10.接入核心路由器 11.汇聚…

Android 环境搭建

1、桥接工具安装 网站地址:AndroidDevTools - Android开发工具 Android SDK下载 Android Studio下载 Gradle下载 SDK Tools下载 使用安装包: adb 查看当前链接成功的设备:adb devices 使用adb shell指令来进入到手机的后台:

Redis 持久化对性能有何影响?

Redis 持久化对性能的影响 Redis 是一个高性能的内存数据存储系统,通常被用于缓存、消息队列和数据存储等方面。由于 Redis 是基于内存的,因此它的读写速度非常快,可以满足高并发、低延迟的应用需求。但是,当 Redis 需要持久化数…

探索STM32CubeMX:图形化工具简化嵌入式软件开发

STM32CubeMX是由STMicroelectronics提供的一款图形化工具,旨在简化STM32微控制器的嵌入式软件开发过程。它提供了一种快速、直观的方式来生成初始化代码并配置STM32微控制器,帮助开发人员节省宝贵的开发时间,并降低入门门槛。本文将探索STM32…

政安晨:快速学会~机器学习的Pandas数据技能(四)(汇总与映射)

从数据中提取价值! 概述 在上一篇文章中,我们学习了如何从DataFrame或Series中选择相关数据。从我们的数据表示中选择正确的数据对于完成工作非常重要,正如我们在练习中所演示的那样。 然而,数据并不总是以我们想要的格式直接从…