




已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
六、VHDL语言的并行语句,1、并行信号赋值语句,4、进程语句,3、块语句,2、条件信号赋值语句,5、元件例化语句,6、生成语句,7、并行过程调用语句,结构体,1,结构体中的并行语句模块,2,1、并行信号赋值语句,赋值目标=表达式,例ARCHITECTUREcurtOFbc1ISSIGNALs1,e,f,g,h:STD_LOGIC;BEGINoutput1=aANDb;output2=c+d;g=eORf;h=eXORf;s1=g;ENDARCHITECTUREcurt;,3,2、条件信号赋值语句,赋值目标=表达式WHEN赋值条件ELSE表达式WHEN赋值条件ELSE.表达式;,例ENTITYmuxISPORT(a,b,c:INBIT;p1,p2:INBIT;z:OUTBIT);END;ARCHITECTUREbehvOFmuxISBEGINz=aWHENp1=1ELSEbWHENp2=1ELSEc;END;,4,选择信号赋值语句,WITH选择表达式SELECT赋值目标信号=表达式WHEN选择值,表达式WHEN选择值,.,表达式WHEN选择值;,例.WITHseltSELECTmuxout=aWHEN0|1,-0或1bWHEN2TO5,-2或3,或4或5cWHEN6,dWHEN7,ZWHENOTHERS;.,5,3、块语句,块标号:BLOCK(块保护表达式)接口说明;类属说明;BEGIN并行语句;ENDBLOCK块标号;,与大部分的VHDL语句不同,BLOCK语句的应用,包括其中的类属说明和端口定义,都不会影响对原结构体的逻辑功能的仿真结果。,6,例.b1:BLOCKSIGNALs1:BIT;BEGINS1=aANDb;b2:BLOCKSIGNALs2:BIT;BEGINs2=cANDd;b3:BLOCKBEGINZ=s2;ENDBLOCKb3;ENDBLOCKb2;y=s1;ENDBLOCKb1;.,7,4、进程语句,进程标号:PROCESS(敏感信号参数表)IS进程说明部分BEGIN顺序描述语句;ENDPROCESS进程标号;,PROCESS语句结构的一般表达格式如下,在一个结构体中多个PROCESS语句可以同时并发运行,而进程内部语句之间是顺序关系。PROCESS语句在VHDL程序中,是描述硬件并行工作行为的最常用、最基本的语句。,8,PROCESS组成,PROCESS语句结构,进程说明,顺序描述语句,敏感信号参数表,信号赋值语句,变量赋值语句,进程启动语句,子程序调用语句,顺序描述语句,进程跳出语句,9,(1)进程说明部分主要定义一些局部量,可包括数据类型、常数、属性、子程序等。但需注意,在进程说明部分中不允许定义信号和共享变量。,(2)顺序描述语句部分可分为赋值语句、进程启动语句、子程序调用语句、顺序描述语句和进程跳出语句等。,(3)为启动进程,在进程中必须包含有一个显式的敏感信号量表或者包含一个WAIT语句;敏感信号表应当紧跟在PROCESS之后,含有敏感信号表的进程语句中不允许再显式出现WAIT语句。,说明,10,1.PROCESS为一无限循环语句,2.PROCESS语句具有顺序/并行运行双重性,3.进程必须由敏感信号的变化来启动,4.信号是多个进程间的通信线,PROCESS语句特点,5.一个进程中只允许描述对应于一个时钟信号的同步时序逻辑,11,例:ENTITYmulISPORT(a,b,c,selx,sely:INBIT;data_out:OUTBIT);ENDmul;ARCHITECTUREexOFmulISSIGNALtemp:BIT;BEGINp_a:PROCESS(a,b,selx)BEGINIF(selx=0)THENtemp=a;ELSEtemp=b;ENDIF;ENDPROCESSp_a;p_b:PROCESS(temp,c,sely)BEGINIF(sely=0)THENdata_out=temp;ELSEdata_out=c;ENDIF;ENDPROCESSp_b;ENDex;,12,上例的综合结果,13,例:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCNT10ISPORT(CLR:INSTD_LOGIC;IN1:INSTD_LOGIC_VECTOR(3DOWNTO0);OUT1:OUTSTD_LOGIC_VECTOR(3DOWNTO0);ENDENTITYCNT10;ARCHITECTUREARTOFCNT10ISBEGINPROCESS(IN1,CLR)ISBEGINIF(CLR=1ORIN1=1001)THENOUT1S2,B=D1);-名字关联方式U3:ND2PORTMAP(S1,S2,C=Z1);-混合关联方式ENDARCHITECTUREARTORD41;,例:,20,6、生成语句,标号:FOR循环变量IN取值范围GENERATE说明;BEGIN并行语句;ENDGENERATE标号;,表达式TO表达式;-递增方式,如1TO5表达式DOWNTO表达式;-递减方式,如5DOWNTO1,标号:IF条件GENERATE说明;BEGIN并行语句;ENDGENERATE标号;,取值范围,生成语句有一种复制作用,在设计中,只要根据某些条件,设定好某一元件或设计单位,就可以利用生成语句复制一组完全相同的并行元件或设计单元电路结构。,:,生成语句的两种形式,21,例:利用生成语句产生的八个相同的电路模块,22,主要的VHDL程序如下:COMPONENTCOMPISPORT(X:INSTD_LOGIC;Y:OUTSTD_LOGIC);ENDCOMPONENTCOMP;SIGNALA,B:STD_LOGIC_VECTOR(0TO7);GEN:FORIINARANGEGENERATEU1:COMPPORTMAP(X=A(I),Y=B(I);ENDGENERATEGEN;,23,7、并行过程调用语句,PROCEDURE过程名(参数1;参数2;)IS声明语句;BEGIN顺序处理语句;END过程名;,并行过程调用语句可以作为一个并行语句直接出现在结构体或块语句中。并行过程调用语句的功能等效于包含了同一个过程调用语句的进程。并行过程调用语句的语句调用格式与前面讲的顺序过程调用语句是相同的。,过程调用的实质内容要先装入程序包中(Package):,24,过程名(关联参数表);,并行过程调用:,位置关联方式,名字关联方式=,参数关联方式,例:设有一过程PROCEDUREvect(a,b:INBIT;x,y:INOUTBIT);则调用时:位置关联方式:vect(in1,in2,out1,out2);名字关联方式:vect(a=in1,b=in2,x=out1,y=out2);,25,使用说明,1、过程的参数表中可以使用IN、OUT、INOUT三种;(不能理解为端口)2、过程可以返回多个变量(通过OUT、INOUT定义的参数返回);3、参数对象可以为常量(IN方式)、信号、变量;4、在进程外的过程调用为并行过程调用;在进程内的为顺序过程调用;,26,函数调用:,FUNCTION函数名(参数1;参数2)RETURN数据类型名IS定义变量语句;BEGIN顺序处理语句;RETURN返回变量名;END函数名;,函数调用的实质内容要先装入程序包中(Package):,函数名(关联参数表);,27,使用说明,1、函数的参数表中只能为IN的信号与常量;2、函数返回值只有一个(通过RETURN实现,由函数名传给调用者);3、也可以像过程一样使用位置关联方式和名字关联方式;,1、过程可以有多个返回值,函数只有一个;2、参数传递方式不同:过程(INOUTINOUT)函数(IN),过程(Procedure)函数(Function)两者的主要区别:,28,1库的种类,A.IEEE库,B.STD库,C.WORK库,D.VITAL库,七、VHDL库,29,2库的用法,LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.STD_ULOGIC;USEIEEE.STD_LOGIC_1164.RISING_EDGE;,USE语句的使用有两种常用格式:USE库名.程序包名.项目名;USE库名.程序包名.ALL;,库的作用范围从一个实体说明开始到它所属的结构体、配置为止,当有两个实体时,第二个实体前要另加库和包的说明。,30,程序包,常数说明,VHDL数据类型说明,元件定义,子程序,定义程序包的一般语句结构如下:PACKAGE程序包名IS-程序包首程序包首说明部分;END程序包名;PACKAGEBODY程序包名IS-程序包体程序包体说明部分以及包体内顺序语句;END程序包名;,3VHDL程序包,31,例:程序包首,PACKAGElogicISTYPEthree_level_logicIS(0,1,z);-数据类型项目CONSTANTunknown_value:three_level_logic:=0;-常数项目FUNCTIONinvert(input:three_level_logic)RETURNthree_level_logic;-函数项目ENDlogic;,32,PACKAGEBODYlogicISFUNCTIONinvert(input:three_level_logic);-函数项目描述BEGINCASEinputISWHEN0=RETURN1;WHEN1=RETURN0;WHENZ=RETURNZ;ENDCASE;ENDinvert;ENDlogic;,程序包体,33,USElogic.three_level_logic,logic.invert;-使用数据类型和函数两个项目ENTITYinverterISPORT(x:INthree_level_logic;y:OUTthree_level_logic);ENDinverter;ARCHITECTUREinverter_bodyOFinverterISBEGINkk:PROCESSBEGINY=invert(x)AFTER10ns;WAITONx;ENDPROCESS;ENDinverter_body;,该包使用例:,34,PACKAGEsevenISSUBTYPEsegmentsisBIT_VECTOR(0TO6);TYPEbcdISRANGE0TO9;ENDseven;USEWORK.seven.ALL;-WORK库默认是打开的,ENTITYdecoderISPORT(input:bcd;drive:outsegments);ENDdecoder;ARCHITECTUREsimpleOFdecoderISBEGINWITHinputSELECTdrive=B1111110WHEN0,B0110000WHEN1,B1101101WHEN2,B1111001WHEN3,B0110011WHEN4,B1011011WHEN5,B1011111WHEN6,B1110000WHEN7,B1111111WHEN8,B1111011WHEN9,B0000000WHENOTHERS;ENDsimple;,例:,35,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 东莞工厂宿舍管理制度
- 仓库货品存储管理制度
- 企业标志使用管理制度
- 企业安全智慧管理制度
- 专用教室资产管理制度
- 交警高速便道管理制度
- 企业药械风险管理制度
- 二局公司安全管理制度
- 云南酒店日常管理制度
- 食品杀菌罐安全管理制度
- 传染病知识培训课件
- 2025年湖南融通资源循环产业有限公司技能岗位招聘题库带答案分析
- 车辆收费及管理制度
- 新能源汽车全生命周期碳足迹测算模型及减排策略
- T/CAS 612-2022碳中和管理体系要求
- 2025-2030中国显微镜行业市场深度调研及发展趋势与投资战略研究报告
- 平台合伙人合同协议书
- 运维安全保密措施
- 粮食加工消防安全管理规定
- 《智能驾驶技术解析》课件
- 2025年光大金瓯资产管理有限公司招聘笔试参考题库含答案解析
评论
0/150
提交评论