EDA技术与VHDL-第10章 VHDL结构.ppt

上传人:椰子壳 文档编号:5017714 上传时间:2020-01-28 格式:PPT 页数:87 大小:821.50KB
返回 下载 相关 举报
EDA技术与VHDL-第10章 VHDL结构.ppt_第1页
第1页 / 共87页
EDA技术与VHDL-第10章 VHDL结构.ppt_第2页
第2页 / 共87页
EDA技术与VHDL-第10章 VHDL结构.ppt_第3页
第3页 / 共87页
EDA技术与VHDL-第10章 VHDL结构.ppt_第4页
第4页 / 共87页
EDA技术与VHDL-第10章 VHDL结构.ppt_第5页
第5页 / 共87页
点击查看更多>>
资源描述

《EDA技术与VHDL-第10章 VHDL结构.ppt》由会员分享,可在线阅读,更多相关《EDA技术与VHDL-第10章 VHDL结构.ppt(87页珍藏版)》请在三一文库上搜索。

1、EDA技术与VHDL,第10章 VHDL结构,8.1 VHDL实体,VHDL实体作为一个设计实体(独立的电路功能结构)的组成部分,其功能是对这个设计实体与外部电路进行接口描述。实体是设计实体的表层设计单元,实体说明部分规定了设计单元的输入输出接口信号或引脚,它是设计实体对外的一个通信界面。实体的具体表述和用法已在前面有过详细例解,这里不再重复。,KX康芯科技,8.2 VHDL结构体,1. 结构体的一般语言格式,ARCHITECTURE 结构体名 OF 实体名 IS 说明语句 BEGIN 功能描述语句 END ARCHITECTURE 结构体名;,8.2 VHDL结构体,2. 结构体说明语句,3

2、. 功能描述语句结构,进程语句,信号赋值语句,子程序调用语句,元件例化语句,8.3 VHDL子程序,8.3.1 VHDL函数,FUNCTION 函数名(参数表) RETURN 数据类型 -函数首 FUNCTION 函数名(参数表)RETURN 数据类型 IS - 函数体 说明部分 BEGIN 顺序语句 ; END FUNCTION 函数名;,【例8-1】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; PACKAGE packexp IS -定义程序包 FUNCTION max( a,b : IN STD_LOGIC_VECTOR) -定义函数首 RETU

3、RN STD_LOGIC_VECTOR ; FUNCTION func1 ( a,b,c : REAL ) -定义函数首 RETURN REAL ; FUNCTION “*“ ( a ,b : INTEGER ) -定义函数首 RETURN INTEGER ; FUNCTION as2 (SIGNAL in1 ,in2 : REAL ) -定义函数首 RETURN REAL ; END ; PACKAGE BODY packexp IS FUNCTION max( a,b : IN STD_LOGIC_VECTOR) -定义函数体 RETURN STD_LOGIC_VECTOR IS BEGI

4、N IF a b THEN RETURN a; ELSE RETURN b; END IF; END FUNCTION max; -结束FUNCTION语句 END; -结束PACKAGE BODY语句 LIBRARY IEEE; - 函数应用实例 USE IEEE.STD_LOGIC_1164.ALL; USE WORK.packexp.ALL ; ENTITY axamp IS PORT(dat1,dat2 : IN STD_LOGIC_VECTOR(3 DOWNTO 0); dat3,dat4 : IN STD_LOGIC_VECTOR(3 DOWNTO 0); out1,out2 :

5、OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ); END; ARCHITECTURE bhv OF axamp IS BEGIN out1 = max(dat1,dat2); -用在赋值语句中的并行函数调用语句 PROCESS(dat3,dat4) BEGIN out2 = max(dat3,dat4); -顺序函数调用语句 END PROCESS; END;,KX康芯科技,8.3 VHDL子程序,8.3.1 VHDL函数,图8-1 10-2 例8-1的逻辑电路图,8.3 VHDL子程序,【例8-2】 LIBRARY IEEE; USE IEEE.STD_LOGIC_11

6、64.ALL ; ENTITY func IS PORT ( a : IN STD_LOGIC_VECTOR (0 to 2 ) ; m : OUT STD_LOGIC_VECTOR (0 to 2 ) ); END ENTITY func ; ARCHITECTURE demo OF func IS FUNCTION sam(x ,y ,z : STD_LOGIC) RETURN STD_LOGIC IS BEGIN RETURN ( x AND y ) OR z ; END FUNCTION sam ; BEGIN PROCESS ( a ) BEGIN m(0) = sam( a(0),

7、 a(1), a(2) ) ; m(1) = sam( a(2), a(0), a(1) ) ; m(2) = sam( a(1), a(2), a(0) ) ; END PROCESS ; END ARCHITECTURE demo ;,8.3 VHDL子程序,8.3.2 VHDL重载函数,【例8-3】(MaxplusII不支持本例) LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; PACKAGE packexp IS -定义程序包 FUNCTION max( a,b :IN STD_LOGIC_VECTOR) -定义函数首 RETURN STD_L

8、OGIC_VECTOR ; FUNCTION max( a,b :IN BIT_VECTOR) -定义函数首 RETURN BIT_VECTOR ; FUNCTION max( a,b :IN INTEGER ) -定义函数首 RETURN INTEGER ; END; PACKAGE BODY packexp IS FUNCTION max( a,b :IN STD_LOGIC_VECTOR) -定义函数体 RETURN STD_LOGIC_VECTOR IS BEGIN IF a b THEN RETURN a; ELSE RETURN b; END IF; END FUNCTION ma

9、x; -结束FUNCTION语句 FUNCTION max( a,b :IN INTEGER) -定义函数体 RETURN INTEGER IS BEGIN IF a b THEN RETURN a; ELSE RETURN b; END IF; END FUNCTION max; -结束FUNCTION语句,接下页,FUNCTION max( a,b :IN BIT_VECTOR) -定义函数体 RETURN BIT_VECTOR IS BEGIN IF a b THEN RETURN a; ELSE RETURN b; END IF; END FUNCTION max; -结束FUNCTI

10、ON语句 END; -结束PACKAGE BODY语句. - 以下是调用重载函数max的程序: LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; USE WORK.packexp.ALL; ENTITY axamp IS PORT(a1,b1 : IN STD_LOGIC_VECTOR(3 DOWNTO 0); a2,b2 : IN BIT_VECTOR(4 DOWNTO 0); a3,b3 : IN INTEGER RANGE 0 TO 15; c1 : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); c2 : OUT BIT_VE

11、CTOR(4 DOWNTO 0); c3 : OUT INTEGER RANGE 0 TO 15); END; ARCHITECTURE bhv OF axamp IS BEGIN c1 = max(a1,b1); -对函数max( a,b :IN STD_LOGIC_VECTOR)的调用 c2 = max(a2,b2); -对函数max( a,b :IN BIT_VECTOR) 的调用 c3 = max(a3,b3); -对函数max( a,b :IN INTEGER) 的调用 END;,【例8-4】 LIBRARY IEEE ; - 程序包首 USE IEEE.std_logic_1164

12、.all ; USE IEEE.std_logic_arith.all ; PACKAGE STD_LOGIC_UNSIGNED is function “+“ (L : STD_LOGIC_VECTOR ; R : INTEGER) return STD_LOGIC_VECTOR ; function “+“ (L : INTEGER; R : STD_LOGIC_VECTOR) return STD_LOGIC_VECTOR ; function “+“ (L : STD_LOGIC_VECTOR ; R : STD_LOGIC ) return STD_LOGIC_VECTOR ; fu

13、nction SHR (ARG : STD_LOGIC_VECTOR ; COUNT : STD_LOGIC_VECTOR ) return STD_LOGIC_VECTOR ; . end STD_LOGIC_UNSIGNED ; LIBRARY IEEE ; - 程序包体 use IEEE.std_logic_1164.all ; use IEEE.std_logic_arith.all ; package body STD_LOGIC_UNSIGNED is function maximum (L, R : INTEGER) return INTEGER is begin if L R

14、then return L; else return R; end if; end; function “+“ (L : STD_LOGIC_VECTOR ; R : INTEGER) return STD_LOGIC_VECTOR is Variable result : STD_LOGIC_VECTOR (Lrange) ; Begin result := UNSIGNED(L) + R ; return std_logic_vector(result) ; end ; . end STD_LOGIC_UNSIGNED ;,8.3 VHDL子程序,8.3.3 VHDL转换函数,表8-1 I

15、EEE库类型转换函数表,8.3 VHDL子程序,8.3.3 VHDL转换函数,【例8-5】 LIBRARY IEEE; USE IEEE. std_logic_1164.ALL; ENTITY exg IS PORT (a,b : in bit_vector(3 downto 0); q : out std_logic_vector(3 downto 0); end ; architecture rtl of exg is begin q= to_stdlogicvector(a and b);-将位矢量数据类型转换成标准逻辑位矢量数据 end;,8.3 VHDL子程序,8.3.3 VHDL转

16、换函数,【例8-6】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL;-注意使用了此程序包 ENTITY axamp IS PORT(a,b,c : IN integer range 0 to 15 ; q : OUT std_logic_vector(3 downto 0) ); END; ARCHITECTURE bhv OF axamp IS BEGIN q = conv_std_logic_vector(a,4) when conv_integer(c)=8 else conv_std_lo

17、gic_vector(b,4) ; END;,【例8-7】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; PACKAGE n_pack IS SUBTYPE nat IS Integer range 0 to 255; -定义一个Integer的子类型 TYPE Bit8 IS array (7 downto 0) OF std_logic;- 定义一个数据类型 FUNCTION nat_to_Bit8 (s: nat) RETURN Bit8; End n_pack; PACKAGE BODY n_pack IS FUNCTION nat_to_Bit

18、8 (s: nat) RETURN Bit8 IS VARIABLE Din: Integer range 255 downto 0; VARIABLE Rut: Bit8; VARIABLE Rig: Integer :=2*7; BEGIN Din := s; FOR I in 7 downto 0 LOOP IF Din/Rig 1 THEN Rut(i) := 1; Din := Din-Rig; ELSE Rut (i):= 0; END IF; Rig := Rig / 2; END LOOP; RETURN Rut; END nat_to_Bit8; END n_pack; LI

19、BRARY IEEE; - 用户定义转换函数应用实例 USE IEEE.STD_LOGIC_1164.ALL; USE WORK.n_pack.ALL ; ENTITY axamp IS PORT(dat : IN nat; -注意数据类型的定义 ou : OUT Bit8); -注意数据类型的定义 END; ARCHITECTURE bhv OF axamp IS BEGIN ou = nat_to_Bit8(dat); END;,8.3 VHDL子程序,8.3.4 VHDL决断函数,决断函数输入一般是单一变量,多个驱动源的信号值组成非限定数组,如2个信号驱动源,其信号值组成的数组是2个元素

20、长度;3个信号驱动源信号值组成的数组是3个元素长度,多个信号驱动源信号值组成的未限定数组可依次类推。但决断函数调用后返回的是单一信号值,称断信号值。,8.3 VHDL子程序,8.3.5 VHDL过程,PROCEDURE 过程名(参数表) - 过程首 PROCEDURE 过程名(参数表) IS 说明部分 BIGIN - 过程体 顺序语句; END PROCEDURE 过程名,8.3 VHDL子程序,8.3.5 VHDL过程,PROCEDURE pro1 (VARIABLE a, b : INOUT REAL) ; PROCEDURE pro2 (CONSTANT a1 : IN INTEGER

21、; VARIABLE b1 : OUT INTEGER ) ; PROCEDURE pro3 (SIGNAL sig : INOUT BIT) ;,8.3 VHDL子程序,8.3.5 VHDL过程,【例8-8】 PROCEDURE prg1(VARIABLE value:INOUT BIT_VECTOR(0 TO 7) IS BEGIN CASE value IS WHEN “0000“ = value: “0101“ ; WHEN “0101“ = value: “0000“ ; WHEN OTHERS = value: “1111“ ; END CASE ; END PROCEDURE p

22、rg1 ;,8.3 VHDL子程序,8.3.5 VHDL过程,【例8-9】 PROCEDURE comp ( a, r : IN REAL; m : IN INTEGER ; v1, v2: OUT REAL) IS VARIABLE cnt : INTEGER ; BEGIN v1 := 1.6 * a ; - 赋初始值 v2 := 1.0 ; - 赋初始值 Q1 : FOR cnt IN 1 TO m LOOP v2 := v2 * v1 ; EXIT Q1 WHEN v2 v1; - 当v2 v1,跳出循环LOOP END LOOP Q1 ASSERT (v2 v1 ) REPORT “

23、OUT OF RANGE“ - 输出错误报告 SEVERITY ERROR ; END PROCEDURE comp ;,【例8-10】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; PACKAGE axamp IS -过程首定义 PROCEDURE nand4a (SIGNAL a,b,c,d : IN STD_LOGIC ; SIGNAL y : OUT STD_LOGIC ); END axamp; PACKAGE BODY axamp IS -过程体定义 PROCEDURE nand4a (SIGNAL a,b,c,d : IN STD_LOGI

24、C ; SIGNAL y : OUT STD_LOGIC ) IS BEGIN y= NOT(a AND b AND c AND d); RETURN; END nand4a; END axamp; LIBRARY IEEE; -主程序 USE IEEE.STD_LOGIC_1164.ALL; USE WORK.axamp.ALL; ENTITY EX IS PORT( e,f,g,h : IN STD_LOGIC ; x : OUT STD_LOGIC ); END; ARCHITECTURE bhv OF EX IS BEGIN nand4a(e,f,g,h,x) ; 并行调用过程 END

25、;,8.3 VHDL子程序,8.3.6 VHDL重载过程,【例8-11】 PROCEDURE calcu ( v1, v2 : IN REAL ; SIGNAL out1 : INOUT INTEGER) ; PROCEDURE calcu ( v1, v2 : IN INTEGER ; SIGNAL out1 : INOUT REAL) ; . calcu (20.15, 1.42, signl) ; - 调用第一个重载过程calcu calcu (23, 320,sign2 ) ; - 调用第二个重载过程 calcu .,8.3 VHDL子程序,8.3.7 子程序调用语句,1. 过程调用,

26、过程名(形参名= 实参表达式 ,形参名= 实参表达式) ;,(1) 将IN和INOUT模式的实参值赋给欲调用的过程中与它们对应的形参; (2) 执行这个过程; (3) 将过程中IN和INOUT模式的形参值返回给对应的实参。,8.3 VHDL子程序,8.3.7 子程序调用语句,1. 过程调用,【例8-12】 PACKAGE data_types IS - 定义程序包 SUBTYPE data_element IS INTEGER RANGE 0 TO 3 ;- 定义数据类型 TYPE data_array IS ARRAY (1 TO 3) OF data_element; END data_t

27、ypes; USE WORK.data_types.ALL; -打开以上建立在当前工作库的程序包data_types ENTITY sort IS PORT ( in_array : IN data_array ; out_array : OUT data_array); END sort; ARCHITECTURE exmp OF sort IS BEGIN PROCESS (in_array) - 进程开始,设data_types为敏感信号 PROCEDURE swap(data : INOUT data_array; - swap的形参名为data、low、high low, high

28、: IN INTEGER ) IS VARIABLE temp : data_element ; BEGIN - 开始描述本过程的逻辑功能 IF (data(low) data(high) THEN - 检测数据 temp := data(low) ; data(low) := data(high); data(high) := temp ; END IF ; END swap ; - 过程swap定义结束 VARIABLE my_array : data_array ; - 在本进程中定义变量my_array BEGIN - 进程开始 my_array := in_array ; - 将输入

29、值读入变量 swap(my_array, 1, 2); - my_array、1、2是对应于data、low、high的实参 swap(my_array, 2, 3); - 位置关联法调用, 第2、第3元素交换 swap(my_array, 1, 2); - 位置关联法调用, 第1、第2元素再次交换 out_array = my_array ; END Process ; END exmp ;,8.3 VHDL子程序,8.3.7 子程序调用语句,1. 过程调用,【例8-13】 ENTITY sort4 is GENERIC (top : INTEGER :=3); PORT (a, b, c,

30、 d : IN BIT_VECTOR (0 TO top); ra, rb, rc, rd : OUT BIT_VECTOR (0 TO top); END sort4; ARCHITECTURE muxes OF sort4 IS PROCEDURE sort2(x, y : INOUT BIT_VECTOR (0 TO top) is VARIABLE tmp : BIT_VECTOR (0 TO top); BEGIN IF x y THEN tmp := x; x := y; y := tmp; END IF; END sort2; BEGIN PROCESS (a, b, c, d)

31、 VARIABLE va, vb, vc, vd : BIT_VECTOR(0 TO top); BEGIN va := a; vb := b; vc := c; vd := d; sort2(va, vc); sort2(vb, vd); sort2(va, vb); sort2(vc, vd); sort2(vb, vc); ra = va; rb = vb; rc = vc; rd = vd; END PROCESS; END muxes;,8.3 VHDL子程序,8.3.7 子程序调用语句,1. 过程调用,2函数调用,函数调用与过程调用是十分相似的,不同之处是,调用函数将返还一个指定数

32、据类型的值,函数的参量只能是输入值。,8.3 VHDL子程序,8.3.8 并行过程调用语句,过程名(关联参量名);,【例8-14】 . PROCEDURE adder(SIGNAL a, b :IN STD_LOGIC ; -过程名为adder SIGNAL sum : OUT STD_LOGIC ); . adder(a1,b1,sum1) ; - 并行过程调用 . - 在此,a1、b1、sum1即为分别对应于a、b、sum的关联参量名 PROCESS( c1,c2) ; - 进程语句执行 BEGIN Adder(c1,c2,s1) ; - 顺序过程调用,在此c1、c2、s1即为分别对 EN

33、D PROCESS ; - 应于a、b、sum的关联参量名,8.3 VHDL子程序,8.3.8 并行过程调用语句,【例8-15】 PROCEDURE check(SIGNAL a : IN STD_LOGIC_VECTOR; - 在调用时 SIGNAL error : OUT BOOLEAN ) IS - 再定位宽 VARIABLE found_one : BOOLEAN := FALSE ; - 设初始值 BEGIN FOR i IN aRANGE LOOP - 对位矢量a的所有的位元素进行循环检测 IF a(i) = 1 THEN - 发现a中有 1 IF found_one THEN -

34、 若found_one为TRUE,则表明发现了一个以上的1 ERROR = TRUE; - 发现了一个以上的1,令found_one为TRUE RETURN; - 结束过程 END IF; Found_one := TRUE; - 在a中已发现了一个1 End IF; End LOOP; - 再测a中的其他位 error = NOT found_one; - 如果没有任何1 被发现,error 将被置TRUE END PROCEDURE check;,8.3 VHDL子程序,8.3.8 并行过程调用语句,. CHBLK:BLOCK SIGNAL s1: STD_LOGIC_VECTOR (0

35、TO 0); - 过程调用前设定位矢尺寸 SIGNAL s2: STD_LOGIC_VECTOR (0 TO 1); SIGNAL s3: STD_LOGIC_VECTOR (0 TO 2); SIGNAL s4: STD_LOGIC_VECTOR (0 TO 3); SIGNAL e1, e2, e3, e4: Boolean; BEGIN Check (s1, e1); - 并行过程调用,关联参数名为s1、e1 Check (s2, e2); - 并行过程调用,关联参数名为s2、e2 Check (s3, e3); - 并行过程调用,关联参数名为s3、e3 Check (s4, e4);

36、- 并行过程调用,关联参数名为s4、e4 END BLOCK; .,8.4 VHDL库,8.4.1 库的种类,1. IEEE库,2. STD库,3. WORK库,4. VITAL库,8.4 VHDL库,8.4.2 库的用法,USE 库名.程序包名.项目名 ; USE 库名.程序包名.ALL ;,LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.STD_ULOGIC ; USE IEEE.STD_LOGIC_1164.RISING_EDGE ;,USE WORK.std_logic_1164.ALL;,8.5 VHDL程序包,定义程序包的一般语句结构如下: PACKA

37、GE 程序包名 IS - 程序包首 程序包首说明部分 END 程序包名; PACKAGE BODY 程序包名 IS - 程序包体 程序包体说明部分以及包体内 END 程序包名;,8.5 VHDL程序包,【例8-16】 PACKAGE pacl IS - 程序包首开始 TYPE byte IS RANGE 0 TO 255 ; - 定义数据类型byte SUBTYPE nibble IS byte RANGE 0 TO 15 ; - 定义子类型nibble CONSTANT byte_ff : byte := 255 ; - 定义常数byte_ff SIGNAL addend : nibble

38、; - 定义信号addend COMPONENT byte_adder - 定义元件 PORT( a, b : IN byte ; c : OUT byte ; overflow : OUT BOOLEAN ) ; END COMPONENT ; FUNCTION my_function (a : IN byte) Return byte ; - 定义函数 END pacl ; - 程序包首结束,【例8-17】 PACKAGE seven IS SUBTYPE segments is BIT_VECTOR(0 TO 6) ; TYPE bcd IS RANGE 0 TO 9 ; END sev

39、en ; USE WORK.seven.ALL ; - WORK库默认是打开的, ENTITY decoder IS PORT (input: bcd; drive : out segments) ; END decoder ; ARCHITECTURE simple OF decoder IS BEGIN WITH input SELECT drive = B“1111110“ WHEN 0 , B“0110000“ WHEN 1 , B“1101101“ WHEN 2 , B“1111001“ WHEN 3 , B“0110011“ WHEN 4 , B“1011011“ WHEN 5 ,

40、 B“1011111“ WHEN 6 , B“1110000“ WHEN 7 , B“1111111“ WHEN 8 , B“1111011“ WHEN 9 , B“0000000“ WHEN OTHERS ; END simple ;,KX康芯科技,8.6 VHDL配置,配置语句的一般格式如下: CONFIGURATION 配置名 OF 实体名 IS 配置说明 END 配置名;,8.7 VHDL文字规则,8.7.1 数字,整数:,5, 678, 0, 156E2(=15600), 45_234_287 (=45234287),实数:,1.335, 88_670_551.453_909(=88

41、670551.453909),1.0,44.99E-2(=0.4499),以数制基数表示的文字:,SIGNAL d1,d2,d3,d4,d5, : INTEGER RANGE 0 TO 255; d1 = 10#170# ; - (十进制表示,等于 170) d2 = 16#FE# ; - (十六进制表示,等于 254) d3 = 2#1111_1110#; - (二进制表示,等于 254) d4 = 8#376# ; - (八进制表示,等于 254) d5 = 16#E#E1 ; - (十六进制表示,等于2#1110000#,等于224),物理量文字(VHDL综合器不接受此类文字),60s

42、(60秒), 100m (100米), k (千欧姆), 177A (177安培),8.7 VHDL文字规则,8.7.2 字符串,(1) 文字字符串,“ERROR“ , “Both S and Q equal to 1“ , “X“ , “BB$CC“,(2) 数位字符串,B:二进制基数符号,表示二进制位0或1,在字符串中的每位表示一个Bit。 O:八进制基数符号,在字符串中的每一个数代表一个八进制数,即代表一个3位(BIT)的二进制数。 X:十六进制基数符号(0F),代表一个十六进制数,即一个4位的二进制数。,data1 = B“1_1101_1110“ - 二进制数数组,位矢数组长度是9

43、data2 = O“15“ - 八进制数数组,位矢数组长度是6 data3 = X“AD0“ - 十六进制数数组,位矢数组长度是12 data4 = B“101_010_101_010“ - 二进制数数组,位矢数组长度是12 data5 = “101_010_101_010“ -表达错误,缺B。 data6 = “0AD0“ -表达错误,缺X。,8.7 VHDL文字规则,8.7.3 标识符,Decoder_1 , FFT , Sig_N , Not_Ack , State0 , Idle,_Decoder_1 - 起始为非英文字母 2FFT - 起始为数字 Sig_#N - 符号“#”不能成为

44、标识符的构成 Not-Ack - 符号“-” 不能成为标识符的构成 RyY_RST_ - 标识符的最后不能是下划线“_” data_ _BUS - 标识符中不能有双下划线 return - 关键词,8.7 VHDL文字规则,8.7.4 下标名,标识符(表达式),SIGNAL a,b : BIT_VECTOR (0 TO 3) ; SIGNAL m : INTEGER RANGE 0 TO 3 ; SIGNAL y,z : BIT ; y = a(m) ; - 不可计算型下标表示 z = b(3) ; - 可计算型下标表示,8.8 VHDL数据类型,标量型(Scalar Type): 包括实数类

45、型、整数类型、枚举类型、时间类型。 复合类型(Composite Type): 可以由小的数据类型复合而成,如可由标量型复合而成。复合类型主要有数组型(Array)和记录型(Record)。 存取类型(Access Type): 为给定的数据类型的数据对象提供存取方式。 文件类型(Files Type): 用于提供多值存取类型。,8.8 VHDL数据类型,8.8.1 预定义数据类型,1. 布尔(BOOLEAN)类型,TYPE BOOLEAN IS (FALSE,TRUE);,2. 位(BIT)数据类型,TYPE BIT IS (0,1);,3. 位矢量(BIT_VECTOR)类型,TYPE B

46、IT_VECTOR IS ARRAY (Natural Range ) OF BIT ;,8.8 VHDL数据类型,8.8.1 预定义数据类型,4. 字符(CHARACTER)类型,5. 整数(INTEGER)类型,6. 实数(REAL)类型,8.8 VHDL数据类型,7. 字符串(STRING)类型,8. 时间(TIME)类型,VARIABLE string_var : STRING (1 TO 7 ) ; string_var := “a b c d“ ;,TYPE time IS RANGE 2147483647 TO 2147483647 units fs ; - 飞秒,VHDL中的最小时间单位 ps = 1000 fs ; - 皮秒 ns = 1000 ps ; - 纳

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 商业贸易


经营许可证编号:宁ICP备18001539号-1