Verilog语言(数字逻辑课程笔记一)
数字IC设计基本上都要学习Verilog,这是从业者的基本功,在数字IC设计岗位面试中就时常会问到verilog的一些问题。
获取更多IC设计资料(前端、后端、验证、模拟版图...)或免费课,请识别下方二维码:

▶《经典Verilog100多个代码案例》
▶《Verilog数字系统设计教程》

今天为大家分享《Verilog语言简介(数字逻辑课程笔记)》,干货满满,点赞收藏。
概念
Verilog是一种硬件描述语言:用形式化方法(文本形式)来描述和设计数字电路和数字系统的高级模块化语言。可编写设计文件、建立电路模型、编写测试文件进行仿真。

数据类型
1.变量值
0:代表逻辑0或否条件;在电路中一般是低电平
1:代表逻辑1或真条件;在电路中是高电平
X:代表未知的逻辑值(可能为0或1);一般是寄存器类型(reg)未初始化
Z:代表一个高阻态;是线型(wire)变量未接驱动
2.wire & reg
wire: 线网; 用来表示硬件单元之间的物理连线
reg: 寄存器; 用来表示存储单元
3.向量vector
标量Scalar: 1-bit位宽的线网或寄存器类型
向量Vector:n-bit位宽的线网或寄存器类型
4.数组Array
在Verilog中允许声明reg, wire, integer, time, real及其向量类型的数组
存储器:寄存器数组模拟存储器,可用来描述RAM或ROM的行为
5.其他类型
integer: 32位宽的通用整型变量,可在对硬件建模时用于其他目的(可综合)
time: 无符号64位宽,可用于存储仿真时间量以进行仿真调试,realtime变量时将时间存储为浮点数(不可综合)
real:实数变量,可存储浮点值, 可以与integer和reg相同的方式进行赋值(不可综合)
string:字符串,存储在reg中, reg变量的宽度必须足够大以容纳字符串(可综合)

模块构建

Verilog的基本设计单元是模块。
模块由四个主要部分组成:
端口定义:module 模块名(端口1,端口2,…)
I/O说明:包括输入(input)、输出(output)和双向(inout)
信号类型声明:声明信号的数据类型和函数声明wire,reg,integer,real,time
功能描述:用来描述设计模块的内部结构和模块端口间的逻辑关系。常用assign语句、always块语句等方法实现
模块是一个具有特定功能的设计单元,在电路综合时模块会被转换为相应的数字电路
给定模块一组输入,模块会返回一组输出,这意味着模块可以被重复使用,由此来实现更复杂的电路
按照如下形式来实例化模块:

操作符
操作符也称运算符, 是Verilog HDL预定义的函数符号。

● 在逻辑运算中,如果操作数不止一位,应将操作数作为一个整体来对待;
● 两个不同长度的操作数进行位运算时,将自动按右端对齐,位数少的操作数会在高位用0补齐。
● 关系运算符优先级低于算术运算符,返回结果为逻辑值,0或1或x;
● 等于运算符(= =)和全等运算符(===)的区别: 使用等于运算符时,两个操作数必须逐位相等,结果才为1,若某些位为x或z,则结果为x;使用全等运算符时,若两个操作数的相应位形式上完全一致,则结果为1,否则为0.


文章长度有限,该学习笔记将持续更新,请点赞收藏。
想要获取IC设计资料(前端、后端、验证、模拟版图...)的同学,赶快扫下面二维码私信助教老师,还有机会获取免费课程哦~


来自CSDN秘密果酱博主的,已获博主许可,转载请联系博主。

