(精品)EDA技术实用教程第9章.ppt

上传人:s****8 文档编号:69873993 上传时间:2023-01-10 格式:PPT 页数:97 大小:538.50KB
返回 下载 相关 举报
(精品)EDA技术实用教程第9章.ppt_第1页
第1页 / 共97页
(精品)EDA技术实用教程第9章.ppt_第2页
第2页 / 共97页
点击查看更多>>
资源描述

《(精品)EDA技术实用教程第9章.ppt》由会员分享,可在线阅读,更多相关《(精品)EDA技术实用教程第9章.ppt(97页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

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

26、2,signl);-调用第一个重载过程调用第一个重载过程calcucalcu(23,320,sign2);-调用第二个重载过程调用第二个重载过程calcu.9.4 VHDL库库 K KX康芯科技康芯科技9.4.1 9.4.1 库的种类库的种类 1.1.IEEEIEEE库库 2.2.STDSTD库库 LIBRARYSTD;USESTD.STANDARD.ALL;3.3.WORKWORK库库 4.4.VITALVITAL库库 9.4 VHDL库库 K KX康芯科技康芯科技9.4.2 9.4.2 库的用法库的用法 USE库名库名.程序包名程序包名.项目名项目名;USE库名库名.程序包名程序包名.AL

27、L;LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.STD_ULOGIC;USEIEEE.STD_LOGIC_1164.RISING_EDGE;USEWORK.std_logic_1164.ALL;9.5 程序包程序包 K KX康芯科技康芯科技常数说明常数说明常数说明常数说明 VHDLVHDLVHDLVHDL数据类型说明数据类型说明数据类型说明数据类型说明 元件定义元件定义元件定义元件定义 子程序子程序子程序子程序 定义程序包的一般语句结构如下:定义程序包的一般语句结构如下:PACKAGE程序包名程序包名IS-程序包首程序包首程序包首说明部分程序包首说明部分END程序包名

28、程序包名;PACKAGEBODY程序包名程序包名IS-程序包体程序包体程序包体说明部分以及包体内程序包体说明部分以及包体内END程序包名程序包名;9.5 程序包程序包 K KX康芯科技康芯科技【例【例9-16】PACKAGEpaclIS-程序包首开始程序包首开始TYPEbyteISRANGE0TO255;-定义数据类型定义数据类型byteSUBTYPEnibbleISbyteRANGE0TO15;-定义子类型定义子类型nibbleCONSTANTbyte_ff:byte:=255;-定义常数定义常数byte_ffSIGNALaddend:nibble;-定义信号定义信号addendCOMPON

29、ENTbyte_adder-定义元件定义元件PORT(a,b:INbyte;c:OUTbyte;overflow:OUTBOOLEAN);ENDCOMPONENT;FUNCTIONmy_function(a:INbyte)Returnbyte;-定义函数定义函数ENDpacl;-程序包首结束程序包首结束9.5 程序包程序包 K KX康芯科技康芯科技【例【例9-17】PACKAGEsevenISSUBTYPEsegmentsisBIT_VECTOR(0TO6);TYPEbcdISRANGE0TO9;ENDseven;USEWORK.seven.ALL;-WORK库默认是打开的,库默认是打开的,E

30、NTITYdecoderISPORT(input:bcd;drive:outsegments);ENDdecoder;ARCHITECTUREsimpleOFdecoderISBEGINWITHinputSELECTdrive=B1111110WHEN0,B0110000WHEN1,B1101101WHEN2,B1111001WHEN3,B0110011WHEN4,B1011011WHEN5,B1011111WHEN6,B1110000WHEN7,B1111111WHEN8,B1111011WHEN9,B0000000WHENOTHERS;ENDsimple;9.5 程序包程序包 K KX康芯

31、科技康芯科技(1)STD_LOGIC_1164程序包。程序包。(2)STD_LOGIC_ARITH程序包。程序包。(3)STD_LOGIC_UNSIGNED和和STD_LOGIC_SIGNED程序包。程序包。(4)STANDARD和和TEXTIO程序包。程序包。9.6 配置配置 K KX康芯科技康芯科技配置语句的一般格式如下:配置语句的一般格式如下:CONFIGURATION配置名配置名OF实体名实体名IS配置说明配置说明END配置名配置名;9.7 VHDL文字规则文字规则 K KX康芯科技康芯科技9.7.1数字数字实数实数 1.335,88_670_551.453_909(=88670551

32、.453909),1.0,44.99E-2(=0.4499)整数整数5,678,0,156E2(=15600),45_234_287(=45234287)以数制以数制基数表基数表示的文示的文字字SIGNALd1,d2,d3,d4,d5,:INTEGERRANGE0TO255;d1=10#170#;-(十进制表示,等于十进制表示,等于170)d2=16#FE#;-(十六进制表示,等于十六进制表示,等于254)d3=2#1111_1110#;-(二进制表示,等于二进制表示,等于254)d4=8#376#;-(八进制表示,等于八进制表示,等于254)d5=16#E#E1;-(十六进制表示,等于十六进

33、制表示,等于2#1110000#,等于,等于224)物理量文字物理量文字(VHDL综综合器不接受此类文字合器不接受此类文字)60s(60秒秒),100m(100米米),k(千欧姆千欧姆),177A(177安安培培)9.7 VHDL文字规则文字规则 9.7.2字符串字符串(1)文字字符文字字符串串ERROR,BothSandQequalto1,X,BB$CCK KX康芯科技康芯科技(2)数位字符数位字符串串data1=B1_1101_1110-二进制数数组,位矢数组长度是二进制数数组,位矢数组长度是9data2=O15-八进制数数组,位矢数组长度是八进制数数组,位矢数组长度是6data3=XAD

34、0-十六进制数数组,位矢数组长度是十六进制数数组,位矢数组长度是12data4=B101_010_101_010-二进制数数组,位矢数组长度是二进制数数组,位矢数组长度是12data5=101_010_101_010-表达错误,缺表达错误,缺B。data6=0AD0-表达错误,缺表达错误,缺X。9.7 VHDL文字规则文字规则 9.7.3标识符标识符K KX康芯科技康芯科技合法的标识符:合法的标识符:Decoder_1,FFT,Sig_N,Not_Ack,State0,Idle非法的标识符:非法的标识符:_Decoder_1-起始为非英文字母起始为非英文字母2FFT-起始为数字起始为数字Sig

35、_#N-符号符号“#”不能成为标识符的构成不能成为标识符的构成Not-Ack-符号符号“-”不能成为标识符的构成不能成为标识符的构成RyY_RST_-标识符的最后不能是下划线标识符的最后不能是下划线“_”data_BUS-标识符中不能有双下划线标识符中不能有双下划线return-关键词关键词9.7 VHDL文字规则文字规则 9.7.4下标名下标名K KX康芯科技康芯科技标识符标识符(表达式表达式)SIGNALa,b:BIT_VECTOR(0TO3);SIGNALm:INTEGERRANGE0TO3;SIGNALy,z:BIT;y=a(m);-不可计算型下标表示不可计算型下标表示z=b(3);-

36、可计算型下标表示可计算型下标表示9.8 数据类型数据类型 K KX康芯科技康芯科技标量型标量型(ScalarType)实数类型、整数类型、枚举类型、时间类型实数类型、整数类型、枚举类型、时间类型复合类型复合类型(CompositeType)数组型数组型(Array)Array)、记录型、记录型(Record)Record)存取类型存取类型(AccessType)为给定的数据类型的数据对象提供存取方式为给定的数据类型的数据对象提供存取方式文件类型文件类型(FilesType)用于提供多值存取类型用于提供多值存取类型 9.8 数据类型数据类型 K KX康芯科技康芯科技9.8.1预定义数据类型预定义

37、数据类型1.1.布尔类型布尔类型 TYPEBOOLEANIS(FALSE,TRUE);2.2.位数据类型位数据类型 TYPEBITIS(0,1);3.3.位矢量类型位矢量类型 TYPEBIT_VECTORISARRAY(NaturalRange)OFBIT;4.4.字符类型字符类型 A5.5.整数类型整数类型 214748364721474836479.8 数据类型数据类型 K KX康芯科技康芯科技6.6.实数类型实数类型 1.0十进制浮点数十进制浮点数0.0十进制浮点数十进制浮点数65971.333333十进制浮点数十进制浮点数65_971.333_3333与上一行等价与上一行等价8#43.

38、6#e+4八进制浮点数八进制浮点数43.6E4十进制浮点数十进制浮点数7.7.字符串类型字符串类型 VARIABLEstring_var:STRING(1TO7);string_var:=abcd;9.8 数据类型数据类型 K KX康芯科技康芯科技8.8.时间类型时间类型 TYPEtimeISRANGE2147483647TO2147483647unitsfs;-飞秒,飞秒,VHDL中的最小时间单位中的最小时间单位ps=1000fs;-皮秒皮秒ns=1000ps;-纳秒纳秒us=1000ns;-微秒微秒ms=1000us;-毫秒毫秒sec=1000ms;-秒秒min=60sec;-分分hr=6

39、0min;-时时endunits;9.8 数据类型数据类型 K KX康芯科技康芯科技9.9.文件类型文件类型 PROCEDUERReadline(F:INTEXT;L:OUTLINE);PROCEDUERWriteline(F:OUTTEXT;L:INLINE);PROCEDUERRead(L:INOUTLINE;Value:OUTstd_logic;Good:OUTBOOLEAN);PROCEDUERRead(L:INOUTLINE;Value:OUTstd_logic);PROCEDUERRead(L:INOUTLINE;Value:OUTstd_logic_vector;Good:OUT

40、BOOLEAN);PROCEDUERRead(L:INOUTLINE;Value:OUTstd_logic_vector;PROCEDUERWrite(L:INOUTLINE;Value:INstd_logic;Justiaied:INSIDE:=Right;field;INWIDTH:=0);PROCEDUERWrite(L:INOUTLINE;Value:INstd_logic_vector,Justiaied:INSIDE:=Right;field;INWIDTH:=0);9.8 数据类型数据类型 K KX康芯科技康芯科技9.8.2IEEE预定义标准逻辑位与矢量预定义标准逻辑位与矢量1.

41、1.标准逻辑位数据类型标准逻辑位数据类型 TYPESTD_LOGIC_VECTORISARRAY(NATURALRANGE)OFSTD_LOGIC;2.2.标准逻辑矢量数据类型标准逻辑矢量数据类型 9.8 数据类型数据类型 K KX康芯科技康芯科技9.8.3其他预定义标准数据类型其他预定义标准数据类型1.1.无符号数据类型无符号数据类型(UNSIGNED TYPE)UNSIGNED TYPE)UNSIGNED(1000)VARIABLEvar:UNSIGNED(0TO10);SIGNALsig:UNSIGNED(5TO0);2.2.有符号数据类型有符号数据类型(SIGNED TYPE)SIGN

42、ED TYPE)SIGNED(0101)代表代表+5,5SIGNED(1011)代表代表5VARIABLEvar:SIGNED(0TO10);9.8 数据类型数据类型 K KX康芯科技康芯科技9.8.4数组类型数组类型TYPE数组名数组名ISARRAY(数组范围数组范围)OF数据类型数据类型TYPEstbISARRAY(7DOWNTO0)ofSTD_LOGIC;TYPE数组名数组名ISARRAY(数组下标名数组下标名RANGE)OF数据类型数据类型;TYPExis(low,high);TYPEdata_busISARRAY(0TO7,x)ofBIT;9.8 数据类型数据类型 K KX康芯科技康

43、芯科技9.8.4数组类型数组类型【例【例9-18】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYampISPORT(a1,a2:INBIT_VECTOR(3DOWNTO0);c1,c2,c3:INSTD_LOGIC_VECTOR(3DOWNTO0);b1,b2,b3:INTEGERRANGE0TO15;d1,d2,d3,d4:OUTSTD_LOGIC_VECTOR(3DOWNTO0);ENDamp;d1=TO_STDLOGICVECTOR(a1ANDa2);-(1)d2=CONV_STD_

44、LOGIC_VECTOR(b1,4)WHENCONV_INTEGER(b2)=9elseCONV_STD_LOGIC_VECTOR(b3,4);-(2)d3=c1WHENCONV_INTEGER(c2)=8ELSEc3;-(3)d4=c1WHENc2=8elsec3;-(4)9.8 数据类型数据类型 K KX康芯科技康芯科技9.8.4数组类型数组类型【例【例9-19】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYdecoder3to8ISPORT(input:INSTD_LOGIC_VEC

45、TOR(2DOWNTO0);output:OUTSTD_LOGIC_VECTOR(7DOWNTO0);ENDdecoder3to8;ARCHITECTUREbehaveOFdecoder3to8ISBEGINPROCESS(input)BEGINoutput0);output(CONV_INTEGER(input)result(i):=0;WHEN1|H=result(i):=1;WHENOTHERS=result(i):=xmap;ENDCASE;ENDLOOP;RETURNresult;END;9.9 操作符操作符(接下页)(接下页)9.9.1逻辑操作符逻辑操作符类类 型型操作符操作符功功

46、 能能操作数数据类型操作数数据类型算术操作符算术操作符+加加 整数整数 减减 整数整数&并置并置 一维数组一维数组*乘乘 整数和实数整数和实数(包括浮点数包括浮点数)/除除 整数和实数整数和实数(包括浮点数包括浮点数)MOD取模取模 整数整数REM取余取余 整数整数SLL逻辑左移逻辑左移 BIT或布尔型一维数组或布尔型一维数组SRL逻辑右移逻辑右移 BIT或布尔型一维数组或布尔型一维数组SLA算术左移算术左移 BIT或布尔型一维数组或布尔型一维数组表表9-2VHDL操作符列表操作符列表K KX康芯科技康芯科技算术操作符算术操作符SRA算术右移算术右移BIT或布尔型一维数组或布尔型一维数组ROL

47、逻辑循环左移逻辑循环左移BIT或布尔型一维数组或布尔型一维数组ROR逻辑循环右移逻辑循环右移BIT或布尔型一维数组或布尔型一维数组*乘方乘方整数整数ABS取绝对值取绝对值整数整数关系操作符关系操作符=等于等于任何数据类型任何数据类型/=/=不等于不等于任何数据类型任何数据类型 大于大于枚举与整数类型,及对应的一维数组枚举与整数类型,及对应的一维数组=大于等于大于等于枚举与整数类型,及对应的一维数组枚举与整数类型,及对应的一维数组逻辑操作符逻辑操作符AND与与BIT,BOOLEAN,STD_LOGICOR或或BIT,BOOLEAN,STD_LOGICNAND与非与非BIT,BOOLEAN,STD

48、_LOGICNOR或非或非BIT,BOOLEAN,STD_LOGICXOR异或异或BIT,BOOLEAN,STD_LOGICXNOR异或非异或非BIT,BOOLEAN,STD_LOGICNOT非非BIT,BOOLEAN,STD_LOGIC符号操作符符号操作符+正正整数整数负负整数整数(接上页)(接上页)9.9 操作符操作符 9.9.1逻辑操作符逻辑操作符表表9-3VHDL操作符优先级操作符优先级运算符运算符优先级优先级NOT,ABS,*最高优先级最高优先级*,/,MOD,REM+(正号正号),(负号负号)+,&SLL,SLA,SRL,SRA,ROL,ROR=,/=,=AND,OR,NAND,N

49、OR,XOR,XNOR最低优先级最低优先级K KX康芯科技康芯科技9.9 操作符操作符 9.9.1逻辑操作符逻辑操作符K KX康芯科技康芯科技【例【例9-21】SIGNALa,b,c:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALd,e,f,g:STD_LOGIC_VECTOR(1DOWNTO0);SIGNALh,I,j,k:STD_LOGIC;SIGNALl,m,n,o,p:BOOLEAN;.a=bANDc;-b、c相与后向相与后向a赋值,赋值,a、b、c的数据类型同属的数据类型同属4位长的位矢量位长的位矢量d=eORfORg;-两个操作符两个操作符OR相同,不需括号相同

50、,不需括号h=(iNANDj)NANDk;-NAND不属上述三种算符中的一种,必须加括号不属上述三种算符中的一种,必须加括号l=(mXORn)AND(oXORp);-操作符不同,必须加括号操作符不同,必须加括号h=iANDjANDk;-两个操作符都是两个操作符都是AND,不必加括号不必加括号h=iANDjORk;-两个操作符不同,未加括号,表达错误两个操作符不同,未加括号,表达错误a=bANDe;-操作数操作数b与与e的位矢长度不一致,表达错误的位矢长度不一致,表达错误h”(大大于于)“=”(大大于等于等于于)“=”(小小于等于等于于)9.9 操作符操作符 9.9.2关系操作符关系操作符K K

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁