Verilog HDL:第一个例子

模块,I/O端口,总线和分配

电路的Verilog模块将其功能描述封装为其输入-输出关系的结构或行为视图。结构视图可以简单到门的网表,也可以复杂到将电路划分为主要功能块的高级架构,如算术和逻辑单元(ALU)。行为视图可以是一个简单的布尔方程模型、一个寄存器传输级别(RTL)或一个算法。本节将介绍Verilog文件的基础知识。

一个简单的例子

Verilog电路描述的一般格式如下图1所示。所需的关键字以蓝色显示,注释以绿色显示,用户必须提供的关键文本字符串以斜体显示。

图1所示。第一个例子。

模块

在原理图捕获环境中,图形符号通过显示一个“边界框”以及输入和输出连接来定义给定的逻辑电路。在Verilog中,使用了相同的概念,只有边界框必须显式地输入到文本编辑器中。边界框是用模块块和相应的端口语句定义的。模块块(如示例所示)给电路一个名称,并定义所有的输入和输出端口,因此在原理图环境中起着与符号相同的作用。模块由一个“endmodule”语句关闭,模块声明和“endmodule”之间的所有语句都描述了模块的功能,即模块的内部电路连接。

输入、输出和总线

无论何时编写Verilog模块,要做的第一件事就是定义输入和输出信号。在图1的例子中,有一个输入信号“sw”来自板上开关,一个输出信号“led”连接到LED0。但是,请注意,输入和输出也可以是一组连接。我们称这些分组为总线。为了将输入或输出声明为总线,我们需要向CAD工具提供总线的最高有效位(MSB)索引和总线的最低有效位(LSB)索引。例如,下面的代码定义了一个8位宽总线“sw”,其中最左边的位(MSB)的索引是7,最右边的位(LSB)的索引是0。

输入(70西南

在Verilog中索引总线类似于在C语言中索引数组。例如,如果我们想索引上面声明的sw总线的第二个位,我们将使用sw[1]。

赋值语句

上面例子中的assign语句将网络“sw”上的信号值赋给网络“led”。在实现中,它创建了一个连接输入端口sw到输出端口的电线领导

assign语句也可用于将总线的一个信号分配给另一个总线的一个信号。例如,如果我们声明sw为8位宽总线和领导作为一个8位宽总线,我们想用第二个开关来控制第四个领导,代码将是:

模块led_sw输出(70领导、输入(70西南分配了(3.西南(1...endmodule

常量

你也可以给一个信号或总线分配一个常数,以将它们绑定到逻辑'1' (VDD)或逻辑'0' (接地).在Verilog中常量的基本语法是:

'

例如:

常数Verilog 解释 在二进制值
12 'h123 12位16进制123 0001 0010 0011
20 'd44 20位十进制44 0000 0000 0000 0010 1100
4 'b1010 4位二进制1010 1010

要将信号或总线绑定到常量,还可以使用assign语句。例如,如果我们要将一个8位总线“seg”连接到地面,我们将这样写:

模块上...输出(70赛格,……分配赛格8“d0...endmodule

重要思想

  • Verilog HDL中的模块作用类似于电路原理图中的边界盒。
  • 总线是一组信号(导线)。
  • 赋值语句将一个信号/总线的值传递给另一个信号/总线。
  • 常量在Verilog HDL中以。的形式表示'