Go Back   Velocity Reviews > Newsgroups > VHDL
User Name
Password
Register FAQ Members List Calendar Search Today's Posts Mark Forums Read

Reply

VHDL - Hamming distance

 
Thread Tools Search this Thread
Old 01-19-2006, 03:47 PM   #1
Default Hamming distance


I have to generate some unique codes of 16 bits length, but each code
must be at least differnt by 5 bits from any other code.

Now there are 65536 possible 16 bit codes, but what is the maximal
number of codes with 5 bit differences; I'm assuming, possibly
incorrectly, it'll vary depending on the seed code used.

i.e. "000000000000000" could be used as seed, then next code could be
"0000000000011111" etc etc.

I could perhaps write a programme to generate a sequence of
incrementing code, testing for 5 bit differences against all previously
generated codes, and counting how many I get, then loop back and
increment the start value.

This seems like a fairly useful algorithm; length N bits, M bit
differences, maximal sequence length to be found.

Has anyone got a pointer to somethingalready done please to save me
some time.

(I guess it fairly simple to write a process to fill arrays with codes
of 5 bit diffs, count the number of codes and then increment the seed
and see if more codes are generated & then update the filled array if
so.



Niv
  Reply With Quote
Old 01-23-2006, 01:16 PM   #2
Brian Drummond
 
Posts: n/a
Default Re: Hamming distance
On 19 Jan 2006 07:47:16 -0800, "Niv" <> wrote:

>I have to generate some unique codes of 16 bits length, but each code
>must be at least differnt by 5 bits from any other code.
>
>Now there are 65536 possible 16 bit codes, but what is the maximal
>number of codes with 5 bit differences; I'm assuming, possibly
>incorrectly, it'll vary depending on the seed code used.
>
>i.e. "000000000000000" could be used as seed, then next code could be
>"0000000000011111" etc etc.


Since there are only 2^16 codes to test, I would use a sieve, like
"Sieve of Eratosthenes" but testing for Hamming distance instead of
primeness.

Start by testing (and eliminating) every number for distance against
X"0000". Then test every remaining number for distance against the
lowest number which remains in the sieve. And so on.
Two nested loops, but the outer loops get faster as the sieve gets
sparser.

- Brian


Brian Drummond
  Reply With Quote
Old 01-23-2006, 01:43 PM   #3
Ben Jones
 
Posts: n/a
Default Re: Hamming distance

"Niv" <> wrote in message
news: oups.com...
> I have to generate some unique codes of 16 bits length, but each code
> must be at least differnt by 5 bits from any other code.
>
> Now there are 65536 possible 16 bit codes, but what is the maximal
> number of codes with 5 bit differences; I'm assuming, possibly
> incorrectly, it'll vary depending on the seed code used.


Your assumption is indeed incorrect. The seed code is irrelevant, because
the code is linear.

To see why:

The Hamming distance between two words is the number of bits in which those
words differ. The "difference" function is just logical XOR, e.g.

01001
xor 11010
-------
10011

Those two words differ in bits 0, 1 and 4. So bitcount(A xor B) gives you
the Hamming distance.

Now repeat the calculation above, but first flip bit 0 in both words:

01000
xor 11011
-------
10011

Same answer. If you do the same flip(s) in both words, they will be "just as
different" as they were before you flipped any bits, because the flips
cancel out. It doesn't matter how many bits you flip or where they are, the
result is the same. (Note that flipping arbitrary bits is exactly the same
as XORing with an arbitrary word.)

What does this means for you? Say you have a code set that was based on the
seed code of "0100101001011101". This set is exactly equivalent to a set
based on the seed code of "0000000000000000". All you have to do to obtain
this set is XOR every code word with "0100101001011101". Now, since every
code set can be reduced to one containing the all-zero code word, they must
all be the *same* set. So, you only need to invesetigate starting from
all-zeroes, and you are still guaranteed to find the optimum solution.

Hope that helps.

Cheers,

-Ben-




Ben Jones
  Reply With Quote
Old 01-23-2006, 10:14 PM   #4
Eric Smith
 
Posts: n/a
Default Re: Hamming distance
Niv wrote:
> I have to generate some unique codes of 16 bits length, but each code
> must be at least differnt by 5 bits from any other code.


Brian Drummond wrote:
> Since there are only 2^16 codes to test, I would use a sieve, like
> "Sieve of Eratosthenes" but testing for Hamming distance instead of
> primeness.


As it happens, I have a C program that does that. I dusted it off and put
it on my web site:
http://www.brouhaha.com/~eric/software/hamming/

In addition to the source code, there's a file giving the 256 16-bit
codes with a minimum distance of 5. Thus this code could be used to
detect all three-bit errors in eight bits of data, and correct all
single- and two-bit errors.


Eric Smith
  Reply With Quote
Old 01-23-2006, 10:24 PM   #5
Kai Harrekilde-Petersen
 
Posts: n/a
Default Re: Hamming distance
Eric Smith <> writes:

> Niv wrote:
>> I have to generate some unique codes of 16 bits length, but each code
>> must be at least differnt by 5 bits from any other code.

>
> Brian Drummond wrote:
>> Since there are only 2^16 codes to test, I would use a sieve, like
>> "Sieve of Eratosthenes" but testing for Hamming distance instead of
>> primeness.

>
> As it happens, I have a C program that does that. I dusted it off and put
> it on my web site:
> http://www.brouhaha.com/~eric/software/hamming/
>
> In addition to the source code, there's a file giving the 256 16-bit
> codes with a minimum distance of 5. Thus this code could be used to
> detect all three-bit errors in eight bits of data, and correct all


Shouldn't that be 4-bit errors? As I recall d_min > t+1 for detection,
and d_min > 2t+1 for corrections.

> single- and two-bit errors.



Kai
--
Kai Harrekilde-Petersen <khp(at)harrekilde(dot)dk>


Kai Harrekilde-Petersen
  Reply With Quote
Old 01-24-2006, 12:46 AM   #6
Eric Smith
 
Posts: n/a
Default Re: Hamming distance
Niv wrote:
> I have to generate some unique codes of 16 bits length, but each code
> must be at least differnt by 5 bits from any other code.
>
> Now there are 65536 possible 16 bit codes, but what is the maximal
> number of codes with 5 bit differences;


Conjecture:

For an n-bit code (n >= 4) with minimum distance d (1 <= d < n/2),
if d is odd there are 2^(n+2-2*d) codes, and if d is even there
are 2^(n+3-2*d) codes.


Eric Smith
  Reply With Quote
Old 01-24-2006, 08:48 AM   #7
Niv
 
Posts: n/a
Default Re: Hamming distance
Thanks Eric, I'll try & run your prog,or just the values provided.

Niv.



Niv
  Reply With Quote
Old 01-25-2006, 12:33 AM   #8
Eric Smith
 
Posts: n/a
Default Re: Hamming distance
I wrote:
> In addition to the source code, there's a file giving the 256 16-bit
> codes with a minimum distance of 5. Thus this code could be used to
> detect all three-bit errors in eight bits of data, and correct all


Kai Harrekilde-Petersen wrote:
> Shouldn't that be 4-bit errors?


Yes, my mistake.

> As I recall d_min > t+1 for detection, and d_min > 2t+1 for corrections.


d_min > t for detection of up to t bits in error
d_min > 2t for correction of up to t bits in error


Eric Smith
  Reply With Quote
Old 01-25-2006, 04:39 PM   #9
Kai Harrekilde-Petersen
 
Posts: n/a
Default Re: Hamming distance
Eric Smith <> writes:

> I wrote:
>> In addition to the source code, there's a file giving the 256 16-bit
>> codes with a minimum distance of 5. Thus this code could be used to
>> detect all three-bit errors in eight bits of data, and correct all

>
> Kai Harrekilde-Petersen wrote:
>> Shouldn't that be 4-bit errors?

>
> Yes, my mistake.
>
>> As I recall d_min > t+1 for detection, and d_min > 2t+1 for corrections.

>
> d_min > t for detection of up to t bits in error
> d_min > 2t for correction of up to t bits in error


And now that was my mistake I should have written >= instead of >.


Kai
--
Kai Harrekilde-Petersen <khp(at)harrekilde(dot)dk>


Kai Harrekilde-Petersen
  Reply With Quote
Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search

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

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

Similar Threads
Thread Thread Starter Forum Replies Last Post
382km wi-fi distance record set Admin Front Page News 1 07-18-2007 02:57 AM
distance learning and gatewayit.co.uk Muttley A+ Certification 0 03-02-2006 06:56 PM
Use your Internet connection to make local and long distance phone calls! optic DVD Video 2 01-10-2006 02:51 AM
The Nature Of Life As Seen From Earth - Life Energy Particles - Perception At A Distance {HRI 20010829-pi9-V2.0} - (part issue 9 Version 2.0 on 21 Aug 2005) Koos Nolst Trenite DVD Video 1 08-28-2005 10:23 AM
Good News, Incredible International & Long Distance Toll Rate with Quality Voice John A+ Certification 0 02-25-2005 01:22 PM




SEO by vBSEO 3.3.2 ©2009, Crawlability, Inc.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46