VHDL教程

2025年5月18日 | 阅读13分钟

VHDL教程提供了VHDL的基础和高级概念。我们的VHDL教程是为初学者和专业人士设计的。


什么是HDL?

HDL是硬件描述语言的缩写。它是一种编程语言,用于描述、模拟创建数字电路(集成电路)等硬件。HDL主要用于在硬件实现之前发现设计中的错误。

HDL的主要优点在于它提供了灵活的建模能力,并且可以表达大型复杂的设计(>107门)。

如今,市面上有许多HDL可用,但VHDLVerilog是最流行的HDL。


什么是VHDL?

VHDL代表“超高速集成电路硬件描述语言”(Very High-Speed Integration Circuit HDL)。它是一种IEEE(电气和电子工程师协会)标准的硬件描述语言,用于描述和模拟复杂数字电路的行为。

VHDL最流行的示例包括奇偶校验发生器、脉冲发生器、优先级编码器、16字、8位RAM的行为模型等。

VHDL支持以下特性

  • 设计方法及其特性。
  • 顺序和并发活动。
  • 设计交换
  • 标准化
  • 文档
  • 可读性
  • 大规模设计
  • 广泛的描述能力

什么是Verilog?

Verilog也是一种HDL(硬件描述语言),用于描述电子电路和系统。它用于硬件模拟和综合。

Verilog最流行的示例包括网络交换机、微处理器、内存、简单的触发器等。


VHDL与Verilog的区别

VHDLVerilog
它允许用户定义数据类型。它不允许用户定义数据类型。
它支持多维数组。它不支持多维数组。
它允许并发过程调用。它不允许并发调用。
存在模运算符。不存在模运算符。
不存在一元约简运算符。存在一元约简运算符。
学习难度更大。它易于学习。

VHDL的历史

VHDL由美国国防部(DOD)于1980年开发。

  • 1980年:国防部希望电路设计能够自文档化。
  • 1983年:VHDL的开发始于IBM、Inter-metrics和德州仪器公司的合作。
  • 1985年(VHDL版本7.2):在政府合同下,发布了该语言的最终版本。
  • 1987年:国防部允许商业用途,VHDL成为IEEE标准1076-1987。
  • 1993年:VHDL重新标准化,以增强该语言。
  • 1996年:VHDL包与综合工具一起使用,并成为IEEE 1076标准的一部分。
  • 1999年:模拟混合信号扩展(VHDL-AMS)
  • 2008年:发布了IEEE标准1076-2008(新特性)。

为什么选择VHDL?

VHDL用于以下目的

  • 用于描述硬件
  • 作为建模语言
  • 用于硬件仿真
  • 用于系统架构的早期性能估算
  • 用于硬件综合

VHDL的优点

VHDL的优点列表如下

  • 它支持各种设计方法,如自顶向下方法和自底向上方法。
  • 它提供了一种灵活的设计语言。
  • 它允许更好的设计管理。
  • 它允许详细的实现。
  • 它支持多层抽象。
  • 它提供了与低层设计的紧密耦合。
  • 它支持所有CAD工具。
  • 它有力地支持代码的可重用性和代码共享。

VHDL的缺点

VHDL的缺点列表如下

  • 它需要对语言的结构和语法有专门的了解。
  • 可视化和排除设计故障更加困难。
  • 有些VHDL程序无法综合。
  • VHDL学习难度更大。

VHDL的基本元素

VHDL有以下三个基本元素

1. 实体

Entity用于指定电路的输入和输出端口。Entity通常有一个或多个端口,可以是输入(in)、输出(out)、输入-输出(inout)或缓冲器(buffer)。

Entity还可以包含一组泛型值,用于声明电路的属性。

Entity声明

您可以使用以下语法声明一个Entity:

  • 简化语法

示例

  • 使用泛型

如果一个Entity是泛型的,那么它必须在端口之前声明。泛型没有模式,因此只能将信息传递到Entity内部。

语法

示例

书写端口名称的规则

- 端口名称由字母、数字和下划线组成。
- 它总是以字母开头。
- 端口名称不区分大小写。

端口模式

in         输入端口
out         输出端口
inout         双向端口
buffer         缓冲输出端口

2. Architecture

Architecture是设计的实际描述,用于描述电路如何工作。它可以包含并发语句和顺序语句。

Architecture声明

可以使用以下语法声明一个Architecture:

示例

3. Configuration

Configuration定义了设计层次结构如何链接在一起。它也用于将Architecture与Entity关联。

Configuration声明

示例


VHDL建模风格的类型

VHDL有4种建模风格

1. 数据流建模(设计方程)

数据流建模可以基于布尔表达式进行描述。它显示数据如何从输入流向输出。它基于并发执行。

2. 行为建模(解释行为)

行为建模用于顺序执行语句。它显示系统如何根据当前语句执行。

行为建模可能包含Process语句、顺序语句、信号赋值语句和wait语句。

3. 结构建模(子模块的连接)

结构建模用于指定电路的功能和结构。

结构建模包含信号声明、组件实例和组件实例中的端口映射。


VHDL对象

VHDL使用以下三种对象

1. 常量(Constants)

常量是一个只能保持一个值且在整个代码中无法更改的对象。

示例: constant number_of_bytes integer:=8;

2. 变量(Variables)

变量也保存给定类型的一个值。变量的值可以在仿真期间使用变量赋值运算符来更改。

变量用于进程和子程序。

变量使用赋值运算符“:=”进行赋值。

示例

variable index: integer :=0;

3. 信号(Signals)

信号可以在Architecture中声明,并在Architecture内的任何位置使用。信号使用赋值运算符“<=”进行赋值。

示例

Signal sig1: std_logic;
Sig1 <= '1'


VHDL数据类型

数据类型是存储数据的抽象表示。

VHDL中有以下数据类型:

1. 标量类型(Scalar Types)

  • Integer
    整数数据类型是正负整数的集合。
  • 浮点数
    浮点数据类型是包含小数点的正负数集合。
  • 枚举
    枚举数据类型用于提高代码的可读性。
  • 物理
    物理数据类型根据基本单位、基本单位的倍数和指定的范围来描述对象。

2. 组合类型(Composite Types)

  • 数组
    数组用于在单个标识符下保存多个相同类型的值。
  • 记录
    记录用于指定一个或多个元素,每个元素都有不同的名称和不同的类型。

VHDL运算符

VHDL运算符用于构造表达式。

VHDL有以下类型的运算符:

1. 逻辑运算符(Logical Operators)

逻辑运算符用于控制程序流程。当逻辑运算符与信号或变量结合使用时,用于创建组合逻辑。

VHDL支持以下逻辑运算符:

  • 并且
  • nand
  • nor
  • xor
  • xnor
  • not

2. 关系运算符

在VHDL中,关系运算符用于比较相同数据类型的两个操作数,结果始终为布尔类型。

VHDL支持以下关系运算符:

  • = 等于
  • /= 不等于
  • < 小于
  • > 大于
  • <= 小于或等于
  • >= 大于或等于

3. 算术运算符(Arithmetic Operators)

算术运算符用于执行算术运算。这些运算符适用于数值类型,如整数实数

VHDL使用以下算术运算符:

  • + 加法
  • - 减法
  • * 乘法
  • / 除法
  • & 串联
  • mod 模运算
  • rem 余数
  • abs 绝对值
  • ** 指数运算

4. 移位运算符(Shift Operators)

在VHDL中,移位运算符用于通过向右或向左移位或旋转其第一个操作数来对数据执行位操作。

VHDL支持以下杂项运算符:

  • Sll 逻辑左移
  • Srl 逻辑右移
  • Sla 算术左移
  • Sra 算术右移
  • Rol 左旋
  • Ror 右旋

注意:运算符的计算顺序按其优先级进行。(即从高到低)

Highest优先级顺序最低点
算术运算符移位运算符 关系运算符逻辑运算符

具有相同优先级的运算符从左到右进行计算。


安装Xilinx ISE工具

安装Xilinx ISE工具的步骤如下:

步骤1:点击下面的链接下载Xilinx ISE工具。

https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/design-tools/v2012_4---14_7.html

步骤2:然后转到ISE Design suite - 14.7 Full Product Installation,选择Full Installer for Windows 7/XP server (TAR/GRIP - 6.18 GB),如下图所示。

Install Xilinx ISE Tool

步骤3:点击“Full Installer for windows 7/XP/Server”后,您会看到一个Xilinx登录页面。如果您没有Xilinx账户,请点击创建您的账户

Install Xilinx ISE Tool

步骤4:填写注册页面的信息,然后点击创建账户

Install Xilinx ISE Tool

步骤5:点击创建账户后,将出现以下窗口。

Install Xilinx ISE Tool

步骤6:然后,您将在注册的电子邮件地址收到一封包含激活链接的邮件。点击该链接激活您的账户。

步骤7:点击链接后,窗口中会出现一个登录以激活账户的窗口,在此输入您的用户名密码,然后点击登录

Install Xilinx ISE Tool

步骤8:现在点击下面的链接进行姓名和地址验证

https://www.xilinx.com/member/forms/download/xef.html?filename=Xilinx_ISE_DS_Win_14.7_1015_1.tar

步骤9:完成验证表单后,点击下一步

Install Xilinx ISE Tool

步骤10:现在,您可以看到Xilinx_ISE tar文件开始下载。

Install Xilinx ISE Tool

步骤11:双击下载的文件并解压,然后运行xsetup.exe。

步骤12:运行应用程序后,屏幕上会出现以下欢迎窗口。

Install Xilinx ISE Tool

步骤13:勾选我接受并同意以上条款和条件,并勾选我也接受并同意以下条款和条件,然后点击下一步。

Install Xilinx ISE Tool
Install Xilinx ISE Tool

步骤14:现在,选择要安装的产品。对于VHDL,选择ISE WebPACK,这是该软件的免费版本。选择ISE WebPACK后,点击下一步

Install Xilinx ISE Tool

步骤15:出现“安装选项”窗口。在此窗口中,点击下一步

Install Xilinx ISE Tool

步骤16:选择目标目录,然后点击下一步

Install Xilinx ISE Tool

步骤17:您可以在下面的屏幕截图中看到安装摘要。点击安装以安装Xilinx。

Install Xilinx ISE Tool

步骤18:您可以看到安装正在进行中。

Install Xilinx ISE Tool

步骤19:安装完成后,点击完成

Install Xilinx ISE Tool

步骤20:修复Project Navigator、iMPACT和License Manager

修复Project Navigator、iMPACT和License Manager的步骤如下:

  1. 转到C:\Xilinx\14.7\ISE_DS\ISE\lib\nt64,并将libPortability.dll重命名为lib.Portability.dll.orig
  2. 将libPortabilityNOSH.dll复制并粘贴到同一目录中,并将其重命名为libPortability.dll
  3. 复制libPortabilityNOSH.dll并将其粘贴到C:\Xilinx\14.7\ISE_DS\common\lib\nt64
  4. C:\Xilinx\14.7\ISE_DS\common\lib\nt64中,将libPortability.dll重命名为libPortability.dll.orig
  5. C:\Xilinx\14.7\ISE_DS\common\lib\nt64中,将libPortabilityNOSH.dll重命名为libPortability.dll

完成以上步骤后,您可以关闭该目录。

步骤21:现在,您可以看到IDE Design Suite出现在屏幕上。双击IDE Design Suite,您会看到以下弹出窗口。

Install Xilinx ISE Tool

步骤22:现在,将出现带有弹出窗口的以下窗口,点击弹出窗口中的OK。

Install Xilinx ISE Tool

步骤23:当您点击“许可证”时,将打开以下窗口,在此选择获取我购买的许可证(s),然后点击下一步

Install Xilinx ISE Tool

步骤24:要连接到默认浏览器,请点击立即连接

Install Xilinx ISE Tool

步骤25:它会在浏览器中打开一个新的XILINX页面。在此页面输入用户名密码,然后点击登录

Install Xilinx ISE Tool

步骤26:点击登录后,将出现以下窗口。

Install Xilinx ISE Tool

步骤27:选择文件后,您将在注册的电子邮件地址收到一封包含Xilinx.lic文件的电子邮件。您需要下载此文件。

点击加载许可证以下载许可证文件,然后点击关闭。

Install Xilinx ISE Tool

步骤28:文件上传后,将出现一条消息许可证安装成功的弹出窗口,点击弹出窗口中的OK,然后点击关闭。

下图显示了已上传的许可证。

Install Xilinx ISE Tool

步骤29:现在,您可以在Xilinx工具中创建项目了。

Install Xilinx ISE Tool

使用Xilinx IDE工具在VHDL中创建项目

在Xilinx中创建项目的步骤如下:

步骤1:创建新项目

要创建新项目,请选择文件 -> 新建项目。这将在桌面上打开一个新项目窗口。

Creating a project in VHDL using Xilinx IDE Tool

在“新建项目”窗口中,输入您要创建的项目名称,并指定要保存项目的目录路径,然后点击下一步

Creating a project in VHDL using Xilinx IDE Tool

注意:确保“顶层源类型”选择为HDL,而不是Schematic、EDIF或其他。

点击下一步按钮后,将出现以下窗口,显示项目属性。根据您的要求填写属性,然后点击下一步

Creating a project in VHDL using Xilinx IDE Tool

点击下一步按钮后,将出现以下窗口,显示项目摘要。如果项目摘要符合您的要求,则点击完成。否则,点击返回并根据您的要求填写属性。

Creating a project in VHDL using Xilinx IDE Tool

步骤2:创建VHDL源文件

要在VHDL中添加VHDL源文件,请点击项目向导中的新建源文件,或点击项目 -> 新建源文件

Creating a project in VHDL using Xilinx IDE Tool

键入文件名,指定位置,然后选择VHDL模块作为源类型。确保选中添加到项目复选框,然后点击下一步

Creating a project in VHDL using Xilinx IDE Tool

步骤3:为VHDL源文件分配端口

要设计半加器,您可以将端口名称指定为a、b、sumcout。其中ab被视为输入端口,因此从下拉菜单中选择“in”。sumcout被视为输出端口,因此从下拉菜单中选择“out”。

Creating a project in VHDL using Xilinx IDE Tool

下图显示了项目摘要。

Creating a project in VHDL using Xilinx IDE Tool

步骤4:输入和编辑VHDL代码

下图显示了自动生成的Half_Adder代码。

Creating a project in VHDL using Xilinx IDE Tool

要设计Half_Adder,请在工作区域输入以下代码。

Creating a project in VHDL using Xilinx IDE Tool

步骤5:综合代码

当源文件完成时,您需要检查设计的语法。要检查语法,请单击“综合-XST”过程以展开层次结构。然后双击检查语法

您可以看到ISE编译过程已开始。如果ISE过程成功完成,将出现一个绿色的勾号。否则,将出现一个红色的X,表示存在错误且过程失败。

Creating a project in VHDL using Xilinx IDE Tool

要查看半加器的基本设计,请双击查看RTL原理图

Creating a project in VHDL using Xilinx IDE Tool

现在,您将在以下弹出窗口中单击OK

Creating a project in VHDL using Xilinx IDE Tool

在“创建RTL原理图”中,从可用列表中选择项目,然后点击添加按钮将选定的项目移动到选定元素,然后点击创建原理图

Creating a project in VHDL using Xilinx IDE Tool

现在,您将在屏幕上看到半加器的外部设计。

Creating a project in VHDL using Xilinx IDE Tool

双击上面的矩形,您可以看到使用逻辑门绘制的内部图。

Creating a project in VHDL using Xilinx IDE Tool
Creating a project in VHDL using Xilinx IDE Tool

步骤6:模拟行为模型(ISE模拟器)

要检查行为模型,请选择“实现”->“Half_Adder”-“行为”(Half_Adder.vhd),然后双击“模拟行为模型”。

Creating a project in VHDL using Xilinx IDE Tool

如果模拟成功,将打开以下窗口。

Creating a project in VHDL using Xilinx IDE Tool

要分配值,请右键单击给定的值(U),然后选择强制常量。请参考下图

Creating a project in VHDL using Xilinx IDE Tool

将出现以下弹出窗口,您可以在其中为a分配值,然后单击“应用”和“确定”。

Creating a project in VHDL using Xilinx IDE Tool

情况1:如果输入为

a = 0
b = 0

输出

sum = 0
cout = 0

Creating a project in VHDL using Xilinx IDE Tool

情况2:如果输入为-

a = 0
b = 1

输出

sum = 1
cout = 0

Creating a project in VHDL using Xilinx IDE Tool

情况3:输入为-

a = 1
b = 0

输出

sum = 1
cout = 0

Creating a project in VHDL using Xilinx IDE Tool

情况4:输入为-

a = 1
b = 1

输出

sum = 0
cout = 1

Creating a project in VHDL using Xilinx IDE Tool

VHDL与C语言对比

VHDLC 语言
VHDL是硬件描述语言。C语言是高级语言和汇编语言的混合体。
VHDL是可综合的。C语言不可综合。
VHDL同时处理顺序和并发指令。C语言只处理顺序指令。

前提条件

在学习VHDL之前,您必须具备电子电路的基本知识。

目标受众

我们的VHDL教程旨在帮助初学者和专业人士。

问题

我们向您保证,您在本VHDL教程中不会遇到任何问题。但是,如果您发现任何错误或失误,请在联系表中报告。