35_bit_pack.vhd
Upload User: yineng_xsb
Upload Date: 2021-04-29
Package Size: 365k
Code Size: 1k
Development Platform:

VHDL

  1. package bit_pack is
  2.   --功能是把bit_vector转换成整型
  3.   function vec2int(vec1:bit_vector)
  4.        return integer;
  5.   --功能是把integer转换为bit_vector类型
  6.   function int2vec(int1,Nbits:integer)
  7.    return bit_vector;
  8. end bit_pack;
  9. package body bit_pack is
  10. function vec2int(vec1:bit_vector)
  11.        return integer is
  12. variable retval:integer:=0;
  13. alias vec:bit_vector(vec1'length-1 downto 0) is vec1;
  14. begin
  15.   for i in vec'high downto 1 loop
  16.        if (vec(i)='1') then
  17.              retval:=(retval+1)*2;
  18.        else
  19.              retval:=retval*2;
  20.        end if;
  21.   end loop;
  22.   if vec(0)='1' then 
  23.         retval:=retval+1;
  24.   end if;
  25. return retval;
  26. end vec2int;
  27. function int2vec(int1,Nbits:integer)
  28. return bit_vector is
  29. variable N1:integer;
  30. variable retval:bit_vector(Nbits-1 downto 0);
  31. begin
  32.   assert int1 >=0  
  33.  report "function int2vec:input integer cannot be negative"
  34.  severity error;
  35.   N1:=int1;
  36.   for i in retval'reverse_range loop
  37.   if (N1 mod 2)=1 then
  38. retval(i):='1';
  39.       else
  40. retval(i):='0';
  41.       end if;
  42.   N1:=N1/2;
  43.   end loop;
  44.   return retval;
  45. end int2vec;
  46. end bit_pack;