verilog入门语法学习-第1篇
2024-09-21 21:28:31
1. 如何观察被测模块的响应:
在initial 块中,用系统任务$time 和 $monitor
$time 返回当前的仿真时刻
$monitor 只要在其变量列表中有某一个或某几个变 量值发生变化,便在仿真单位时间结束时显示其变 量列表中所有变量的值。
例:
initial begin
$monitor ($time, , “out=%b a=%b sel=%b”, out,a,b,sel);
end
2.如何把被测模块的输出变化记录到数据库文件中?
(文件格式为VCD,大多数的波形显示工具都能读取该格式)
可用以下七个系统任务:
$dumpfile(“file.dump”); //打开记录数据变化的数据文件
$dumpvars(); //选择需要记录的变量
$dumpflush; //把记录在数据文件中的资料转送到硬盘保存
$dumpoff; //停止记录数据变化
$dumpon; //重新开始记录数据变化
$dumplimit(<file_size>); //规定数据文件的大小(字节)
$dumpall; //记录所有指定信号的变化值到数据文件中
3. $<标识符> ‘$’ 符号表示 Verilog 的系统任务和函数
常用的系统任务和函数有下面几种:
$time //找到当前的仿真时间
$display, $monitor //显示和监视信号值的变化
$stop //暂停仿真
$finish //结束仿真
4.特殊符号 “#” 常用来表示延迟: 在过程赋值语句时表示延迟。
例:initial begin # rst=; # rst=; end
5. 编译引导语句用主键盘左上角小写键 “ ` ” 起头 用于指导仿真编译器在编译时采取一些特殊处理
`include “global.v”
`define //宏定义
`include //包含其他文件
`timescale //仿真分辨了
`uselib //使用库
`resetall //编译引导语句把所有设置的编译引导恢复到缺省状态,不明白啊?
6.`timescale 用于说明程序中的时间单位和仿真精度
7.选择数据类型时常犯的错误,其中过程块是always块吗?
在过程块中对变量赋值时,忘了把它定义为寄存器 类型(reg)或已把它定义为连接类型了(wire)
把实例的输出连接出去时,把它定义为寄存器类型了
把模块的输入信号定义为寄存器类型了。
最新文章
- python小程序
- Java ->; 把Excel表格中的数据写入数据库与从数据库中读出到本地 (未完善)
- .net 的 Url 中文加密
- C++ builder 操作Excel方法(据网上资料整理)
- CentOS 6.4下通过YUM快速安装配置LAMP服务器(Apache+PHP5+MySQL)
- 【BZOJ】【3052】【WC2013】糖果公园
- C#_MVC3之使用Authorize简单的验证登录(一)
- QTP常见问题解决方法(一)
- 关于Delphi中二维数组的声明和大小调整(对非基本类型数据,小心内存泄漏)
- Hibernate核心接口
- 《JavaScript网页特效经典300例-高级篇》
- BZOJ 1106: [POI2007]立方体大作战tet
- java面试2(java技术栈和Hollis面试内容分享)
- 深入理解JavaScript,这一篇就够了
- APNs
- windows7 64下redis安装
- docker安装nginx和php
- 工具类:Colletions ,Arrays(静态导入,可变参数,强循环)
- HanLP 关键词提取算法分析
- ios webview调试
热门文章
- vue通过watch对input做字数限定
- 清除IE8/IE9/IE10/IE11浏览器缓存文件 100%有效
- asp.net mvc5 step by step(四)——关于Controller的ActionResult
- Java之变量
- Magazine Ad CodeForces - 803D(二分 + 贪心,第一次写博客)
- mysql主从延迟复制
- 微信小程序调用api接口
- jq ajax 传递数组 后台php 接值处理
- Asp.Net Core使用Log4Net优化日志【项目开源】
- thinkphp5 部署到iis服务器url重写