Verilog学习小白笔记(五)

verilog学习

书目:verilog HDL 数字设计与综合第二版夏宇闻
第八章

一、函数(function)
1、函数能够调用另一个函数,但不能调用另一个任务
2、函数总是在仿真时刻0就开始执行
3、函数一定不能包含任何延迟、事件或者时序控制生命语句
4、函数至少有一个输入变量,可以有多个输入变量
5、函数只能有一个返回值,函数不能有输出(output)或者双向(inout)变量
6、verilog中的函数是不能进行递归调用,某函数在两个不同的地方被同时调用,计算结果不确定
7、在函数声明时使用关键字automatic,该函数则成为自动的或递归的,可以被并发调用
8、常量函数
function integer clogb2(input integer depth)
begin
for(clogb2=0;depth>0;clogb2=clogb2+1)
depth=deth>>1
end
endfunction

二、任务(task)
1、任务能调用另一个任务,也能调用另一个函数
2、任务可以在费仿真时刻零执行
3、任务可以包含延迟、事件或者时序控制声明
4、任务可以没有或者有多个输入、输出和双向变量
5、任务不返回任何值,任务可以通过输出和双向变量传递多个值
6、当任务在模块的两个地方被同时调用,可能会出现错误,此时要在task的关键词前加automatic关键词,实现自动可重入任务

第九章

一、过程连续赋值
1、过程连续赋值语句:允许在有限的时间内将表达式的值连续地加到寄存器或线网。
2、关键字assign和deassign表示第一类过程连续赋值语句。左值只能为寄存器或拼接的寄存器组
3、assign用来覆盖原值,deassign取消覆盖
4、force和release表示过程连续赋值语句的第二种形式,既可以用来改写寄存器上的赋值也可以改写线网上的赋值
5、force和release应当只出现在激励中

二、改写(覆盖)参数
1、参数可以在模块内定义,编译时,参数根据每个模块调用单独改变。
2、可以通过defparam语句或者模块调用参数赋值
3、defparam:
module hello_world;
parameter id_num=0;
initial
$display(“Displaying hello_world id num”=%d,id_num);
endmodule
module top
deparam w1.id_num=1,w2.id_num=2;
hello_world w1(1);
hello_world w2(2);
endmodule;
4、模块调用参数:
module top;
hello_world #(1) w1;
hello_world #(.id_num(2)) w2;

三、条件编译和执行
1、条件编译可以用编译指令ifdefifndef elseelsif `endif来实现
2、条件执行语句语允许设计者在运行时控制语句执行的流程,所有语句被编译,但是有条件的执行
3、条件执行标志只可用于行为语句: t e s t test testplusargs

四、时间尺度
1、仿真的时间单位:`timescale 100ns/1ns (参考时间单位为100ns,精度为1ns)

五、常用的系统任务
1、文件输出:打开文件
$fopen $fopen("<name_of_file>")

<file_handle>=$fopen(<name_of_file>)

2、写文件: f d i s p l a y , fdisplay, fdisplay,fmonitor, f w r i t e , fwrite, fwrite,fstrobe,p1,p2等为变量信号名或带引号字符串,verilog会把输出写入
与文件描述符中值为1的位相关联的所有文件
$fdisplay(<file_descripr or>,p1,p2,……,pn);
$monitor(<file_descripr or>,p1,p2,……,pn);
3、关闭文件
$fclose(<file_descriptor>)

4、strobe 选通显示、可以在同时执行的其他赋值语句执行完在执行,保证显示正确的结果;
6、随机数生成:$random():seed可以是reg,integer,time 返回一个32位整数
7、正负随机数的生成:

reg [23:0] rand1,rand2;

rand1=$random%60

rand2={$random}%60 生成0到59的正数

六、值变转储文件(VCD)
选择要转储的模块实例或者模块实例信号( d u m p a v r s ) 选 择 V C D 文 件 的 名 称 ( dumpavrs) 选择VCD文件的名称( dumpavrsVCDdumpfile)
选择转储的起点和终点( d u m p o n / d u m p o f f ) 生 成 检 测 点 ( dumpon/dumpoff) 生成检测点( dumpon/dumpoff)dumpall)

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值