(精品)EDA技术实用教程第9章.ppt
《(精品)EDA技术实用教程第9章.ppt》由会员分享,可在线阅读,更多相关《(精品)EDA技术实用教程第9章.ppt(97页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、EDA技术实用教程技术实用教程第第 9 9 章章 VHDL结构与要素结构与要素 9.1 实体实体 K KX康芯科技康芯科技9.1.1实体语句结构实体语句结构实体说明单元的一般语句结构:实体说明单元的一般语句结构:ENTITY实体名实体名ISGENERIC(参数名:数据类型参数名:数据类型);PORT(端口表端口表);ENDENTITY实体名实体名;9.1 实体实体 K KX康芯科技康芯科技9.1.2参数传递说明语句参数传递说明语句参数传递说明语句参数传递说明语句的一般书写格式如下:的一般书写格式如下:GENERIC(常数名常数名:数据类型数据类型:设定值设定值;常数名常数名:数据类型数据类型:
2、设定值设定值);9.1 实体实体 K KX康芯科技康芯科技9.1.2参数传递说明语句参数传递说明语句【例【例9-1】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYandnISGENERIC(n:INTEGER);-定义类属参量及其数据类型定义类属参量及其数据类型PORT(a:INSTD_LOGIC_VECTOR(n-1DOWNTO0);-用类属参量限制矢量长度用类属参量限制矢量长度c:OUTSTD_LOGIC);END;ARCHITECTUREbehavOFandnISBEGINPROCESS(a)VARIABLEint:STD_LOGIC;BEGI
3、Nint:=1;FORiINaLENGTH-1DOWNTO0LOOP-循环语句循环语句IFa(i)=0THENint:=0;ENDIF;ENDLOOP;c2)-参数传递映射语句,定义类属变量,参数传递映射语句,定义类属变量,n赋值为赋值为2PORTMAP(a(0)=d1,a(1)=d2,c=q1);u2:andnGENERICMAP(n=5)-定义类属变量,定义类属变量,n赋值为赋值为5PORTMAP(a(0)=d3,a(1)=d4,a(2)=d5,a(3)=d6,a(4)=d7,c=q2);END;9.1 实体实体 K KX康芯科技康芯科技9.1.3参数传递映射语句参数传递映射语句【例【例9
4、-3】LIBRARYIEEE;-待例化元件待例化元件USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_arith.ALL;USEIEEE.STD_LOGIC_unsigned.ALL;ENTITYaddernISPORT(a,b:INSTD_LOGIC_VECTOR;result:outSTD_LOGIC_VECTOR);ENDaddern;ARCHITECTUREbehaveOFaddernISBEGINresult=a+b;END;K KX康芯科技康芯科技9.1.3参数传递映射语句参数传递映射语句【例【例9-4】LIBRARYIEEE;-顶层设计顶层
5、设计USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_arith.ALL;USEIEEE.STD_LOGIC_unsigned.ALL;ENTITYaddersISGENERIC(msb_operand:INTEGER:=15;msb_sum:INTEGER:=15);PORT(b:INSTD_LOGIC_VECTOR(msb_operandDOWNTO0);result:OUTSTD_LOGIC_VECTOR(msb_sumDOWNTO0);ENDadders;ARCHITECTUREbehaveOFaddersISCOMPONENTaddernPOR
6、T(a,b:INSTD_LOGIC_VECTOR;result:OUTSTD_LOGIC_VECTOR);ENDCOMPONENT;SIGNALa:STD_LOGIC_VECTOR(msb_sum/2DOWNTO0);SIGNALtwoa:STD_LOGIC_VECTOR(msb_operandDOWNTO0);BEGINtwoatwoa,b=b,result=result);U2:addernPORTMAP(a=b(msb_operanddowntomsb_operand/2+1),b=b(msb_operand/2downto0),result=a);ENDbehave;9.1 实体实体
7、K KX康芯科技康芯科技9.1.3参数传递映射语句参数传递映射语句图图9-1例例9-4的的RTL电路图(电路图(Synplify综合)综合)9.1 实体实体 K KX康芯科技康芯科技9.1.4端口说明语句端口说明语句PORT(端口名端口名:端口模式端口模式数据类型数据类型;端口名端口名:端口模式端口模式数据类型数据类型);9.2 结构体结构体 K KX康芯科技康芯科技对数据类型、常数、对数据类型、常数、信号、子程序和元件信号、子程序和元件等元素的说明部分等元素的说明部分描述实体逻辑行为的、描述实体逻辑行为的、以各种不同的描述风以各种不同的描述风格表达的功能描述语格表达的功能描述语句句以元件例化
8、语句为特以元件例化语句为特征的外部元件征的外部元件(设计实设计实体体)端口间的连接。端口间的连接。结结结结 构构构构 体体体体9.2 结构体结构体 K KX康芯科技康芯科技1.1.结构体的一般语言格式结构体的一般语言格式 结构体的语句格式如下:结构体的语句格式如下:ARCHITECTURE结构体名结构体名OF实体名实体名IS说明语句说明语句BEGIN功能描述语句功能描述语句ENDARCHITECTURE结构体名结构体名;9.2 结构体结构体 K KX康芯科技康芯科技2.2.结构体说明语句结构体说明语句 3.3.功能描述语句结构功能描述语句结构 进程语句进程语句进程语句进程语句 信号赋值语句信号
9、赋值语句信号赋值语句信号赋值语句 子程序调用语句子程序调用语句子程序调用语句子程序调用语句 元件例化语句元件例化语句元件例化语句元件例化语句 9.3 子程序子程序 K KX康芯科技康芯科技9.3.1 9.3.1 函数函数 函数的语句表达格式如下:函数的语句表达格式如下:FUNCTION函数名函数名(参数表参数表)RETURN数据类型数据类型-函数首函数首FUNCTION函数名函数名(参数表参数表)RETURN数据类型数据类型IS-函数体函数体说明部分说明部分BEGIN顺序语句顺序语句;ENDFUNCTION函数名函数名;K KX康芯科技康芯科技【例【例9-5】LIBRARYIEEE;USEIE
10、EE.STD_LOGIC_1164.ALL;PACKAGEpackexpIS-定义程序包定义程序包FUNCTIONmax(a,b:INSTD_LOGIC_VECTOR)-定义函数首定义函数首RETURNSTD_LOGIC_VECTOR;FUNCTIONfunc1(a,b,c:REAL)-定义函数首定义函数首RETURNREAL;FUNCTION*(a,b:INTEGER)-定义函数首定义函数首RETURNINTEGER;FUNCTIONas2(SIGNALin1,in2:REAL)-定义函数首定义函数首RETURNREAL;END;PACKAGEBODYpackexpISFUNCTIONmax
11、(a,b:INSTD_LOGIC_VECTOR)-定义函数体定义函数体RETURNSTD_LOGIC_VECTORISBEGINIFabTHENRETURNa;ELSERETURNb;ENDIF;ENDFUNCTIONmax;-结束结束FUNCTION语句语句END;-结束结束PACKAGEBODY语句语句(接下页)(接下页)K KX康芯科技康芯科技LIBRARYIEEE;-函数应用实例函数应用实例USEIEEE.STD_LOGIC_1164.ALL;USEWORK.packexp.ALL;ENTITYaxampISPORT(dat1,dat2:INSTD_LOGIC_VECTOR(3DOWN
12、TO0);dat3,dat4:INSTD_LOGIC_VECTOR(3DOWNTO0);out1,out2:OUTSTD_LOGIC_VECTOR(3DOWNTO0);END;ARCHITECTUREbhvOFaxampISBEGINout1=max(dat1,dat2);-用在赋值语句中的并行函数调用语句用在赋值语句中的并行函数调用语句PROCESS(dat3,dat4)BEGINout2bTHENRETURNa;(接下页)接下页)ELSERETURNb;ENDIF;ENDFUNCTIONmax;-结束结束FUNCTION语句语句FUNCTIONmax(a,b:ININTEGER)-定义函数
13、体定义函数体RETURNINTEGERISBEGINIFabTHENRETURNa;ELSERETURNb;ENDIF;ENDFUNCTIONmax;-结束结束FUNCTION语句语句FUNCTIONmax(a,b:INBIT_VECTOR)-定义函数体定义函数体RETURNBIT_VECTORISBEGINIFabTHENRETURNa;ELSERETURNb;ENDIF;ENDFUNCTIONmax;-结束结束FUNCTION语句语句END;-结束结束PACKAGEBODY语句语句-以下是调用重载函数以下是调用重载函数max的程序:的程序:LIBRARYIEEE;USEIEEE.STD_L
14、OGIC_1164.ALL;USEWORK.packexp.ALL;ENTITYaxampIS(接下页)(接下页)K KX康芯科技康芯科技PORT(a1,b1:INSTD_LOGIC_VECTOR(3DOWNTO0);a2,b2:INBIT_VECTOR(4DOWNTO0);a3,b3:ININTEGERRANGE0TO15;c1:OUTSTD_LOGIC_VECTOR(3DOWNTO0);c2:OUTBIT_VECTOR(4DOWNTO0);c3:OUTINTEGERRANGE0TO15);END;ARCHITECTUREbhvOFaxampISBEGINc1=max(a1,b1);-对函数
15、对函数max(a,b:INSTD_LOGIC_VECTOR)的的调用调用c2=max(a2,b2);-对函数对函数max(a,b:INBIT_VECTOR)的调用的调用c3=max(a3,b3);-对函数对函数max(a,b:ININTEGER)的调用的调用END;【例例9-8】LIBRARYIEEE;-程序包首程序包首USEIEEE.std_logic_1164.all;USEIEEE.std_logic_arith.all;PACKAGESTD_LOGIC_UNSIGNEDisfunction+(L:STD_LOGIC_VECTOR;R:INTEGER)returnSTD_LOGIC_VE
16、CTOR;function+(L:INTEGER;R:STD_LOGIC_VECTOR)returnSTD_LOGIC_VECTOR;function+(L:STD_LOGIC_VECTOR;R:STD_LOGIC)returnSTD_LOGIC_VECTOR;functionSHR(ARG:STD_LOGIC_VECTOR;COUNT:STD_LOGIC_VECTOR)returnSTD_LOGIC_VECTOR;.endSTD_LOGIC_UNSIGNED;LIBRARYIEEE;-程序包体程序包体(接下页)(接下页)useIEEE.std_logic_1164.all;useIEEE.s
17、td_logic_arith.all;packagebodySTD_LOGIC_UNSIGNEDisfunctionmaximum(L,R:INTEGER)returnINTEGERisbeginifL RthenreturnL;elsereturnR;endif;end;function+(L:STD_LOGIC_VECTOR;R:INTEGER)returnSTD_LOGIC_VECTORisVariableresult:STD_LOGIC_VECTOR(Lrange);Beginresult:=UNSIGNED(L)+R;returnstd_logic_vector(result);en
18、d;.endSTD_LOGIC_UNSIGNED;K KX康芯科技康芯科技9.3 子程序子程序 K KX康芯科技康芯科技9.3.3 9.3.3 转换函数转换函数 函数名函数名功能功能程序包程序包:STD_LOGIC_1164to_stdlogicvector(A)由由bit_vector类型的类型的A转换为转换为std_logic_vectorto_bitvector(A)由由std_logic_vector转换为转换为bit_vectorto_stdlogic(A)由由bit转换成转换成std_logicto_bit(A)由由std_logic转换成转换成bit程序包程序包:STD_LOGI
19、C_ARITHconv_std_logic_vector(A,位长位长)将整数将整数integer转换成转换成std_logic_vector类型,类型,A是整数是整数conv_integer(A)将将std_logic_vector转换成整数转换成整数integer程序包程序包:STD_LOGIC_UNSIGNEDconv_integer(A)由由std_logic_vector转换成转换成integer表表9-1IEEE库类型转换函数表库类型转换函数表9.3 子程序子程序 K KX康芯科技康芯科技9.3.3 9.3.3 转换函数转换函数 【例【例9-9】LIBRARYIEEE;USEIEE
20、E.std_logic_1164.ALL;ENTITYexgISPORT(a,b:inbit_vector(3downto0);q:outstd_logic_vector(3downto0);end;architecturertlofexgisbeginq=to_stdlogicvector(aandb);-将将位位矢矢量量数数据据类类型型转转换换成成标标准准逻逻辑辑位位矢矢量数据量数据end;9.3 子程序子程序 K KX康芯科技康芯科技9.3.3 9.3.3 转换函数转换函数 【例【例9-10】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.S
21、TD_LOGIC_ARITH.ALL;-注意使用了此程序包注意使用了此程序包ENTITYaxampISPORT(a,b,c:INintegerrange0to15;q:OUTstd_logic_vector(3downto0);END;ARCHITECTUREbhvOFaxampISBEGINq 1THENRut(i):=1;Din:=Din-Rig;ELSERut(i):=0;ENDIF;Rig:=Rig/2;(接下页)(接下页)ENDLOOP;RETURNRut;ENDnat_to_Bit8;ENDn_pack;LIBRARYIEEE;-用户定义转换函数应用实例用户定义转换函数应用实例US
22、EIEEE.STD_LOGIC_1164.ALL;USEWORK.n_pack.ALL;ENTITYaxampISPORT(dat:INnat;-注意数据类型的定义注意数据类型的定义ou:OUTBit8);-注意数据类型的定义注意数据类型的定义END;ARCHITECTUREbhvOFaxampISBEGINouvalue:0101;WHEN0101=value:0000;WHENOTHERS=value:1111;ENDCASE;ENDPROCEDUREprg1;9.3 子程序子程序 K KX康芯科技康芯科技9.3.5 9.3.5 过程过程 【例【例9-13】PROCEDUREcomp(a,
23、r:INREAL;m:ININTEGER;v1,v2:OUTREAL)ISVARIABLEcnt:INTEGER;BEGINv1:=1.6*a;-赋初始值赋初始值v2:=1.0;-赋初始值赋初始值Q1:FORcntIN1TOmLOOPv2:=v2*v1;EXITQ1WHENv2v1;-当当v2v1,跳出循环跳出循环LOOPENDLOOPQ1ASSERT(v2v1)REPORTOUTOFRANGE-输出错误报告输出错误报告SEVERITYERROR;ENDPROCEDUREcomp;K KX康芯科技康芯科技【例【例9-14】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.A
24、LL;PACKAGEaxampIS过程首定义过程首定义PROCEDUREnand4a(SIGNALa,b,c,d:INSTD_LOGIC;SIGNALy:OUTSTD_LOGIC);ENDaxamp;PACKAGEBODYaxampIS-过程体定义过程体定义PROCEDUREnand4a(SIGNALa,b,c,d:INSTD_LOGIC;SIGNALy:OUTSTD_LOGIC)ISBEGINy=NOT(aANDbANDcANDd);RETURN;ENDnand4a;ENDaxamp;LIBRARYIEEE;-主程序主程序USEIEEE.STD_LOGIC_1164.ALL;USEWORK.
25、axamp.ALL;ENTITYEXISPORT(e,f,g,h:INSTD_LOGIC;x:OUTSTD_LOGIC);END;ARCHITECTUREbhvOFEXISBEGINnand4a(e,f,g,h,x);并行调用过程并行调用过程END;9.3 子程序子程序 K KX康芯科技康芯科技9.3.6 9.3.6 重载过程重载过程 【例【例9-15】PROCEDUREcalcu(v1,v2:INREAL;SIGNALout1:INOUTINTEGER);PROCEDUREcalcu(v1,v2:ININTEGER;SIGNALout1:INOUTREAL);.calcu(20.15,1.4
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品 EDA 技术 实用教程
限制150内