资源描述:
《系统芯片SOC设计原理 教学课件 作者 罗胜钦 第03章 硬件描述语言VHDL.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第三章硬件描述语言VHDL3.1引言VHDL的特点:1.支持多种设计方法和技术。2.与工艺技术独立。3.多层次描述能力。4.标准化,易于共享和复用。VHDL程序的构件实体结构体程序包配置库VHDL的版本:IEEESTD1076.1987[LRM87]IEEESTD 1076.1993[LRM93]3.2VHDL的基础知识3.2.1VHDL程序的结构8位计数器ENTITYcounterISPORT(data_in:ININTEGERRANGE0TO255;clk,ena,load,clear:INSTD_LOGIC;Count_out:O
2、UTINTEGERRANGE0TO255);ENDcounter;enaclkloadcleardata_incount_out实体countLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;8位计数器的功能描述:ARCHITECTUREbehav_countOFcounterISSIGNALcounter_data:INTEGERRANGE0TO255;BEGINPROCESS(clk
3、,clear,load)BEGINIF(clear=‘0’)THENcounter_data=0;ELSIF(clk‘EVENTANDclk=‘1’)THENIF(load=‘1’)THENcounter_data<=data_in;ELSEIF(ena=‘1’)THENIFcounter_data=255THENcounter_data<=0;ELSEcounter_data<=counter_data+1;ENDIF;ELSEcounter_data<=counter_data;ENDIF;ENDIF;E
4、NDIF;ENDPROCESS;count_out<=counter_data;ENDbehav_count;进程结构体1.实体(ENTITY)说明ENTITY实体名IS[GENERIC(类属表);][PORT(端口表);][实体说明部分;][BEGIN实体语句部分;]END实体名;类属说明GENERIC(端口名{,端口名}:类型名[:=初始值]{端口名{,端口名}:类型名[:=初始值]});例GENERIC(m:TIME:=3ns);(2)端口说明PORT(端口名{,端口名}:方向数据类型;::端口名{,端口名}:方向数据类型)
5、;端口方向实体INOUTINOUTBUFFERLINKAGE2结构体(ARCHITECTURE)ARCHITECTURE结构体名OF实体名IS[定义语句]BEGIN[并行处理语句]END结构体名;=DQclk3库(LIBRARY)设计库IEEE库预定义库(隐含打开)STD库STANDARD(隐含说明)TEXTIO(用UES说明)WORK库资源库(用LIBRARY)其它库STD_LOGIC_1164STD_LOGIC_ARITHSTD_LOGIC_UNSIGNEDNUMERIC_STDNUMERIC_BITMATH_REALMATH_CO
6、MPLEXVITAL_TIMINGVITAL_PRIMITIVE4.程序包(PACKAGE)PACKAGE程序包名IS[说明语句]END[PACKAGE][程序包名];PACKAGEBODY程序包名IS[说明语句]END[PACKAGEBODY][程序包名];程序包说明程序包体程序包设计举例1LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;PACKAGEupacISCONSTANTk:INTEGER:=4;TYPEinstructionIS(add,sub,adc,inc,srf,slf,mov);SUBT
7、YPEcpu_busISSTD_LOGIC_VECTOR(k-1DOWNTO0);ENDupac;程序包体的应用PACKAGEexampleISCONSTANTpi:REAL:=3.1415926;CONSTANTdefer:INTEGER;FUNCTIONmean(a,b,c:REAL)RETURNREAL;COMPONENTandISGENERIC(tpd1,tpd2:TIME:=3ns);PORT(in1,in2:INBIT;y:OUTBIT);ENDCOMPONENTand;ENDexample;PACKAGEBODYexamp
8、leISCONSTANTdefer:INTEGER:=5;FUNCTIONmean(a,b,c:REAL)RETURNREALISBEGINRETURN(a+b+c)/3.0;ENDFUNCTIONmean