Verilog基础语法(1)之变量和数据类型

一、变量类型

verilog中的变量取值分为0、1、x、z四种。
各取值含义如下:

类型含义
0表示逻辑低电平/假事件/电路接地
1表示逻辑高电平/真事件/电路接Vcc
x表示未知态(可为0也可为1)
z表示高阻态,既不为0也不为1,在电路中表示引脚悬空,输入至下一级并不影响

各变量类型波形示意图:
在这里插入图片描述

关于高阻态的更多解释:深入理解高阻态

二、verilog数据类型

在verilog语法中主要有wire、reg、integer三种数据类型。

1、wire(线网型)

wire型用于描述现实硬件电路之间连线,并不存储数据,仅仅是连接各硬件设备元器件,传递数据作用:
在这里插入图片描述
也可将多个连接合成一起,定义wire型线网的位宽:

wire [3:0] n0;

在这里插入图片描述

  • 注:多次重复声明或定义是不合规范的!!

2、reg(寄存器型)

reg型变量用于存储数据,register,即寄存器。具体表现形式如下:
在这里插入图片描述

3、其他类型

integer

integer数据类型可以存储宽度为32bit的整型数据,常用于for循环中,例如:

integer i;
for(i = 0; i < 10; i = i + 1)begin
....
end

;
for(integer i = 0; i < 10; i = i + 1)begin
....
end
time / realtime

这两种常用于仿真,time 是无符号;数据宽度为64bit,用于存储仿真时间以便调试;
realtime 与 time 的最大区别为:realtime 是存储浮点型时间数据;

time 		a_time; //a_time可以存储的时间数据值,如 a_time = 60ns
realtime	b_time; //b_time 存储的时间数据值则是浮点型,如 b_time = 35.25ns
real

real可以存储浮点型数据,并且可以和reg一样被赋值:

real		a_float;//a_float可以被赋值为12.77
上述类型仿真例子
`timescale 1ns/1ns
module testbench;
	integer 	int_a;
	time 		time_b;
	real		real_c;
initial begin
	int_a = 32'hcafe_1234;
	real_c = 0.123456;

	#20ns
	time_b = $time;
	
	$display("int_a = 0x%0h", int_a);
	$display("time_b = %0t", time_b);
	$display("real_c = %0.5f", real_c);
end
endmodule

仿真结果:

int_a  = 0xcafe1234
real_b = 0.123456
time   = 20

字符串

字符串中每一个字符为ASCII值,需要1byte/8bite的存储空间。字符串存储在reg型变量中时,reg变量的宽度必须足够大,以容纳字符串。如果变量的大小小于字符串,那么Verilog会截断字符串的最左边的位。如果变量的大小大于字符串,那么Verilog会在字符串的左边添加0。

 
// "Hello World" requires 11 bytes
reg [8*11:1] str = "Hello World";         
reg [8*5:1]  str = "Hello World";         
reg [8*20:1] str = "Hello World";         

仿真验证;

`timescale 1ns/1ns
module testbench;
  reg [8*11:1] str1;
  reg [8*5:1]  str2;
  reg [8*20:1] str3;
 
  initial begin
    str1 = "Hello World";
    str2 = "Hello World";
    str3 = "Hello World";
 
    $display ("str1 = %s", str1);
    $display ("str2 = %s", str2);
    $display ("str3 = %s", str3);
  end
endmodule

仿真结果:

str1 = Hello World
str2 = World
str3 =          Hello World
  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值