FPGA——study1
新建Modelsim 工程 new–project
最好提前建好文件夹路径(空文件夹),添加
两个文件,
基本格式
1、时间预处理指令
时间单位1ns
时间精度1ps
时间单位>时间精度,如:
`timescale 1ns / 1ps
延时100ns
#100 rst_n = 1'b1;
2、定义文件名称
module led_test
(
input clk, // system clock 50Mhz on board
input rst_n, // reset ,low active
output reg[3:0] led // LED,use for control the LED signal on board
);
3、定义寄存器等其他格式数据
reg [31:0] timer;
4、输入数据用寄存器形式即(reg)进行连接,输出类型用(wire)连接
5、空右键白处单击-compile—>compile all
编译成功
点击library
右键simulate
下图空白处 右键—add to–wave–signal desigen
窗口如果乱的话点击 layout—reset
输入运行时间
在下图仿真图中点击zoom in
显示任务
$display
d
i
s
p
l
a
y
系
统
任
务
用
于
打
印
信
息
,
类
似
于
C
语
言
的
打
印
。
未
指
定
显
示
格
式
时
,
默
认
显
示
的
格
式
是
十
进
制
,
另
外
还
有
display 系统任务用于打印信息,类似于 C 语言的打印。未指定显示格式时,默认显示的格 式是十进制,另外还有
display系统任务用于打印信息,类似于C语言的打印。未指定显示格式时,默认显示的格式是十进制,另外还有dispalyb, $displayo, $displayh 显示格式分别是二进制、八进制、十六进制。
$display 会在每次显示后自动换行。格式如下:
例: $display(“%b+%b=%b”,a,b,c) ;
举例说明,打开新建的 Modelsim 工程,打开 testbench 文件,添加两行代码: (这两条代码可自动换行)
$display(“hello alinx”) ;
$display(“rst_n = %d”, rst_n) ;
如遇到官方的例程不能编辑右键去掉read only
library,project中重新编译,然后library中右键—>simulate然后add to -->wave–>signal design 然后run 1ms
即可在输出框看到
write和display不同,write不换行
输入结果入下
可在显示字符串后加反斜杠换行
$write (“hello alinx\n”) ;
$write (“rst_n = %d\n”, rst_n)
**
m
o
n
i
t
o
r
用
于
持
续
监
测
指
定
变
量
,
只
要
变
量
发
生
了
变
化
,
即
会
触
发
monitor 用于持续监测指定变量,只要变量发生了变化,即会触发
monitor用于持续监测指定变量,只要变量发生了变化,即会触发monitor,显示对应的
语句。**格式如下:
例: $monitor(“%b+%b=%b”,a,b,c) ;
在代码中添加以下代码:
Initial
$monitor(“clk = %b”, clk) ;
重新编译,仿真后有
今天到这吧!恰饭----------------------------