Verilog语言总结(四)

任务和函数结构

任务与函数区别:

1)         任务块可以含有时间控制语句,而函数块则没有(函数块从零仿真时刻开始运行,结束后立即返回即实现组合功能),任务块在继续下面过程之前其初始化代码必须保持到任务全部执行结束或是失败。

2)         一个任务块可以有输入输出,而一个函数块必须有至少一个输入,没有任何输出,函数结构通过自身的名字返回结果。

3)         任务的引发是通过一条语句,而函数块只有当它被引用在一个表达式中才会生效。

 

时序控制:

仿真之前Verilog有两种时序控制,一种为延迟,一种为事件控制

延迟控制(#

事件通过运行表达式:->eventb变量来被激发。

等待语句

@event_expression

wait  (expression)

 

延时定义块

延时定义块在一个独立的结构中定义模块的时序部分,这样功能验证就可以与时序验证相独立。

延时定义块的内容在specifyendspecify之间,且必须在某一模块内部,在定义块中还可以使用specparam关键字定义参数。

测试模块的组成:

a)         数据类型的定义

b)         模块实例

c)         施加激励

d)         显示结果monitor$time,”**********”,*,*);

 

编译指令

编译指令用(`)表示

1)         文本交换(`define)

格式:`define <name>  <macro_text>

定义全局参数,如延时,位宽等

+define+命令  重新进行宏定义

 

2)         文本包含(`include)

格式:`include”<file_name>”

作用:把全局或经常使用的定义单独放到一个文件中,然后包含这个文件

可以包含一些task任务块,但这些任务块中不能有压缩的重复代码

Include最多可嵌套8

 

3)         时间尺度(`timescale

格式:`timescale  <time_unit>/<time_precision>

time_unit延时和时间的计量单位

time_precision时间精度在仿真前确定如何驱动时间

功能:`timescale编译指令用来定义时间单位和精度

l  如果时间单位和精度相差太大,仿真速度会大大降低

l  所有时间尺度指令的最小精度作为整个仿真的时间单位

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值