Verilog 基本语法
Verilog Basic Syntax
- Verilog HDL
模块结构

逻辑功能定义
assign语句和元件例化(instantiate)
- 经典行为描述方法,从信号逻辑触发,得到结果,并未描述电路是怎样连接的

1. assign语句

~ //按位取反
& //按位与
| //按位或
^ //按位异或
^~ //按位同或
2. 元件例化(instantiate)

3.always块语句(常用)
- always常描述时序逻辑电路,一般情况下,不描述组合逻辑电路


理解:
- 以上例子**always语句中输出信号out不能定义为reg型****(触发器,要实现保持的功能),组合逻辑电路不具备保持功能
- wire型:输入变化,wire随之变化
- reg型:输入变化,CLK未触发时,reg型实现保持功能
端口定义
端口定义,信号说明,信号类型声明的格式类型:

模块如何例化
位置关联法和信号名关联法
-
模块(module)是Verilog HDL的基本单位,除了编译指令,其它所有的设计代码都必须放在一个或多个模块中
-
一个模块内部可以使用其它模块,称为实例。上层模块可以引用底层任意层次模块的变量,引用方法为: 实例名.[第二层实例名.]

关键字
- 事先定义好的确认符,用来组织语言结构;
- 或者用于定义Verilog HDL提供的门元件(如and,not, or, buf)
- 用小写字母定义!


数据类型
-
数据类型是用来表示数字电路中的数据存储和传送单元。
-
Verilog HDL中共有19种数据类型;
-
其中4个最基本的数据类型为:
- integer型
- parameter型
- reg型
- wire型
-
若未定义,则默认未wire型
常量
在程序运行过程中,其值不能被改变的量,称为常量
-
数字(包括整数,x和z值,负数)
-
parameter常量(或称符号常量)
整数型常量(即整常数)的4种进制表示形式:
- 二进制整数(b或B)
- 十进制整数(d或D)
- 十六进制整数(h或H)
- 八进制整数(o或O)
1. 整常数的3种表达方式:

注意:
- 下面的两种方法都不可使用,必须完整定义
- 上表数字8代表位宽为8位,只针对二进制而言。冗余保证数据不会溢出,一般定16或32位
2. x和z值
- X是不定值(态)Z是高阻值(态)
不定态:当触发器不明确0和1时
高阻态:不导电不通电的状态为高阻态

3. 负数
在位宽前加一个减号,即表示负数,如-8‘d5
4.parameter常量
-
用parameter来定义一个标识符,代表一个常量——称为符号常量
-
Verilog中用parameter来定义常量,即用parameter来定义一个标识符来代表一个常量,称为符号常量,即标识符形式的常量。——提升程序的可读性和可维护性
-
常用于定义位宽或时间延迟(易变)

变量

1. Nets type——wire型变量(相当于物理的连线)
wire型变量是被给的,wire自己本身变不了,对应响应结果

2. register type(寄存器型)变量

assign wire =~s //assign语句只能用wire, 等号右边为输入,左边为输出
always reg,等式左边必须为reg //always里面,必须为reg

2.1 reg型变量(相当于触发器)
reg ,往往代表触发器,自发的产生变化

wire和reg区别总结:
| reg型变量 | wire型变量 |
|---|---|
| 自发产生变化 | 本身不能产生变化 |
| 可生成及处罚,也可生成组合逻辑 | 只能生成组合逻辑 |
3.数组(memory type)

-
RAM和ROM——储存芯片
-
mem(自己命名)后面跟的数值是指 有多少个reg

测试基本概念
测试的对象:RTL模块

-
tb需要包含需要测试的全部rtl内容
-
tb没有端口信号列表

tb的搭建:
