Modelsim的使用方法

这篇具有很好参考价值的文章主要介绍了Modelsim的使用方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Modelsim的使用方法

1新建库
File->New->Library…
Modelsim的使用方法

Create:选择创建的库,一般选择第三项。
Library Name:库的名字,一般以字母下划线命名。
Library Physical Name:默认。

2新建工程
File->New->Project…
Modelsim的使用方法
Project Name:工程名,不要出现中文字符,空格,一般以字母或下划线命名。
Project Location:文件保存路径,点击Browse,选择路径,最好每个工程建一个文件夹。
其他默认,点击ok完成创建。
3.弹出下面框图,添加/新建文件:
Modelsim的使用方法
如果已经有要仿真的文件点击Add Existing File打开文件,如果没有则新建新的文件。
4.新建文件(首先说明这个框图包含的内容)
Create New File:
Modelsim的使用方法
File Name:文件名字,一般以字母、数字、下划线命名,注意不要出现空格和中文字符。
Add file as type:文件类型,默认位VHDL,我们创建的是verilog,选择verilog。
Folder:默认。
(我们要新建两个文件一个是源文件,一个是testbench源文件)
5.新建源文件
Modelsim的使用方法
Create New File->输入文件名字(一般以要完成的电路英文简写命名)->选择verilog文件->OK
6.新建testbench文件
Modelsim的使用方法

Create New File->源文件名字_tb(说明是testbench文件与源文件所区分)->选择verilog文件->OK
7.创建完成:

Modelsim的使用方法
在project图窗可以看到创建的两个文件,如果没有project图窗:View->勾选project(x)
8.编写源文件
双击打开创建的源文件counter.v进行编写。
常见问题:双击后是默认用其他软件打开的,比如我下载了AltiumDesigner软件,双击打开文件是用AltiumDesigner软件打开的
解决方法:找到文件存放的位置,找到对应文件->右键->打开方式->选择Modelsim,将默认用该应用打开.v文件的勾选框勾上即可。
(这里以8位记数器为例)

module counter(       //Module naming
input clk,            //Declarations of input and output variables.
input reset,               
output reg [7:0] count
);
/*It also includes the definition of parameters 
and declarations of other variables used in the file.*/
always@(posedge clk)  //Function realization code.
begin
  if (count===8'bxxxxxxxx)count=8'b0000_0000;
  if(!reset) count<=8'b0000_0000;
  else if(count==8'b1111_1111) count<=8'b0000_0000;
  else count<=count+1;
end
endmodule

9.编写testbench文件

`timescale 1ns/1ns   //Time unit/time precision.
module counter_tb;   //Testbench module name, usually named after this file.
parameter T=20;      //parameter definition

reg clk;             //input
reg reset;
wire [7:0]count;     //output

initial //Signal initialization, all input signals, such as clock and reset signal.
begin
  clk=1'b0;
  reset=1'b0;
  #(T/2)
  reset=1'b1;
end
always #(T/2) clk=~clk;//Generate a clock to simulate the actual cycle timing of the crystal oscillator.
counter u_counter(     //instantiate the module to be tested.
  .clk   (clk),        //Note that the statement is followed by a comma.
  .reset (reset),      //There is no comma in the last step.
  .count (count)
);
endmodule

10.特别注意:上面两个文件,在编辑或者修改以后,一定要按ctrl+s或者保存按键进行保存。(很重要,不保存编辑修改的地方就不起作用)
11.编译文件:
Compile->Compile All
project图窗中可以看文件的编译状态:
问号:修改编辑后未编译。
Modelsim的使用方法
绿色对勾:编译成功
Modelsim的使用方法
红色叉号:编译失败
Modelsim的使用方法

要学会看编译的错误:(要学会查看Transcript框中的报错)

说明.v文件中存在一个错。

Modelsim的使用方法
双击报错红色字体部分:
弹出报错框:经分析可以看出在_tb.v文件中第一行:接近“timescale”关键字附近出现的错误
Modelsim的使用方法
这里说一个很常见的错误:testbench文件中,·timescale前的点是键盘上数字1左边的那个点。修改后
:不再报错。
Modelsim的使用方法
12.仿真
Simulate->Start Simulation(出现如下窗口)->点击我们最开始(步骤1)建的库work左边的±>出现下面第二张图->点击_tb文件->取消勾选Optimization->点击OK
Modelsim的使用方法
Modelsim的使用方法
13.仿真完成
Modelsim的使用方法
13.打开波形:
在Object框中,选择要观察的波形,比如示例的8位计数器,需要显示时钟信号(clk),清理信号(clr)和计数输出信号(count)(如下图)->右击->Add to->Wave->Selected Signal
Modelsim的使用方法
出现波形仿真界面:
Modelsim的使用方法
14.仿真波形:
设置仿真时间(代码中时间单位是1ns(见步骤9中代码第一句),这里就设置了100ns)

Modelsim的使用方法
->点击RunModelsim的使用方法

出现波形:
Modelsim的使用方法
放大缩小显示时间间隔:Modelsim的使用方法
修改显示变量波形的进制数:右击Msgs中要修改进制数的变量->Radix->选择显示进制数
Modelsim的使用方法

Modelsim的使用方法

15.结语:
以上只是一些常见的操作,部分操作还有很多简便的方法,希望可以和大家进行交流学习,有问题的地方希望大家能够指点。以后还会持续跟新过程中常见的问题一级代码的具体编辑,希望能和大家一起学习。文章来源地址https://www.toymoban.com/news/detail-470065.html

到了这里,关于Modelsim的使用方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深入了解 Java 方法和参数的使用方法

    方法是一块仅在调用时运行的代码。您可以将数据(称为参数)传递到方法中。方法用于执行特定的操作,它们也被称为函数。 重用代码:定义一次代码,多次使用。 提高代码的结构化和可读性。 将代码分解成更小的模块,易于维护和理解。 方法必须在类内声明。它的定义

    2024年02月19日
    浏览(48)
  • JavaScript中apply函数方法多种使用方法!

    在JavaScript中, apply 是函数对象的一个方法,用于调用一个函数,并指定函数内部的 this 上下文以及函数的参数列表。它与另一个方法 call 功能类似,但是参数传递的方式略有不同。 apply 方法的语法如下: thisArg : 在调用函数时指定的 this 上下文,即函数内部的 this 指向的对

    2024年03月10日
    浏览(62)
  • C# 使用 RabbitMQ 的详细使用方法

    C# 使用 RabbitMQ 的详细使用方法) RabbitMQ 是一个功能强大的消息队列系统,可用于在分布式系统中进行可靠的消息传递。本篇博客将详细介绍如何在 C# 中使用 RabbitMQ 实现各种消息队列操作,包括连接 RabbitMQ 服务器、创建通道、声明队列、发布消息以及消费消息等。 RabbitMQ 是一

    2024年04月25日
    浏览(38)
  • 27 使用Arrays.asList生成的集合无法使用add、addAll方法及解决方法。

            使用 Array.asList方法生成的ArrayList继承的是AbstractList抽象类 ,如下图所示。          AbstractList又继承了AbstractCollection抽象类,实现了List接口的方法,如下图所示。         如下图所示。可以发现, AbstractionCollection实现了List接口的add和addAll方法。         

    2024年02月14日
    浏览(40)
  • vediojs 使用方法及使用中遇到的问题

    1、使用步骤 使用npm命令,安装 npm install video.js 首先,在main.js中引入  两种使用方法: 第一种,使用ref 下面是初始化的方法,不是很理解为什么要初始化,貌似是因为一般情况下视频会自动播放,用来解决不想让视频一上来就加载,而是在特定情况下执行时使用 ,(要在

    2024年02月13日
    浏览(32)
  • 方法:免费使用Microsoft 365 & Office 365(方法简单)

    *每次都会提示【获取正版 OFFICE】 下载GitHub内文件夹 GitHub文件夹   如果打不开: 那这个方法 不适用于你的电脑 选择 甲 的到这里就结束了,选择 乙 的继续往下 GitHub文件夹 把【github.com】改成【github1s.com】 右键文件夹,【Download】 打开【新建文本文档.txt】【Office Tool Plu

    2024年02月15日
    浏览(48)
  • Swagger使用方法

    1.什么是swagger Swagger是一个开放源代码软件框架,由大型工具生态系统支持,可帮助开发人员设计,构建,记录和使用RESTful Web服务。尽管大多数用户通过Swagger UI工具识别Swagger,但是Swagger工具集包括对自动文档,代码生成和测试用例生成的支持。 2.swagger的特征 1. 通过代码和

    2024年02月13日
    浏览(40)
  • nmap使用方法

    目录 第一、nmap使用 1、nmap扫描一台服务器,默认扫描1000个最有可能开放的TCP端口。   2、-v显示详细信息   3、-p表示端口扫描。 扫描全部端口,查看开放了那些。  4、查看端口正在被那个进程使用 查看22端口正在被那个进程使用。  查看ssdh的路径(如果查不到路径,说明

    2024年02月07日
    浏览(33)
  • getElementById的使用方法

    getElementById 是JavaScript中的一个DOM方法,用于根据元素的 id 属性获取HTML文档中的元素。该方法接受一个字符串参数,即元素的 id 属性值,并返回具有该 id 属性值的元素。如果没有找到匹配的元素,则返回 null 。 以下是一个示例,演示如何使用 getElementById 获取页面中的元素:

    2024年02月05日
    浏览(80)
  • Parser 使用方法

    本文主要记录了在深度学习中,使用别人写的代码时,用来接收用户在命令行里指定传入模型参数的重要方法 parser 同时,本文也给出了简易的示例,方便读者快速开始(只想了解如何使用的话可以直接跳到 3. 使用方法 和 4. 示例 ) argparse 模块可以让人轻松编写用户友好的命

    2024年02月02日
    浏览(74)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包