FPGA-Verilog HDL学习
Verilog HDL 的基本规范
标识符
标识符是程序代码中给模块、端口、信号等对象起的独一无二的名字。
标识符可以是任意一组字母、数字、美元符号和下划线的组合,且区分大小写。
标识符的第一个字符必须是字母或者下划线,因为以美元符号开始的标识符和系统任务保留字冲突。
转义标识符
转义标识符是由 “ \ ” 开始,以空白符( 空格、制表符、换行 )结束的特殊编程语言结构。
其提供一种可以表示任何可以打印的ASCII字符的方法。
空白符
空白符是指代码中的空格、制表符和换行或分页符。
如果这些空白符出现在字符串中则不可忽略。
注释
以 // 开始,从这里到这一行末尾的内容会被系统识别为注释。
以 /* 开始,*/ 结束,在两个符号之间的语句都是注释语句。
数据类型
逻辑值
逻辑 0:表示低电平
逻辑 1:表示高电平
逻辑 X:表示未知,可能是高电平,也有可能是低电平
逻辑 Z:表示高阻态,外部没有激励信号,是一个悬空状态
数据类型
寄存器数据类型( reg )
寄存器表示一个抽象的数据存储单元,通过赋值语句可以改变寄存器的值
寄存器数据类型的关键字是 reg,默认初始值为 X
reg 类型的数据只能在 always 语句和 initial 语句中被赋值
如果该过程语句描述的是时许逻辑,即 always 语句带有时钟信号,则该寄存器变量对应为触发器
如果该过程语句描述的是组合逻辑,即 always 语句不带有时钟信号,则该寄存器对应为硬件连线
线网类型( wire、tri )
线网类型表示结构实体(例如门)之间的物理连线
驱动线网类型变量的元件有门、连续赋值语句、assign等
如果没有驱动元件连接到线网类型的变量上,则该变量为 Z
参数类型( parameter )
参数类型是一个常量,可以一次定义多个参数,参数与参数之间需要用逗号隔开
每个参数定义的右边必须是一个常数表达式
参数类型常用于定义状态机的状态、数据位宽和延迟大小
采用标识符来代表一个常量可以提高程序的可读性和可维护性
在模块调用时,可通过参数传递来改变被调用模块中已定义的参数
运算符
算术运算符
+ - * / %
关系运算符
> >= < <= == !=
逻辑运算符
! && ||
条件运算符
a ? b : c ( 如果 a 为真,则执行 b,否则执行 c )
位运算符
~ & | ^
移位运算符
<< >>
拼接运算符
{a,b} ( 将 a 和 b 拼接起来,作为一个新信号 )
Verilog程序框架
Verilog注释
以 // 开头的语句,表示从 // 开始到本行结束都属于注释语句
以 /* 开始,*/ 结束,在两个符号之间的语句都是注释语句
模块的结构
Verilog的基本设计单元是模块( block )
一个模块由两部分组成,一部分是描述接口,另一部分描述逻辑功能
原文:https://www.cnblogs.com/qu-yang/p/15355212.html