FPGA学习(二)——Verilog基础语法

本文详细介绍了Verilog语言的基础知识,包括逻辑值的定义、数字进制格式、标识符的规则,以及主要数据类型如寄存器、线网和参数的使用。此外,涵盖了运算符的种类,如算术、关系、逻辑、条件、位运算和移位,以及它们的优先级。适合深入理解Verilog编程的工程师阅读。
摘要由CSDN通过智能技术生成


基础知识

逻辑值

逻辑0:表示低电平,也就对应我们电路GND;
逻辑1:表示高电平,也就是对应我们电路的VCC;
逻辑X:表示未知,有可能是高电平,也有可能是低电平;
逻辑Z:表示高阻态,外部没有激励信号,是一个悬空状态。
在这里插入图片描述

数字进制格式

Verilog数字进制格式包括二进制、八进制、十进制和十六进制。
一般常用的为二进制、十进制和十六进制。
二进制表示如下:4’b0101表示4位二进制数字0101
十进制表示如下:4’d2表示4位十进制数字2(二进制0010)
十六进制表示如下:4’ha表示4位十六进制数字a(二进制1010)

在这里插入图片描述

标识符

标识符用于定义模块名,端口号,信号名等。
标识符可以是任意一组字母、数字、$符号和_(下划线)符号组成;
但是标识符的第一个字符必须是字母或者下划线;
标识符是区分大小写的

标识符的推荐写法

  • 不建议大小写混用;
  • 普通内部信号建议全部小写;
  • 信号命名最好体现信号的含义,简介、清晰、易懂;

数据类型

在Verilog语言中,主要有三大类数据类型:
寄存器数据类型,线网数据类型和参数数据类型。

从名称中,我们可以看出,真正在数字电路中起作用的数据应该是
寄存器数据类型和线网数据类型

寄存器数据类型

寄存器表示一个抽象的数据存储单元,通过赋值语句可以改变寄存器存储的值,寄存器数据类型的关键字是reg,reg类型数据的默认初始值是不定值x

在这里插入图片描述
reg类型的数据只能在always语句和initial语句中被赋值。
如果该过程语法描述的是时序逻辑,即always语句带有时钟信号,则该寄存器变量对应为触发器
如果该过程语句描述的是组合逻辑,即always语句不带有时钟信号,则该寄存器变量对应为硬件连接线;

线网类型

线网数据类型表示结构体(例如门)之间的物理连线。
线网类型的变量不能存储值,它的值是由驱动它的元件所决定的

驱动线网类型变量的元件有门、连续赋值语句、assign等。
如果没有驱动元件连接到线网类型的变量上,则该变量就是高阻的,即其值为z。
线网的数据类型包括wiretri型,其中最常用的就是wire类型。

在这里插入图片描述

参数类型

参数其实就是一个常量,在VerilogHDL中用parameter定义常量。
我们可以一次定义多个参数,参数与参数之间需要用逗号隔开。
每个参数定义的右边必须是一个常数表达式。
在这里插入图片描述
参数型数据常用于定义状态机的状态、数据位宽和延迟大小等
采用标识符来代表一个常量可以提高程序的可读性和可维护性。
在模块调用时,可通过参数传递来改变被调用模块中已定义的参数。

运算符

Verilog中的操作符按照功能可以分为下述类型:

  1. 算术运算符
  2. 关系运算符
  3. 逻辑运算符
  4. 条件运算符
  5. 位运算符
  6. 移位运算符
  7. 拼接运算符

算术运算符

在这里插入图片描述

关系运算符

在这里插入图片描述

逻辑运算符

在这里插入图片描述

条件操作符(C语言三目运算符)

在这里插入图片描述

位运算符

在这里插入图片描述

移位运算符

在这里插入图片描述

拼接运算符

在这里插入图片描述

运算符优先级

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jacky~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值