《数字逻辑新编》PPT课件_第1页
《数字逻辑新编》PPT课件_第2页
《数字逻辑新编》PPT课件_第3页
《数字逻辑新编》PPT课件_第4页
《数字逻辑新编》PPT课件_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1/50,教学内容数据对象、数据类型、运算符和表达式常用顺序语句、并行语句VHDL常用的库、程序包教学重点数据对象、数据类型、运算符和表达式常用顺序语句、并行语句,本节教学内容及重点,2/50,VHDL标识符基本标识符由字母、数字和下划线组成第一个字符必须是字母最后一个字符不能是下划线不允许连续2个下划线保留字(关键字)不能用于标识符大小写等效,3.3数据对象、数据类型、运算符和表达式,3/50,VHDL标识符有效的标识符A_h_1show_new_stateCOUNTER_Adecode3_8counter非法的标识符A%h_1show-new-stateCOUNTER_T_13_8decoderISDOWNTO,3.3数据对象、数据类型、运算符和表达式,4/50,3.3.1数据对象,VHDL语言数据对象常量(CONSTANT)变量(VARIABLE)信号(SIGNAL),5/50,常量(Constant)固定值,不能在程序中被改变增强程序的可读性,便于修改程序在综合后,连接到电源和地可在Library、Entity、Architecture、Process中进行定义,其有效范围也相应限定常数的描述格式:CONSTANT常量名:数据类型:=表达式如:Constantdata_bus_width:integer:=8;,3.3.1数据对象,6/50,变量(Variable)临时数据,没有物理意义只能在Process和Function中定义,并只在其内部有效要使其全局有效,先转换为Signal一旦赋值,立即生效变量的描述格式:VARIABLE变量名:数据类型:=表达式如:variableresult:std_logic:=0;,3.3.1数据对象,7/50,信号(Signals)代表连线,Port也是一种信号没有方向性,可给它赋值,也可当作输入在Entity中和Architecture中定义设定的初始值只是在仿真开始设定了一个起始值,在综合时没有用。信号的描述格式:SIGNAL信号名:数据类型:=初始值signalcount:bit_vector(3downto0):=“0011”;,3.3.1数据对象,8/50,信号赋值语句格式目标信号名=表达式;q=count;irq=0;aa=dx1;bb=dx2;s1=s2AFTER10ns,3.3.1数据对象,9/50,信号与变量的区别,信号赋值可以有延迟时间,变量赋值无时间延迟信号除当前值外还有许多相关值,如历史信息等,变量只有当前值进程对信号敏感,对变量不敏感信号可以是多个进程的全局信号,但变量只在定义它之后的顺序域可见信号可以看作硬件的一根连线,但变量无此对应关系赋值的形式不同;声明的位置不同,10/50,信号与变量的区别,architecturertlofstartissignalcount:integerrange0to7;beginprocess(clk)beginif(clkeventandclk=1)thencount=count+1;if(count=0)thencarryout=1;elsecarryout=0;endif;endif;endprocess;endrtl;,architecturertlofstartisbeginprocess(clk)variablecount:integerrange0to7;beginif(clkeventandclk=1)thencount:=count+1;if(count=0)thencarryout=1;elsecarryout=0;endif;endif;endprocess;endrtl;,11/50,VHDL标准数据类型IEEE标准数据类型用户自定义数据类型,3.3.2数据类型,12/50,VHDL标准数据类型,13/50,VHDL标准数据类型,1、整数(INTEGER)范围:-2147483547-2147483646,用range限定数的范围,如:variablea:integerrange0to9;2、实数(REAL)范围:-1.0E38-1.0E38(仿真器中可用,综合器不支持)书写时一定要有小数。如:1.08#43.6#e+43、位(BIT)数字系统中,信号经常用位的值表示,位的值用带单引号的1和0来表示。,14/50,VHDL标准数据类型,4、位矢量(BIT_VECTOR)位矢量是用双引号括起来的一组位数据如:“010101”5、布尔量(BOOLEAN)只有“真”和“假”两个状态,可以进行关系运算6、字符(CHARACTER)字符量通常用单引号括起来,对大小写敏感。A与a不同。明确说明1是字符时:CHARACTER(1),15/50,VHDL标准数据类型,7、字符串(STRING)字符串是双引号括起来的由字母、数字或、%、$组成的一串字符。区分大小写。如:“laksdklakld”“1010101010”8、时间(TIME)时间的单位:fs,ps,ns,ms,sec,min,hr例:10ns整数数值和单位之间应有空格,16/50,VHDL标准数据类型,9、错误等级(SEVERITYLEVEL)在VHDL仿真器中,错误等级用来表示系统的状态,共有4种:NOTE(注意)、ERROR(错误)、FAILURE(失败)、WARNING(警告)10、自然数(NATURAL)正整数(POSITIVE)自然数是整数的一个子类型,包括0和正整数;正整数也是整数的一个子类型。,17/50,IEEE标准数据类型,在IEEE库的程序包std_logic_1164中定义了两个非常重要的数据类型:1、标准逻辑位(std_logic)取值:0,1,Z,X,W,L,H等9种注意:使用时必须大写,若用小写z表示取值高阻是错误的,必须用大写Z。2、标准逻辑矢量(Std_logic_vector)标准一维数组,数组中每个元素的数据类型均为标准逻辑位类型。,Entityeqcomp4isPort(a,b:instd_logic_vector(3downto0);equal:outstd_logic);Endeqcomp4;,18/50,IEEE标准数据类型,注意:1、在使用“std_logic”和“std_logic_vector”时,在程序中必须声明库及程序包说明语句,即LIBRARYIEEE和std_logic_1164.ALL这两句在程序中必不可少。2、std_logic有多个取值,与标准数据类型bit不同,在编程时应注意考虑全所有情况。,19/50,VHDL运算符逻辑运算符AND、OR、NAND、NOR、XOR、NOT关系运算符=、/=、=算术运算符+、-、*、/并置(连接)运算符-错误X=(aANDb)ORc;-正确,但若一个逻辑表达式中只有“AND”,”OR”,”XOR”运算符,那么改变运算顺序将不会导致逻辑的改变。此时,括号可以省略。,逻辑运算符的使用,如:x=aANDbANDcANDd;x=aORbORcORd;x=aXORbXORc;,24/50,注意:而在VHDL语言中,关系运算符=也用于信号的赋值,要根据上下文判断符号=是用于赋值还是小于等于。,关系运算符的使用,architecturertlofstartissignalcount:integerrange0to7;beginprocess(clk)beginif(clkeventandclk=1)thencount=count+1;if(count=0)thencarryout=1;elsecarryout=0;endif;endif;endprocess;endrtl;,25/50,并置运算符“”用于位的连接。并置运算可用于位的连接,形成位矢量;并置运算符可用于矢量的连接,形成新的矢量;并置运算可用于位和矢量的连接,形成新的矢量,SIGNALa,b:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALq:STD_LOGIC_VECTOR(7DOWNTO0);qab;,并置运算符的使用,SIGNALa,b,c,d:STD_LOGIC;SIGNALq:STD_LOGIC_VECTOR(3DOWNTO0);qabcd;,26/50,表达式VHDL语言中的表达式与其他高级程序设计语言非常相似,同样是由运算符将基本元素连接起来的式子。一个表达式,需要有两个要素:运算符和基本元素。基本元素包括对象名、文字、函数调用等的表达式。例如:ab,b(6)b(5)b(4),(AB)*B+(AREMB),7REM(2)等。,3.3.3VHDL运算符与表达式,27/50,3.3.4基本顺序描述语句,顺序语句:每一条顺序语句的执行顺序都和它们的书写顺序基本一致。只能出现在进程和子程序中。,常用顺序语句赋值语句IF语句CASE语句(针对本门课程及教材列出的常用顺序语句),28/50,3.3.4基本顺序描述语句,1.赋值语句信号赋值语句格式:目的信号量=信号量表达式例:a=b;注意:限定在进程、函数过程等顺序区域使用进程结束时起作用与小于等于的关系操作符的差别赋值符号两边的变量及表达式的数据类型和长度必须保持一致,29/50,3.3.4基本顺序描述语句,1.赋值语句变量赋值语句格式:目的变量:=表达式例:c:=a+b;D:=3;注意:限定在进程、函数、过程等顺序区域使用变量赋值无延时特性,立即生效变量值具有局部性赋值符号两边的变量及表达式的数据类型和长度必须保持一致,30/50,3.3.4基本顺序描述语句,2.IF语句格式一IF条件THEN顺序执行语句ENDIF;例:IF(a=1)THENc=b;ENDIF;,31/50,3.3.4基本顺序描述语句,2.IF语句格式二IF条件THEN顺序执行语句ELSE顺序执行语句ENDIF;,ARCHITECTURErtlOFmux2ISBEGINPROCESS(a,b,sel)BEGINIF(sel=1)THENc顺序处理语句;WHEN值|值|值|值=顺序处理语句;WHEN值TO值=顺序处理语句;WHENOTHERS=顺序处理语句;,LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmux4ISPORT(a,b,i0,i1,i2,i3:INSTD_LOGIC;q:OUTSTD_LOGIC);ENDmux4;ARCHITECTUREmux4_behaveOFmux4ISSIGNALsel:INTEGERRANGE0TO3;BEGINPROCESS(a,b,i0,i1,i2,i3)BEGINselqqqq=i3;ENDCASE;ENDPROCESS;ENDmux4_behave;,selqqqq=i3;ENDCASE;,34/50,3.3.5基本并行描述语句,并行语句:位于Process外面,同时执行,不分位置的先后顺序,常用并行语句进程语句并行信号赋值语句端口说明语句(针对本门课程及教材列出的常用并行语句),35/50,1.进程语句在一个结构体中多个PROCESS语句可以同时并行的执行,该语句有如下特点:可以和其它进程语句同时执行,并可以存取构造体和实体中所定义的信号进程中的所有语句都按照顺序执行为启动进程,在进程中必须包含敏感信号表进程之间的通信是通过信号量来实现的,3.3.5基本并行描述语句,36/50,1.进程语句格式:进程名:PROCESS敏感信号表变量说明语句;BEGIN顺序处理语句;ENDPROCESS进程名;,3.3.5基本并行描述语句,Architecturebehavioralofeqcomp4isbegincomp:process(a,b)beginifa=bthenequal=1;elseequal=0;endif;endprocesscomp;endbehavioral;,37/50,2.并行信号赋值语句简单信号赋值语句条件信号赋值语句选择信号赋值语句,3.3.5基本并行描述语句,38/50,2.并行信号赋值语句简单信号赋值语句格式:目的信号量=信号量表达式例:a=b;q=c+d;信号赋值语句在进程中使用是顺序语句,但是在进程外即在结构体中使用时为并发语句。,3.3.5基本并行描述语句,39/50,2.并行信号赋值语句条件信号赋值语句格式:目的信号量=表达式1WHEN条件1ELSE表达式2WHEN条件2ELSE表达式3WHEN条件3ELSE:表达式n;,3.3.5基本并行描述语句,Signala,b,c,d:std_logic;Signalw,x,y,z:std_logic;f=wwhena=1elsexwhenb=1elseywhenc=1elsezwhend=1else0;,40/50,2.并行信号赋值语句选择信号赋值语句格式:WITH选择表达式SELECT赋值目标信号=表达式1WHEN条件1,表达式2WHEN条件2,:表达式nWHEN条件n;,3.3.5基本并行描述语句,Signals:std_logic_vector(1downto0);Signala,b,c,d,f:std_logic;Withsselectf=awhen“00”,bwhen“01”,cwhen“10”,dwhen“11”,Xwhenothers;,41/50,2.并行信号赋值语句注意:条件信号赋值语句When-else语句条件语句可以是一个简单的表达式选择信号赋值语句With-select-when则不能采用表达式作为条件如:a=“0000”whenstate=idleandstate=1else“0001”whenstate=idleandstate=0elsebwhenstate=runningandstate=1elsea;,3.3.5基本并行描述语句,42/50,3.端口说明语句PORT端口说明语句用于设计实体和外部电路的接口通道说明,包含对每一个接口通道的名称、模式和数据类型的说明。,3.3.5基本并行描述语句,端口说明的一般格式为:PORT(端口名,端口名:端口模式数据类型;端口名,端口名:端口模式数据类型);,43/50,几种语句的比较,44/50,在利用VHDL进行工程设计中,预先定义好的数据类型、子程序等设计单元的集合体(程序包),或预先设计好的各种设计实体(元件库程序包)等信息汇集在一个或几个库中以供调用。可以把库看成是一种用来存储预先完成的程序包和数据集合体的仓库。库(LIBRARY)的语句格式如下:LIBRARY库名;这一语句即相当于为其后的设计实体打开了以此库名命名的库,以便设计实体可以利用其中的程序包。如语句“LIBRARYIEEE;”表示打开IEEE库。,3.4VHDL的库和包,库(LIBRARY),45/50,常用库,IEEE库IEEE库是VHDL设计中最为常见的库,它包含有IEEE标准的程序包和其他一些支持工业标准的程序包。IEEE库中的标准程序包主要包括STD_LOGIC_1164,NUMERIC_BIT和NUMERIC_STD等程序包。另外还包含了Synopsys公司的STD_LOGIC_ARITH、STD_LOGIC_SIGNED和STD_LOGIC_UNSIGNED程序包。其中的STD_LOGIC_1164是最重要的最常用的程序包,大部分基于数字系统设计的程序包都是以此程序包中设定的标准为基础的。,3.4VHDL的库和包,46/50,常用库,IEEE库另外,在IEEE库中符合IEEE标准的程序包并非符合VHDL语言标准,如STD_LOGIC_1164程序包。因

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论