http://www.pldesignline.com/196604078
http://www.et.byu.edu/groups/it548/C...s/encoders.pdf
http://en.wikipedia.org/wiki/Gray_code
From the above link:
looks like C, apparantly Gray code and Petherick code, run down similar roads. Sorry best I can do . . .Code:// parameters: value, base, digits // Convert a value to a graycode with the given base and digits. Iterating // through a sequence of values would result in a sequence of graycodes in // which only one digit changes at a time. int baseN[digits]; // Stores the ordinary base-N number, one digit per entry int gray[digits]; // Stores the base-N graycode number // Put the normal baseN number into the baseN array. For base 10, 109 // would be stored as [9,0,1] int power = 1; for(i = digits - 1; i >= 0; i--) { baseN[i] = (value / power) % base; power *= base; } // Convert the normal baseN number into the graycode equivalent. Note that // the loop starts at the most significant digit and goes down. int shift = 0; for(i = digits - 1; i >= 0; i--) { // The gray digit gets shifted down equal to the sum of the higher // digits. gray[i] = (baseN[i] + base - shift) % base; // + base to prevent neg shift += gray[i]; } // EXAMPLES // input: value = 1899, base = 10, digits = 4 // output: baseN[] = [9,9,8,1], gray[] = [0,1,7,1] // input: value = 1900, base = 10, digits = 4 // output: baseN[] = [0,0,9,1], gray[] = [0,1,8,1]




Bookmarks