第九章 硬件描述语言简介
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第九章*
ห้องสมุดไป่ตู้一、内容提要
硬件描述语言简介
本章简要介绍硬件描述语言。首先简单介绍了 硬件描述语言的基本概念和发展与应用概况,然后 介绍了有关Verilog HDL的基本知识,最后给出了 几个用Verilog HDL描述逻辑电路的实例。
二、本章内容
9.1 概述 概述 9.2 Verilog HDL简介 简介 9.3 用Verilog HDL描述逻辑电路的实例 描述逻辑电路的实例
模块的基本语法结构如下: module <模块名 (<端口列表 模块名> 端口列表 端口列表>) 模块名 <定义 定义> 定义 <模块条目 模块条目> 模块条目 endmodule 根据<定义 模块条目 的描述方法不同,可将模块分成 根据 定义><模块条目 的描述方法不同, 定义 模块条目>的描述方法不同 行为描述模块、结构描述模块,或者是二者的组合。 行为描述模块、结构描述模块,或者是二者的组合。 行为描述模块通过编程语言定义模块的状态和功能 通过编程语言定义模块的状态和功能。 行为描述模块通过编程语言定义模块的状态和功能。 结构描述模块将电路表达为具有层次概念的互相连接的子 结构描述模块将电路表达为具有层次概念的互相连接的子 模块,其最底层的元件必须是Veriolg HDL 支持的基元或已定 模块,其最底层的元件必须是 义过的模块。 义过的模块。
本章小结
• 硬件描述语言是用于描述硬件电路的一种专用计 算机编程语言,用它可以对任何复杂的电路进行 完整的功能、动态时间参数甚至功耗参数的描述。 • 作为一种高级语言,Verilog HDL有严格的语法规 定,必须严格按照这些规定编写出的源文件,才 能被应用软件所识度和运行。
9.2 Verilog HDL 简介
1983年Gateway Design Automation 公司在C语言的 基础上,为其仿真器产品Verilog-XL开发了一种专 用硬件描述语言——Verilog HDL 。 随着Verilog-XL成功和广泛的使用, Verilog HDL 成功和广泛的使用, 随着 成功和广泛的使用 被众多数字电路设计者所接受。 被众多数字电路设计者所接受。 Verilog HDL从C语言中继承了多种操作符和结构, 语言中继承了多种操作符和结构, 从 语言中继承了多种操作符和结构 源文本文件由空白符号分割的词法符号流组成。 源文本文件由空白符号分割的词法符号流组成。 词法符号的类型有空白符、注释、操作符、数字、 词法符号的类型有空白符、注释、操作符、数字、 字符串、 标识符和关键字等,从形式上看和C语言 字符串 、 标识符和关键字等 , 从形式上看和 语言 有许多相似之处。 有许多相似之处。
9.1 概述
随着半导体技术的发展,数字电路已经由中小规 模的集成电路向可编程逻辑器件(PLD)及专用集成电 路(ASIC)转变。 数字电路的设计手段也发生了变化,由传统的手 工方式逐渐转变为以EDA工具作为设计平台的方式。 硬件描述语言( 硬件描述语言(HDL)是一种用形式化方法来描 ) 述数字电路和数字逻辑系统的语言,是设计人员和 EDA工具之间的一种界面。设计人员利用这种语言来 描述自己的设计思想,然后利用EDA工具进行仿真、 综合,然后用ASIC或FPGA实现其功能。
二、 词法构成 Verilog HDL 的词法标识符包括:间隔符与注释符, 的词法标识符包括:间隔符与注释符, 操作符、数值常量、字符串、标识符和关键字。 操作符、数值常量、字符串、标识符和关键字。 1、间隔符与注释符 、
间隔符又称空白符,包括空格符、制表符、换行符以及换页 符等。它们的作用是分隔其他词法标识符 分隔其他词法标识符。 分隔其他词法标识符 Verilog HDL有单行注释 多行段注释 单行注释和多行段注释 单行注释 多行段注释两种注释形式。 // /* */ 单行注释 段注释
9.3 用Verilog HDL描述逻辑电路的实例 描述逻辑电路的实例
[例]用Verilog HDL对图示 位加法器做逻辑功能描述。 对图示4位加法器做逻辑功能描述 对图示 位加法器做逻辑功能描述。
AB 1 1
CI ∑
A B2 2
CI ∑
A B3 3
CI ∑
A B4 4
CI ∑
CO
CO
CO
CO
S1
三、知识点
1、重点掌握的知识点 、 (1) Verilog HDL的基本程序结构; (2) Verilog HDL 的语法标识符; (3) Verilog HDL描述逻辑电路的方法。 2、一般掌握的知识点 、 (1) Verilog HDL模块的两种描述方式; (2) Verilog HDL 的发展。
结构描述方式是将硬件电路描述成一个分级子模块相互连 接的结构。通过对组成电路的各个子模块间相互连接关系 接的结构。 的描述,来说明电路的组成。 的描述,来说明电路的组成。 各个模块还可以对其他模块进行调用,也就是模块的实例 各个模块还可以对其他模块进行调用, 其中调用模块成为层次结构中的上级模块, 化。其中调用模块成为层次结构中的上级模块,被调用模 块成为下级模块。 块成为下级模块。
XOR2 CI A B XOR1 Sum
AND3 OR1 Cout AND2 AND1 1位全加法器
//对1位全加器内部结构的描述 对 位全加器内部结构的描述
module onebit_fulladd (A,B,CI, Sum, Cout); //1位全加器模块名称和端口名 位全加器模块名称和端口名 input A,B,CI; output Sum,Cout; wire Sum_temp,C_1,C_2,C_3; //定义模块内部的连接线 定义模块内部的连接线 xor XOR1(Sum_temp,A,B), XOR2(Sum,Sum_temp,CI); //两次调用异或门实现 两次调用异或门实现Sum=A⊕ B⊕ CI 两次调用异或门实现 ⊕ ⊕ and //调用 个与门 调用3个与门 调用 个与门AND1,AND2,AND3 AND1(C_1,A,B), AND2(C_2,A, CI), AND3(C_3,B, CI); or OR1(Cout,C_1,C_2,C_3); //调用或门实现 调用或门实现Cout=AB+A(CI)+B(CI) 调用或门实现 endmodule //结束 结束
Verilog HDL 中整型数值常量就是整数,有两种书写格式: 一种是无位宽的十进制 无位宽的十进制表示法,一种是定义位宽和进制 位宽和进制的 无位宽的十进制 位宽和进制 表示法。 -132 表示负的整数132 [size]’base value
定义位数 定义进制 定义数值
无位宽的十进制 定义位宽和进制
标识符是模块、寄存器、端口、连线和begin-end快等元素的 名称,是赋给对象的唯一的名称。 标识符可以是字母、数字、$符和下划线“-”字符的任意组 符和下划线“ 字符的任意组 标识符可以是字母、数字、 符和下划线 合序列,必须以字母或下划线“ 开头 开头。 合序列,必须以字母或下划线“-”开头。 在Verilog HDL中,标识符区分大小写,且字符数不能多于 中 标识符区分大小写, 1024。 。
在段注释中不允许嵌套,段注释中“ 没有任何特殊意义 没有任何特殊意义。 在段注释中不允许嵌套,段注释中“//”没有任何特殊意义。
2、操作符 、
Verilog HDL中定义了操作符,又称运算符,按照操作数的 个数,可以分为一元、二元和三元操作符 一元、 一元 二元和三元操作符;按功能可以大致 分为算术操作符 逻辑操作符 比较操作符 算术操作符、逻辑操作符 比较操作符等几大类。 算术操作符 逻辑操作符、比较操作符
Ctemp1 Ctemp2 Ctemp3
CO
add1
S2
add2
S3
add3
S4
add 4
4位加法器
//对4位串行进位加法器的顶层结构的描述 对 位串行进位加法器的顶层结构的描述
module Four_bit_fulladd(A,B,CI,S,CO); //4位全加器模块名称和端口名 位全加器模块名称和端口名 parameter size=4; //定义参数 定义参数 input [size:1]A,B; output [size:1]S; input CI; output CO; wire [1:size-1]Ctemp //定义模块内部的连接线 定义模块内部的连接线 onebit_fulladd //调用 位全加器 调用1位全加器 调用 add1(A[1],B[1],CI, S[1], Ctemp[1]), //实例化,调用 位全加器 实例化, 实例化 调用1位全加器 add2(A[2],B[2], Ctemp[1], S[2], Ctemp[2]), , //实例化,调用 位全加器 实例化, 实例化 调用1位全加器 add3(A[3],B[3], Ctemp[2], S[3], Ctemp[3]), //实例化,调用 位全加器 实例化, 实例化 调用1位全加器 add4(A[4],B[4],Ctemp[3], S[4], CO); //实例化 实例化4 ; 实例化 endmodule //结束 结束
6、关键词 、
关键词是Verilog HDL语言内部的专用词。
三、 模块的两种描述方式 1、行为描述方式 、
行为描述方式通过行为语句来描述电路要实现的功能,表 行为描述方式通过行为语句来描述电路要实现的功能, 示输入与输出间转换的行为,不涉及具体结构。 示输入与输出间转换的行为,不涉及具体结构。
2、结构描述方式 、
b或B d或D
二进制 十进制
o 或O h或H
八进制 十六进制
4’b11 //4位二进制数0011 3’b11x //3位二进制数,最低位不确定 -4’b11 //4位二进制数0011的补码,1101
4、字符串 、
字符串是双引号“ ”括起来的字符序列,必须包含在一行 中,不能多行书写。
5、标识符 、
3、数值常量 、
Verilog HDL中的数值常量有整型 实型 整型和实型 整型 实型两大类,分为十进制、 十六进制、八进制或二进制。 Verilog HDL数值集合有四个基本值:
0:逻辑0或假状态; :逻辑 或假状态 或假状态; 1:逻辑1或假状态; :逻辑 或假状态 或假状态;
X:逻辑不定态; :逻辑不定态; Z:高阻态。 :高阻态。
一、基本程序结构
Verilog HDL 语言采用模块化的结构,以模块集合的形式 来描述数字电路系统。模块对应硬件上的逻辑实体,描述这 个实体的功能或结构,以及它与其他模块的接口。 模块在概念上可以等同于一个通用器件(与门、或门)或 通用宏单元(计数器、CPU)等,因此一个模块可以被另外 一个模块调用。一个电路设计可由多个模块组成,一个模块 设计只是一个系统设计中的某个层次设计,模块设计可以采 用多种建模方式。
硬件描述语言主要用于编写设计文件,在EDA工 具中建立电路模型。 硬件描述语言发展至今已有30年的历史,已经成 建模、 功地应用于电子电路设计的各个阶段:建模、仿真、 建模 仿真、 验证和综合等 。 VHDL和Verilog HDL是目前两种最常用的硬件 描述语言。 除了这两种最流行的硬件描述语言外,随着系统 级FPGA以及系统芯片的出现,软硬件协调设计和系 统设计变得越来越重要。传统意义上的硬件设计越来 传统意义上的硬件设计越来 越趋向于与系统设计和软件设计相结合。 越趋向于与系统设计和软件设计相结合。
ห้องสมุดไป่ตู้一、内容提要
硬件描述语言简介
本章简要介绍硬件描述语言。首先简单介绍了 硬件描述语言的基本概念和发展与应用概况,然后 介绍了有关Verilog HDL的基本知识,最后给出了 几个用Verilog HDL描述逻辑电路的实例。
二、本章内容
9.1 概述 概述 9.2 Verilog HDL简介 简介 9.3 用Verilog HDL描述逻辑电路的实例 描述逻辑电路的实例
模块的基本语法结构如下: module <模块名 (<端口列表 模块名> 端口列表 端口列表>) 模块名 <定义 定义> 定义 <模块条目 模块条目> 模块条目 endmodule 根据<定义 模块条目 的描述方法不同,可将模块分成 根据 定义><模块条目 的描述方法不同, 定义 模块条目>的描述方法不同 行为描述模块、结构描述模块,或者是二者的组合。 行为描述模块、结构描述模块,或者是二者的组合。 行为描述模块通过编程语言定义模块的状态和功能 通过编程语言定义模块的状态和功能。 行为描述模块通过编程语言定义模块的状态和功能。 结构描述模块将电路表达为具有层次概念的互相连接的子 结构描述模块将电路表达为具有层次概念的互相连接的子 模块,其最底层的元件必须是Veriolg HDL 支持的基元或已定 模块,其最底层的元件必须是 义过的模块。 义过的模块。
本章小结
• 硬件描述语言是用于描述硬件电路的一种专用计 算机编程语言,用它可以对任何复杂的电路进行 完整的功能、动态时间参数甚至功耗参数的描述。 • 作为一种高级语言,Verilog HDL有严格的语法规 定,必须严格按照这些规定编写出的源文件,才 能被应用软件所识度和运行。
9.2 Verilog HDL 简介
1983年Gateway Design Automation 公司在C语言的 基础上,为其仿真器产品Verilog-XL开发了一种专 用硬件描述语言——Verilog HDL 。 随着Verilog-XL成功和广泛的使用, Verilog HDL 成功和广泛的使用, 随着 成功和广泛的使用 被众多数字电路设计者所接受。 被众多数字电路设计者所接受。 Verilog HDL从C语言中继承了多种操作符和结构, 语言中继承了多种操作符和结构, 从 语言中继承了多种操作符和结构 源文本文件由空白符号分割的词法符号流组成。 源文本文件由空白符号分割的词法符号流组成。 词法符号的类型有空白符、注释、操作符、数字、 词法符号的类型有空白符、注释、操作符、数字、 字符串、 标识符和关键字等,从形式上看和C语言 字符串 、 标识符和关键字等 , 从形式上看和 语言 有许多相似之处。 有许多相似之处。
9.1 概述
随着半导体技术的发展,数字电路已经由中小规 模的集成电路向可编程逻辑器件(PLD)及专用集成电 路(ASIC)转变。 数字电路的设计手段也发生了变化,由传统的手 工方式逐渐转变为以EDA工具作为设计平台的方式。 硬件描述语言( 硬件描述语言(HDL)是一种用形式化方法来描 ) 述数字电路和数字逻辑系统的语言,是设计人员和 EDA工具之间的一种界面。设计人员利用这种语言来 描述自己的设计思想,然后利用EDA工具进行仿真、 综合,然后用ASIC或FPGA实现其功能。
二、 词法构成 Verilog HDL 的词法标识符包括:间隔符与注释符, 的词法标识符包括:间隔符与注释符, 操作符、数值常量、字符串、标识符和关键字。 操作符、数值常量、字符串、标识符和关键字。 1、间隔符与注释符 、
间隔符又称空白符,包括空格符、制表符、换行符以及换页 符等。它们的作用是分隔其他词法标识符 分隔其他词法标识符。 分隔其他词法标识符 Verilog HDL有单行注释 多行段注释 单行注释和多行段注释 单行注释 多行段注释两种注释形式。 // /* */ 单行注释 段注释
9.3 用Verilog HDL描述逻辑电路的实例 描述逻辑电路的实例
[例]用Verilog HDL对图示 位加法器做逻辑功能描述。 对图示4位加法器做逻辑功能描述 对图示 位加法器做逻辑功能描述。
AB 1 1
CI ∑
A B2 2
CI ∑
A B3 3
CI ∑
A B4 4
CI ∑
CO
CO
CO
CO
S1
三、知识点
1、重点掌握的知识点 、 (1) Verilog HDL的基本程序结构; (2) Verilog HDL 的语法标识符; (3) Verilog HDL描述逻辑电路的方法。 2、一般掌握的知识点 、 (1) Verilog HDL模块的两种描述方式; (2) Verilog HDL 的发展。
结构描述方式是将硬件电路描述成一个分级子模块相互连 接的结构。通过对组成电路的各个子模块间相互连接关系 接的结构。 的描述,来说明电路的组成。 的描述,来说明电路的组成。 各个模块还可以对其他模块进行调用,也就是模块的实例 各个模块还可以对其他模块进行调用, 其中调用模块成为层次结构中的上级模块, 化。其中调用模块成为层次结构中的上级模块,被调用模 块成为下级模块。 块成为下级模块。
XOR2 CI A B XOR1 Sum
AND3 OR1 Cout AND2 AND1 1位全加法器
//对1位全加器内部结构的描述 对 位全加器内部结构的描述
module onebit_fulladd (A,B,CI, Sum, Cout); //1位全加器模块名称和端口名 位全加器模块名称和端口名 input A,B,CI; output Sum,Cout; wire Sum_temp,C_1,C_2,C_3; //定义模块内部的连接线 定义模块内部的连接线 xor XOR1(Sum_temp,A,B), XOR2(Sum,Sum_temp,CI); //两次调用异或门实现 两次调用异或门实现Sum=A⊕ B⊕ CI 两次调用异或门实现 ⊕ ⊕ and //调用 个与门 调用3个与门 调用 个与门AND1,AND2,AND3 AND1(C_1,A,B), AND2(C_2,A, CI), AND3(C_3,B, CI); or OR1(Cout,C_1,C_2,C_3); //调用或门实现 调用或门实现Cout=AB+A(CI)+B(CI) 调用或门实现 endmodule //结束 结束
Verilog HDL 中整型数值常量就是整数,有两种书写格式: 一种是无位宽的十进制 无位宽的十进制表示法,一种是定义位宽和进制 位宽和进制的 无位宽的十进制 位宽和进制 表示法。 -132 表示负的整数132 [size]’base value
定义位数 定义进制 定义数值
无位宽的十进制 定义位宽和进制
标识符是模块、寄存器、端口、连线和begin-end快等元素的 名称,是赋给对象的唯一的名称。 标识符可以是字母、数字、$符和下划线“-”字符的任意组 符和下划线“ 字符的任意组 标识符可以是字母、数字、 符和下划线 合序列,必须以字母或下划线“ 开头 开头。 合序列,必须以字母或下划线“-”开头。 在Verilog HDL中,标识符区分大小写,且字符数不能多于 中 标识符区分大小写, 1024。 。
在段注释中不允许嵌套,段注释中“ 没有任何特殊意义 没有任何特殊意义。 在段注释中不允许嵌套,段注释中“//”没有任何特殊意义。
2、操作符 、
Verilog HDL中定义了操作符,又称运算符,按照操作数的 个数,可以分为一元、二元和三元操作符 一元、 一元 二元和三元操作符;按功能可以大致 分为算术操作符 逻辑操作符 比较操作符 算术操作符、逻辑操作符 比较操作符等几大类。 算术操作符 逻辑操作符、比较操作符
Ctemp1 Ctemp2 Ctemp3
CO
add1
S2
add2
S3
add3
S4
add 4
4位加法器
//对4位串行进位加法器的顶层结构的描述 对 位串行进位加法器的顶层结构的描述
module Four_bit_fulladd(A,B,CI,S,CO); //4位全加器模块名称和端口名 位全加器模块名称和端口名 parameter size=4; //定义参数 定义参数 input [size:1]A,B; output [size:1]S; input CI; output CO; wire [1:size-1]Ctemp //定义模块内部的连接线 定义模块内部的连接线 onebit_fulladd //调用 位全加器 调用1位全加器 调用 add1(A[1],B[1],CI, S[1], Ctemp[1]), //实例化,调用 位全加器 实例化, 实例化 调用1位全加器 add2(A[2],B[2], Ctemp[1], S[2], Ctemp[2]), , //实例化,调用 位全加器 实例化, 实例化 调用1位全加器 add3(A[3],B[3], Ctemp[2], S[3], Ctemp[3]), //实例化,调用 位全加器 实例化, 实例化 调用1位全加器 add4(A[4],B[4],Ctemp[3], S[4], CO); //实例化 实例化4 ; 实例化 endmodule //结束 结束
6、关键词 、
关键词是Verilog HDL语言内部的专用词。
三、 模块的两种描述方式 1、行为描述方式 、
行为描述方式通过行为语句来描述电路要实现的功能,表 行为描述方式通过行为语句来描述电路要实现的功能, 示输入与输出间转换的行为,不涉及具体结构。 示输入与输出间转换的行为,不涉及具体结构。
2、结构描述方式 、
b或B d或D
二进制 十进制
o 或O h或H
八进制 十六进制
4’b11 //4位二进制数0011 3’b11x //3位二进制数,最低位不确定 -4’b11 //4位二进制数0011的补码,1101
4、字符串 、
字符串是双引号“ ”括起来的字符序列,必须包含在一行 中,不能多行书写。
5、标识符 、
3、数值常量 、
Verilog HDL中的数值常量有整型 实型 整型和实型 整型 实型两大类,分为十进制、 十六进制、八进制或二进制。 Verilog HDL数值集合有四个基本值:
0:逻辑0或假状态; :逻辑 或假状态 或假状态; 1:逻辑1或假状态; :逻辑 或假状态 或假状态;
X:逻辑不定态; :逻辑不定态; Z:高阻态。 :高阻态。
一、基本程序结构
Verilog HDL 语言采用模块化的结构,以模块集合的形式 来描述数字电路系统。模块对应硬件上的逻辑实体,描述这 个实体的功能或结构,以及它与其他模块的接口。 模块在概念上可以等同于一个通用器件(与门、或门)或 通用宏单元(计数器、CPU)等,因此一个模块可以被另外 一个模块调用。一个电路设计可由多个模块组成,一个模块 设计只是一个系统设计中的某个层次设计,模块设计可以采 用多种建模方式。
硬件描述语言主要用于编写设计文件,在EDA工 具中建立电路模型。 硬件描述语言发展至今已有30年的历史,已经成 建模、 功地应用于电子电路设计的各个阶段:建模、仿真、 建模 仿真、 验证和综合等 。 VHDL和Verilog HDL是目前两种最常用的硬件 描述语言。 除了这两种最流行的硬件描述语言外,随着系统 级FPGA以及系统芯片的出现,软硬件协调设计和系 统设计变得越来越重要。传统意义上的硬件设计越来 传统意义上的硬件设计越来 越趋向于与系统设计和软件设计相结合。 越趋向于与系统设计和软件设计相结合。