本文章详细介绍了怎样用ModelSim仿真Verilog,虽然只是很简单的一个二分频器的例子,但却正式小白入门所需要的。

本教程以ModelSim
SE 10.4为例

1. 新建工程

file->new->project,输入工程名 例如half_clk

2. 新建文件

新建二分频器模块文件和testbench文件,分别为half_clk和half_clk_tb,注意type选择Verilog。

3. 编写模块文件和激励文件内容

half_clk.v

half_clk

1
2
3
4
5
6
7
8
9
10
11
12
module half_clk_dai(clk_in, rst, clk_out );
    input clk_in, rst;
    output clk_out;
    reg clk_out;  
always @(posedge clk_in or negedge rst)
   begin 
      if(!rst) 
          clk_out<=0;
      else 
          clk_out<=~clk_out;
   end
endmodule

half_clk_tb.v

half_clk_tb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
`timescale
1ns/1ns
 
module half_clk_top;    
    reg clk_in;
    reg rst;  
    initial
        begin 
           clk_in=1;
           rst=1;
           #1000  rst=0;
           #1000  rst=1;
       end  
    always #200 clk_in=~clk_in;     
    half_clk_dai dai1(.clk_in(clk_in),.rst(rst),.clk_out(clk_out));
endmodule

4. 编译文件

编译前一定注意要保存文件!! 【ctrl+s】

点击工具栏按钮,编译全部文件,如果文件名后的status显示√就表示没有语法错误,编译成功。

否则

如果有错误可以双击红色的error查看具体的错误信息。

5. 工程仿真

点击工具栏的Simulation按钮进行仿真。

选择work->half_clk_top,因为只需要对testbench文件进行仿真就行,取消左下角的优化选项,因为可能会把object框里的信号量优化掉.

在 instance里显示了testbench的文件结构,有一个always和一个initial,调用的half_clk里有个一always循环。

在信号量上 右键->add > To Dataflow > Selected Items可以查看设计图

如果ware里没有信号可以右键->add wave添加,然后设置运行时间5ms,点击run,就会显示波形。

可以看到分频器正确运行,输出频率是输入频率的一半。

ModelSim仿真教程的更多相关文章

  1. 【黑金原创教程】【Modelsim】【第一章】Modelsim仿真的扫盲文

    声明:本文为黑金动力社区(http://www.heijin.org)原创教程,如需转载请注明出处,谢谢! 黑金动力社区2013年原创教程连载计划: http://www.cnblogs.com/al ...

  2. Modelsim仿真新手入门最详细教程

    2021年11月15日 00 安装包/版本 我是提前在网上下好的(但这一点也给我的实验造成了"麻烦"),用的是Modelsim SE-64 2020.4版本的,学校实验室的似乎不同 ...

  3. 用Modelsim仿真QuartusII综合后网表时库的添加方法(转)

    这两天做综合后仿真,发现FPGA器件库又不会加了,无奈上网找方法.说起来不好意思,很早就接触Modelsim这个仿真软件了,可是没有好好琢磨.把这两天找的方法贴出来,再加上自己的理解,以后忘了可以上博 ...

  4. ModelSim仿真入门

    ModelSim仿真入门之一:软件介绍 编写这个教程之前,为了让不同水平阶段的人都能阅读,我尽量做到了零基础入门这个目标,所有的操作步骤都经过缜密的思考,做到了详细再详细的程度. 如果您是FPGA开发 ...

  5. 45.modelsim仿真include文件

    modelsim仿真include文件会出现找不到文件的情况,这是因为include文件路径有两种,一种是相对路径,另一种是绝对路径. 相对路径: 如果 ‘include "primitiv ...

  6. 14.quartus联合modelsim仿真

    在quartus调用modelsim仿真过程中,出现了一个错误,如下所示: Check the NativeLink log file I:/Quartus11.0/Myproject/testi_n ...

  7. modelsim 仿真时出现无限迭代(iteration reach limitation)的原因及其解决办法

    modelsim 仿真时出现无限迭代(iteration reach limitation) 出现这种故障的原因:  一般都是代码里出现的组合逻辑无限循环或者组合逻辑A产生signal_A,signa ...

  8. modelsim仿真时让状态机波形显示状态的名字

    在使用Verilog编写有限状态机等逻辑的时候,状态机的各个状态通常以参数表示(如IDLE等).当使用ModelSim仿真的时候,状态机变量在wave窗口中以二进制编码的形式显示,如下面所示,这种显示 ...

  9. 用ModelSim仿真SDRAM操作

    之前写了两篇关于Modelsim仿真的blog,其中模块管脚的命名可能让人觉得有些奇怪,其实不然,之前的两篇内容都是为了仿真SDRAM操作做铺垫的. 由于SDRAM的仿真过程相对比较复杂,也比较繁琐. ...

随机推荐

  1. websocketd

    https://www.cnblogs.com/tinywan/p/6826125.html https://www.jianshu.com/p/63afd0099565

  2. Asp.net Mvc Ajax.BeginForm提交表单

    之前Mvc中一直用Html.BeginForm提交表单,即如下: @using (Html.BeginForm("Add", "News", FormMetho ...

  3. html多文件上传,可支持预览

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. Linux 抓包工具:tcpdump

    tcpdump 是一个抓包工具,通常用来分析网络 安装tcpdump命令 [root@mysql test]# yum install -y tcpdump -i 指定网卡 捉取网卡数据包 抓取指定网 ...

  5. 20190122 Oracle if-- elsif -- else -- if end

    DECLARE V_SYSTIME VARCHAR2(8); PROCEDURE KB_RUNNING(I_DATE DATE) IS BEGIN V_SYSTIME :=TO_CHAR(I_DATE ...

  6. 20181226 PL/SQL批量生产处理语句

    总有那么些时候,对某些特定条件的数据需要做更新或者修改,或者Truncate特定的一些表,而你又不想要每一个表都去写Truncate table 语句. 那么可以采用Select 的拼接语句 如下: ...

  7. 013-并发编程-java.util.concurrent.locks之-AbstractQueuedSynchronizer-用于构建锁和同步容器的框架、独占锁与共享锁的获取与释放

    一.概述 AbstractQueuedSynchronizer (简称AQS),位于java.util.concurrent.locks.AbstractQueuedSynchronizer包下, A ...

  8. Font Awesome 最简单应用例子

    简介: Font Awesome为您提供可缩放的矢量图标,您可以使用CSS所提供的所有特性对它们进行更改,包括:大小.颜色.阴影或者其它任何支持的效果. 使用方法: 引入<link rel=&q ...

  9. 向数据库中添加数据,通过se16 不能添加,通过 代码可以添加的原因

    1:  在向数据库中添加数据时,通过客户端se16 准备对 数据表进行添加数据,提示如下: 找了以下原因,如下: https://www.baidu.com/link?url=3yRtAfY1_9XG ...

  10. Jmeter知识点

    聚合报告说明 https://www.cnblogs.com/duanxz/p/5464993.html JMeter之Ramp-up Period(in seconds)说明(可同时并发) http ...