您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 常用VerilogHDL-语法总结
常用VerilogHDL语法总结1模块(1)端口定义:声明模块的输入输出口。引用模块时端口的两种连接方法。(2)模块内容:I/O说明(输入输出)、内部信号说明(和端口有关的变量说明)、功能定义(定义逻辑功能的三种方式:assign声明语句;实例元件;always块)。(3)理解要点:整体语句并发执行,always块内顺序执行。2常量(1)数字:整数及三种表达方式x和z值负数:减号的位置下划线:位置和作用(2)参数:parameter符号常量,常用于定义延迟时间(使用#)和变量宽度。3变量(1)wire:表示易assign指定的组合逻辑信号;默认值;任何方程式的输入或assign语句及实例元件的输出;定义格式。(2)reg:表示always块中指定的信号,代表触发器;寄存器数据类型(触发器存储值),默认值为x;定义格式。(3)memory:reg的数组;描述RAM、ROM、reg文件;单元索引;一个n为寄存器和n个一位数组的区别。4运算符与表达式(1)算术运算符:五种(2)位运算符:五种(3)逻辑运算符:三种(4)关系运算符:四种(3种不同的返回值)(5)等式运算符:四种(6)移位运算符:两种(移位补零)(7)位拼接运算符:{},常用于某些控制信号位;重复与嵌套使用(8)缩减运算符:类似于逻辑运算符,结果为一位二进制数(9)运算符优先级5语句(1)赋值语句阻塞赋值:b=a;块结束后完成赋值,b的值不是立即改变的,较为常用;非阻塞赋值:b=a;赋值语句执行后块才结束,b的值马上改变,在沿触发的always块中使用可能引起错误后果。(2)块语句顺序块begin-end:顺序执行,最后语句执行完流程跳出语句块;并行块fork-join:同时执行,时间最长语句执行完或disable语句执行时跳出程序块;块名的作用;起始时间和结束时间(3)条件语句If-else语句:三种形式;if表达式判断;分号;复合语句;表达式简写;if语句嵌套;if与else的配对。Case语句:三种形式(casez:不考虑z进行比较,casex:不考虑z和x进行比较);控制表达式与分支表达式(常量表达式);default;所有表达式的位宽必须相等。条件语句使用不当造成锁存器:避免错误:case中使用default,if必须搭配else。(4)循环语句Forever:格式;连续执行;Repeat:格式;连续执行n次;表达式通常为常量表达式;While:格式;执行语句至条件不满足;For:格式:for(循环变量初值;循环结束条件;循环变量增值)。(5)结构说明语句Initial:格式;执行一次;常用来变量初始化和生成激励波形作为电路的测试仿真信号;Always:格式;执行至仿真结束;注意时序;常用来描述时钟信号作为激励信号;时间控制可以为沿触发(描述时序行为)也可以是电平触发(描述组合逻辑行为);Task:定义;任务的调用与变量的传递;任务调用变量与任务定义的I/O变量必须一一对应;Function:定义;函数返回值(函数定义蕴含定义了同名寄存器);函数调用通过函数表达式中的操作数来实现的。(6)时间控制语句#、@、wait标识的语句6系统函数和任务(1)$display和$write:输出信息;格式说明和普通字符;(2)$monitor:监控和输出参数列表中的表达式和变量值;关闭与打开控制;(3)$time:返回64位整数表示当前仿真时刻值;时间尺度;$realtime:返回时间为实型数;(4)$finish:退出仿真器,返回主操作系统;参数;(5)$stop:把EDA工具设置为暂停,给出交互命令提示,把控制权交给用户;(6)$readmemb和$readmemh:从文件读取数据到存储器;格式;读取内容;(7)$random:返回32位带符号整型随机数;用于产生随即脉冲序列和宽度随机的脉冲序列进行电路测试。7编译预处理(1)`define:宏定义,符号常量;(2)`include:文件包含;使用形式;(3)`timescale:时间尺度,说明跟在该命令后的模块的时间单位和时间精度;(4)`ifdef、`else、`endif:满足条件的语句进行编译;不编译的部分也应符VerilongHDL语言规范。
本文标题:常用VerilogHDL-语法总结
链接地址:https://www.777doc.com/doc-5678171 .html