组合逻辑电路设计设计05(第五章B-vhdl基本语素语法语句)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

数字电路与逻辑设计一、基于VHDL的组合逻辑分析数字电路与逻辑设计5-3-3基于VHDL的组合逻辑设计libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entitysswrisport(d:instd_logic_vector(3downto0);y:outstd_logic);endsswr;实例1某数字电路的VHDL程序代码如下,请分析其逻辑功能architecturebehaveofsswrisbeginy='0'whend=0andd5else'1'whend=5andd10else'Z';endbehave;LIBRARYieee;USEieee.std_logic_1164.all;ENTITYencoderISPORT(i:INBIT_VECTOR(7DOWNTO0);y:OUTBIT_VECTOR(2DOWNTO0));ENDencoder;ARCHITECTURErtlOFencoderISBEGINy=000wheni(0)='0'else001wheni(1)='0'else010wheni(2)='0'else011wheni(3)='0'else100wheni(4)='0'else101wheni(5)='0'else110wheni(6)='0'else111wheni(7)='0'else000;ENDrtl;二、VHDL硬件描述语言基础数字电路与逻辑设计5-3-3基于VHDL的组合逻辑设计一、VHDL概述VHDL是超高速集成电路硬件描述语言(VeryHighspeedIntegratedCircuitHardwareDescriptionLanguage)的英文缩写。语法和风格:(1)类似与现代高级编程语言,如C语言。(2)VHDL描述的是硬件,它包含许多硬件特有的结构。VHDL与电路图设计电路的方式不同:和电路图设计方式相比:(1)易于修改;(2)设计能力更强;(3)VHDL语言很方便:独立于器件设计;相同的程序代码可以用于不同厂家生产的器件。一、VHDL概述VHDL硬件描述语言VHDL概述VHDL数据类型与数据对象VHDL命令语句VHDL语言的程序结构LIBRARY(USE)-----库PACKAGE--------------程序包集合ENTITY-----------------实体ARCHITECTURE-----结构体CONFIGURATION----配置语句一、VHDL概述Library(库)是用于存放预先编译好的Package(程序包)。Package(程序包)中定义了基本的常数、数据类型、元件及子程序等。作用:声明在实体和结构体定义中将用到的数据类型、元件或子程序等。声明格式:Library库名;Use库名.PACKAGE名.All;一、VHDL概述(1)Library和Package部分libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;作用:ENTITY(实体)用于定义电路的外部接口,即I/O端口的类型和数量。定义格式:Entity实体名isPort(a:inbit;b:inbit;c:outbit);End实体名;(2)ENTITY定义区一、VHDL概述端口名数据类型端口模式端口模式(MODE)有以下几种类型:IN;OUT;INOUT;BUFFER端口模式可用下图说明:(黑框代表一个设计或模块)INOUTBUFFERINOUT一、VHDL概述(3)ARCHITECTURE定义区实体的实现。即说明电路执行什么动作或实现功能。定义格式:Architecture结构体名of实体名is[声明语句;(内部信号、变量、常数,元件,子程序声明)]Begin并行描述语句;End结构体名;一、VHDL概述标识符的定义原则:标识符由字母、数字和下划线组成,如ak_47;关于字母:(1)第一个字符必须是字母,即a666;(2)标识符不区分大小写,ab与AB等效;(3)标识符不能和关键字(专用标识符)相同,如Entity,is等。关于下划线(1)不允许有两个连续的下划线,a__b错误;(2)末尾不能是下划线,mname_错误;一、VHDL概述二、VHDL数据类型与数据对象在VHDL程序中,我们经常会遇到这样的语句:Port(X:instd_logic);SignalA:std_logic;VariableB:std_logic_vector(7downto0);ConstantC:integer;数据对象类型(专用标识符)数据类型(取值空间)(专用标识符)数据对象名称(自定义标识符)数据对象VHDL语言中的基本数据类型逻辑类型数值类型布尔代数(Boolean)位(Bit)标准逻辑(Std_Logic)整数(Integer)实数(Real)二、VHDL数据类型与数据对象逻辑数据类型(1)布尔代数(Boolean)型;标识关键字:BOOLEAN,取值空间:{FALSE,TRUE};(2)位(Bit);标识关键字:BIT,取值空间:{‘0’,‘1’}示例:Port(A:inbit);SignalB:bit;二、VHDL数据类型与数据对象标识关键字:Std_Logic;取值空间:{‘X’,-----ForcingUnknown‘0’,-----Forcing0‘1’,-----Forcing1‘Z’,-----HignImpedance‘W’,-----WeakUnknown‘L’,-----Weak0‘H’,-----Weak1‘U’,-----Undefined‘-’,------Don’tCare};二、VHDL数据类型与数据对象标准逻辑类型(9值逻辑)对数字逻辑电路的逻辑特性描述更加完整,真实,因此在VHDL程序中,对逻辑信号的定义通常采用标准逻辑类型.(3)标准逻辑(Std_logic);逻辑序列位序列(Bit_Vector)标准逻辑序列(Std_Logic_Vector)二、VHDL数据类型与数据对象Port(A:inStd_Logic_Vector(7downto0));Port(B:inBit_Vector(0to3));SignalC:Std_Logic_Vector(3downto0);序列范围的声明方式:To,Downto序列的声明二、VHDL数据类型与数据对象多位宽度的逻辑变量(如二进制数)用序列表示。逻辑变量的最高位与声明时的最左序号对应,以此类推。序列的分解与合成Port(A:INStd_Logic_Vector(3downto0);B:INStd_Logic_Vector(1downto0));SignalC:Std_Logic_Vector(0to1);SignalD:Std_Logic_Vector(0to3);将A逻辑变量的中间两路信号与C相连将A的最高一路、B的全部位和常量’1’与D相连二、VHDL数据类型与数据对象序列赋值原则:左右宽度相等。数值类型(1)整数标识关键字:Integer,取值空间:{-231~231-1}示例Port(A:inInteger);Port(C:inIntegerRange0to7);(限定整数取值范围的方法:Range…to…)SignalB:Integer;二、VHDL数据类型与数据对象(2)无符号数标识关键字:Unsigned,取值空间:{0~2n-1}与标准逻辑序列相似,声明时必须指明其位数。Port(A:inUnsigned(7downto0));SignalB:Unsigned(3downto0);注意:unsigned位数声明,只能使用downto。Port(A:inunsigned(0to7));×二、VHDL数据类型与数据对象VHDL中的运算符二、VHDL数据类型与数据对象算术运算符:+加-减*乘/除**乘方mod求模rem求余abs求绝对值逻辑运算:and逻辑与or逻辑或nand与非nor或非xor异或xnor同或not逻辑非关系运算符:=等于/=不等于小于=小于或等于大于=大于或等于注:其中‘=’操作符也用于表示信号的赋值操作。&连接符,将两个数据对象或矢量连接成维数更大的矢量,它可给代码书写带来方便。例如:vabc=a&b&c;如果a=‘1’,b=‘0’,c=‘1’,则vabc=“101”。二、VHDL数据类型与数据对象数据对象常量(Constant)信号(Signal)变量(Variable)(DataObjects)二、VHDL数据类型与数据对象(2)信号定义格式I.(端口)信号Port(端口信号名称:数据类型);例如:Port(A:instd_logic);II.内部信号Signal信号名称:数据类型[:=初始值];例如:SignalB:std_logic;二、VHDL数据类型与数据对象“信号”数据对象的物理意义信号代表电路元件的端口和内部的物理连线,因此信号的赋值有一定的延迟时间.端口信号代表电路的输入/输出(在实体中说明);内部信号代表电路中间信号或中间连接线路,其在元件之间起互连作用(在结构体中说明和使用)。信号赋值的语法格式为:信号名=表达式;例如:SignalS1:Std_logic_vector(3Downto0);S1=“0000”;libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;ENTITYMISISPORT(op1,op2:INUNSIGNED(3downto0);c0:INSTD_LOGIC;result:OUTUNSIGNED(3downto0);c5:OUTSTD_LOGIC);ENDMIS;实例2某数字电路的VHDL程序代码如下,试分析其逻辑功能ARCHITECTUREOPOFMISISsignalsum5,op1_5,op2_5,op_cin_5:unsigned(4downto0);BEGINop1_5='0'&op1;op2_5='0'&op2;op_cin_5=0000&c0;sum5=op1_5+op2_5+op_cin_5;result=sum5(3downto0);c5=sum5(4);ENDOP;三、VHDL命令语句并列语句顺序语句VHDL命令语句并列语句(1)直接赋值语句:=赋值运算符(2)条件赋值语句:When-Else(3)选择赋值语句:With-Select-When(4)Process(进程)语句(5)Block(块)语句(6)函数调用语句(7)Component(元件)例化语句(8)For-Generate语句(1)直接赋值语句直接赋值语句的格式:Signal_name=expression;示例:SignalA,B:std_logic_vector(7downto0);A=00000000;B=10000000;op_cin_5=0000&c0;sum5=op1_5+op2_5+op_cin_5;c5=sum5(4);(2)When-Else条件赋值语句例如:f=‘1’when(x1=x2)else‘0’whenx1x2else‘Z’;通用语法格式:Signal_name=expression1Whenlogic_expression1Elseexpression2Whenlogic_expression2Elseexpression3;Entityand2isPort(a:inbit;b:inbit;c:outbit);Endand2;ArchitectureNaofand2isBeginc=‘0’whe

1 / 105
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功