Verilog基本语法 | 您所在的位置:网站首页 › verilog语法的类型声明有哪些 › Verilog基本语法 |
本文是Verilog学习笔记,参考于《Xilinx FPGA开发实用教程》和夏宇闻老师的Verilog经典教程系列 一、数据类型Verilog HDL中总共有19种数据类型,数据类型是用来表示数字电路硬件中的数据储存和传送原色的 1. wire型wire型数据常用来表示用于以assign关键字指定的组合逻辑信号。 Verilog程序模块中输入输出信号类型默认为wire型。 wire型信号可以用做方程式的输入,也可以用做”assign”语句或者实例元件的输出 wire型信号的定义格式: wire [n-1:0] 数据名1,数据名2,...,数据名N; //定义了N条线,每条线的位宽为n 2. reg型reg是寄存器数据类型的关键字。 寄存器是数据存储单元的抽象,通过赋值语句可以改变寄存器存储的值,其作用相当于改变触发器存储器的值。 reg型数据常用来表示always模块内的指定信号,代表触发器。 通常在设计中要由always模块通过使用行为描述语句来表达逻辑关系。在always块内被赋值的每一个信号都必须定义为reg型,即赋值操作符的右端变量必须是reg型 reg型号数据的格式: reg[n-1:0]数据名1,数据名2,...,数据N; //定义了N个寄存器变量,每个数据位宽为n**reg 型数据的默认值是不定的**。reg型数据可以为正值或负值。当一个reg型数据是一个表达式中的操作数时,它的值被当做无符号值,即正值(如果一个4位的reg型数据被写入-1,在表达式中运算时,其值被认为是+15) reg型和wire型的区别:reg型保持最后一次的赋值,而wire型需要持续驱动 3. memory型Verilog HDL通过对reg型变量建立数组来对存储器建模,可以描述RAM型存储器,ROM存储器和reg文 件。数组中的每一个单元通过一个数组索引进行寻址。在Verilog语言中没有多维数组存在。memory型数据是通过扩展reg数据的地址范围来生成 memory型号数据的格式: reg [n-1:0] 存储器名[m-1:0]; //存储器中m个寄存器,每个寄存器数据位宽为n对存储器进行地址索引的表达式必须是常数表达式 一个n位的寄存器可以在一条赋值语句里进行赋值,而一个完整的存储器则不行 reg [n-1:0] rega; //一个n位的寄存器 reg mema [n-1:0]; //一个由n个1位寄存器构成的存储器组 rega =0; //合法赋值语句 mema =0; //非法赋值语句 mema[3]=0; //给memory中的第3个存储单元赋值为0 4. parameter型Verilog HDL中用parameter来定义常量,即用parameter来定义一个标识符表示一个常数。 提高程序的可读性和可维护性 parameter型号数据的格式: parameter 参数名1=数据名1; 二、常量Verilog HDL有下列4种基本数值: - 0 ———— 逻辑0或“假” - 1 ———— 逻辑1或“真” - x ———— 未知(不区分大小写) - z ———— 高阻(还可以写成”?”“)(不区分大小写) x和z值举例 4'b1x00 //位宽为4的二进制数从低位数起第三位为不定值 4'b011z //位宽为4的二进制数从低位数起第一位为高阻值 12'dz //位宽为12的十进制数其值为高阻值(第一种表达方式) 12'd? //位宽为12的十进制数其值为高阻值(第二种表达方式) 8'h4x //位宽为8的十六进制数其低四位值为不定值 1. 整数 1.1 十进制格式 68 //十进制68 -56 //十进制-56 1.2 基数表示格式基数格式的整数格式: [长度] '基数 数值长度:常量的位长 基数:可以是二进制、八进制、十进制、十六进制之一 数值:基于基数的数字序列,且数值不能为负数 8'b10101100 //位宽为8的数的二进制 8'ha2 //位宽为8的数的十六进制 2. 实数 2.1 十进制计数法 3.0 123.342 2.2 科学计数法 234.12e2 //值为23412 6e-3 //值为0.006根据Verilog语言的定义,实数通过四舍五入隐式地转换为最相近的整数 3. 字符串双引号内的字符序列,不能分成多行书写 用8位ASCII值表示的字符可以看作是无符号整数,因此字符串是8位ASCII值序列 |
CopyRight 2018-2019 实验室设备网 版权所有 |