• ModelSim入门


    verilog设计进阶

    时间:201455日星期一

    主要收获:

    1. 安装了ModelSim ALTERA 6.4a;

    2. 熟悉基本流程,仿真成功;

    3. 了解testbench语法基本。

    为什么要学ModelSim……

    1. Modelsim是专业的HDL语言仿真器, Quartus自带的仿真器功能强大的多.

    2. Quartus simulator不支持Testbench ,只支持波形文件.vwfvwf文件全称是矢量波形文件(Vector Waveform File),是Quartus II中仿真输入、计算、输出数据的载体。一般设计者建立波形文件时,需要自行建立复位、时钟信号以及控制和输入数据、输出数据信号等。其中工作量最大的就是输入数据的波形录入。比如要仿真仅1KB的串行输入数据量,则手工输入信号的波形要画8000个周期,不仅费时费力而且容易出错。

    安装遇到的问题……

    由于笔记本是win8系统,安装的是ModelSim ALTERA 6.4a,破解之后仍然打不开。解决的方法是……以管理员的身份打开。

    可综合的比较器:

    module compare(a, b, equal);

    input a;

    input b;

    output equal;

    assign equal = (a==b)?1:0;

    endmodule

    测试模块:

    `timescale 1ns/1ns

    module compare_test;

    reg a,b;

    wire equal;

    initial begin

    a=0;b=0;

    #100 a=0;b=1;

    #100 a=1;b=0;

    #100 a=1;b=1;

    #100 $stop;

    end

    compare u1(a, b, equal);

    endmodule

    仿真波形:

    练习:

    设计一个字节(8位)比较器。

    要求:比较两个字节的大小,如a[7:0]大于b[7:0]输出高电平,否则输出低电平,改写测试模型,使其能进行比较全面的测试

    思考:

    第一次接触testbench文件,所以有很多问题。比较困难的就是"全面的测试",需要对ab进行所有情况的测试。分析ab的数值都是在0~255之间,则可以对b1ns进行一次自增,对a256ns进行一次自增,即可实现对ab所有情况的比较。

    测试文件:

    `timescale 1ns/1ns

    module compare_test;

    reg[7:0] a,b;

    wire equal;

    initial begin

    a[7:0]=0;b[7:0]=0;

    #100 a[7:0]=8'b0000_0001; b[7:0]=8'b0000_0010;

    #100 a[7:0]=8'b0000_0010; b[7:0]=8'b0000_0010;

    #100 a[7:0]=8'b1000_0001; b[7:0]=8'b0000_0010;

    #100 a[7:0]=8'b1000_0001; b[7:0]=8'b1000_0001;

    #100 a[7:0]=8'b1111_0001; b[7:0]=8'b1111_0001;

    end

    always #1 b[7:0]<=b[7:0]+1;

    always #256 a[7:0]<=a[7:0]+1;

    compare u1(a[7:0], b[7:0], equal);

    endmodule

    仿真波形图:

  • 相关阅读:
    【中文分词】条件随机场CRF
    【中文分词】最大熵马尔可夫模型MEMM
    【中文分词】二阶隐马尔可夫模型2-HMM
    【中文分词】隐马尔可夫模型HMM
    Elasticsearch的CRUD:REST与Java API
    d3的比例尺和坐标轴
    webpack DllPlugin的用法
    webpack单独启动目录方法
    d3的常用方法和数据类型
    d3中的enter,exit,update概念
  • 原文地址:https://www.cnblogs.com/510602159-Yano/p/3725982.html
Copyright © 2020-2023  润新知