vhdl语言基础

合集下载

第4章VHDL语言基础

第4章VHDL语言基础
常数说明
结构体组成
结 构 体 说 明 结
数据类型说明 信号说明 例化元件说明 子程序说明
构 体 块语句 结 构 体 功 能 描 述 进程语句 信号赋值语句 子程序调用语句 元件例化语句
结构体描述风格
行为描述
描述该设计单元的功能,主要使用函数、过程和进程语
句,以算法形式描述数据的变换和传送 例4-4
Port (a,b: in std_logic_vector (3 downto 0);
Ci: in std_logic; Sum: out std_logic_vector (3 downto 0); Co: out std_logic); End add4;
4.1.3 结构体部分
结构体(ARCHITECTURE)
4.1.1 参数部分
库说明 存放已经编译的实体、结构体、程序包和配臵,用于 设计共享,是编程资源。 library <库名>; 程序包引用
使用USE子句指明要使用库中某一个设计单元。
use <库名>. <程序包名>.all; 【例4-2】 LIBRARY ieee; USE ieee.std_logic_1164.ALL;
结构体主要用来描述实体的内部结构,即 描述一个实体的功能。 描述方式 行为描述方式、数据流描述方式、结构描 述方式、混合描述方式
4.1.3 结构体部分
结构体格式
ARCHITECTURE 结构体名 OF 实体名 IS [结构体说明部分]; BEGIN 结构体描述部分; END 结构体名;

4.1.3 结构体部分
4.1 基本结构
模块结构
参数部分:库(LIBRARY)、程序包(USE); 实体(ENTITY):[类属]、端口(PORT);

第1章VHDL语言基础

第1章VHDL语言基础
(Bit)、位矢量型(Bit-vector)和整数型(Integer)等。 ➢ 在实用中,端口描述中的数据类型主要有两类:位(BIT)和
位矢量(BIT_VECTOR)。若端口定义为BIT,则其信号值 是一个1位的二进制数,取值只能是0或1;若端口定义为 BIT_VECTOR,则其信号值是一组二进制数。
➢ 在电路中,如果实体代表一个器件符号,则结构体描述了 这个符号的内部行为。当把这个符号例化成一个实际的器 件安装到电路上时,则需用配置语句为这个例化的器件指 定一个结构体(即指定一种实现方案),或由编译器自动选一 个结构体。
1. 结构体的一般语句格式 ARCHITECTURE 结构体名 OF 实体名 IS [说明语句;] BEGIN [功能描述语句;] END [ARCHITECTURE] [结构体名];
1.1 VHDL程序基本结构
一、VHDL程序设计约定 ➢ 语句结构描述中方括号“[ ]”内的内容为可选内容。 ➢ 对于VHDL的编译器和综合器来说,程序文字的大小写是不
加区分的。 ➢ 程序中的注释使用双横线“- -”。 ➢ 源程序命名与实体同名(MAX+plus Ⅱ要求)。
二、VHDL程序设计引例( 74LS00的设计 )
③ 信号赋值语句将设计实体内的处理结果向定义的信号或界面 端口进行赋值。
④ 子程序调用语句用于调用一个已设计好的子程序。
⑤ 元件例化语句对其他的设计实体作元件调用说明,并将此元 件的端口与其他的元件、信号或高层次实体的界面端口进行 连接。
A
A NAND2
Y
Y
B
B
(a)
A1
A NAND2
U1 Y
Y1
B1
B
A2
A NAND2

VHDL语言基础

VHDL语言基础

VHDL语⾔基础VHDL语⾔基础1 数据对象数据对象包括常量、变量、信号和⽂件四种类型1.1 常量常量是对某⼀常量名赋予⼀个固定的值,⽽且只能赋值⼀次。

通常赋值在程序开始前进⾏,该值的数据类型则在声明语句中指明--定义常量语句:--Constant 常数名:数据类型:=表达式Constant Vcc:real:=5.2; --指定Vcc的数据类型是实数,赋值为5.0VConstant bus_width:integer:=8; --定义总线宽度为常数8常量所赋的值应和定义的数据类型⼀致;常量在程序包、实体、构造体或进程的说明性区域必须加以说明。

定义程序包内的常量课提供所包含的任何实体、构造体所引⽤,定义在实体说明内的常量只能在该实体内可见,定义在进程说明内的常量只能在该实体内可见,定义在进程说明区域中的常量只能在该进程内可见1.2 变量变量只能在进程语句、函数语句和过程语句结构中使⽤。

变量的赋值是直接的,⾮预设的。

变量不能表达“连线”或储存原件,不能设置传输延迟量--定义变量语句--Variable 变量名:数据类型:=初始值;Variable count:integer 0 to 255:=20; --定义count整数变量,变化范围0-255,初始值为20--变量赋值语句--⽬标变量名:=表达式;x:=10.0; --实数变量赋值为10.0Y:=1.5+x; --运算表达式赋值,表达式必须与⽬标变量的数据类型相同A(3 to 6):=("1101") --位⽮量赋值1.3 信号信号表⽰逻辑门的输⼊或输出,类似于连接线,也可以表达存储元件的状态。

信号通常在构造体、程序包和实体中说明--信号定义语句--Signal 信号名:数据类型:=初始值Signal clock:bit:='0'; --定义时钟信号,初始值为0Signal count:BIT_VECTOR(3 DOWNTO 0); --定义count为4位位⽮量--信号赋值语句⽬标信号名<=表达式;x<=9;Z<=x after 5 ns; --在5ns后将x的值赋给z2 数据类型2.1 VHDL的预定义数据类型类型定义说明布尔(Boolean)TYPE BOOLEAN IS (FALSE,TRUE);取值为FALSE和TRUE,不是数值,不能运算,⼀般⽤于关系运算符位(Bit)TYPE BIT IS ('0','1');取值为0和1,⽤于逻辑运算位⽮量(Bit_Vector)TYPE BIT_VECTOR IS ARRAY(Natural range<>)OF BIT;基于Bit类型的数组,⽤于逻辑运算字符(Character)TYPE CHARACTER IS (NUL,SOH,STX,...,'','!',...);通常⽤''引号引起来,区分⼤⼩写字符串(String)VARIABLE string_var:STRING(1 TO 7);string_var:="A B C D";通常⽤""引起来,区分⼤⼩写整数(Integer)variable a:integer range -63 to 63取值范围 -(231 -1)~(231-1)要求⽤RANGE⼦句为所定义的数限定范围,以便根据范围决定此信号或变量的⼆进制位数实数(Real)-取值范围-1.0E38~+1.0E38,仅可⽤于仿真不可综合时间(Time)-物理量数据,完整的包括整数和单位两个部分,⽤⾄少⼀个空格隔开,仅可⽤于仿真不可综合时间(Time)-开,仅可⽤于仿真不可综合错误等级(SeverityLevel)TYPE severity_level IS (NOTE、WARNING、ERROR、FAILURE);表⽰系统状态,仅可⽤于仿真不可⽤于综合类型定义说明2.2 IEEE预定义标准逻辑位与⽮量标准逻辑类型对数字逻辑电路的逻辑特性描述更加完整、真实,因此在VHDL程序中,对逻辑信号的定义通常采⽤标准逻辑类型标准逻辑位(Std_Logic)符号说明'U'Undefined(未初始化)'X'Forcing Unknown(强未知)'0'Forcing 0(强0)'1'Forcing 1(强1)'Z'High Impedance(⾼阻)'W'Weak Unknown(弱未知)'L'Weak 0(弱0)'H'Weak 1(弱1)'-'Don't Care(忽略)标准逻辑位⽮量(Std_Logic_Vector)基于Std_Logic类型的数组使⽤Std_Logic和Std_Logic_Vector要调⽤IEEE库中的Std_Logic_1164程序包;就综合⽽⾔,能够在数字器件中实现的是“-、0、1、Z”四种状态。

vhdl基础及经典实例开发pdf

vhdl基础及经典实例开发pdf

vhdl基础及经典实例开发pdf VHDL是一种硬件描述语言,它用于描述和设计数字电路。

VHDL的全称是Very High Speed Integrated Circuit Hardware Description Language,它源于20世纪80年代的美国国防部,是一种为了描述硬件而设计的开发语言。

VHDL的基础知识包括语法、数据类型和结构体。

语法方面,VHDL 有自己的语法规则和词法规则,要正确地描述一个硬件电路,我们需要熟悉这些规则。

数据类型方面,VHDL内置了基本的数据类型,如bit、bit vector、integer等,这些数据类型可以用来描述电路的输入输出和中间信号。

结构体方面,VHDL支持设计者自定义类型,比如用record来描述一个复杂的数据结构。

在VHDL开发中,经典实例是不可或缺的。

经典实例可以帮助我们更好地理解VHDL的使用方法和特点,也可以让我们更好地掌握VHDL的编程技巧。

下面是一些经典实例的介绍。

1.二进制加法器(Binary Adder):二进制加法器可以实现两个二进制数的加法运算。

它是数字电路中常用的基本模块,很多其他的电路都需要用到它。

通过构建一个二进制加法器的实例,我们可以学习到VHDL的语法规则、数据类型的使用以及模块化设计的思想。

2.时钟分频器(Clock Divider):时钟分频器可以将输入的时钟信号分频为较低频率的信号。

在数字电路中,时钟分频器是非常常见的一个模块,它可以用于控制其他电路的时序。

通过构建一个时钟分频器的实例,我们可以学习到VHDL的状态机设计、时序逻辑的实现以及对时钟信号的处理。

3.多路选择器(Multiplexer):多路选择器可以根据选择信号选择其中的一个输入信号输出。

在数字电路中,多路选择器可以用于实现多个输入的选择和切换。

通过构建一个多路选择器的实例,我们可以学习到VHDL的条件语句的使用、信号赋值的方法以及对多个输入信号的处理。

第3章 VHDL基础

第3章  VHDL基础

3.2 时序电路描述
图3-5 例3-7的电路图 的电路图
3.2 时序电路描述
【例3-8】 】 ... IF a1 > b1 THEN q1 <= '1' ; ELSE q1 <= '0' ; END IF; ...
图3-6 例3-8的电路图 的电路图
3.2.3 时序电路的不同表述
3.2 时序电路描述
y <= d OR
e
3.1 VHDL 基本语法
组合电路描述 3.1.1 组合电路描述
【例3-3】 】 ENTITY mux21a IS PORT ( a, b, s: IN BIT; y : OUT BIT ); END ENTITY mux21a; ARCHITECTURE one OF mux21a IS BEGIN PROCESS (a,b,s) BEGIN IF s = '0' THEN y <= a ; END IF; END PROCESS; END ARCHITECTURE one ;
or_gate, Or_gate, Qr_Gate, OR_GATE. 不合法的: 不合法的: 2illegal_name, _illegal_name, illegal#name, Illegal_name_
3.1.2 扩展标识符
扩展标识符(Extended Identifier)是VHDL’93版扩展的 扩展标识符 是 版扩展的 书写规则和识别都有新规定,扩展标识符具有以下特性: 书写规则和识别都有新规定,扩展标识符具有以下特性: (1)扩展标识符用反斜杠来界定。 扩展标识符用反斜杠来界定。 扩展标识符用反斜杠来界定 例如: 是合法的。 例如:\invalid\,\controller_decode\是合法的。 , 是合法的 (2)允许包含图形符号、空格符,但没有格式的作用。 允许包含图形符号、 允许包含图形符号 空格符,但没有格式的作用。 例如: 是合法的。 例如:\$5000&T\,\mode A and B\是合法的。 & , 是合法的 (3) 2个反斜杠之问的字可以和保留字相同。 个反斜杠之问的字可以和保留字相同。 个反斜杠之问的字可以和保留字相同

第4章 VHDL语言基础

第4章 VHDL语言基础

设计实体
结构体1
结构体2
结构体3
。 。 。
结构体n
FPGA-CPLD原理及应用
结构体的语法
第4章 VHDL语言基础
architecture 结构体名称 of 实体名称 is [说明语句] ;
begin [(功能描述)语句];
end [architecture] 结构体名称;
注:同一实体的结构体不能同名。定义语句中的常 数、信号不能与实体中的端口同名。
equal: out std_logic ); end eqcomp4;
A[3..0] B[3..0]
equal
FPGA-CPLD原理及应用
端口声明
第4章 VHDL语言基础
确定输入、输出端口的数目和类型。
Port (端口名称{,端口名称}:端口模式
… 端口名称{,端口名称}:端口模式 );
数据类型; 数据类型
FPGA-CPLD原理及应用
VHDL组成
第4章 VHDL语言基础
库 包 实体
结构体
eqcomp4.vhd
--eqcomp4 is a four bit equality comparator
Library IEEE; use IEEE.std_logic_1164.all;
entity eqcomp4 is port(a, b:in std_logic_vector(3 downto 0);
FPGA-CPLD原理及应用
第4章 VHDL语言基础
计数器等效描述(out与buffer的区别)
FPGA-CPLD原理及应用
3、数据类型
第4章 VHDL语言基础
指端口上流动的数据表达格式,为预先定好的数据类型,如: bit、bit_vector、integer、std_logic、std_logic_vector 等。 例: entity m81 is port (a: in std_logic_vector(7 downto 0); sel: in std_logic_vector(2 downto 0); b:out bit ); end entity m81;

EDA基础VHDL

EDA基础VHDL
ARCHITECTURE one OF and2 IS BEGIN y <= a and b END ARCHITECTURE one ; 为并行语句,执行顺序与
其书写顺序无关,在实际 电路中所有并行语句功能 同时实现。
3. 库、程序包和配置 (1) 库
功能: 存储和放置设计单元(元件、程序包等)。
[例1.4.14] WHILE…LOOP应用举例
abcd: WHILE (i<10) LOOP sun:=i+sum; i=i+1; END LOOP abcd;
(6)NEXT语句 满足条件时中止 格式: NEXT [WHEN 条件]; 当前循环,开始 下一次循环。 [例1.4.15] NEXT语句举例
函数名(实际参数表);
函数的参数只能是方式为IN的输入信号,函数 只能有一个返回值。 [例1.4.17] 比较器函数形式的程序设计实例
用并行语句形式描述设计 单元功能
并行语句类型
进程语句(PROCESS) 块描述语句(BLOCK) 信号赋值语句 子程序调用语句 元件例化语句
ARCHITECTURE 结构体名 OF 实体名 IS [结构体说明语句] BEGIN [功能描述语句] END 结构体名;
[例1.4.2] 2 输入与门的结构体描述。
常用资源库 含IEEE认可和某些公司提供的如: VHDL标准库 STD库 STD_LOGIC_1164 程序包 存放:STANDARD的程序集合 STD_LOGIC_ARITH算术运算包 VHDL库 ASIC库 资源库 集合定义了多种常用的数据类型 存放:和各种逻辑门一一对应的 实体 WORK库 当前作业库 存放:当前设计项目生成的全部文 用户自定义库 资源库 件目录 存放:用户自己创建定义的非 库说明语句格式: 标准程序包集合和实体。

第四讲VHDL语言基础知识

第四讲VHDL语言基础知识
•文件(FILES)是传输大量数据的客体,包含一些专门数据 类型的数值。
对象说明的一般格式是: <gt; <信号种类>: =<表达式>; 说明 标识符 <子类型说明>是类型名或类型名加限制条件 <信号种类>为BUS或REGISTER,该项为任选项 :=<表达式>为对象赋初值
3、配置
格式
CONFIGURATION END 配置名;
配置名 OF 实体名 [说明语句];
IS
说明
这种配置用于选择不包含块(BLOCK)和元 件(COMPONENTS)的构造体。在配置语句中只包 含有实体所选配的构造体名,其他什么也没有。
4、包集合
格式
PACKAGE
说明
包集合名 IS [说明语句]; END 包集合名; PACKAGE BODY 包集合名 [说明语句]; END BODY;
VHDL源文件基本格式
LIBRARY 库名; USE 库名.程序包名.; ENTITY 实体名 IS PORT(……); END 实体名; --库(声明库) --程序包(引用库) --实体
ARCHITECTURE 结构体名 OF 实体名--结构体 (………) END 结构体名;
VHDL源程序基本格式举例:
端口模式
IN OUT INOUT BUFFER 输入,信号只能自端口到实体 输出,信号只能自实体到端口 双向,信号既可输入又可输出 缓冲,信号自实体输出,又有 内部反馈
Entity
Out与Buffer的区别
Entity test1 is port(a: in std_logic; b,c: out std_logic ); end test1; Entity test2 is port(a: in std_logic; b : buffer std_logic; c: out std_logic ); end test2; architecture a of test2 is begin b <= not(a); c <= b; end a;

vhdl 基础语法

vhdl 基础语法

vhdl 基础语法VHDL(Very High Speed Integrated Circuit Hardware Description Language)是一种硬件描述语言,用于描述数字系统的行为和结构。

以下是VHDL的基础语法:1. 实体(Entity):用于描述模块的接口和端口。

实体的语法如下:```entity entity_name isport (-- 输入端口input_name : in data_type;-- 输出端口output_name : out data_type);end entity_name;```2. 架构(Architecture):用于描述模块的内部行为和逻辑。

架构的语法如下:```architecture architecture_name of entity_name issignal signal_name : data_type;begin-- 逻辑实现end architecture_name;```3. 信号(Signal):用于在模块内部传递数据。

信号的语法如下:```signal signal_name : data_type;```4. 过程(Process):用于描述模块的并发行为。

过程的语法如下:```process (sensitivity_list)begin-- 逻辑实现end process;```5. 语句(Statement):用于描述模块的具体操作。

常见的语句包括:- 赋值语句:```signal_name <= value;```- 选择语句:```case expression iswhen value1 =>-- 逻辑实现1when value2 =>-- 逻辑实现2when others =>-- 默认逻辑实现end case;```- 循环语句:```for i in range loop-- 逻辑实现end loop;```这些是VHDL的基础语法,可以用于描述数字系统的行为和结构。

VHDL语言入门教程

VHDL语言入门教程

VHDL语言入门教程VHDL是一种硬件描述语言,主要用于设计数字电路和系统。

它是由美国国防部门于1980年代初开发的,目的是为了改进电子设计自动化(EDA)工具的开发效率和设计文档的可重复性。

VHDL广泛应用于数字信号处理(DSP)、嵌入式系统、通信系统和各种ASIC(专用集成电路)和FPGA(现场可编程门阵列)的设计。

本教程将介绍VHDL的基础知识,包括语法、数据类型和常见的建模技术。

一、VHDL的语法VHDL的语法由标识符、关键字、运算符和分隔符组成。

其中,标识符用于给变量、信号和实体命名,关键字用于定义语言特定的操作,运算符用于数学和逻辑运算,分隔符用于分隔语句。

VHDL中的代码以一个实体(entity)的声明开始,然后是体(architecture)的声明,最后是信号声明和进程(process)的描述。

以下是一个简单的例子:```vhdlentity AND_gate isportA, B: in std_logic;C: out std_logicend entity AND_gate;architecture Behavior of AND_gate isbeginC <= A and B;end architecture Behavior;```在这个例子中,我们声明了一个名为AND_gate的实体,它有两个输入信号A和B,一个输出信号C。

然后我们定义了一个名为Behavior的体,它描述了AND门的行为:C等于A与B的逻辑与运算结果。

二、VHDL的数据类型VHDL支持许多数据类型,包括标量类型、数据类型、自定义类型和引用类型。

标量类型包括bit、bit_vector、integer、real、std_logic和std_ulogic等。

其中,bit_vector是一组连续的位,std_logic和std_ulogic用于表示单个信号。

数据类型是由标量类型和数组类型组成的。

数组类型可以是一维、二维或更高维的,用于存储多个数据。

VHDL语法基础

VHDL语法基础
PROT(A,B:IN STD_LOGIC; CO,SO:OUT STD_LOGIC);
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;
(5) VHDL对设计的描述具有相对独立性。设计者可以不 懂硬件的结构,也不必管最终设计的目标器件是什么,而进行 独立的设计。正因为VHDL的硬件描述与具体的工艺技术和硬 件结构无关,所以VHDL设计程序的硬件实现目标器件有广阔 的选择范围,其中包括各种系列的CPLD、FPGA及各种门阵列 器件。
END ARCHITECTURE ART3;
3. 说明及分析
(1) 整 个 设 计 包 括 三 个 设 计 实 体 , 分 别 为 OR2 、 H_ADDER和F_ADDER,其中实体F_ADDER为顶层实体。 三个设计实体均包括三个组成部分:库、程序包使用说明,实 体说明和结构体说明。这三个设计实体既可以作为一个整体进 行编译、综合与存档,也可以各自进行独立编译、独立综合与 存档,或被其他的电路系统所调用。
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);

(完整word版)vhdl基本语法

(完整word版)vhdl基本语法

VHDL 基础语法篇——VHDLVHDL硬件描述语言1。

1 VHDL概述1。

1。

1 VHDL的特点VHDL语言作为一种标准的硬件描述语言,具有结构严谨、描述能力强的特点,由于VHDL语言来源于C、Fortran等计算机高级语言,在VHDL语言中保留了部分高级语言的原语句,如if语句、子程序和函数等,便于阅读和应用。

具体特点如下:1。

支持从系统级到门级电路的描述,既支持自底向上(bottom-up)的设计也支持从顶向下(top—down)的设计,同时也支持结构、行为和数据流三种形式的混合描述。

2. VHDL的设计单元的基本组成部分是实体(entity)和结构体(architecture),实体包含设计系统单元的输入和输出端口信息,结构体描述设计单元的组成和行为,便于各模块之间数据传送.利用单元(componet)、块(block)、过程(procure)和函数(function)等语句,用结构化层次化的描述方法,使复杂电路的设计更加简便。

采用包的概念,便于标准设计文档资料的保存和广泛使用。

3. VHDL语言有常数、信号和变量三种数据对象,每一个数据对象都要指定数据类型,VHDL的数据类型丰富,有数值数据类型和逻辑数据类型,有位型和位向量型。

既支持预定义的数据类型,又支持自定义的数据类型,其定义的数据类型具有明确的物理意义,VHDL是强类型语言。

4. 数字系统有组合电路和时序电路,时序电路又分为同步和异步,电路的动作行为有并行和串行动作,VHDL语言常用语句分为并行语句和顺序语句,完全能够描述复杂的电路结构和行为状态。

1.1.2 VHDL语言的基本结构VHDL语言是数字电路的硬件描述语言,在语句结构上吸取了Fortran和C等计算机高级语言的语句,如IF语句、循环语句、函数和子程序等,只要具备高级语言的编程技能和数字逻辑电路的设计基础,就可以在较短的时间内学会VHDL语言。

但是VHDL毕竟是一种描述数字电路的工业标准语言,该种语言的标识符号、数据类型、数据对象以及描述各种电路的语句形式和程序结构等方面具有特殊的规定,如果一开始就介绍它的语法规定,会使初学者感到枯燥无味,不得要领.较好的办法是选取几个具有代表性的VHDL程序实例,先介绍整体的程序结构,再逐步介绍程序中的语法概念。

VHDL语言程序基础992014

VHDL语言程序基础992014
句有相同的选择条件。可以用others语句表示相同操作的 选择条件。 ④ when 语句书写顺序可以互换,但是others语句必须放在最 后一个。
14
➢ 选择语句举例——描述4选1电路
If语句实现
Process(input,sel ) Begin
If(sel=“00”)then y<=input(0); elsif(sel=“01”)then y<=input(1); elsif(sel=“10”)then y<=input(2); else y<=input(3); End if; End process;
✓变量代表电路单元内部的操作,代表暂存的临时数据。
② 赋值行为的不同
✓信号赋值延迟更新数值,用于时序电路; ✓变量赋值立即更新数值,用于组合电路。
③ 信号的多次赋值
✓一个进程:最后一次赋值有效 ✓ 多个进程:一般编译器无法编译
6
信号的多次赋值
只有最后一个值有效
architecture rtl of ex is signal a : std_logic;
12
CASE语句
CASE语句根据满足的条件直接选择多项顺序语句中的一项执行.
多条件选择值的一般表达式为: 选择值 [ |选择值 ]
选择值可以有四种不同的表达方式: 单个普通数值,如6。 数值选择范围,如(2 TO 4),表示取值为2、3或4. 并列数值,如35,表示取值为3或者5。 混合方式,以上三种方式的混合。
begin process(…) begin a <= b; … a <= c; end process;
end rtl;
许多编译器无法编译
architecture rtl of ex is signal a : std_logic;

第3章 VHDL语言基础

第3章 VHDL语言基础
超高速集成电路硬件描述语言
Verilog:Cadence公司开发
ABEL(Advanced Boolean Hardware Description, 高级布尔方程语言) :Lattice公司 AHDL(Analog模拟硬件描述语言): Altera公司
第二节
VHDL的基本结构
通过与非门的逻辑描述,阐述VHDL的基本结构
第三节 VHDL结构体的子结构
4位计数器
module count4(out,reset,clk);
output[3:0] out;
input reset,clk; reg[3:0] out; always @(posedge clk) begin if(reset) out<=0; //同步复位 else end endmodule out<=out+1; //计数
Nand_2实体说明

结构体
BEGIN y <= NOT (a AND b);
END rtl;
1. 库说明
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;
语法: library 库名
use 库名.程序包名.项目名:
库是用VHDL语言编写的源程序及其通过编译 的数据集合,它由各种程序包组成,程序包提供了 各种数据类型、函数的定义以及各种类型转换函数 及运算等,以供给设计者使用。
库序项库是用vhdl语言编写的源程序及其通过编译的数据集合它由各种程序包组成程序包提供了各种数据类型函数的定义以及各种类型转换函数及运算等以供给设计者使用
第三章 硬件描述语言HDL Hardware Description Language

新的硬件描述语言VHDL编程基础课件

新的硬件描述语言VHDL编程基础课件

(1)常量声明
常量是全局量,在结构描述、程序包说明、 实体说明、过程说明、函数调用说明和进程说 明中使用。 例: constant WIDTH :INTEGER := 8; constant X :NEW_BIT := ′X′;
(2)变量声明
定义了给定类型的变量名称。 例:
variable A,B :BIT; variable INIT :NEW_BIT
信号为器件内部节点信号,数据的进出不像端口 信号那样受限制,不必定义其端口模式。
定义信号的目的是为了在设计电路时使用该信号。 用“<=”来给信号赋值
例:
signal A,B :BIT;
signal INIT :INTEGE: = -1
信号赋值
SIGNAL temp : Std_Logic_Vector (7
支持大规模设计的分解和已有设计的再利用功能。
VHDL的优点
5. 对设计的描述具有相对独立性,与硬件的结构无关 6.可以利用EDA工具进行逻辑综合和优化,并自动将
VHDL描述转化为门级网表。 7. 具有可移植性,可以在不同的设计环境和系统平台
中使用。 8. 具有良好的可读性。
三、VHDL与高级语言的区别
INOUT(双向端口) 、 BUFFER(输出并向内部反 馈)
数据类型:VHDL作为一种强类型语言,必须对数据对 象(常量、变量、信号)规定取值范围,即对传输或 存储数据的类型作明确的界定。
实体举例
ENTITY black_box IS Generic ( constant width : integer := 7;);
Structure描述
architecture one of mux21 is signal d,e:bit; begin d<=a and (not)s; e<=b and s; y<=d or e;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第1章VHDL语言基础1.1 概述硬件描述语言(hardware description language,HDL)是电子系统硬件行为描述、结构描述、数据流描述的语言。

目前,利用硬件描述语言可以进行数字电子系统的设计。

随着研究的深入,利用硬件描述语言进行模拟电子系统设计或混合电子系统设计也正在探索中。

国外硬件描述语言种类很多,有的从Pascal发展而来,也有一些从C语言发展而来。

有些HDL成为IEEE标准,但大部分是企业标准。

VHDL来源于美国军方,其他的硬件描述语言则多来源于民间公司。

可谓百家争鸣,百花齐放。

这些不同的语言传播到国内,同样也引起了不同的影响。

在我国比较有影响的有两种硬件描述语言:VHDL语言和Verilog HDL语言。

这两种语言已成为IEEE标准语言。

电子设计自动化(electronic design automation,EDA)技术的理论基础、设计工具、设计器件应是这样的关系:设计师用硬件描述语言HDL描绘出硬件的结构或硬件的行为,再用设计工具将这些描述综合映射成与半导体工艺有关的硬件配置文件,半导体器件FPGA 则是这些硬件配置文件的载体。

当这些FPGA器件加载、配置上不同的文件时,这个器件便具有了相应的功能。

在这一系列的设计、综合、仿真、验证、配置的过程中,现代电子设计理论和现代电子设计方法贯穿于其中。

以HDL语言表达设计意图,以FPGA作为硬件实现载体,以计算机为设计开发工具,以EDA软件为开发环境的现代电子设计方法日趋成熟。

在这里,笔者认为,要振兴我国电子产业,需要各相关专业的人士共同努力。

HDL语言的语法语义学研究与半导体工艺相关联的编译映射关系的研究,深亚微米半导体工艺与EDA设计工具的仿真、验证及方法的研究,这需要半导体专家和操作系统专家共同努力,以便能开发出更加先进的EDA工具软件。

软件、硬件协同开发缩短了电子设计周期,加速了电子产品更新换代的步伐。

毫不夸张地说,EDA工程是电子产业的心脏起搏器,是电子产业飞速发展的原动力。

本书从应用的角度向国内广大读者介绍VHDL编程技术,让大家掌握HDL编程,了解FPGA结构,学会使用EDA工具,为集成电路前端设计打下基础。

1.1.1 硬件描述语言的诞生VHDL语言的英文全名是Very High Speed Integrated Circuit Hardware Description Language,即超高速集成电路硬件描述语言。

HDL发展的技术源头是:在HDL形成发展之前,已有了许多程序设计语言,如汇编、C、Pascal、Fortran、Prolog等。

这些语言运行VHDL程序设计教程·4·在不同硬件平台和不同的操作环境中,它们适合于描述过程和算法,不适合作硬件描述。

CAD的出现,使人们可以利用计算机进行建筑、服装等行业的辅助设计,电子辅助设计也同步发展起来。

在从CAD工具到EDA工具的进化过程中,电子设计工具的人机界面能力越来越高。

在利用EDA工具进行电子设计时,逻辑图、分立电子原件作为整个越来越复杂的电子系统的设计已不适应。

任何一种EDA工具,都需要一种硬件描述语言来作为EDA 工具的工作语言。

这些众多的EDA工具软件开发者,各自推出了自己的HDL语言。

HDL发展的社会根源是:美国国防部电子系统项目有众多的承包公司,由于各公司技术路线不一致,许多产品不兼容,他们使用各自的设计语言,使得甲公司的设计不能被乙公司重复利用,造成了信息交换困难和维护困难。

美国政府为了降低开发费用,避免重复设计,国防部为他们的超高速集成电路提供了一种硬件描述语言,以期望VHDL功能强大、严格、可读性好。

政府要求各公司的合同都用它来描述,以避免产生歧义。

由政府牵头,VHDL工作小组于1981年6月成立,提出了一个满足电子设计各种要求的能够作为工业标准的HDL。

1983年第3季度,由IBM公司、TI公司、Intermetrics公司签约,组成开发小组,工作任务是提出语言版本和开发软件环境。

1986年IEEE标准化组织开始工作,讨论VHDL语言标准,历时一年有余,于1987年12月通过标准审查,并宣布实施,即IEEE STD 1076—1987[LRM87]。

1993年VHDL重新修订,形成了新的标准,即IEEE STD 1076—1993[LRM93]。

从此以后,美国国防部实施新的技术标准,要求电子系统开发商的合同文件一律采用VHDL文档。

即第一个官方VHDL标准得到推广、实施和普及。

1.1.2 HDL语言的种类HDL语言在国外有上百种。

高等学校、科研单位、EDA公司都有自己的HDL语言。

现选择较有影响的作简要介绍。

Candence公司是一家著名的EDA公司,财力雄厚。

该公司的Verilog HDL于1983年由Gate Way Design Automatic公司的Phil Moorby首创。

他在1984—1985年间成功设计了Verilog-XL仿真器,于1986年提出了快速门级仿真的XL算法,使Verilog HDL语言变得更加丰富和完善,从而受到了EDA工具设计公司的青睐。

1989年Candence公司购买了GDA公司,Verilog HDL语言从此变为Candence公司的“私有财产”,成为Candence公司的EDA设计环境上的硬件描述语言。

经过Candence公司的努力,V erilog HDL于1995年成为IEEE标准,也是民间公司第一个硬件描述语言标准,即V erilog HDL 1364—1995。

由于Verilog HDL语言从C语言发展来,所以有C语言基础的设计人员能够较快入门。

ALTERA公司是一家半导体器件公司,其CPLD器件在世界市场上占主导地位。

这家公司不仅是硬件生产厂商,也是EDA工具开发商,它的EDA工具MAX+plus II、Quartus 由于人机界面友好、易于使用、性能优良,而受到FPGA、CPLD器件设计人员的欢迎。

运行在MAX+plus II环境下的VHDL语言具有C语言设计风格,好学好用,因此被众多用户使用。

HDL语言来自不同地方,由不同语言演变而来,为了各平台之间相互转换,又推出了第1章VHDL语言基础·5·EDIF(Electronic Design Interchange Format)。

它不是一种语言,而是用于不同数据格式的EDA工具之间的交换设计数据。

1.1.3 VHDL语言上机操作条件VHDL语言描述能力强,覆盖面广,抽象能力强,所以用VHDL语言作为硬件模型建模很合适。

设计者的原始描述是非常简练的硬件描述,经过EDA工具综合处理,最终生成付诸生产的电路描述或版图参数描述的工艺文件。

整个过程通过EDA工具自动完成,大大减轻了设计人员的工作强度,提高了设计质量,减少了出错机会。

VHDL语言可读性好。

VHDL既能被人容易读懂,又能被计算机识别,作为技术人员编写的源文件,它既是计算机程序、技术文档和技术人员硬件信息交流的文件,又是签约双方的合同文件。

VHDL语言中的设计实体(design entity)、程序包(package)、设计库(library),为设计人员重复利用他人的设计提供了技术手段。

重复利用他人的IP模块和软核(soft core)是VHDL的特色,许多设计不必个个都从头再来,而是只要在更高层次上把IP模块利用起来,就能达到事半功倍的效果。

VHDL语言可以在多种EDA工具设计环境中运行。

硬件平台是工作站或高档微机。

高档微机的配置应该具有:高分彩显17英寸以上,分辨率1024×768或更高硬盘20GB以上内存512MB以上CPU Intel兼容CPU光驱8倍速以上操作系统Windows XX开发工具MAX+plus II 或Quartus IICandence、Menter、ALTERA等公司的EDA工具均支持VHDL语言环境。

关于VHDL 语言的上机实验,在第7章中将作详细介绍。

1.2 VHDL程序的实体VHDL程序包含实体(entity)、结构体(architecture)、配置(configuration)、包集合(package)、库(library)5个部分。

简单的实体是由实体和结构体两部分组成的。

实体用于描述设计系统的外部接口信号,结构体用于描述系统的行为、系统数据的流程或者系统组织结构形式。

设计实体是VHDL 程序的基本单元,是电子系统的抽象。

简单的实体可以是一个与门电路(AND Gate),复杂的实体可以是一个微处理器或一个数字电子系统。

实体由实体说明和结构体说明两部分组成。

例1-1是计数器程序结构模板。

由这个抽象的程序可以归纳出VHDL程序的基本结构。

VHDL 程序设计教程·6·【例1-1】 计数器程序结构模板LIBRARY IEEE;USE ieee.std_logic_1164.all;_data_input_name : IN INTEGER RANGE 0 TO _count_value; SIGNAL_clk_input_name : IN STD_LOGIC;SIGNAL_clm_input_name : IN STD_LOGIC;SIGNAL_ena_input_name : IN STD_LOGIC; SIGNAL_ld_input_name : IN STD_LOGIC;SIGNAL_count_output_name : OUT INTEGER RANGE 0 TO _Count_value;END entity_name;: INTEGER RANGE 0 TO _count_value;敏感变量表_count_signal_name <= 0;ELSEELSE _count_signal_name <= _count_signal_name; END IF; END IF; END IF;END counter;由例1-1可以看出,VHDL 程序由两部分组成:第1部分为实体说明,第2部分为结构体。

VHDL 程序结构更抽象、更基本、更简练的表示如图1.1所示。

设计实体用关键字ENTITY 来标识,结构体由ARCHITECTURE 来标识。

系统设计中的实体提供该设计系统的公共信息,结构体定义了各个模块内的操作特性。

一个设计实体第1章VHDL语言基础·7·必须包含一个结构体或含有多个结构体。

一个电子系统的设计模型如图1.2所示。

结构体间通信图1.1 VHDL程序基础图1.2 VHDL程序设计系统模型1.2.1 实体的组成实体由实体名、类型表、端口表、实体说明部分和实体语句部分组成。

相关文档
最新文档