10_bit_to_int.vhd

来自「北京里工大学ASIC设计研究所的100个 VHDL程序设计例子」· VHDL 代码 · 共 37 行

VHD
37
字号
  function bit_to_int (in1:bit_vector) return integer is
	   ALIAS v1: BIT_VECTOR(in1'LENGTH-1 DOWNTO 0) IS in1;
	   variable inpv : bit_vector(in1'LENGTH-1 DOWNTO 0 );
       variable SUM: integer := 0;
	   variable negative :boolean:= false;
  begin
	   inpv := in1;
	   if  v1(v1'length-1) = '1' then
          for i in v1'length-1 downto 0 loop
			 inpv(i) := not inpv(i);
		  end loop;
	      lp1: 
		  for i in 0 to v1'length-1 loop
			  if  inpv(i) = '1' THEN
				 inpv(i) := '0';
              else 
				 inpv(i) := '1';
				 exit lp1; 
			  end if;
		  end loop;
		  negative := true;
       end if;

       for i in v1'length-1 downto 0 loop
         if inpv(i) = '1' then
            SUM := SUM + 2**i;
         end if;
       end loop;

       if negative then
          return (0-SUM);
       else
		  return SUM;
	   end if;
   end bit_to_int; 

⌨️ 快捷键说明

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