【FPGA】Modelsim的使用方法

Modelsim的使用方法

1新建库
File->New->Library…
在这里插入图片描述

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

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

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

在这里插入图片描述
在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图窗中可以看文件的编译状态:
问号:修改编辑后未编译。
在这里插入图片描述
绿色对勾:编译成功
在这里插入图片描述
红色叉号:编译失败
在这里插入图片描述

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

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

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

在这里插入图片描述
->点击Run在这里插入图片描述

出现波形:
在这里插入图片描述
放大缩小显示时间间隔:在这里插入图片描述
修改显示变量波形的进制数:右击Msgs中要修改进制数的变量->Radix->选择显示进制数
在这里插入图片描述

在这里插入图片描述

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

  • 52
    点赞
  • 383
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
FPGA开发中,ModelSim是一款常用的仿真器,特别适用于RTL级和门电路级电路仿真。它支持VHDL和Verilog HDL的混合仿真,并且具有快速的编译速度。ModelSim有几个版本,包括AE、XE和SE,其中AE和XE是专门集成在FPGA厂家设计工具中的版本,而SE是版本最高且编译速度最快的版本。\[1\] ModelSim使用可以分为两种情况。第一种是直接使用ModelSim软件进行仿真,也就是手动仿真。第二种情况是通过其他EDA工具如Quartus II调用ModelSim进行仿真,这种情况通常被称为自动仿真或联合仿真。\[2\] 在手动仿真中,可以看到顶层文件和例化的对应模块的信号波形。而在联合仿真中,只能看到例化部分引出的信号的波形。有时,直接将手动仿真的文件添加到联合仿真中可能无法正常工作,此时可以在ISE中新建一个tb文件,并将代码复制进去即可。\[3\] #### 引用[.reference_title] - *1* *3* [FPGA软件篇——Modelsim使用](https://blog.csdn.net/lgyLGY35/article/details/113869917)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【FPGA学习笔记】Modelsim使用教程modelsim常用快捷键、FPGA的仿真流程](https://blog.csdn.net/yang_jiangning/article/details/105155633)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值