9、关于使命和函数的小结,挑几点重要的说一下吧
(1)使命具有多个输入、输入/输出和输出变量,在使命重能够运用推迟、事情和时序操控结构,在使命重能够调用其它使命和函数。与使命不同,函数具有回来值,并且至少要有一个输入变量,并且在函数中不能运用推迟、事情和时序操控结构,函数能够条用函数,可是不能调用使命。
(2)在声明函数时,体系会主动的生成一个寄存器变量,函数的回来值经过这个寄存器回来到调用途。
(3)函数和使命都包含在规划层次中,能够经过层次名对他们实施调用。这句话什么意思啊?
10、体系使命
(1)$diplay和$write使命
$display使命相当于C言语里的printf,用于输出信息,他的根本格局$display (p0,p1,p2);意思便是把p1、p2以p1的格局输出,至于详细格局,C言语里边讲的很清楚,下面用一张图帮咱们回想一下
此外,在display中,输出列表中的数据的实际宽度总是依照主动输出格局进行调整的。因而,咱们通常在%和表明进制的符号之间加一个0来确保总是用最少的位数来表明表达式的当时值。
例如
begin
r1=10;
$display("size=%d=%h",r1,r1);
$display("size=%0d=%0h",r1,r1);
输出成果分别为 10,00a和10,a
所以在今后写程序时,为了养成良好习惯,应该留意加上0来确保代码的可读性。
假如输出的列表中含有不定值或许高阻态时,要遵从下列状况
(1)假如按10进制输出
假如输出列表悉数为不定值,则输出为小写x;
假如输出列表部分为不定值,则输出为大写X;
假如输出列表悉数为高阻态,则输出为小写的z;
假如输出列表部分为高阻态,则输出为大写的Z;
(2)假如按十六进制或许8进制输出
那么十六进制对应的四位或许8进制对应的3位中,假如部分是高阻态或许是不定值,那么输出成果为大写的Z或许X不然就输出小写的z或许x;
例如
(2)$monitor
体系使命$monitor供给了监控和输出参数列表中的表达式或变量值的功用,其参数列表中输出操控格局字符串和输出列表的规矩和$display相同,当发动一个带有一个或许多个的$monitor使命时,仿真器则创建一个仿真机制,使得每逢参数列表中的表达式或值发生变化时,整个参数列表中的变量或许表达式的值都将输出显现,假如在同一时刻,两个或许多个参数的值发生变化,则在这时刻只输出显现一次,但在$monitor使命中,参数能够是$time体系函数,这样参数列表中变量或许表达式的值一起发生变化的时刻能够经过标明同一时刻的多行输出来显现。
例如
$monitoron和$monitoroff的功用便是经过翻开或许封闭监控标志来操控监控使命$monitor的发动和中止。这样能够使得程序员很简单的操控$monitor什么时候执行了。
(3)时刻衡量体系函数$time
在verilog hdl语法中有两种时刻衡量体系函数,分别是$time和$realtime,用这两个体系函数能够得到当时的仿真时刻。$time能够回来一个64位的值来记载当时的仿真时刻。
(4)$finish
体系使命$finish的作用是退出仿真器,回来主操作体系,也便是完毕仿真进程。格局是
$finish或许$finish(1);假如不带参数,则默许参数为1,下面是详细参数下体系输出的特征信息。
0 不输出任何信息
1 输出当时仿真时刻和方位
2 输出当时仿真时刻、方位和在仿真进程中所用memory及CPU时刻的计算。
表明看不懂…