Skip to content

Verilog 基本语法

Verilog Basic Syntax

  • Verilog HDL

模块结构

image13

逻辑功能定义

assign语句和元件例化(instantiate)

  • 经典行为描述方法,从信号逻辑触发,得到结果,并未描述电路是怎样连接的

image1


1. assign语句

image14

~ 	  //按位取反
&     //按位与
| 	  //按位或
^ 	  //按位异或
^~    //按位同或

2. 元件例化(instantiate)

image15

3.always块语句(常用)

  • always常描述时序逻辑电路,一般情况下,不描述组合逻辑电路

image2

image16

理解:

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

端口定义

端口定义,信号说明,信号类型声明的格式类型:

image17

模块如何例化

位置关联法和信号名关联法

  • 模块(module)是Verilog HDL的基本单位,除了编译指令,其它所有的设计代码都必须放在一个或多个模块中

  • 一个模块内部可以使用其它模块,称为实例。上层模块可以引用底层任意层次模块的变量,引用方法为: 实例名.[第二层实例名.]

image18


关键字

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

image3

image4


数据类型

  • 数据类型是用来表示数字电路中的数据存储和传送单元。

  • Verilog HDL中共有19种数据类型;

  • 其中4个最基本的数据类型为:

    • integer型
    • parameter型
    • reg型
    • wire型
  • 若未定义,则默认未wire型


常量

​ 在程序运行过程中,其值不能被改变的量,称为常量

  • 数字(包括整数,x和z值,负数)

  • parameter常量(或称符号常量)

整数型常量(即整常数)的4种进制表示形式:

  • 二进制整数(b或B)
  • 十进制整数(d或D)
  • 十六进制整数(h或H)
  • 八进制整数(o或O)

1. 整常数的3种表达方式:

image5

注意:

  • 下面的两种方法都不可使用,必须完整定义
  • 上表数字8代表位宽为8位,只针对二进制而言。冗余保证数据不会溢出,一般定16或32位

2. x和z值

  • X是不定值(态)Z是高阻值(态)

不定态:当触发器不明确0和1时

高阻态:不导电不通电的状态为高阻态

image6

3. 负数

在位宽前加一个减号,即表示负数,如-8‘d5

4.parameter常量

  • 用parameter来定义一个标识符,代表一个常量——称为符号常量

  • Verilog中用parameter来定义常量,即用parameter来定义一个标识符来代表一个常量,称为符号常量,即标识符形式的常量。——提升程序的可读性和可维护性

  • 常用于定义位宽或时间延迟(易变)

image23


变量

image7

1. Nets type——wire型变量(相当于物理的连线)

wire型变量是被给的,wire自己本身变不了,对应响应结果

image8

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

image9

assign wire =~s  //assign语句只能用wire, 等号右边为输入,左边为输出

always reg,等式左边必须为reg   //always里面,必须为reg

image11

2.1 reg型变量(相当于触发器)

reg ,往往代表触发器,自发的产生变化

image10

wire和reg区别总结:

reg型变量wire型变量
自发产生变化本身不能产生变化
可生成及处罚,也可生成组合逻辑只能生成组合逻辑

3.数组(memory type)

image12

  • RAM和ROM——储存芯片

  • mem(自己命名)后面跟的数值是指 有多少个reg

image22


测试基本概念

测试的对象:RTL模块

image19

  • tb需要包含需要测试的全部rtl内容

  • tb没有端口信号列表

image20

tb的搭建:

image21