基于FPGA的SOC在嵌入式系统应用越来越广了,比较流行的硬件描述语言有两种Verilog HDL/VHDL,均为IEEE标准 。VHDL如果有C语言基础的话就会比较容易上手 。而VHDL语言则需要Ada编程基础 。另外VHDL语言具有大量成熟的模块,从某种角度说VHDL更具生命力 。VHDL简介VHDL 的历史VHDL 的 英 文 全 名 是 Very-High-Speed Integrated Circuit Hardware DescriptionLanguage,诞生于 1982 年 。
1987 年底,VHDL 被 IEEE 和美国国防部确认为标准硬件描述语言 。自 IEEE 公布了 VHDL 的标准版本 IEEE-1076(简称 87 版)之后,各 EDA 公司相继推出了自己的 VHDL 设计环境,或宣布自己的设计工具可以提供 VHDL 接口 。此后 VHDL 在电子设计领域逐步取代了原有的各种非标准硬件描述语言 。
1993 年,IEEE 对 VHDL 进行了修订,从更高的抽象层次和系统描述能力上扩展 VHDL 的内容,并公布了新版本的 VHDL,即 IEEE 标准的 1076-1993版本(简称 93 版) 。
现在,VHDL 和 Verilog HDL 作为 IEEE 的工业标准硬件描述语言,在电子工程领域已成为事实上的通用硬件描述语言 。
VHDL 的特点
VHDL 主要用于描述数字系统的结构、行为、功能和接口 。除了含有许多具有硬件特征的语句外,VHDL 在语言形式、描述风格和句法上与一般的计算机高级语言十分相似 。VHDL 的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件、一个电路模块或一个系统)分成外部和内部两部分 。
外部也可称为可视部分,它描述了此模块的端口,而内部可称为不可视部分,它涉及到实体的功能实现和算法完成 。在对一个设计实体定义了外部端口后,一旦其内部开发完成,其他的设计就可以直接调用这个实体 。这种将设计实体分成内外部分的概念是VHDL 系统设计的基本点 。
应用 VHDL 进行工程设计有以下的优点:
1.行为描述
与其他的硬件描述语言相比,VHDL 具有更强的行为描述能力,强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证 。
2.仿真模拟
VHDL 丰富的仿真语句和库函数,使得在任何系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟 。
3.大规模设计
一些大型的 FPGA 设计项目必须有多人甚至多个开发组共同并行工作才能实现 。VHDL 语句的行为描述能力和程序结构决定了它具有支持大规模设计的分解和已有设计的再利用功能 。
4.门级网表
对于用 VHDL 完成的一个确定的设计,可以利用 EDA 工具进行逻辑综合和优化,并自动把VHDL 描述设计转变成门级网表 。
5.独立性
VHDL 对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必对最终设计实现的目标器件有很深入地了解 。
VHDL的一般结构
让我们考虑一个简单的数字电路,如图所示 。
此图显示有两个输入端口 a 和 b,以及一个输出端口 out1 。该图表明输入和输出端口是一位宽 。该电路的功能是对两个输入进行“与”运算并将结果放在输出端口上 。
VHDL 使用类似的描述;但是,它有自己的语法 。例如,它使用以下代码行来描述该电路的输入和输出端口:
1 entity circuit_1 is
2 Port ( a : in STD_LOGIC;
3 b : in STD_LOGIC;
4 out1 : out STD_LOGIC);
5 end circuit_1;
让我们逐行分解这意味着什么 。
第 1 行:代码的第一行指定要描述的电路的任意名称 。位于关键字“entity”和“is”之间的单词“circuit_1”决定了该模块的名称 。
第 2 到 4 行:这些行指定电路的输入和输出端口 。将这些线路与图 1 的电路进行比较,我们看到电路的端口及其特性列在关键字“端口”之后 。例如,第 3 行说我们有一个名为“b”的端口 。该端口是一个输入,如冒号后的关键字“in”所示 。
关键字“std_logic”指定了什么?正如我们将在本文后面讨论的那样,std_logic 是 VHDL 中常用的数据类型 。它可以用来描述一位数字信号 。由于图 1 中的所有输入/输出端口都将传输 1 或 0,因此我们可以对这些端口使用 std_logic 数据类型 。
第 5 行:此行确定“实体”语句的结束 。
【什么是VHDL?一文带你了解VHDL语言】因此,代码的实体部分指定了 1) 要描述的电路的名称和 2) 电路的端口及其特性,即输入/输出和这些端口要传输的数据类型 。代码的实体部分实际上描述了模块与其周围环境的接口 。由讨论的“实体”语句指定的上述电路的特征在图 1 中以绿色显示 。
推荐阅读
- VHDL 编程常用语法及技巧汇总-命名规范及信号变量常量
- Nginx是什么意思?Nginx作为反向代理服务器有什么作用?
- JavaScript错误处理完整指南
- 好用的SNS社区引流工具有哪些?都有什么功能?
- 反诈宣传天天有 你为什么还被骗?
- 社交裂变是什么意思?其主要模式是什么?
- 核辐射为什么对人的伤害那么大 核辐射对身体的伤害
- 佛教四大名山中纬度最高的是 佛教四大名山是哪四山
- 泰坦尼克号沉船是阴谋吗 泰坦尼克号沉没诡异事件
- 成都周围超美古镇,有的人甚至一个都没去过! 成都是一座古城