stdlogar.vhd

来自「Xilinx Sdram控制器VHDL源代码」· VHDL 代码 · 共 2,217 行 · 第 1/5 页

VHD
2,217
字号
    function "<"(L: UNSIGNED; R: SIGNED) return BOOLEAN is	-- pragma label_applies_to lt	constant length: INTEGER := max(L'length + 1, R'length);    begin	return is_less(CONV_SIGNED(L, length),			CONV_SIGNED(R, length)); -- pragma label lt    end;    function "<"(L: SIGNED; R: UNSIGNED) return BOOLEAN is	-- pragma label_applies_to lt	constant length: INTEGER := max(L'length, R'length + 1);    begin	return is_less(CONV_SIGNED(L, length),			CONV_SIGNED(R, length)); -- pragma label lt    end;    function "<"(L: UNSIGNED; R: INTEGER) return BOOLEAN is	-- pragma label_applies_to lt	constant length: INTEGER := L'length + 1;    begin	return is_less(CONV_SIGNED(L, length),			CONV_SIGNED(R, length)); -- pragma label lt    end;    function "<"(L: INTEGER; R: UNSIGNED) return BOOLEAN is	-- pragma label_applies_to lt	constant length: INTEGER := R'length + 1;    begin	return is_less(CONV_SIGNED(L, length),			CONV_SIGNED(R, length)); -- pragma label lt    end;    function "<"(L: SIGNED; R: INTEGER) return BOOLEAN is	-- pragma label_applies_to lt	constant length: INTEGER := L'length;    begin	return is_less(CONV_SIGNED(L, length),			CONV_SIGNED(R, length)); -- pragma label lt    end;    function "<"(L: INTEGER; R: SIGNED) return BOOLEAN is	-- pragma label_applies_to lt	constant length: INTEGER := R'length;    begin	return is_less(CONV_SIGNED(L, length),			CONV_SIGNED(R, length)); -- pragma label lt    end;    function "<="(L: UNSIGNED; R: UNSIGNED) return BOOLEAN is	-- pragma label_applies_to leq	constant length: INTEGER := max(L'length, R'length);    begin	return unsigned_is_less_or_equal(CONV_UNSIGNED(L, length),			     CONV_UNSIGNED(R, length)); -- pragma label leq    end;    function "<="(L: SIGNED; R: SIGNED) return BOOLEAN is	-- pragma label_applies_to leq	constant length: INTEGER := max(L'length, R'length);    begin	return is_less_or_equal(CONV_SIGNED(L, length),				CONV_SIGNED(R, length)); -- pragma label leq    end;    function "<="(L: UNSIGNED; R: SIGNED) return BOOLEAN is	-- pragma label_applies_to leq	constant length: INTEGER := max(L'length + 1, R'length);    begin	return is_less_or_equal(CONV_SIGNED(L, length),				CONV_SIGNED(R, length)); -- pragma label leq    end;    function "<="(L: SIGNED; R: UNSIGNED) return BOOLEAN is	-- pragma label_applies_to leq	constant length: INTEGER := max(L'length, R'length + 1);    begin	return is_less_or_equal(CONV_SIGNED(L, length),				CONV_SIGNED(R, length)); -- pragma label leq    end;    function "<="(L: UNSIGNED; R: INTEGER) return BOOLEAN is	-- pragma label_applies_to leq	constant length: INTEGER := L'length + 1;    begin	return is_less_or_equal(CONV_SIGNED(L, length),				CONV_SIGNED(R, length)); -- pragma label leq    end;    function "<="(L: INTEGER; R: UNSIGNED) return BOOLEAN is	-- pragma label_applies_to leq	constant length: INTEGER := R'length + 1;    begin	return is_less_or_equal(CONV_SIGNED(L, length),				CONV_SIGNED(R, length)); -- pragma label leq    end;    function "<="(L: SIGNED; R: INTEGER) return BOOLEAN is	-- pragma label_applies_to leq	constant length: INTEGER := L'length;    begin	return is_less_or_equal(CONV_SIGNED(L, length),				CONV_SIGNED(R, length)); -- pragma label leq    end;    function "<="(L: INTEGER; R: SIGNED) return BOOLEAN is	-- pragma label_applies_to leq	constant length: INTEGER := R'length;    begin	return is_less_or_equal(CONV_SIGNED(L, length),				CONV_SIGNED(R, length)); -- pragma label leq    end;    function ">"(L: UNSIGNED; R: UNSIGNED) return BOOLEAN is	-- pragma label_applies_to gt	constant length: INTEGER := max(L'length, R'length);    begin	return unsigned_is_less(CONV_UNSIGNED(R, length),				CONV_UNSIGNED(L, length)); -- pragma label gt    end;    function ">"(L: SIGNED; R: SIGNED) return BOOLEAN is	-- pragma label_applies_to gt	constant length: INTEGER := max(L'length, R'length);    begin	return is_less(CONV_SIGNED(R, length),		       CONV_SIGNED(L, length)); -- pragma label gt    end;    function ">"(L: UNSIGNED; R: SIGNED) return BOOLEAN is	-- pragma label_applies_to gt	constant length: INTEGER := max(L'length + 1, R'length);    begin	return is_less(CONV_SIGNED(R, length),		       CONV_SIGNED(L, length)); -- pragma label gt    end;    function ">"(L: SIGNED; R: UNSIGNED) return BOOLEAN is	-- pragma label_applies_to gt	constant length: INTEGER := max(L'length, R'length + 1);    begin	return is_less(CONV_SIGNED(R, length),		       CONV_SIGNED(L, length)); -- pragma label gt    end;    function ">"(L: UNSIGNED; R: INTEGER) return BOOLEAN is	-- pragma label_applies_to gt	constant length: INTEGER := L'length + 1;    begin	return is_less(CONV_SIGNED(R, length),		       CONV_SIGNED(L, length)); -- pragma label gt    end;    function ">"(L: INTEGER; R: UNSIGNED) return BOOLEAN is	-- pragma label_applies_to gt	constant length: INTEGER := R'length + 1;    begin	return is_less(CONV_SIGNED(R, length),		       CONV_SIGNED(L, length)); -- pragma label gt    end;    function ">"(L: SIGNED; R: INTEGER) return BOOLEAN is	-- pragma label_applies_to gt	constant length: INTEGER := L'length;    begin	return is_less(CONV_SIGNED(R, length),		       CONV_SIGNED(L, length)); -- pragma label gt    end;    function ">"(L: INTEGER; R: SIGNED) return BOOLEAN is	-- pragma label_applies_to gt	constant length: INTEGER := R'length;    begin	return is_less(CONV_SIGNED(R, length),		       CONV_SIGNED(L, length)); -- pragma label gt    end;    function ">="(L: UNSIGNED; R: UNSIGNED) return BOOLEAN is	-- pragma label_applies_to geq	constant length: INTEGER := max(L'length, R'length);    begin	return unsigned_is_less_or_equal(CONV_UNSIGNED(R, length),				 CONV_UNSIGNED(L, length)); -- pragma label geq    end;    function ">="(L: SIGNED; R: SIGNED) return BOOLEAN is	-- pragma label_applies_to geq	constant length: INTEGER := max(L'length, R'length);    begin	return is_less_or_equal(CONV_SIGNED(R, length),				CONV_SIGNED(L, length)); -- pragma label geq    end;    function ">="(L: UNSIGNED; R: SIGNED) return BOOLEAN is	-- pragma label_applies_to geq	constant length: INTEGER := max(L'length + 1, R'length);    begin	return is_less_or_equal(CONV_SIGNED(R, length),				CONV_SIGNED(L, length)); -- pragma label geq    end;    function ">="(L: SIGNED; R: UNSIGNED) return BOOLEAN is	-- pragma label_applies_to geq	constant length: INTEGER := max(L'length, R'length + 1);    begin	return is_less_or_equal(CONV_SIGNED(R, length),				CONV_SIGNED(L, length)); -- pragma label geq    end;    function ">="(L: UNSIGNED; R: INTEGER) return BOOLEAN is	-- pragma label_applies_to geq	constant length: INTEGER := L'length + 1;    begin	return is_less_or_equal(CONV_SIGNED(R, length),				CONV_SIGNED(L, length)); -- pragma label geq    end;    function ">="(L: INTEGER; R: UNSIGNED) return BOOLEAN is	-- pragma label_applies_to geq	constant length: INTEGER := R'length + 1;    begin	return is_less_or_equal(CONV_SIGNED(R, length),				CONV_SIGNED(L, length)); -- pragma label geq    end;    function ">="(L: SIGNED; R: INTEGER) return BOOLEAN is	-- pragma label_applies_to geq	constant length: INTEGER := L'length;    begin	return is_less_or_equal(CONV_SIGNED(R, length),				CONV_SIGNED(L, length)); -- pragma label geq    end;    function ">="(L: INTEGER; R: SIGNED) return BOOLEAN is	-- pragma label_applies_to geq	constant length: INTEGER := R'length;    begin	return is_less_or_equal(CONV_SIGNED(R, length),				CONV_SIGNED(L, length)); -- pragma label geq    end;    -- for internal use only.  Assumes SIGNED arguments of equal length.    function bitwise_eql(L: STD_ULOGIC_VECTOR; R: STD_ULOGIC_VECTOR)						return BOOLEAN is	-- pragma built_in SYN_EQL    begin	for i in L'range loop	    if L(i) /= R(i) then		return FALSE;	    end if;	end loop;	return TRUE;    end;    -- for internal use only.  Assumes SIGNED arguments of equal length.    function bitwise_neq(L: STD_ULOGIC_VECTOR; R: STD_ULOGIC_VECTOR)						return BOOLEAN is	-- pragma built_in SYN_NEQ    begin	for i in L'range loop	    if L(i) /= R(i) then		return TRUE;	    end if;	end loop;	return FALSE;    end;    function "="(L: UNSIGNED; R: UNSIGNED) return BOOLEAN is	constant length: INTEGER := max(L'length, R'length);    begin	return bitwise_eql( STD_ULOGIC_VECTOR( CONV_UNSIGNED(L, length) ),		STD_ULOGIC_VECTOR( CONV_UNSIGNED(R, length) ) );    end;    function "="(L: SIGNED; R: SIGNED) return BOOLEAN is	constant length: INTEGER := max(L'length, R'length);    begin	return bitwise_eql( STD_ULOGIC_VECTOR( CONV_SIGNED(L, length) ),		STD_ULOGIC_VECTOR( CONV_SIGNED(R, length) ) );    end;    function "="(L: UNSIGNED; R: SIGNED) return BOOLEAN is	constant length: INTEGER := max(L'length + 1, R'length);    begin	return bitwise_eql( STD_ULOGIC_VECTOR( CONV_SIGNED(L, length) ),		STD_ULOGIC_VECTOR( CONV_SIGNED(R, length) ) );    end;    function "="(L: SIGNED; R: UNSIGNED) return BOOLEAN is	constant length: INTEGER := max(L'length, R'length + 1);    begin	return bitwise_eql( STD_ULOGIC_VECTOR( CONV_SIGNED(L, length) ),		STD_ULOGIC_VECTOR( CONV_SIGNED(R, length) ) );    end;    function "="(L: UNSIGNED; R: INTEGER) return BOOLEAN is	constant length: INTEGER := L'length + 1;    begin	return bitwise_eql( STD_ULOGIC_VECTOR( CONV_SIGNED(L, length) ),		STD_ULOGIC_VECTOR( CONV_SIGNED(R, length) ) );    end;    function "="(L: INTEGER; R: UNSIGNED) return BOOLEAN is	constant length: INTEGER := R'length + 1;    begin	return bitwise_eql( STD_ULOGIC_VECTOR( CONV_SIGNED(L, length) ),		STD_ULOGIC_VECTOR( CONV_SIGNED(R, length) ) );    end;    function "="(L: SIGNED; R: INTEGER) return BOOLEAN is	constant length: INTEGER := L'length;    begin	return bitwise_eql( STD_ULOGIC_VECTOR( CONV_SIGNED(L, length) ),		STD_ULOGIC_VECTOR( CONV_SIGNED(R, length) ) );    end;    function "="(L: INTEGER; R: SIGNED) return BOOLEAN is	constant length: INTEGER := R'length;    begin	return bitwise_eql( STD_ULOGIC_VECTOR( CONV_SIGNED(L, length) ),		STD_ULOGIC_VECTOR( CONV_SIGNED(R, length) ) );    end;    function "/="(L: UNSIGNED; R: UNSIGNED) return BOOLEAN is	constant length: INTEGER := max(L'length, R'length);    begin	return bitwise_neq( STD_ULOGIC_VECTOR( CONV_UNSIGNED(L, length) ),		STD_ULOGIC_VECTOR( CONV_UNSIGNED(R, length) ) );    end;    function "/="(L: SIGNED; R: SIGNED) return BOOLEAN is	constant length: INTEGER := max(L'length, R'length);    begin	return bitwise_neq( STD_ULOGIC_VECTOR( CONV_SIGNED(L, length) ),		STD_ULOGIC_VECTOR( CONV_SIGNED(R, length) ) );    end;    function "/="(L: UNSIGNED; R: SIGNED) return BOOLEAN is	constant length: INTEGER := max(L'length + 1, R'length);    begin	return bitwise_neq( STD_ULOGIC_VECTOR( CONV_SIGNED(L, length) ),		STD_ULOGIC_VECTOR( CONV_SIGNED(R, length) ) );    end;    function "/="(L: SIGNED; R: UNSIGNED) return BOOLEAN is	constant length: INTEGER := max(L'length, R'length + 1);    begin	return bitwise_neq( STD_ULOGIC_VECTOR( CONV_SIGNED(L, length) ),		STD_ULOGIC_VECTOR( CONV_SIGNED(R, length) ) );    end;    function "/="(L: UNSIGNED; R: INTEGER) return BOOLEAN is	constant length: INTEGER := L'length + 1;    begin	return bitwise_neq( STD_ULOGIC_VECTOR( CONV_SIGNED(L, length) ),		STD_ULOGIC_VECTOR( CONV_SIGNED(R, length) ) );    end;    function "/="(L: INTEGER; R: UNSIGNED) return BOOLEAN is	constant length: INTEGER := R'length + 1;    begin	return bitwise_neq( STD_ULOGIC_VECTOR( CONV_SIGNED(L, length) ),		STD_ULOGIC_VECTOR( CONV_SIGNED(R, length) ) );    end;    function "/="(L: SIGNED; R: INTEGER) return BOOLEAN is	constant length: INTEGER := L'length;    begin	return bitwise_neq( STD_ULOGIC_VECTOR( CONV_SIGNED(L, length) ),		STD_ULOGIC_VECTOR( CONV_SIGNED(R, length) ) );    end;    function "/="(L: INTEGER; R: SIGNED) return BOOLEAN is	constant length: INTEGER := R'length;    begin	return bitwise_neq( STD_ULOGIC_VECTOR( CONV_SIGNED(L, length) ),		STD_ULOGIC_VECTOR( CONV_SIGNED(R, length) ) );    end;    function SHL(ARG: UNSIGNED; COUNT: UNSIGNED) return UNSIGNED is	constant control_msb: INTEGER := COUNT'length - 1;	variable control: UNSIGNED (control_msb downto 0);	constant result_msb: INTEGER := ARG'length-1;	subtype rtype is UNSIGNED (result_msb downto 0);	variable result, temp: rtype;    begin	control := MAKE_BINARY(COUNT);

⌨️ 快捷键说明

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