本科EDA技术及应用第3章(1)

更新时间:2023-04-30 07:17:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第3章VHDL编程基础

第3章VHDL编程基础(1)

3.1 概述

3.2 VHDL程序基本结构

3.3 VHDL语言要素

3.4 VHDL顺序语句

3.5 VHDL并行语句

第3章VHDL编程基础

3.1 概述

3.1.1 常用硬件描述语言简介

常用硬件描述语言有VHDL、Verilog和ABEL语言。VHDL 起源于美国国防部的VHSIC,Verilog起源于集成电路的设计,ABEL则来源于可编程逻辑器件的设计。下面从使用方面将三者进行对比。

(1) 逻辑描述层次:一般的硬件描述语言可以在三个层次上进行电路描述,其层次由高到低依次可分为行为级、RTL级和门电路级。VHDL语言是一种高级描述语言,适用于行为级和RTL 级的描述,最适于描述电路的行为;Verilog语言和ABEL语言是一种较低级的描述语言,适用于RTL级和门电路级的描述,最适于描述门级电路。

第3章VHDL编程基础

(2) 设计要求:VHDL进行电子系统设计时可以不了解电路的结构细节,设计者所做的工作较少;Verilog和ABEL语言进行电子系统设计时需了解电路的结构细节,设计者需做大量的工作。

(3) 综合过程:任何一种语言源程序,最终都要转换成门电路级才能被布线器或适配器所接受。因此,VHDL语言源程序的综合通常要经过行为级→RTL级→门电路级的转化,VHDL几乎不能直接控制门电路的生成。而Verilog语言和ABEL语言源程序的综合过程要稍简单,即经过RTL级→门电路级的转化,易于控制电路资源。

第3章VHDL编程基础

(4) 对综合器的要求:VHDL描述语言层次较高,不易控制底层电路,因而对综合器的性能要求较高,Verilog和ABEL对综合器的性能要求较低。

(5) 支持的EDA工具:支持VHDL和Verilog的EDA工具很多,但支持ABEL的综合器仅仅Dataio一家。

(6) 国际化程度:VHDL和Verilog已成为IEEE标准,而ABEL正朝国际化标准努力。

第3章VHDL编程基础

3.1.2 VHDL的优点

VHDL的英文全名是Very-High-Speed Integrated Circuit Hardware Description Language,诞生于1982年。1987年底,VHDL被IEEE ( The Institute of Electrical and Electronics Engineers)和美国国防部确认为标准硬件描述语言。自IEEE公布了VHDL的标准版本(IEEE-1076)之后,各EDA公司相继推出了自己的VHDL 设计环境,或宣布自己的设计工具可以和VHDL接口。此后VHDL 在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准硬件描述语言。1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本。现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。有专家认为,在新的世纪中,VHDL与Verilog语言将承担起几乎全部的数字系统设计任务。

第3章VHDL编程基础

VHDL主要用于描述数字系统的结构、行为、功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件、一个电路模块或一个系统)分成外部(或称可视部分,即端口)和内部(或称不可视部分),即设计实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。应用VHDL进行工程设计的优点是多方面的,具体如下:

第3章VHDL编程基础

(1) 与其他的硬件描述语言相比,VHDL具有更强的行为描述能力。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。就目前流行的EDA工具和VHDL综合器而言,将基于抽象的行为描述风格的VHDL程序综合成为具体的FPGA和CPLD等目标器件的网表文件已不成问题,只是在综合与优化效率上略有差异。

(2) VHDL具有丰富的仿真语句和库函数,使得在任何大系统的设计早期,就能查验设计系统的功能可行性,随时可对系统进行仿真模拟,使设计者对整个工程的结构和功能可行性做出判断。

第3章VHDL编程基础

(3) VHDL语句的行为描述能力和程序结构,决定了它具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效、高速的完成必须有多人甚至多个开发组共同并行工作才能实现,VHDL中设计实体的概念、程序包的概念、设计库的概念为设计的分解和并行工作提供了有利的支持。

第3章VHDL编程基础

(4) 用VHDL完成一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动把VHDL描述设计转变成门级网表(根据不同的实现芯片)。这种方式突破了门级设计的瓶颈,极大地减少了电路设计的时间和可能发生的错误,降低了开发成本。利用EDA工具的逻辑优化功能,可以自动地把一个综合后的设计变成一个更小、更高速的电路系统。反过来,设计者还可以容易地从综合和优化的电路获得设计信息,返回去更新修改VHDL设计描述,使之更加完善。

第3章VHDL编程基础

(5) VHDL对设计的描述具有相对独立性。设计者可以不懂硬件的结构,也不必管最终设计的目标器件是什么,而进行独立的设计。正因为VHDL的硬件描述与具体的工艺技术和硬件结构无关,所以VHDL设计程序的硬件实现目标器件有广阔的选择范围,其中包括各种系列的CPLD、FPGA及各种门阵列器件。

(6) 由于VHDL具有类属描述语句和子程序调用等功能,对于完成的设计,在不改变源程序的条件下,只需改变类属参量或函数,就能轻易地改变设计的规模和结构。

第3章VHDL编程基础

3.1.3 VHDL程序设计约定

为了便于程序的阅读和调试,本书对VHDL程序设计特作如下约定:

(1) 语句结构描述中方括号“[ ]”内的内容为可选内容。

(2) 对于VHDL的编译器和综合器来说,程序文字的大小写是不加区分的。本书一般使用大写。

(3) 程序中的注释使用双横线“--”。在VHDL程序的任何一行中,双横线“--”后的文字都不参加编译和综合。

第3章VHDL编程基础

(4) 为了便于程序的阅读与调试,书写和输入程序时,使用层次缩进格式,同一层次的对齐,低层次的较高层次的缩进两个字符。

(5) 考虑到MAX+plusII要求源程序文件的名字与实体名必须一致,因此为了使同一个VHDL源程序文件能适应各个EDA 开发软件上的使用要求,建议各个源程序文件的命名均与其实体名一致。

第3章VHDL编程基础

3.2 VHDL程序基本结构

3.2.1 VHDL程序设计举例

1.设计思路

全加器可以由两个1位的半加器构成,而1位半加器可以由如图3.1所示的门电路构成。

1位半加器的端口信号A 和B分别是2位相加的二进制输入信号,SO是相加和的输出信号,CO是进位输出信号,左边的门电路结构构成了右边的半加器H_ADDER。在硬件上可以利用半加器构成如图3.2所示的全加器,当然还可以将一组这样的全加器级联起来构成一个串行进位的加法器。图3.2中,全加器

F_ADDER内部的功能结构是由3个逻辑器件构成的,即由两个半加器U1、U2和一个或门U3连接而成。

第3章VHDL编程基础

图3.1 1位半加器逻辑原理图A

B

CO

SO H_ADDER

A

B

CO

SO

第3章VHDL编程基础图3.2 1 位全加器逻辑原理图A B CO SO H_ADDER

U1AIN

BIN

CIN S2A B CO SO H_ADDER U2S1S3A B C U3OR2COUT SUM F_ADDER AIN BIN CIN COUT

SUM

第3章VHDL编程基础

2. VHDL源程序

1) 或门的逻辑描述

--IEEE库的使用说明

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;--实体OR2的说明

ENTITY OR2 IS

PORT(A,B:IN STD_LOGIC;

C:OUT STD_LOGIC);END ENTITY OR2;

--实体OR2的结构体ART1的说明ARCHITECTURE ART1 OF OR2 IS BEGIN

C<=A OR B;

END ARCHITECTURE ART1;

第3章VHDL编程基础

2) 半加器的逻辑描述

--IEEE库的使用说明

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

--实体H_ADDER的说明

ENTITY H_ADDER IS

PROT(A,B:IN STD_LOGIC;

CO,SO:OUT STD_LOGIC);

第3章VHDL编程基础

END ENTITY H_ADDER;

--实体H_ADDER的结构体ART2的说明

ARCHITECTURE ART2 OF H_ADDER IS BEGIN

SO<=(A OR B) AND (A NAND B);

CO<=NOT (A NAND B);

END ARCHITECTURE ART2;

第3章VHDL编程基础

3) 全加器的逻辑描述

--IEEE库的使用说明

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

--实体F_ADDER的说明

ENTITY F_ADDER IS

PORT(AIN,BIN,CIN:IN STD_LOGIC;

COUT,SUM:OUT STD_LOGIC);END ENTITY F_ADDER;

--实体F_ADDER的结构体ART3的说明ARCHITECTURE ART3 OF F_ADDER IS

--元件调用声明

第3章VHDL编程基础

COMPONENT H_ADDER

PORT(A,B:IN STD_LOGIC;

CO,SO:OUT STD_LOGIC);

END COMPONENT;

COMPONENT OR2

PORT(A,B:IN STD_LOGIC;

C:OUT STD_LOGIC);

END COMPONENT;

SIGNAL D,E,F:STD_LOGIC;

--元件连接说明

BEGIN

U1:H_ADDER PORT MAP(A=>AIN,B=>BIN,CO=>D,SO=>E);

U2:H_ADDER PORT MAP(A=>E,B=>CIN,CO=>F,SO=>SUM);

U3:OR2 PORT MAP(A=>D,B=>F,C=>COUT);

END ARCHITECTURE ART3;

第3章VHDL编程基础

3. 说明及分析

(1) 整个设计包括三个设计实体,分别为OR2、H_ADDER 和F_ADDER,其中实体F_ADDER为顶层实体。三个设计实体均包括三个组成部分:库、程序包使用说明,实体说明和结构体说明。这三个设计实体既可以作为一个整体进行编译、综合与存档,也可以各自进行独立编译、独立综合与存档,或被其他的电路系统所调用。

本文来源:https://www.bwwdw.com/article/9xye.html

Top