【紫光同创国产FPGA教程】——Modelsim的使用和do文件编写

本原创文章由深圳市小眼睛科技有限公司创作,版权归本公司所有,如需转载,需授权并注明出处(www.meyesemi.com)

一:​​​​​​​实验简介

实验目的:

了解Modelsim的基本使用方法,完成do文件的编写,提高仿真效率。

实验环境:

Window11

PDS2022.2-SP6.4

Modelsim10.6rc

二:​​​​​​​​​​​​​​实验原理

将Modelsim的命令编写到一个do文件中,这样每次仿真时,只需运行这个do文件脚本即可自动执行其中的所有命令,从而显著提高重复仿真的效率。

三:​​​​​​​​​​​​​​接口列表

暂无

四:​​​​​​​​​​​​​​Testbench文件的编写

Testbench文件其实就是模拟信号的生成,给我们所设计的模块提供输入,以便测试。因为我们上板去生成比特流,尤其是比较复杂的算法,往往是需要耗很多时间的。所以要快速验证我们的设计逻辑是否正常,还得是用仿真来验证,不管是模拟图像的生成还是信号的生成,都可以通过Testbench来完成,但是,要注意一点,仿真通过了只能说明百分之80上板没问题,剩下的可能就要看实际的时序了,毕竟仿真是理想状态,实际总是不太理想。

接下来介绍Testbench的基本编写方法:

`timescale 1ns/1ns 该语句 第一个1ns表示时间单位为1ns,第二个1ns表示时间精度为1ns。注意的是,时间单位不能比时间精度还小。时间单位表示运行一次仿真所用的时间。时间精度表示仿真显示的最小刻度。

#10 表示延时10个单位时间,比如`timescale 1ns/1ns,#10表示延时10ns。

initial 对信号进行初始化,只会执行一次。

{$random}%x,表示随机取[0,x-1]之间的数字。x为正整数。如果是$random%x,则是[-(x-1),x-1]的数。

$display 打印信息,会自动换行。

$stop 暂停仿真。

$readmemb读取文件函数。

$monitor 为监测任务,用于变量的持续监测。只要变量发生了变化,$monitor 就会打印显示出对应的信息。

输入信号一般用reg定义,方便后续用always块生成想要模拟的值,输出一般直接wire引出即可。

例如生成时钟,always#10 sys_clk = ~sysclk; 表示每10个单位时间就翻转一次,如果时间单位是ns,那就是每10ns翻转一次,就是生成了50MHZ的时钟。周期是20ns。

接下来给出一个参考的testbench,如下所示:

`timescale 1ns / 1ns  

`define UD #1  

module tb_led_test();  

  

reg         clk     ;  

reg         rst_n   ;  

wire[7:0]   led     ;  

reg [7:0]   data    ;   

  

initial begin  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值