自学FPGA:Verilog基本语法规则(一)
发布时间:2020-3-15 14:54
发布者:dameihuaxia
1.词法规定 1.1间隔符 (类似于C语言) 1.2标识符和关键词 标识符:英文字母、数字、$符和下划线组成(首字符必须为英文字母或下划线)。 转义标识符:如:\***。 2.四种逻辑值 0 逻辑0、逻辑假 1 逻辑1、逻辑真 x或X 不确定值(未知逻辑状态) z或Z 高阻态 3.八种强度值 最强————>最弱 强度等级名称 supply strong pull large weak medium small highz 类型 驱动 驱动 驱动 存储 驱动 存储 存储 高阻抗 4.常量及其表示 4.1整数型表示 格式: <+/- size>' 例如: 3'b101 //3位二进制数101 5'o37 //5位八进制数37 8'b1001_1100 //八位二进制数,等同于8'b10011100 注意:在这里的‘_’无实际意义,可以随便在整数或实数中使用,方便读数。 4.2实数型常量 (实数通过四舍五入转换为整数) 例如: 42.45转换为整数42; 92.5,92.699转化为93;-15.62转换为-16. 4.3字符串常量 (每个字符串包括空格都被看做8位的ACSII值序列) 例如: 存储字符串"FPGA"就需要定义一个8*4位的变量。 reg [8*4:1] messsage; initial begin message = "FPGA"; end 对于初学者来说,reg、initial这些请无视掉,只用了解这个格式就行。 4.4参数语句 格式: parameter param1 = xxxx, param2 = xxxx, ......; parameter声明的符号常量常量通常出现在module(模块)内部,参数常用于指令yan'延迟、变量的wei'位宽和状态值de等(类似于C语言的局部参数) 补:define是宏定义,通常放在module外部,改常量是一个全局变量。 localparam(局部参数)是模块内部参数(无传递,类似于C语言的函数内部参数)。 5.数据类型 5.1线网类型 wire、tri(wire为一般连线;tri为驱动的线网); wor、trior(一个线网被多个信号驱动qing情况); wand、triand(一个线网被多个信号驱动qing情况); trireg(电荷保持特性); tri1(上拉电阻); tri0(下拉电阻); supply1(电源建模、高点平); supply0(对地建模、低电平)。 线网变量声明: 例如: wire A,B; //两个1位wire类型的变量 wire [7:0] Databus; //Databus位8位向量的wire变量 supply0 logic_0,vss; //‘地’ supply1 logic_1,vdd; //‘电源线’ 建议别对同一变量多次赋值。 5.2寄存器类型 (只能在initial或always块内部被赋值) reg、integer、time未赋值前为x; real、realtime默认值是0. reg:寄存器变量,默认值是x 格式 reg 例如: reg clock,a; //1位的reg型变量clock,a; reg [3:0] cnt; //4位的reg型变量cnt,等效于:cnt[3],cnt[2],cnt[1],cnt[0]; integer:整数型寄存器变量 (变量保持的是整数值) 格式: integer 1,2,3,...,n<[msb:lsb]>; 例如: integer A,B,C; //3个整数型变量; integer HINT[3:0]; //一个由四个整数变量组成的数组; tiem型变量主要用于存储和处理仿真时间 time 1,2,3,...,n [msb:lsb] reale和realtime变量通产用于对实数型产量常量进行存储和运算,实数不能定义范围,默认值是0 real 1,2,3,...,n; //实型变量声明 realtime 1,2,3,...,n; //实型时间变量声明 参考文献 1.《FPGA自学笔记——设计与验证》 2.《可编程逻辑电路设计基础教程》 3.《Verilog HDL与FPGA数字系统设计》 4.《Verilog HDL入门》 ———————————————— 版权声明:本文为CSDN博主「JaysonRen」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/JaysonRen/article/details/82179137 |
网友评论