您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > VHDL(电子科技大学)课件
硬件描述语言VHDL1.1什么是VHDL(HDL)?VHDL:VHSIC(VeryHighSpeedIntegratedCircuit)HardwareDescriptionLanguage1概述VHDL设计简述器件或子系统ENTITYportsportsARCHITECTUREProcessProcessSequentialProcessCombinationalProcesscomponent2选1选择器的VHDL描述:nVHDL语言是由保留字编织起来的n该语言,对绝大多数的部分而言,是大小写不敏感的nVHDL语句由一个;结束nVHDL是空白不敏感的。便于阅读nVHDL中,注释由“--”开头到行结束而结束nVHDL模型可以被写成:–行为的–结构的–混合的1.7VHDL语言的一些基本特点2VHDL程序基本结构基本结构包括:库(Library)程序包(Package)实体(Entity)结构体(Architecture)配置(Configuration)库、程序包实体(Entity)结构体(Architecture)进程或其它并行结构配置(Configuration)结构单元说明nVHDL设计单元-库:用来调用电路模型所需共享资源数据–实体•用来定义电路模型的外观图,亦即器件的符号–构造体•用来定义电路模型的功能,亦即器件内部电路图–配置•用来联系构造体和实体–包•可以由VHDL电路模型引用的信息的汇集,亦即库•由包声明和包体两个部分构成2.2实体声明实体声明:定义系统的输入输出端口语法:ENTITYentity_nameISGenericDeclarations(类属表);PortDeclarations(端口表);ENDentity_name;(1076-1987version)ENDENTITYentity_name;(1076-1993version)1、类属声明类属声明:确定实体或组件中定义的局部常数。是一种端口界面常数。常以说明的形式放在实体或结构体前的说明部分。它的值可由实体外部提供。语法:Generic(常数名称:数据类型[:=缺省值]{;常数名称:数据类型[:=缺省值]}};例:entitymckisgeneric(width:integer:=16);port(add_bus:inbit_vector(width-1downto0);equal:outboolean);endmck;2、端口声明端口声明:确定系统输入输出端口的名称和类型。语法:其中,端口方式:in输入型,此端口为只读型。out输出型,此端口只能在实体内部对其赋值。inout(双向)输入输出型,既可读也可赋值。buffer(带反馈)缓冲型,与out相似,但可读。Port(端口名称{,端口名称}:端口方式数据类型;…端口名称{,端口名称}:端口方式数据类型);例:一个a,b输入,q输出的二与门的实体定义:ENTITYand2ISPORT(a,b:INstd_logic;q:OUTstd_logic);ENDand2;2.3结构体作用:定义系统(或模块)的行为、元件及内部的连接关系,即描述其功能。3种描述方式:行为描述:数据流描述:结构描述:说明n结构体的关键点–相当于:电路–描述模型的功能和时序–必须与一个ENTITY相关联–ENTITY可以有多个结构体结构体声明格式ARCHITECTURE结构体名OFentity名IS--构造体声明段(所列并非全部)signaltemp:integer:=1;--信号声明constantload:boolean:=true;--常数声明typestatesis(S1,S2,S3,S4);--类型声明--元件声明--子类型声明,等等BEGIN进程语句并行信号赋值元件例示语句END构造体名;(1076-1987版)ENDARCHITECTURE构造体_标识符;(1076-1993版)例:一个完整描述(3bit计数器)3bit计数器的等效描述(out与buffer的区别):四类语言要素:数据对象(DataObject)数据类型(DataType)操作数(Operands)操作符(Operator)3VHDL语言要素数据对象三种对象:常量(Constant)变量(Variable)信号(Signal)三种对象的物理含义:信号代表物理设计中的某一条硬件连接线;变量代表暂存某些值的载体;常量代表数字电路中的电源、地等常数。三种对象的特点及说明场合:信号:全局量,用于architecture、package、entitiy。变量:局部量,用于process、function、procedure。常量:全局量,可用于上面两种场合。1、常量声明常量声明:对某一个常量名赋予一个固定的值。格式:例:constantwidth:integer:=8;constantx:new_bit:=‘x’;constant常数名:数据类型:=表达式;2、变量声明格式:例:variablea,b:bit;variablecount:integerrange0to255:=10;注:a.变量的初值可用于仿真,但综合时被忽略。b.只能在进程、子程序中使用。c.变量赋值的数据传输是立即发生,不存在任何延时。variable变量名:数据类型:初始值;3、信号声明信号是电子电路内部硬件连接的接点。与“端口”概念相似。格式:例:signala,b:bit;注:a.综合时初值被忽略。b.可在结构体、实体、块中声明和使用信号,在进程和子程序中只能使用信号,不能声明信号。c.信号的赋值存在延时。signal信号名:数据类型:初始值;例:信号与变量的使用Entityexisport(…..);endex;architecturearch_exofexissignala,b:std_logic;beginprocess(a,b)variablec,d:std_logic;beginc:=a+b;d:=a-b;……endprocess;endarch_ex;3VHDL数据类型VHDL是一种“强”数据类型语言。1)整数(integer)integer表示所有正的和负的整数。硬件实现时,利用32位的位矢量来表示。可实现的整数范围为:-(231-1)to(231-1)2)std_logic类型由ieee库中的std_logic_1164程序包定义,为九值逻辑系统,如下:(‘U’,‘X’,‘0’,‘1’,‘Z’,‘W’,‘L’,‘H’,‘-’)3)std_logic_vector类型由std_logic构成的数组。4VHDL中的表达式表达式:由操作符和操作数构成,完成算术或逻辑运算。操作符VHDL操作符的分类:逻辑操作符、关系操作符加减操作符、一元操作符乘除操作符**abs杂散*/modrem乘除+-符号+-&加减=/===关系Notandornandnorxorxnor(1)逻辑运算符名/符号运算符类型VHDL运算符ENTITYoverloadISENDoverload;ARCHITECTUREexampleOFoverloadISBEGINadder_body:PROCESS(a,b)BEGINENDPROCESSadder_body;ENDexample;LIBRARYieee;USEieee.std_logic_1164.all;USEieee.std_logic_unsigned.all;PORT(a:INSTD_LOGIC_VECTOR(3downto0);b:INSTD_LOGIC_VECTOR(3downto0);sum:OUTSTD_LOGIC_VECTOR(4downto0));sum=a+b;在设计文件的开头部分包括这些语句允许对非内建的数据类型进行运算运算符重载的使用4VHDL的常用语句VHDL语句主要分为两大类:顺序(Sequential)描述语句并行(Concurrent)描述语句4.1VHDL顺序语句顺序语句:语句的执行顺序与书写顺序一致,只能出现在进程与子程序中。常用的顺序描述语句:赋值语句;if语句;case语句;4.1赋值语句赋值语句所表达的数据对象是:信号和变量语法格式变量:=表达式;--变量赋值信号=表达式;--信号赋值要求:表达式的值必须与对象的类型、宽度一致。例:一位赋值temp(7)=‘1’;ortemp(7):=‘1’;位片赋值temp(7downto4)=“1010”;一位:单引号(‘)多位:双引号(“)变量赋值与信号赋值的差异:1)赋值方式的不同:变量:=表达式;信号=表达式;2)硬件实现的功能不同:信号代表电路单元、功能模块间的互联,代表实际的硬件连线;变量代表电路单元内部的操作,代表暂存的临时数据。4.2if语句if语句是一种条件语句,按指定的顺序执行所设置的一个或多个条件的值。1、if语句的门闩控制if条件then顺序处理语句;endif;例:if(ena=‘1’)thenq=d;endif;综合后生成锁存器(latch)例:D触发器:2、if语句的二选择控制格式:用条件来选择两条不同程序执行的路径。if条件then顺序处理语句;else顺序处理语句;endif;此描述的典型电路是二选一电路:architecturertlofmux2isbeginprocess(a,b,sel)beginif(sel=‘1’)theny=a;elsey=b;endif;endprocess;endrtl;3、if语句的多选择控制if语句的多选择控制又称为if语句的嵌套。格式:if条件then顺序处理语句;elsif条件then顺序处理语句;┇elsif条件then顺序处理语句;else顺序处理语句;endif;典型电路是多选一电路。如四选一电路:if_then_elsif语句中隐含了优先级别的判断,最先出现的条件优先级最高,可用于设计具有优先级的电路。如8-3优先级编码器。libraryieee;useieee.std_logic_1164.all;entitycoderisport(input:instd_logic_vector(7downto0);output:outstd_logic_vector(2downto0));endcoder;architectureartofcoderisbeginprocess(input)beginifinput(7)=‘0’thenoutput=“000”;elsifinput(6)=‘0’thenoutput=“001”;elsifinput(5)=‘0’thenoutput=“010”;elsifinput(4)=‘0’thenoutput=“011”;elsifinput(3)=‘0’thenoutput=“100”;elsifinput(2)=‘0’thenoutput=“101”;elsifinput(1)=‘0’thenoutput=“110”’;elseoutput=“111”;endif;endprocess;endart;4.3case语句case语句根据满足的所有条件直接选择多项顺序语句中的一项执行。格式如下:注:除条件句中所有选择值能完全覆盖CASE语句中表达式的取值,否则最末一个条件句中的选择必须用“OTHERS”表示。case表达式iswhen选择值=顺序处理语句;when选择值=顺序处理语句;。。。whenothers=顺序处理语句;endcase;┇例:用case语句描述四选一电路5VHDL并行语句(Concurrent)Architecture并行语句在结构体中的执行是同步进行的,执行方式与书写顺序无关。并行语句内部运行有两种方式:并行执行方式(如快语句)和顺序执行方式(如进程语句)并行语句并行语句并行语句信号信号信号常用的并行描述语句有:并行信号赋值语句;进程(process)语句;元件例化语句;5.1进程(process)语句进程:表述了一种进行过程,描
本文标题:VHDL(电子科技大学)课件
链接地址:https://www.777doc.com/doc-3873008 .html