查看我们基于Verilog的项目的完整列表!

Verilog®HDL

学习相关的关键词和概念

项目概述

这个项目的目标是了解Verilog项目中的组件(但还没有完全编程FPGA,这是下一个项目)。如果您还没有安装Vivado,您可以找到这样做的指南在这里.如果你希望在Project 0中首先学习如何导航Vivado界面,我们强烈推荐开始与Vivado指南

可以找到所有Verilog项目的列表在这里

记住,我们不会为第一个项目添加任何文件或创建位流;这一切都将开始项目2.如果您在阅读本项目后有任何问题,请随时将它们张贴在Digilent论坛工程师会很乐意帮助你的。

什么是Verilog®模块?

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

一个简单的例子

Verilog®电路的一般格式如下图中的代码所示。主要关键字显示为蓝色,注释显示为绿色,Verilog要求显示为pick,用户必须提供的关键文本字符串显示为粗体斜体。然后,我们将详细介绍每一行,了解它们的作用。

一个简单的Verilog示例

时间尺度

所有Verilog项目都需要这个时间刻度才能正确合成。如果您有多种类型的延迟,可能会列出多个时间表。

模块

在原理图捕获环境中,图形符号通过显示一个“边界框”以及输入和输出连接来定义给定的逻辑电路。在Verilog中,使用了相同的概念,只有边界框必须显式地输入到文本编辑器中,从模块并以短语结尾endmodule

模块块(如图所示)为电路提供了一个名称(“led_sw”为可读性,它可以被称为“myFirstModule123abc”),并定义了所有的输入和输出端口,实际上起到了与原理图环境中的符号相同的作用。模块被一个endmodule语句,以及模块声明和之间的所有语句endmodule描述了模块的功能,即模块的内部电路连接。

在语法方面,命名模块的输入和输出被一组括号括起来()用分号隔开加上逗号在每组输入/输出之间。下面提供了一个例子:

模块inputOutput(input inputExample, output outputExample, input [2:0] 3inputs, output [7:0] 7outputs);endmodule

如果一组输入/输出实际上是一个总线(一个数组),则是一组方括号[]在格式[MSB:LSB]中围绕数字范围使用。结束模块不需要特殊的语法,只需要单词endmodule

输入、输出和总线

无论何时编写Verilog模块,要做的第一件事就是定义输入和输出信号。在图1的例子中,一个输入信号sw来自板载开关SW0,一个输出信号led连接到LED0。我们是如何选择“sw”和“led”这两个名字的?他们来自XDC文件

但是,请注意,输入和输出也可以是一组连接。我们称这些分组为总线。为了将输入或输出声明为总线,我们需要向CAD工具提供总线的最高有效位(MSB)索引和总线的最低有效位(LSB)索引。例如,下面的代码定义了一个8位宽总线“sw”,其中最左边的位(MSB)的索引是7,最右边的位(LSB)的索引是0,带有冒号把两个数分开。

输入7:0西南

在Verilog中索引总线类似于在C语言中索引数组。例如,如果我们想索引上面声明的sw总线的第二个位,我们将使用sw[1]。在列出所使用的各种输入和输出时,不使用分号。

分配

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

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

模块led_sw(输出[7:0]led,输入[7:0]sw);指定led[3] = sw[1];...endmodule

在每个赋值语句(可以不止一行)的末尾,有一个分号是必需的。

常量

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

'

一些例子:

常数Verilog 解释 在二进制值
12 'h1e3 十六进制123用12位表示 0001 1110 0011
20 'd44 十进制44用20位表示 0000 0000 0000 0010 1100
4 'b1010 二进制1010用4位表示 1010

项目一的重要收获

  • Verilog HDL中的模块作用类似于电路原理图中的边界盒。
  • 总线是一组信号(导线)。
  • 赋值语句将一个信号/总线的值传递给另一个信号/总线。
  • 在Verilog HDL中,常量以<宽度的形式表示,单位为>'<基本字母><数字>
  • 想要离开的欲望项目2我们实际编程FPGA的地方

通过标签>和双花括号添加的标签
学习编程逻辑软件教程vivado