第6讲(VerilogHDL语言的基本结构).pptVIP

  • 28
  • 0
  • 约9.68千字
  • 约 52页
  • 2017-11-26 发布于湖北
  • 举报
第6讲(VerilogHDL语言的基本结构)

第四章 现场可编程逻辑器件的应用设计技术 4.1 Verilog HDL硬件描述语言 1. 简单的Verilog HDL例子 首先来看两个简单的Verilog HDL程序。一个8位全加器的Verilog HDL源代码: 1. 简单的Verilog HDL例子 从上面的例子可以看出: 1.Verilog HDL巳程序是由模块构成的。每个模块的内容都是嵌在module和endmodule两个语句之间,每个模块实现特定的功能,模块是可以进行层次嵌套的。 2.每个模块首先要进行端口定义.并说明输入(input)和输出(output),然后对模块的功能进行逻辑描述。 3. Verilog HDL程序的书写格式自由,一行可以写几个语句,一个语句也可以分多行写。 1. 简单的Verilog HDL例子 4. 除了endmodule语句外,每个语句的最后必须有分号。 5. 可以用/*……*/ 和 //……对Verilog HDL程序的任何 部分作注释。一个完整的源程序都应当加上必要的注释,以增强程序的可读性和可维护性。 6. 大小写敏感; 7. 所有的关键字小写; 2. Verilog HDL模块的结构 Verilog HDL的基本设计单元是“模块(block)”。一个模块是由两部分组成的,一部分描述接口;另一部分描述逻辑功能,即定义输入是如何影响输出的。下面举例说明一个“与—或—非”门电路。 2. Verilog HDL模块的结构 2. Verilog HDL模块的结构 从上面的例子可知,电路图符号的引脚也就是程序模块的端口,在程序模块内描述了电路图符号所实现的逻辑功能。在上面的Verilog设计中,模块中的第2、第3行说明接口的信号流向,第4行说明了模块的逻辑功能。 2. Verilog HDL模块的结构 模块的端口定义 模块的端口声明了模块的输入和输出口。其格式如下: module 模块名(口1,口2, 口3,……); 模块内容 模块内容包括I/O说明,信号类型声明和功能定义, (1) I/O说明的格式如下: 2. Verilog HDL模块的结构 输入口: input [ 信号位宽-1:0] 端口名 ; input [ 信号位宽-1:0] 端口名1,端口名2 ,…端口名N; 输出口: output [ 信号位宽-1:0] 端口名; output [ 信号位宽-1:0] 端口名1,端口名2 ,…端口名N; 输入/输出口: inout [ 信号位宽-1:0] 端口名; inout [ 信号位宽-1:0] 端口名1,端口名2 ,…端口名N; 2. Verilog HDL模块的结构 (2) 信号类型声明:它是说明逻辑描述中所用信号的数据类型及函数声明。 2. Verilog HDL模块的结构 对于端口信号的缺省定义类型为wire(连线)型。 2. Verilog HDL模块的结构 在一个模块的开始部分包含模块的端口声明和端口类型声明。 Verilog 2001 标准可以将这两部分合而为一。 增强的端口声明实例: 2. Verilog HDL模块的结构 Verilog 2001 标准允许定义模块时就声明端口及其类型: 例如: module addr( input wire [1:0] a; input wire [1:0] b; output reg [2:0] sum ); …………. 3. 逻辑功能定义 逻辑功能描述部分是对数字电路系统的建模,是Verilog HDL模块中最重要也是最复杂的部分。 但其最基本的描述方式只有三种:always、assign和创建模块实例。 一个Verilog HDL模块允许使用一种或多种方式描述逻辑功能。 3. 逻辑功能定义 1. 用assign描述逻辑功能 assign语句多用在输出信号可以和输入信号建立某种直接联系的情况下,这种联系通常可以用逻辑表达式或算术表达式方式描述。 assign只能用于组合逻辑描述,而不能用于时序逻辑电路。即该语句一般适合于对组合逻辑进行赋值,称为连续赋值方式。 3. 逻辑功能定义 例用assign描述下述表达式: X1 = ab; X2 = a|b; 3. 逻辑功能定义 2.用always描述逻辑功能 在Verilog HDL中,由always指定的内容将不断地重复运行,这恰恰反映出了实际电路的特性--在通电的情况下不断运行。用always可以描述一些比较复

文档评论(0)

1亿VIP精品文档

相关文档