35_bit_pack.vhd
上传用户:yineng_xsb
上传日期:2021-04-29
资源大小:365k
文件大小:1k
- package bit_pack is
- --功能是把bit_vector转换成整型
- function vec2int(vec1:bit_vector)
- return integer;
- --功能是把integer转换为bit_vector类型
- function int2vec(int1,Nbits:integer)
- return bit_vector;
- end bit_pack;
- package body bit_pack is
- function vec2int(vec1:bit_vector)
- return integer is
- variable retval:integer:=0;
- alias vec:bit_vector(vec1'length-1 downto 0) is vec1;
- begin
- for i in vec'high downto 1 loop
- if (vec(i)='1') then
- retval:=(retval+1)*2;
- else
- retval:=retval*2;
- end if;
- end loop;
- if vec(0)='1' then
- retval:=retval+1;
- end if;
- return retval;
- end vec2int;
- function int2vec(int1,Nbits:integer)
- return bit_vector is
- variable N1:integer;
- variable retval:bit_vector(Nbits-1 downto 0);
- begin
- assert int1 >=0
- report "function int2vec:input integer cannot be negative"
- severity error;
- N1:=int1;
- for i in retval'reverse_range loop
- if (N1 mod 2)=1 then
- retval(i):='1';
- else
- retval(i):='0';
- end if;
- N1:=N1/2;
- end loop;
- return retval;
- end int2vec;
- end bit_pack;