Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > VHDL > Who can explain the bit'pos for me?

Reply
Thread Tools

Who can explain the bit'pos for me?

 
 
threeinchnail@gmail.com
Guest
Posts: n/a
 
      06-28-2006
Hello everybody, I have question here about bit'pos. I saw this
function from a place.

function bt_to_natural(bv: in bit_vector) return natural is
variable result : natural:=0;
begin
for index in bv'range loop
result :=result*2+bit'pos(bv(index));
end loop;
return result;
end bv_to_natural;

I am searching the bit'pos on the internet. And I found one
explaination is :
signal 'pos is return the position (number) of the input.
bit' pos('0') would return 0; bit'pos('1') would return 1;
I am a little bit confused about it. I think 'pos should be the
position of the bit. But I take my definition into above function. I
cannot figure it out.

Is there anybody to help me figure it out? Could you give a real
example for me? For example how to convert 10101010 to the integer.
Many thanks.

Zhi

 
Reply With Quote
 
 
 
 
Hubble
Guest
Posts: n/a
 
      06-29-2006

schrieb:

> Hello everybody, I have question here about bit'pos. I saw this
> function from a place.


Consult the VHDL LRM (Language Reference Manual)


http://www.microlab.ch/courses/vlsi/...76_14.HTM#14.1

bit is an enumaration type:

type BIT is ('0', '1'); -- package standard

So bit'pos is a way to convert the type bit to integer:

bit'pos('0')=0
bit'pos('1')=1

Attrributs pos and val can be used to convert enumaration types:
variable c: character;#
variable b: bit;
variable i: integer;

c:=character'val(bit'pos(b)+character'pos('0')); --
character'pos('0')=48 in ASCII character set
b:=bit'val(character'pos(c)-character'pos('0'));

('val is the opposite of 'pos)

Hubble.

 
Reply With Quote
 
 
 
 
threeinchnail@gmail.com
Guest
Posts: n/a
 
      06-29-2006
Thank you, Hubble. I understand your explanation..
But I am still confused it a little bit. If I take an example of
bit_vector ("10101010"). I want to convert it to integer. According to
the function:
1. result:=0+0;
2 result:=2*0+1;
3 result:=2*1+0;
.........................Does it like that? I think my way is wrong.
Because It definitedly cannot get the expected result.
Could you give me a clear example like that ? Since the function can
convert bitvector to natural, how does it work? Thanks again.

Hubble wrote:
> schrieb:
>
> > Hello everybody, I have question here about bit'pos. I saw this
> > function from a place.

>
> Consult the VHDL LRM (Language Reference Manual)
>
>
> http://www.microlab.ch/courses/vlsi/...76_14.HTM#14.1
>
> bit is an enumaration type:
>
> type BIT is ('0', '1'); -- package standard
>
> So bit'pos is a way to convert the type bit to integer:
>
> bit'pos('0')=0
> bit'pos('1')=1
>
> Attrributs pos and val can be used to convert enumaration types:
> variable c: character;#
> variable b: bit;
> variable i: integer;
>
> c:=character'val(bit'pos(b)+character'pos('0')); --
> character'pos('0')=48 in ASCII character set
> b:=bit'val(character'pos(c)-character'pos('0'));
>
> ('val is the opposite of 'pos)
>
> Hubble.


 
Reply With Quote
 
D Stanford
Guest
Posts: n/a
 
      06-29-2006

wrote:
> Thank you, Hubble. I understand your explanation..
> But I am still confused it a little bit. If I take an example of
> bit_vector ("10101010"). I want to convert it to integer. According to
> the function:
> 1. result:=0+0;
> 2 result:=2*0+1;
> 3 result:=2*1+0;


For it to function properly, bv'range must be max downto 0. It must be
sequencing from MSB to LSB.

with an input bit vector of "1100"

1. index = 0, result = 0*2 + 1 = 1
2. index = 1, result = 1*2 + 1 = 3
3. index = 2, result = 3*2 + 0 = 6
4. index = 3, result = 6*2 + 0 = 12

 
Reply With Quote
 
threeinchnail@gmail.com
Guest
Posts: n/a
 
      06-29-2006
I got it. Thank you all very much ^_^

D Stanford wrote:
> wrote:
> > Thank you, Hubble. I understand your explanation..
> > But I am still confused it a little bit. If I take an example of
> > bit_vector ("10101010"). I want to convert it to integer. According to
> > the function:
> > 1. result:=0+0;
> > 2 result:=2*0+1;
> > 3 result:=2*1+0;

>
> For it to function properly, bv'range must be max downto 0. It must be
> sequencing from MSB to LSB.
>
> with an input bit vector of "1100"
>
> 1. index = 0, result = 0*2 + 1 = 1
> 2. index = 1, result = 1*2 + 1 = 3
> 3. index = 2, result = 3*2 + 0 = 6
> 4. index = 3, result = 6*2 + 0 = 12


 
Reply With Quote
 
john Doef
Guest
Posts: n/a
 
      06-29-2006

D Stanford a écrit :

> wrote:
> > Thank you, Hubble. I understand your explanation..
> > But I am still confused it a little bit. If I take an example of
> > bit_vector ("10101010"). I want to convert it to integer. According to
> > the function:
> > 1. result:=0+0;
> > 2 result:=2*0+1;
> > 3 result:=2*1+0;

>
> For it to function properly, bv'range must be max downto 0. It must be
> sequencing from MSB to LSB.

It works with any range, doesn't it ?

JD.

 
Reply With Quote
 
D Stanford
Guest
Posts: n/a
 
      06-29-2006

> > For it to function properly, bv'range must be max downto 0. It must be
> > sequencing from MSB to LSB.

> It works with any range, doesn't it ?
>
> JD.


A good point. It would have been better stated max downto min instead
of 0.

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
70-292: can someone please verify / explain the answer to this question Tim Moor MCSE 7 12-18-2005 03:30 AM
Someone can explain this to me? Tosh Cisco 4 11-19-2005 03:48 PM
Can someone explain this route-map command bhamoo@gmail.com Cisco 8 02-04-2005 12:35 PM
Can anyone explain me about this command? Keung Cisco 1 11-28-2004 11:20 AM
Can someone explain this? Ray Microsoft Certification 1 09-01-2003 02:12 AM



Advertisments