02 语言要素 数据类型
Verilog和C语言语法很相似,但是在设计上完全不一样,重视区别性。C语言是顺序结构,Verilog是并行结构,verilog仿真软件是顺序执行的,和实际硬件有差异。
语言要素
-
空白符
空格符(\b),制表符(\t) -
List item注释符
单行注释// 多行注释/* */
注释全部写成英文 -
标识符
比较特殊 ,大小写一样。只允许字母,数字,$,下划线,第一个字符必须是字母和下划线。 -
转义标识符
没啥用,作用是使得不合法的标识符合法
例如\a+b=c -
关键字
所有关键字都是小写的 -
数值
概念与传统数值不一样,对于信号线,高电平为逻辑1,低电平为逻辑0,x为未知逻辑状态(高电平和低电平同时加到非门),z为高阻态(gate导通和截止,截止为高阻态,总线形式)。总共4种状态。 -
整数表示
二进制 b
八进制 o
十六进制 h
十进制 d(尽可能避免)
所有正负号都是以补码形式存在,负数补码是反码加一。
size表示多少位,三根线表示八进制,四根线表示十六进制。size一定要写
//below number is correct
8'b1001101
5'035
4'b1x_01//allow use _ to devide number to two parts
//some error example
4'd-4 //right -4'd4 代表4的补码
3' b001 //can't leave a blank space
(4+4)'b11//size must be type of int
小数2.5的表示,将整数和小数分开
分为定点表示方式和浮点表示方式,定点表示规定了小数点的位置。
实数不能直接用于设计
数据类型
- 信号强度表示驱动能力,从supply到highz
- 连线型wire,tri标准连线(wire型)
wire a;
wire[7:0] b;
wire[4:1]c,d; //定义了二个4位的wire型数据
- 寄存器型(reg型)
只表示存储,没有驱动强度
reg[3:0]b;//define 4 bits
- 存储器型(memory型)
通过对reg型变量建立数组对存储器建模,描述RAM型存储器和ROM存储器和reg文件。
reg mena[n-1:0];//一个由n个1位寄存器构成的存储器组
mena[3]=0;//给memory中第三个存储单元赋值