收藏 分享(赏)

EDA技术实用教程第9章.ppt

上传人:hyngb9260 文档编号:8433746 上传时间:2019-06-26 格式:PPT 页数:97 大小:538.50KB
下载 相关 举报
EDA技术实用教程第9章.ppt_第1页
第1页 / 共97页
EDA技术实用教程第9章.ppt_第2页
第2页 / 共97页
EDA技术实用教程第9章.ppt_第3页
第3页 / 共97页
EDA技术实用教程第9章.ppt_第4页
第4页 / 共97页
EDA技术实用教程第9章.ppt_第5页
第5页 / 共97页
点击查看更多>>
资源描述

1、EDA 技术实用教程,第 9 章 VHDL结构与要素,9.1 实体,KX康芯科技,9.1.1 实体语句结构,实体说明单元的一般语句结构: ENTITY 实体名 ISGENERIC ( 参数名:数据类型 );PORT ( 端口表 );END ENTITY 实体名;,9.1 实体,KX康芯科技,9.1.2 参数传递说明语句,参数传递说明语句的一般书写格式如下:GENERIC( 常数名 : 数据类型 : 设定值 ;常数名 : 数据类型 : 设定值 ) ;,9.1 实体,KX康芯科技,9.1.2 参数传递说明语句,【例9-1】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.A

2、LL;ENTITY andn ISGENERIC ( n : INTEGER ); -定义类属参量及其数据类型PORT(a : IN STD_LOGIC_VECTOR(n-1 DOWNTO 0);-用类属参量限制矢量长度c : OUT STD_LOGIC);END;ARCHITECTURE behav OF andn ISBEGINPROCESS (a)VARIABLE int : STD_LOGIC;BEGINint := 1;FOR i IN aLENGTH - 1 DOWNTO 0 LOOP -循环语句IF a(i)=0 THEN int := 0;END IF;END LOOP;c =

3、int ;END PROCESS;END;,9.1 实体,KX康芯科技,9.1.2 参数传递说明语句,【例9-2】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY exn ISPORT(d1,d2,d3,d4,d5,d6,d7 : IN STD_LOGIC;q1,q2 : OUT STD_LOGIC);END;ARCHITECTURE exn_behav OF exn ISCOMPONENT andn -调用例10-1的元件调用声明GENERIC ( n : INTEGER);PORT(a : IN STD_LOGIC_VECTOR(n-1 DOW

4、NTO 0);C : OUT STD_LOGIC);END COMPONENT ;BEGIN u1: andn GENERIC MAP (n =2) - 参数传递映射语句,定义类属变量,n赋值为2 PORT MAP (a(0)=d1,a(1)=d2,c=q1);u2: andn GENERIC MAP (n =5) - 定义类属变量,n赋值为5PORT MAP (a(0)=d3,a(1)=d4,a(2)=d5,a(3)=d6,a(4)=d7, c=q2);END;,9.1 实体,KX康芯科技,9.1.3 参数传递映射语句,【例9-3】 LIBRARY IEEE; -待例化元件 USE IEEE

5、.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_arith.ALL; USE IEEE.STD_LOGIC_unsigned.ALL; ENTITY addern ISPORT (a, b: IN STD_LOGIC_VECTOR;result: out STD_LOGIC_VECTOR); END addern;ARCHITECTURE behave OF addern ISBEGINresult = a + b;END;,KX康芯科技,9.1.3 参数传递映射语句,【例9-4】 LIBRARY IEEE; -顶层设计 USE IEEE.STD_LOGIC_1

6、164.ALL; USE IEEE.STD_LOGIC_arith.ALL; USE IEEE.STD_LOGIC_unsigned.ALL; ENTITY adders ISGENERIC(msb_operand: INTEGER := 15; msb_sum: INTEGER :=15);PORT(b: IN STD_LOGIC_VECTOR (msb_operand DOWNTO 0);result: OUT STD_LOGIC_VECTOR (msb_sum DOWNTO 0); END adders;ARCHITECTURE behave OF adders ISCOMPONENT

7、addernPORT ( a, b: IN STD_LOGIC_VECTOR;result: OUT STD_LOGIC_VECTOR);END COMPONENT; SIGNAL a: STD_LOGIC_VECTOR (msb_sum /2 DOWNTO 0);SIGNAL twoa: STD_LOGIC_VECTOR (msb_operand DOWNTO 0);BEGINtwoa twoa, b = b, result = result);U2: addern PORT MAP (a=b(msb_operand downto msb_operand/2 +1),b=b(msb_oper

8、and/2 downto 0), result = a); END behave;,9.1 实体,KX康芯科技,9.1.3 参数传递映射语句,图9-1 例9-4的RTL电路图(Synplify综合),9.1 实体,KX康芯科技,9.1.4 端口说明语句,PORT ( 端口名 : 端口模式 数据类型 ; 端口名 : 端口模式 数据类型 ) ;,9.2 结构体,KX康芯科技,对数据类型、常数、信号、子程序和元件等元素的说明部分,描述实体逻辑行为的、以各种不同的描述风格表达的功能描述语句,以元件例化语句为特征的外部元件(设计实体)端口间的连接。,结 构 体,9.2 结构体,KX康芯科技,1. 结构体

9、的一般语言格式,结构体的语句格式如下: ARCHITECTURE 结构体名 OF 实体名 IS说明语句 BEGIN功能描述语句 END ARCHITECTURE 结构体名;,9.2 结构体,KX康芯科技,2. 结构体说明语句,3. 功能描述语句结构,9.3 子程序,KX康芯科技,9.3.1 函数,函数的语句表达格式如下: FUNCTION 函数名(参数表) RETURN 数据类型 -函数首 FUNCTION 函数名(参数表)RETURN 数据类型 IS - 函数体 说明部分 BEGIN 顺序语句 ; END FUNCTION 函数名;,KX康芯科技,【例9-5】 LIBRARY IEEE; U

10、SE IEEE.STD_LOGIC_1164.ALL; PACKAGE packexp IS -定义程序包FUNCTION max( a,b : IN STD_LOGIC_VECTOR) -定义函数首RETURN 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 ; PACKAG

11、E BODY packexp IS FUNCTION max( a,b : IN STD_LOGIC_VECTOR) -定义函数体RETURN STD_LOGIC_VECTOR ISBEGINIF a b THEN RETURN a;ELSE RETURN b;END IF;END FUNCTION max; -结束FUNCTION语句END; -结束PACKAGE BODY语句(接下页),KX康芯科技,LIBRARY IEEE; - 函数应用实例USE IEEE.STD_LOGIC_1164.ALL;USE WORK.packexp.ALL ;ENTITY axamp ISPORT(dat1

12、,dat2 : IN STD_LOGIC_VECTOR(3 DOWNTO 0);dat3,dat4 : IN STD_LOGIC_VECTOR(3 DOWNTO 0);out1,out2 : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) );END;ARCHITECTURE bhv OF axamp ISBEGINout1 = max(dat1,dat2); -用在赋值语句中的并行函数调用语句PROCESS(dat3,dat4)BEGINout2 = max(dat3,dat4); -顺序函数调用语句END PROCESS;END;,9.3 子程序,KX康芯科技,9.3.1

13、 函数,图9-2 例9-5的逻辑电路图,KX康芯科技,【例9-6】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL ;ENTITY func ISPORT ( a : IN STD_LOGIC_VECTOR (0 to 2 ) ;m : OUT STD_LOGIC_VECTOR (0 to 2 ) );END ENTITY func ;ARCHITECTURE demo OF func ISFUNCTION sam(x ,y ,z : STD_LOGIC) RETURN STD_LOGIC ISBEGINRETURN ( x AND y ) OR z ;END

14、FUNCTION sam ;BEGINPROCESS ( a )BEGINm(0) = sam( a(0), 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 ;,9.3 子程序,KX康芯科技,9.3.2 重载函数,【例9-7】(MaxplusII不支持本例)LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ;PACKAGE packexp IS -定义程序包FUNCTION max(

15、 a,b :IN STD_LOGIC_VECTOR) -定义函数首RETURN STD_LOGIC_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 ISBEGINIF a b THEN RETURN a; (

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

17、END FUNCTION max; -结束FUNCTION语句END; -结束PACKAGE BODY语句- 以下是调用重载函数max的程序:LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ;USE WORK.packexp.ALL;ENTITY axamp IS,(接下页),KX康芯科技,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_VECT

18、OR(3 DOWNTO 0);c2 : OUT BIT_VECTOR(4 DOWNTO 0);c3 : OUT INTEGER RANGE 0 TO 15);END;ARCHITECTURE bhv OF axamp ISBEGINc1 = 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;,【例9-8】LIBRARY IEEE ; - 程序包首U

19、SE IEEE.std_logic_1164.all ;USE IEEE.std_logic_arith.all ;PACKAGE STD_LOGIC_UNSIGNED isfunction “+“ (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_

20、LOGIC_VECTOR ;function 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 isfunction maximum (L, R : INTEGER) return INTEGER

21、isbeginif L R then return L; else return R; end if; end;function “+“ (L : STD_LOGIC_VECTOR ; R : INTEGER) return STD_LOGIC_VECTOR isVariable result : STD_LOGIC_VECTOR (Lrange) ;Beginresult := UNSIGNED(L) + R ; return std_logic_vector(result) ;end ;.end STD_LOGIC_UNSIGNED ;,KX康芯科技,9.3 子程序,KX康芯科技,9.3.

22、3 转换函数,表9-1 IEEE库类型转换函数表,9.3 子程序,KX康芯科技,9.3.3 转换函数,【例9-9】 LIBRARY IEEE; USE IEEE. std_logic_1164.ALL; ENTITY exg ISPORT (a,b : in bit_vector(3 downto 0);q : out std_logic_vector(3 downto 0); end ; architecture rtl of exg is beginq= to_stdlogicvector(a and b);-将位矢量数据类型转换成标准逻辑位矢量数据 end;,9.3 子程序,KX康芯科技

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

24、d_logic_vector(b,4) ; END;,【例9-11】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; PACKAGE n_pack ISSUBTYPE 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 ISFUNCTION nat_to_Bit

25、8 (s: nat) RETURN Bit8 ISVARIABLE Din: Integer range 255 downto 0;VARIABLE Rut: Bit8;VARIABLE Rig: Integer :=2*7;BEGINDin := s;FOR I in 7 downto 0 LOOPIF 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;LIBRARY

26、IEEE; - 用户定义转换函数应用实例 USE IEEE.STD_LOGIC_1164.ALL; USE WORK.n_pack.ALL ; ENTITY axamp ISPORT(dat : IN nat; -注意数据类型的定义ou : OUT Bit8); -注意数据类型的定义END; ARCHITECTURE bhv OF axamp ISBEGINou = nat_to_Bit8(dat); END;,9.3 子程序,KX康芯科技,9.3.4 决断函数,9.3.5 过程,PROCEDURE 过程名(参数表) - 过程首PROCEDURE 过程名(参数表) IS说明部分BIGIN -

27、过程体顺序语句;END PROCEDURE 过程名;,9.3 子程序,KX康芯科技,9.3.5 过程,PROCEDURE pro1 (VARIABLE a, b : INOUT REAL) ; PROCEDURE pro2 (CONSTANT a1 : IN INTEGER ; VARIABLE b1 : OUT INTEGER ) ; PROCEDURE pro3 (SIGNAL sig : INOUT BIT) ;,【例9-12】 PROCEDURE prg1(VARIABLE value:INOUT BIT_VECTOR(0 TO 7) IS BEGINCASE value ISWHEN

28、 “0000“ = value: “0101“ ;WHEN “0101“ = value: “0000“ ;WHEN OTHERS = value: “1111“ ;END CASE ; END PROCEDURE prg1 ;,9.3 子程序,KX康芯科技,9.3.5 过程,【例9-13】PROCEDURE comp ( a, r : IN REAL;m : IN INTEGER ;v1, v2: OUT REAL) ISVARIABLE cnt : INTEGER ;BEGINv1 := 1.6 * a ; - 赋初始值v2 := 1.0 ; - 赋初始值Q1 : FOR cnt IN 1

29、 TO m LOOPv2 := v2 * v1 ;EXIT Q1 WHEN v2 v1; - 当v2 v1,跳出循环LOOPEND LOOP Q1ASSERT (v2 v1 )REPORT “OUT OF RANGE“ - 输出错误报告SEVERITY ERROR ;END PROCEDURE comp ;,KX康芯科技,【例9-14】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; PACKAGE axamp IS 过程首定义PROCEDURE nand4a (SIGNAL a,b,c,d : IN STD_LOGIC ;SIGNAL y : OUT S

30、TD_LOGIC );END axamp; PACKAGE BODY axamp IS -过程体定义PROCEDURE nand4a (SIGNAL a,b,c,d : IN STD_LOGIC ;SIGNAL y : OUT STD_LOGIC ) ISBEGIN 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 ISPORT( e,f,g,h : IN STD_LOGIC

31、 ;x : OUT STD_LOGIC );END; ARCHITECTURE bhv OF EX ISBEGINnand4a(e,f,g,h,x) ; 并行调用过程 END;,9.3 子程序,KX康芯科技,9.3.6 重载过程,【例9-15】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

32、calcu (23, 320,sign2 ) ; - 调用第二个重载过程 calcu.,9.4 VHDL库,KX康芯科技,9.4.1 库的种类,1. IEEE库,2. STD库,LIBRARY STD ; USE STD.STANDARD.ALL ;,3. WORK库,4. VITAL库,9.4 VHDL库,KX康芯科技,9.4.2 库的用法,USE 库名.程序包名.项目名 ; USE 库名.程序包名.ALL ;,LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.STD_ULOGIC ; USE IEEE.STD_LOGIC_1164.RISING_EDGE ;,U

33、SE WORK.std_logic_1164.ALL;,9.5 程序包,KX康芯科技,定义程序包的一般语句结构如下:PACKAGE 程序包名 IS - 程序包首程序包首说明部分 END 程序包名;PACKAGE BODY 程序包名 IS - 程序包体程序包体说明部分以及包体内 END 程序包名;,9.5 程序包,KX康芯科技,【例9-16】PACKAGE pacl IS - 程序包首开始TYPE byte IS RANGE 0 TO 255 ; - 定义数据类型byteSUBTYPE nibble IS byte RANGE 0 TO 15 ; - 定义子类型nibble CONSTANT b

34、yte_ff : byte := 255 ; - 定义常数byte_ffSIGNAL addend : nibble ; - 定义信号addendCOMPONENT 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 ; - 程序包首结束,9.5 程序包,KX康芯科技,【例9-17】PACKAGE seven ISSUBTYPE

35、segments is BIT_VECTOR(0 TO 6) ;TYPE bcd IS RANGE 0 TO 9 ;END seven ;USE WORK.seven.ALL ; - WORK库默认是打开的,ENTITY decoder ISPORT (input: bcd; drive : out segments) ;END decoder ;ARCHITECTURE simple OF decoder ISBEGINWITH input SELECTdrive = B“1111110“ WHEN 0 ,B“0110000“ WHEN 1 ,B“1101101“ WHEN 2 ,B“111

36、1001“ WHEN 3 ,B“0110011“ WHEN 4 ,B“1011011“ WHEN 5 ,B“1011111“ WHEN 6 ,B“1110000“ WHEN 7 ,B“1111111“ WHEN 8 ,B“1111011“ WHEN 9 ,B“0000000“ WHEN OTHERS ;END simple ;,9.5 程序包,KX康芯科技,(1) STD_LOGIC_1164程序包。,(2) STD_LOGIC_ARITH程序包。,(3) STD_LOGIC_UNSIGNED和STD_LOGIC_SIGNED程序包。,(4) STANDARD和TEXTIO程序包。,9.6 配

37、置,KX康芯科技,配置语句的一般格式如下: CONFIGURATION 配置名 OF 实体名 IS配置说明END 配置名;,9.7 VHDL文字规则,KX康芯科技,9.7.1 数字,9.7 VHDL文字规则,9.7.2 字符串,KX康芯科技,9.7 VHDL文字规则,9.7.3 标识符,KX康芯科技,合法的标识符:Decoder_1 , FFT , Sig_N , Not_Ack , State0 , Idle,非法的标识符: _Decoder_1 - 起始为非英文字母2FFT - 起始为数字 Sig_#N - 符号“#”不能成为标识符的构成 Not-Ack - 符号“-” 不能成为标识符的构

38、成 RyY_RST_ - 标识符的最后不能是下划线“_” data_ _BUS - 标识符中不能有双下划线 return - 关键词,9.7 VHDL文字规则,9.7.4 下标名,KX康芯科技,标识符(表达式),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) ; - 可计算型下标表示,9.8 数据类型,KX康芯科技,9.8 数据类型,KX康芯科技,9.8.1 预定义数据类型,9.8 数据类型,KX康芯科技

39、,9.8 数据类型,KX康芯科技,9.8 数据类型,KX康芯科技,9.8 数据类型,KX康芯科技,9.8.2 IEEE预定义标准逻辑位与矢量,1. 标准逻辑位数据类型,9.8 数据类型,KX康芯科技,9.8.3 其他预定义标准数据类型,9.8 数据类型,KX康芯科技,9.8.4 数组类型,9.8 数据类型,KX康芯科技,9.8.4 数组类型,【例9-18】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY amp ISPORT ( a1,a2 : IN BIT_VECTOR(3 DOWN

40、TO 0);c1,c2,c3 : IN STD_LOGIC_VECTOR (3 DOWNTO 0);b1,b2,b3 : INTEGER RANGE 0 TO 15;d1,d2,d3,d4 : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) );END amp;d1 = TO_STDLOGICVECTOR(a1 AND a2); -(1)d2 = CONV_STD_LOGIC_VECTOR(b1,4) WHEN CONV_INTEGER(b2)=9 else CONV_STD_LOGIC_VECTOR(b3,4); -(2)d3 = c1 WHEN CONV_INTEGER(

41、c2)= 8 ELSE c3; -(3)d4 = c1 WHEN c2 = 8 else c3; -(4),9.8 数据类型,KX康芯科技,9.8.4 数组类型,【例9-19】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY decoder3to8 ISPORT ( input: IN STD_LOGIC_VECTOR (2 DOWNTO 0);output: OUT STD_LOGIC_VECTOR (7 DOWNTO 0); END decoder3to8; ARCHITECT

42、URE behave OF decoder3to8 ISBEGINPROCESS (input)BEGINoutput 0);output(CONV_INTEGER(input) = 1;END PROCESS;END behave;,9.8 数据类型,KX康芯科技,【例9-20】FUNCTION To_bit ( s : std_ulogic; xmap : BIT := 0 ) RETURN BIT ;FUNCTION To_bitvector ( s : std_logic_vector ; xmap : BIT := 0 ) RETURN BIT_VECTOR ;FUNCTION To

43、_bitvector ( s : std_ulogic_vector ;xmap : BIT := 0 ) RETURN BIT_VECTOR ; 下面是转换函数To_bitvector的函数体: FUNCTION To_bitvector ( s : std_logic_vector ; xmap : BIT := 0 )RETURN BIT_VECTOR ISALIAS sv : std_logic_vector(sLENGTH-1 DOWNTO 0 ) IS s ;VARIABLE result : BIT_VECTOR(sLENGTH-1 DOWNTO 0 ); BEGINFOR i

44、IN resultRANGE LOOPCASE sv(i) ISWHEN 0|L = result(i) := 0;WHEN 1|H = result(i) := 1;WHEN OTHERS = result(i) := xmap;END CASE ;END LOOP ;RETURN result ; END ;,9.9 操作符,(接下页),9.9.1 逻辑操作符,表9-2 VHDL操作符列表,KX康芯科技,(接上页),9.9 操作符,9.9.1 逻辑操作符,KX康芯科技,9.9 操作符,9.9.1 逻辑操作符,KX康芯科技,【例9-21】SIGNAL a ,b,c : STD_LOGIC_V

45、ECTOR (3 DOWNTO 0) ;SIGNAL d,e,f,g : STD_LOGIC_VECTOR (1 DOWNTO 0) ;SIGNAL h,I,j,k : STD_LOGIC ;SIGNAL l,m,n,o,p : BOOLEAN ;.a=b AND c; -b、c 相与后向a赋值,a、b、c的数据类型同属4位长的位矢量d=e OR f OR g ; - 两个操作符OR相同,不需括号h=(i NAND j)NAND k ; - NAND不属上述三种算符中的一种,必须加括号l=(m XOR n)AND(o XOR p); - 操作符不同,必须加括号h=i AND j AND k ;

46、 - 两个操作符都是AND,不必加括号h=i AND j OR k ; - 两个操作符不同,未加括号,表达错误a=b AND e ; - 操作数b 与 e的位矢长度不一致,表达错误h=i OR l ; - i 的数据类型是位STD_LOGIC,而l的数据类型是. - 布尔量BOOLEAN,因而不能相互作用,表达错误。,9.9 操作符,9.9.2 关系操作符,KX康芯科技,9.9 操作符,9.9.2 关系操作符,KX康芯科技,【例9-22】ENTITY relational_ops_1 ISPORT ( a,b : IN BITVECTOR (0 TO 3) ; m : OUT BOOLEAN)

47、 ;END relational_ops_1 ;ARCHITECTURE example OF relational_ops_1 ISBEGINoutput = (a = b) ;END example ;,9.9 操作符,9.9.2 关系操作符,KX康芯科技,【例9-23】 ENTITY relational_ops_2 ISPORT (a,b : IN INTEGER RANGE 0 TO 3 ;m : OUT BOOLEAN) ;END relational_ops_2 ;ARCHITECTURE example OF relational_ops_2 ISBEGINoutput = b) ;END example ;,

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报