Verilog学习——数据类型

Verilog学习——数据类型

(一)verilog的语法

Verilog中的语法类似于C,包含标记流。一个词法标记由一个或多个字符组成,标记可以是注释、关键字、数字、字符串或者空格,所有行都应以分号结尾,verilog区分大小写。
注释:
两种方式://单行注释,可嵌套在多行注释里;
/* */多行注释,不能嵌套;
空白:
用于表示空格、制表符、换行符和表单馈送的字符;
运算符:
一元运算符,二元运算符,三元运算符或条件运算符;

数字格式:
数字可以用小数、二进制、八进制、十六进制表示,默认情况下,视为小数;

[size]'[base_format][number]

Size用十进制书写,表示数字中的位数;
Base_format可以是十进制、十六进制、八进制;
数字指定为 0、1、2 …9 表示十进制基本格式,0、1、2 …9、A、B、C、D、E、F为十六进制;
默认情况下,没有 base_format 规范的数字是十进制数;没有大小规范的数字具有默认位数,具体取决于模拟器和计算机的类型。
负数是通过在数字大小之前放置减号 - 来指定的。在base_format和数字之间有减号是错误的;
字符串:
用“”括起来的字符称为字符串,其中每个字符需要一个字节来存储;
标识符:
标识符是变量的名称,由字母、数字、下划线、美元符号组成,区分大小写,不能以数字或美元符号开头;
关键字:
关键字用于保留用于定义语言结构的特殊标识符,用小写形式。

(二)verilog数据类型

1.数据类型是为了表示数据存储元素;
2.变量包含的值:0,1,x,z;real和event数据类型除外;
其中x表示未知逻辑值,可能是0或1,z表示高阻抗状态;
时序图和仿真波形中,用红色表示x,中间橙色表示z;
3.网络和变量
网络和变量是两组主要的数据类型,表示不同的硬件结构,再分配和保留值的方式上不同;

用于连接逻辑门等硬件实体,本身不存储任何值;
使用最广泛的网络是wire类型,用于连接元素和连接由单个门或连续分配驱动的网络;需要多个网时,将它们聚集在一起形成一个wire;
wire [3:0] n0;
这是一个四位导线,是一个向量。
变量
变量是数据存储元素的抽象;
Reg可以表示触发器,也可以表示组合逻辑;

4.其他数据类型
整数:一个integer是32位宽的变量;
Time: time变量是一个无符号的64位的变量,realtime将时间存储为浮点数;
Real:real变量可以存储浮点数,可以和integer和reg有相同的赋值方式;
verilog字符串:
字符串存储在reg中,
下标从右侧开始,变量内存大于字符串长度,则左侧补0;

(三)Verilog的标量和向量

标量和向量:
没有范围规范的网络或者reg被称为标量(scalar),有范围规范,则被称为向量(vector);

wire 	    o_nor;          //标量
wire [7:0]  o_flop;         //向量 
reg         parity;         
reg  [31:0] addr; 

向量中的最高有效位在最左侧,最低有效位在最右侧;

wire  [msb:lsb]   name;

msb和lsb是常量表达式,不可以是变量;lsb可以大于、等于、小于msb;
位选择:
向量变量中的每一个位都可以被选择并重新赋值,如果位选择越界或位选择为 x 或 z,则返回的值将为 x。
部分选择:
选择一系列连续的位,称为部分选择;有两种类型的部分选择;常量部分选择和索引部分选择。

[<start_bit> +: <width>]     // part-select increments from start-bit
[<start_bit> -: <width>]     // part-select decrements from start-bit

从起始位置开始,正向或者反向的截取宽度为width的字符;例如:

reg[31:0] data;
data =32’Hface_CAFE;
$display(“data[0+:8]=0x%0h”,data[0+:8]);

输出为:data[0+:8]=0xfe;

(四)verilog的阵列和存储器

Verilog数组
网络或变量的数组声明可以是标量或者向量;在标识符后面指定地址范围来创建任意数量的维度,称为多维数组;可以对reg、wire、integer和real创建数组。
n 个 1 位 reg 的内存与 n 个 bit 向量 reg 不同。

reg        y1 [11:0];        
wire [0:7] y2 [3:0]          
reg  [7:0] y3 [0:1][0:3]; 

内存:
内存用reg类型的一维数组建模,内存中每个元素可以表示一个单词,并使用单个数组索引进行引用。

reg [7:0] mem[256];
  • 22
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值