background image

10

HDMI5 Component Video Switch 

11

HDMI5 Component Video Switch

Checksums and CRC-8 Checkcodes Defined

The use of a checksums or CRC-8 checkcodes can increase the reliability of communications 

between the controller and any Zektor device.
A checksum is calculated by using an unsigned byte as an accumulator, and adding together all 

the ASCII characters of a command string, up to and including the ‘;’ character, while ignoring 

any overflow, and appending it as a decimal parameter to the end of the command.
A CRC-8 checkcode is calculated in a very similar way, but a CRC-8 algorithm is used instead of 

a simply adding together the ASCII characters. The CRC-8 byte is initialized to ‘FF’ hex, and the 

resultant value is sent inverted (one's compliment). 

The CRC polynomial used is:  x^8 +x^6 +x^3 +x^2 +1. 
This polynomial was determined through exhaustive tests (all 8 bit polynomials tested), to be the 

best CRC-8 polynomial for arbitrarily length bit streams.

See paper entitled: “Cyclic Redundancy Code (CRC) Polynomial Selection For Embedded 

Networks” by Philip Koopman & Tridib Chakravarty. <http://www.ece.cmu.edu/~koopman/roses/

dsn04/koopman04_crc_poly_embedded.pdf>

Another good source of CRC information is the CRC entry on Wikipedia, the free encyclopedia: 

<http://en.wikipedia.org/wiki/Cyclic_redundancy_check>

Differences between a Checksum and a CRC-8 Checkcode

A CRC is capable of finding many more and different types of errors than a checksum can. 

A good description of its capability is described in the above referenced articles, but a simple 

example show some of the differences well.
Here’s an example of the intended command string:

LI 2,3

Here’s some examples of the original and some badly formed strings, of the above example, and 

their associated checksums:

LI 2,3;129

LI 3,2;129

IL 2,3;129

KJ 2,3;129

Notice that every checksum is the same. Checksums cannot detected data being out of order.

Checksums cannot detect errors where two bits, in the same position in two different bytes, are 

flipped. Checksums are not a very robust way to check for communication errors. 

For comparison, here are the same examples and their associated CRC-8 checkcodes:

LI 2,3:16

LI 3,2:114

IL 2,3:22

KJ 2,3:145

The CRC-8 checkcode easily catches these errors.

Source Code Example of Calculating a Checksum

The following is a simple “C” program that calculates the checksum of the string “TestString” and 

then prints the initial string with the calculated checksum appended to it.

#include "stdio.h"

int main( void)

{

 

char 

 

 

TestString[] = "LI 2,3";

 

unsigned char  cksum;

 

int  

 

 

index;

 

char 

 

 

token = ';';

 

cksum = 0;  // initialize checksum

 

// Checksum all of 'TestString[]'

 

 

index = 0;

 

while (TestString[index] != '\0')

 

 

cksum += TestString[index++];

 

// Add the checksum token character ';' to checksum

 

cksum += token;

 

// Print the results

 

printf( "%s%c%u", TestString, token, (unsigned char)cksum);

 

return (0);

}

Checksums and CRC-8’s

Checksums and CRC-8’s 

(Cont’d)

Summary of Contents for HDMI5

Page 1: ...Rev 1 06 28 2007 Digital Video Switch 1 2 3 4 5 SEL A1 A2 HDMI5 Supplement to the HDMI5 User Guide Home Theater Solutions...

Page 2: ...el Light Intensities 16 Save Power On Default Settings 17 Query Last IR Code Received 17 Set Learnable IR Command Codes 18 Front Panel Button Emulation 19 Query Status 21 Control Settings 22 Extended...

Page 3: ...lue defaults to the current setting leaving the value unchanged The K I S S Continued space before the comma is optional Most commands can be queried for their current settings by substituting the for...

Page 4: ...owed before the and characters but NOT after them The checksum must immediately follow the character and a CRC 8 checkcode must immediately follow the character anything else including whitespace will...

Page 5: ...CR LF Notice that in the first example a checksum was not appended to the LI command When issuing a command the checksum and CRC 8 codes are sent on a command by command basis Anytime a checksum or a...

Page 6: ...ughout the com munication sequence First the LI CR command was issued by the controller While looking for an Acknowledgement or Error Response string an unsolicited Query Response is received indicati...

Page 7: ...um and a CRC 8 Checkcode A CRC is capable of finding many more and different types of errors than a checksum can A good description of its capability is described in the above referenced articles but...

Page 8: ...r detection characteristics So x 8 x 6 x 3 x 2 1 101001101 14D hex Ignore X 8 01001101 4D hex Reverse bit order 10110010 B2 hex define CRC8_POLY 0xB2 polynomial mask define CRC8_INIT 0xFF initial valu...

Page 9: ...t at writing them will return Error 6 The Front Panel Button Emulation command with button code 0 can be used to exit the Setup Mode at which point the command can be re issued without an Error 6 resp...

Page 10: ...Restore all settings to their factory defaults There is no Response String for this command Note Any value given other than 246 will generate a range error Query Last IR Code Received This command al...

Page 11: ...iliary Relay 1 Toggle 9 Auxiliary Relay 2 Toggle 10 Discrete Power On 11 Discrete Power Off 12 Discrete Breakaway Off 13 Sequence through inputs 14 Discrete Audio Breakaway Select 15 Discrete Video Br...

Page 12: ...e HDMI5 Some extended button codes are Code Description 0 When Issued Exits setup modes 0 When returned by query No buttons have been pressed since last the query 100 Always toggle power like Power To...

Page 13: ...EEPROM XS settings Reset bits indicated in settings to 0 save in EEPROM XS Back up current settings into EEPROM XS Query for current settings XS Query for current settings Response String XS settings...

Page 14: ...urrent settings XE Query for current settings Response String XE settings Where settings is a bitmapped parameter Decimal Value 4096 2048 1024 512 256 128 64 32 16 8 4 2 1 Bit Position 12 11 10 9 8 7...

Page 15: ...and Ref Cont d HDMI5 Command Ref Cont d Where rly_n Relay number 1 or 2 state State of relay 0 Off 1 On 2 Toggle If present settings are backed up in EEPROM Relay Settings Setup the behavior of the re...

Page 16: ...input is set to 1 in the vid_msk or aud_msk parameter The time value given is how long a relay remains active after a input is selected that does not match a 1 bit in vid_msk or aud_msk Mode 4 Relays...

Page 17: ...Z E K T O R 12675 Danielson Ct Suite 401 Poway CA 92064 858 748 8250 www zektor com...

Reviews: