⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 std_logic_misc-body.vhdl

📁 vhdl集成电路设计软件.需要用gcc-4.0.2版本编译.
💻 VHDL
📖 第 1 页 / 共 2 页
字号:
    					    report "STD_ULOGIC_VECTORtoBIT_VECTOR: - --> 0"    					    severity WARNING;	    			end if;    			end case;    	end loop;    	return Result;--synopsys synthesis_on    end STD_ULOGIC_VECTORtoBIT_VECTOR;    ---------------------------------------------------------------------    --    --	Function: STD_ULOGICtoBIT    --    --	Purpose: Conversion function from STD_ULOGIC to BIT    --    --	Mapping:	0, L --> 0    --			1, H --> 1    --			X, W --> vX if Xflag is TRUE    --			X, W --> 0  if Xflag is FALSE    --			Z --> vZ if Zflag is TRUE    --			Z --> 0  if Zflag is FALSE    --			U --> vU if Uflag is TRUE    --			U --> 0  if Uflag is FALSE    --			- --> vDC if DCflag is TRUE    --			- --> 0  if DCflag is FALSE    --    ---------------------------------------------------------------------    function STD_ULOGICtoBIT (V: STD_ULOGIC--synopsys synthesis_off    	; vX, vZ, vU, vDC: BIT := '0';     	  Xflag, Zflag, Uflag, DCflag: BOOLEAN := FALSE--synopsys synthesis_on    		   ) return BIT is      -- pragma built_in SYN_FEED_THRU      -- pragma subpgm_id 398    	variable Result: BIT;    begin--synopsys synthesis_off    	case V is    		when '0' | 'L' =>    			Result := '0';    		when '1' | 'H' =>    			Result := '1';    		when 'X' =>    			if ( Xflag ) then    				Result := vX;    			else    				Result := '0';    		 		assert FALSE    			 	    report "STD_ULOGICtoBIT: X --> 0"    			 	    severity WARNING;    			end if;    		when 'W' =>    			if ( Xflag ) then    				Result := vX;    			else    				Result := '0';    		 		assert FALSE    			 	    report "STD_ULOGICtoBIT: W --> 0"    			 	    severity WARNING;    			end if;    		when 'Z' =>    			if ( Zflag ) then    				Result := vZ;    			else    				Result := '0';    				assert FALSE    				    report "STD_ULOGICtoBIT: Z --> 0"    				    severity WARNING;    			end if;    		when 'U' =>    			if ( Uflag ) then    				Result := vU;    			else    				Result := '0';    				assert FALSE    				    report "STD_ULOGICtoBIT: U --> 0"    				    severity WARNING;			end if;    		when '-' =>    			if ( DCflag ) then    				Result := vDC;    			else    				Result := '0';    				assert FALSE    				    report "STD_ULOGICtoBIT: - --> 0"    				    severity WARNING;    			end if;    	end case;    	return Result;--synopsys synthesis_on    end STD_ULOGICtoBIT;    --------------------------------------------------------------------------    function AND_REDUCE(ARG: STD_LOGIC_VECTOR) return UX01 is	-- pragma subpgm_id 399	variable result: STD_LOGIC;    begin	result := '1';	for i in ARG'range loop	    result := result and ARG(i);	end loop;        return result;    end;    function NAND_REDUCE(ARG: STD_LOGIC_VECTOR) return UX01 is	-- pragma subpgm_id 400    begin        return not AND_REDUCE(ARG);    end;    function OR_REDUCE(ARG: STD_LOGIC_VECTOR) return UX01 is	-- pragma subpgm_id 401	variable result: STD_LOGIC;    begin	result := '0';	for i in ARG'range loop	    result := result or ARG(i);	end loop;        return result;    end;    function NOR_REDUCE(ARG: STD_LOGIC_VECTOR) return UX01 is	-- pragma subpgm_id 402    begin        return not OR_REDUCE(ARG);    end;    function XOR_REDUCE(ARG: STD_LOGIC_VECTOR) return UX01 is	-- pragma subpgm_id 403	variable result: STD_LOGIC;    begin	result := '0';	for i in ARG'range loop	    result := result xor ARG(i);	end loop;        return result;    end;    function XNOR_REDUCE(ARG: STD_LOGIC_VECTOR) return UX01 is	-- pragma subpgm_id 404    begin        return not XOR_REDUCE(ARG);    end;    function AND_REDUCE(ARG: STD_ULOGIC_VECTOR) return UX01 is	-- pragma subpgm_id 405	variable result: STD_LOGIC;    begin	result := '1';	for i in ARG'range loop	    result := result and ARG(i);	end loop;        return result;    end;    function NAND_REDUCE(ARG: STD_ULOGIC_VECTOR) return UX01 is	-- pragma subpgm_id 406    begin        return not AND_REDUCE(ARG);    end;    function OR_REDUCE(ARG: STD_ULOGIC_VECTOR) return UX01 is	-- pragma subpgm_id 407	variable result: STD_LOGIC;    begin	result := '0';	for i in ARG'range loop	    result := result or ARG(i);	end loop;        return result;    end;    function NOR_REDUCE(ARG: STD_ULOGIC_VECTOR) return UX01 is	-- pragma subpgm_id 408    begin        return not OR_REDUCE(ARG);    end;    function XOR_REDUCE(ARG: STD_ULOGIC_VECTOR) return UX01 is	-- pragma subpgm_id 409	variable result: STD_LOGIC;    begin	result := '0';	for i in ARG'range loop	    result := result xor ARG(i);	end loop;        return result;    end;    function XNOR_REDUCE(ARG: STD_ULOGIC_VECTOR) return UX01 is	-- pragma subpgm_id 410    begin        return not XOR_REDUCE(ARG);    end;--synopsys synthesis_off	    function fun_BUF3S(Input, Enable: UX01; Strn: STRENGTH) return STD_LOGIC is	-- pragma subpgm_id 411	type TRISTATE_TABLE is array(STRENGTH, UX01, UX01) of STD_LOGIC;	-- truth table for tristate "buf" function (Enable active Low)          constant tbl_BUF3S: TRISTATE_TABLE :=           -- ----------------------------------------------------          -- | Input   U    X    0    1       | Enable Strength |          -- ---------------------------------|-----------------|        	   ((('U', 'U', 'U', 'U'),  --|   U       X01   |        	     ('U', 'X', 'X', 'X'),  --|   X       X01   |        	     ('Z', 'Z', 'Z', 'Z'),  --|   0       X01   |        	     ('U', 'X', '0', '1')), --|   1       X01   |        	    (('U', 'U', 'U', 'U'),  --|   U       X0H   |        	     ('U', 'X', 'X', 'X'),  --|   X       X0H   |        	     ('Z', 'Z', 'Z', 'Z'),  --|   0       X0H   |        	     ('U', 'X', '0', 'H')), --|   1       X0H   |        	    (('U', 'U', 'U', 'U'),  --|   U       XL1   |        	     ('U', 'X', 'X', 'X'),  --|   X       XL1   |        	     ('Z', 'Z', 'Z', 'Z'),  --|   0       XL1   |        	     ('U', 'X', 'L', '1')), --|   1       XL1   |        	    (('U', 'U', 'U', 'Z'),  --|   U       X0Z   |        	     ('U', 'X', 'X', 'Z'),  --|   X       X0Z   |        	     ('Z', 'Z', 'Z', 'Z'),  --|   0       X0Z   |        	     ('U', 'X', '0', 'Z')), --|   1       X0Z   |        	    (('U', 'U', 'U', 'U'),  --|   U       XZ1   |        	     ('U', 'X', 'X', 'X'),  --|   X       XZ1   |        	     ('Z', 'Z', 'Z', 'Z'),  --|   0       XZ1   |        	     ('U', 'X', 'Z', '1')), --|   1       XZ1   |        	    (('U', 'U', 'U', 'U'),  --|   U       WLH   |        	     ('U', 'W', 'W', 'W'),  --|   X       WLH   |        	     ('Z', 'Z', 'Z', 'Z'),  --|   0       WLH   |        	     ('U', 'W', 'L', 'H')), --|   1       WLH   |        	    (('U', 'U', 'U', 'U'),  --|   U       WLZ   |        	     ('U', 'W', 'W', 'Z'),  --|   X       WLZ   |        	     ('Z', 'Z', 'Z', 'Z'),  --|   0       WLZ   |        	     ('U', 'W', 'L', 'Z')), --|   1       WLZ   |        	    (('U', 'U', 'U', 'U'),  --|   U       WZH   |        	     ('U', 'W', 'W', 'W'),  --|   X       WZH   |        	     ('Z', 'Z', 'Z', 'Z'),  --|   0       WZH   |        	     ('U', 'W', 'Z', 'H')), --|   1       WZH   |        	    (('U', 'U', 'U', 'U'),  --|   U       W0H   |        	     ('U', 'W', 'W', 'W'),  --|   X       W0H   |        	     ('Z', 'Z', 'Z', 'Z'),  --|   0       W0H   |        	     ('U', 'W', '0', 'H')), --|   1       W0H   |        	    (('U', 'U', 'U', 'U'),  --|   U       WL1   |        	     ('U', 'W', 'W', 'W'),  --|   X       WL1   |        	     ('Z', 'Z', 'Z', 'Z'),  --|   0       WL1   |        	     ('U', 'W', 'L', '1')));--|   1       WL1   |    begin	return tbl_BUF3S(Strn, Enable, Input);    end fun_BUF3S;    function fun_BUF3SL(Input, Enable: UX01; Strn: STRENGTH) return STD_LOGIC is	-- pragma subpgm_id 412	type TRISTATE_TABLE is array(STRENGTH, UX01, UX01) of STD_LOGIC;	-- truth table for tristate "buf" function (Enable active Low)          constant tbl_BUF3SL: TRISTATE_TABLE :=           -- ----------------------------------------------------          -- | Input   U    X    0    1       | Enable Strength |          -- ---------------------------------|-----------------|        	   ((('U', 'U', 'U', 'U'),  --|   U       X01   |        	     ('U', 'X', 'X', 'X'),  --|   X       X01   |        	     ('U', 'X', '0', '1'),  --|   0       X01   |        	     ('Z', 'Z', 'Z', 'Z')), --|   1       X01   |        	    (('U', 'U', 'U', 'U'),  --|   U       X0H   |        	     ('U', 'X', 'X', 'X'),  --|   X       X0H   |        	     ('U', 'X', '0', 'H'),  --|   0       X0H   |        	     ('Z', 'Z', 'Z', 'Z')), --|   1       X0H   |        	    (('U', 'U', 'U', 'U'),  --|   U       XL1   |        	     ('U', 'X', 'X', 'X'),  --|   X       XL1   |        	     ('U', 'X', 'L', '1'),  --|   0       XL1   |        	     ('Z', 'Z', 'Z', 'Z')), --|   1       XL1   |        	    (('U', 'U', 'U', 'Z'),  --|   U       X0Z   |        	     ('U', 'X', 'X', 'Z'),  --|   X       X0Z   |        	     ('U', 'X', '0', 'Z'),  --|   0       X0Z   |        	     ('Z', 'Z', 'Z', 'Z')), --|   1       X0Z   |        	    (('U', 'U', 'U', 'U'),  --|   U       XZ1   |        	     ('U', 'X', 'X', 'X'),  --|   X       XZ1   |        	     ('U', 'X', 'Z', '1'),  --|   0       XZ1   |        	     ('Z', 'Z', 'Z', 'Z')), --|   1       XZ1   |        	    (('U', 'U', 'U', 'U'),  --|   U       WLH   |        	     ('U', 'W', 'W', 'W'),  --|   X       WLH   |        	     ('U', 'W', 'L', 'H'),  --|   0       WLH   |        	     ('Z', 'Z', 'Z', 'Z')), --|   1       WLH   |        	    (('U', 'U', 'U', 'U'),  --|   U       WLZ   |        	     ('U', 'W', 'W', 'Z'),  --|   X       WLZ   |        	     ('U', 'W', 'L', 'Z'),  --|   0       WLZ   |        	     ('Z', 'Z', 'Z', 'Z')), --|   1       WLZ   |        	    (('U', 'U', 'U', 'U'),  --|   U       WZH   |        	     ('U', 'W', 'W', 'W'),  --|   X       WZH   |        	     ('U', 'W', 'Z', 'H'),  --|   0       WZH   |        	     ('Z', 'Z', 'Z', 'Z')), --|   1       WZH   |        	    (('U', 'U', 'U', 'U'),  --|   U       W0H   |        	     ('U', 'W', 'W', 'W'),  --|   X       W0H   |        	     ('U', 'W', '0', 'H'),  --|   0       W0H   |        	     ('Z', 'Z', 'Z', 'Z')), --|   1       W0H   |        	    (('U', 'U', 'U', 'U'),  --|   U       WL1   |        	     ('U', 'W', 'W', 'W'),  --|   X       WL1   |        	     ('U', 'W', 'L', '1'),  --|   0       WL1   |        	     ('Z', 'Z', 'Z', 'Z')));--|   1       WL1   |    begin	return tbl_BUF3SL(Strn, Enable, Input);    end fun_BUF3SL;    function fun_MUX2x1(Input0, Input1, Sel: UX01) return UX01 is	-- pragma subpgm_id 413	type MUX_TABLE is array (UX01, UX01, UX01) of UX01;	-- truth table for "MUX2x1" function	constant tbl_MUX2x1: MUX_TABLE :=	--------------------------------------------        --| In0  'U'  'X'  '0'  '1'      | Sel In1 |	--------------------------------------------	      ((('U', 'U', 'U', 'U'),  --| 'U' 'U' |	        ('U', 'U', 'U', 'U'),  --| 'X' 'U' |		('U', 'X', '0', '1'),  --| '0' 'U' |		('U', 'U', 'U', 'U')), --| '1' 'U' |	       (('U', 'X', 'U', 'U'),  --| 'U' 'X' |	        ('U', 'X', 'X', 'X'),  --| 'X' 'X' |		('U', 'X', '0', '1'),  --| '0' 'X' |		('X', 'X', 'X', 'X')), --| '1' 'X' |	       (('U', 'U', '0', 'U'),  --| 'U' '0' |	        ('U', 'X', '0', 'X'),  --| 'X' '0' |		('U', 'X', '0', '1'),  --| '0' '0' |		('0', '0', '0', '0')), --| '1' '0' |	       (('U', 'U', 'U', '1'),  --| 'U' '1' |	        ('U', 'X', 'X', '1'),  --| 'X' '1' |		('U', 'X', '0', '1'),  --| '0' '1' |		('1', '1', '1', '1')));--| '1' '1' |    begin	return tbl_MUX2x1(Input1, Sel, Input0);    end fun_MUX2x1;    function fun_MAJ23(Input0, Input1, Input2: UX01) return UX01 is	-- pragma subpgm_id 414	type MAJ23_TABLE is array (UX01, UX01, UX01) of UX01;	----------------------------------------------------------------------------	--	The "tbl_MAJ23" truth table return 1 if the majority of three	--	inputs is 1, a 0 if the majority is 0, a X if unknown, and a U if	--	uninitialized.	----------------------------------------------------------------------------	constant tbl_MAJ23: MAJ23_TABLE :=        --------------------------------------------        --| In0  'U'  'X'  '0'  '1'      | In1 In2 |        --------------------------------------------              ((('U', 'U', 'U', 'U'),  --| 'U' 'U' |                ('U', 'U', 'U', 'U'),  --| 'X' 'U' |                ('U', 'U', '0', 'U'),  --| '0' 'U' |                ('U', 'U', 'U', '1')), --| '1' 'U' |               (('U', 'U', 'U', 'U'),  --| 'U' 'X' |                ('U', 'X', 'X', 'X'),  --| 'X' 'X' |                ('U', 'X', '0', 'X'),  --| '0' 'X' |                ('U', 'X', 'X', '1')), --| '1' 'X' |               (('U', 'U', '0', 'U'),  --| 'U' '0' |                ('U', 'X', '0', 'X'),  --| 'X' '0' |                ('0', '0', '0', '0'),  --| '0' '0' |                ('U', 'X', '0', '1')), --| '1' '0' |               (('U', 'U', 'U', '1'),  --| 'U' '1' |                ('U', 'X', 'X', '1'),  --| 'X' '1' |                ('U', 'X', '0', '1'),  --| '0' '1' |                ('1', '1', '1', '1')));--| '1' '1' |    begin	return tbl_MAJ23(Input0, Input1, Input2);    end fun_MAJ23;    function fun_WiredX(Input0, Input1: STD_ULOGIC) return STD_LOGIC is	-- pragma subpgm_id 415        TYPE stdlogic_table IS ARRAY(STD_ULOGIC, STD_ULOGIC) OF STD_LOGIC;	-- truth table for "WiredX" function        -------------------------------------------------------------------            -- resolution function        -------------------------------------------------------------------            CONSTANT resolution_table : stdlogic_table := (        --      ---------------------------------------------------------        --      |  U    X    0    1    Z    W    L    H    -        |   |          --      ---------------------------------------------------------                ( 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U' ), -- | U |                ( 'U', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X' ), -- | X |                ( 'U', 'X', '0', 'X', '0', '0', '0', '0', 'X' ), -- | 0 |                ( 'U', 'X', 'X', '1', '1', '1', '1', '1', 'X' ), -- | 1 |                ( 'U', 'X', '0', '1', 'Z', 'W', 'L', 'H', 'X' ), -- | Z |                ( 'U', 'X', '0', '1', 'W', 'W', 'W', 'W', 'X' ), -- | W |                ( 'U', 'X', '0', '1', 'L', 'W', 'L', 'W', 'X' ), -- | L |                ( 'U', 'X', '0', '1', 'H', 'W', 'W', 'H', 'X' ), -- | H |                ( 'U', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X' ));-- | - |    begin	return resolution_table(Input0, Input1);    end fun_WiredX;--synopsys synthesis_on	end;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -