【Verilog语法简介】

1.Verilog简介

Verilog语言是一种用于建模电子系统的硬件描述语言,这种硬件描述语言最多的用于进行数字电路系统的寄存器传输级建模和验证工作,同时一些例如生物电路等数模混合电路的建模和验证电路。Verilog语言的语法规则与C语言有很多相似之处。Verilog语言的标准化内容在IEEE 1364标准中规定。

2. Verilog语法讲解

Verilog硬件描述语言有变量和常量,下面分别对变量和常量进行介绍。

2.1 Verilog变量数据类型

2.1.1 线网型数据(Nets)

线网型数据代表着不同电路结构体之间的直接物理连接。这种类型的变量不存储数据,变量的值跟随驱动信号的变化而进行瞬时变化。这种数据类型用关键字wire来定义。
下面表格是wire类型变量的值,下一节要介绍的reg类型值也类似。
在这里插入图片描述

2.1.2 寄存器型数据(Reg)

寄存器类型变量经常用在时序电路中。这种类型的变量可以存储数据的值。触发信号到来时,变量的值跟随驱动信号变化。触发信号没有到来时,变量值不变化。寄存器类型数据使用关键字reg来定义。

2.1.3 其他数据类型:(integer、real、time)

integerrealtime这三种变量其实也是寄存器类型的变量。
integer变量一般是一个32bit的整形数据。
real 变量是一个IEEE标准的64bit浮点型数据。
time是一个64位的无符号整形变量。代表了仿真运行时间.可以利用系统函数$time查看time类型的变量.

2.1.4 向量型数据结构

2.1.12.1.2两节中提到的wire类型和reg类型都是1 bit数据。Verilog中存在向量类型(Vector),向量变量类型代表了一个包含了多bit数据的一个数据类型。
下面这段代码定义了一个线网型wire类型数据的向量signal,signal变量包含了32bit数据。[31:0]代表了32bit数据的最高位角标位31,最低为角标为0。

wire [31:0] signal

下面这段代码定义了一个线网型reg类型数据的向量signal,signal变量包含了32bit数据。[31:0]代表了32bit数据的最高位角标位31,最低为角标为0。

reg [31:0] signal

2.1.5 存储器类型数据

寄存器变量组成的数组就是存储器类型数据。定义语句如下所示:

reg [15:0] memo [7:0];

上面的语句定义类一个存储器memo,有8个存储单元,每个存储单元有16位。

2.1.6 Verilog常量表示

Verilog中的常量主要有整数型和参数型常量
对于整型常量最完整的描述为<位宽><数制><数值>。位宽和数制可以根据需要或者指定或者省略。对于整型数据的数制类型主要有二进制(b或B表示)、八进制(o或O表示)、十六进制(h或H表示)。可以以如下形式表示:

//指明数据位宽,二进制数据
4'b1011
//指明数据位宽、十六进制表示
4'hFF
//负数表示,符号标注在最前面
-4'b1001

参数型的常量是使用关键字parameter来申明,被称为参数型变量。parameter类型常量赋值语句的右边都必须是一个常数表达式。参数类型定义的示例:

para
  • 18
    点赞
  • 128
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目 录 译者序 前言 第1章 简介 1 1.1 什么是Verilog HDL? 1 1.2 历史 1 1.3 主要能力 1 第2章 HDL指南 4 2.1 模块 4 2.2 时延 5 2.3 数据流描述方式 5 2.4 行为描述方式 6 2.5 结构化描述形式 8 2.6 混合设计描述方式 9 2.7 设计模拟 10 第3章 Verilog语言要素 14 3.1 标识符 14 3.2 注释 14 3.3 格式 14 3.4 系统任务和函数 15 3.5 编译指令 15 3.5.1 `define和`undef 15 3.5.2 `ifdef、`else 和`endif 16 3.5.3 `default_nettype 16 3.5.4 `include 16 3.5.5 `resetall 16 3.5.6 `timescale 16 3.5.7 `unconnected_drive和 `nounconnected_drive 18 3.5.8 `celldefine 和 `endcelldefine 18 3.6 值集合 18 3.6.1 整型数 18 3.6.2 实数 19 3.6.3 字符串 20 3.7 数据类型 20 3.7.1 线网类型 20 3.7.2 未说明的线网 23 3.7.3 向量和标量线网 23 3.7.4 寄存器类型 23 3.8 参数 26 第4章 表达式 28 4.1 操作数 28 4.1.1 常数 28 4.1.2 参数 29 4.1.3 线网 29 4.1.4 寄存器 29 4.1.5 位选择 29 4.1.6 部分选择 29 4.1.7 存储器单元 30 4.1.8 函数调用 30 4.2 操作符 30 4.2.1 算术操作符 31 4.2.2 关系操作符 33 4.2.3 相等关系操作符 33 4.2.4 逻辑操作符 34 4.2.5 按位操作符 35 4.2.6 归约操作符 36 4.2.7 移位操作符 36 4.2.8 条件操作符 37 4.2.9 连接和复制操作 37 4.3 表达式种类 38 第5章 门电平模型化 39 5.1 内置基本门 39 5.2 多输入门 39 5.3 多输出门 41 5.4 三态门 41 5.5 上拉、下拉电阻 42 5.6 MOS开关 42 5.7 双向开关 44 5.8 门时延 44 5.9 实例数组 45 5.10 隐式线网 45 5.11 简单示例 46 5.12 2-4解码器举例 46 5.13 主从触发器举例 47 5.14 奇偶电路 47 第6章 用户定义的原语 49 6.1 UDP的定义 49 6.2 组合电路UDP 49 6.3 时序电路UDP 50 6.3.1 初始化状态寄存器 50 6.3.2 电平触发的时序电路UDP 50 6.3.3 边沿触发的时序电路UDP 51 6.3.4 边沿触发和电平触发的混合行为 51 6.4 另一实例 52 6.5 表项汇总 52 第7章 数据流模型化 54 7.1 连续赋值语句 54 7.2 举例 55 7.3 线网说明赋值 55 7.4 时延 55 7.5 线网时延 57 7.6 举例 57 7.6.1 主从触发器 57 7.6.2 数值比较器 58 第8章 行为建模 59 8.1 过程结构 59 8.1.1 initial 语句 59 8.1.2 always语句 61 8.1.3 两类语句在模块中的使用 62 8.2 时序控制 63 8.2.1 时延控制 63 8.2.2 事件控制 64 8.3 语句块 65 8.3.1 顺序语句块 66 8.3.2 并行语句块 67 8.4 过程性赋值 68 8.4.1 语句内部时延 69 8.4.2 阻塞性过程赋值 70 8.4.3 非阻塞性过程赋值 71 8.4.4 连续赋值与过程赋值的比较 72 8.5 if 语句 73 8.6 case语句 74 8.7 循环语句 76 8.7.1 forever 循环语句 76 8.7.2 repeat 循环语句 76 8.7.3 while 循环语句 77 8.7.4 for 循环语句 77 8.8 过程性连续赋值 78 8.8.1 赋值—重新赋值 78 8.8.2 force与release 79 8.9 握手协议实例 80 第9章 结构建模 83 9.1 模块 83 9.2 端口 83 9.3 模块实例语句 83 9.3.1 悬空端口 84 9.3.2 不同的端口长度 85 9.3.3 模块参数值 85 9.4 外部端口 87 9.5 举例 89 第10章 其他论题 91 10.1 任务 91 10.1.1 任务定义 91 10.1.2 任务调用 92 10.2 函数 93 10.2.1 函数说明部分 93 10.2.2 函数调用 94 10.3 系统任务和系统函数 95 10.3.1 显示任务 95 10.3.2 文件输入/输出任务 97 10.3.3 时间标度任务 99 10.3.4 模拟控制任务 99 10.3.5 定时校验任务 100 10.3.6 模拟时间函数 101 10.3.7 变换函数 102 10.3.8 概率分布函数 102 10.4 禁止语句 103 10.5 命名事件 104 10.6 结构描述方式和行为描述方式的 混合使用 106 10.7 层次路径名 107 10.8 共享任务和函数 108 10.9 值变转储文件 110 10.9.1 举例 111 10.9.2 VCD文件格式 112 10.10 指定程序块 113 10.11 强度 114 10.11.1 驱动强度 114 10.11.2 电荷强度 115 10.12 竞争状态 116 第11章 验证 118 11.1 编写测试验证程序 118 11.2 波形产生 118 11.2.1 值序列 118 11.2.2 重复模式 119 11.3 测试验证程序实例 123 11.3.1 解码器 123 11.3.2 触发器 124 11.4 从文本文件中读取向量 126 11.5 向文本文件中写入向量 127 11.6 其他实例 128 11.6.1 时钟分频器 128 11.6.2 阶乘设计 130 11.6.3 时序检测器 132 第12章 建模实例 136 12.1 简单元件建模 136 12.2 建模的不同方式 138 12.3 时延建模 139 12.4 条件操作建模 141 12.5 同步时序逻辑建模 142 12.6 通用移位寄存器 145 12.7 状态机建模 145 12.8 交互状态机 147 12.9 Moore有限状态机建模 150 12.10 Mealy型有限状态机建模 151 12.11 简化的21点程序 153 附录 语法参考 157

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值