TB074
Using the KEELOQ® Encryption Algorithm
INTRODUCTION KEY TERMS
Remote control over a public medium like RF or IR is The following is a list of key terms used throughout this
popular for many applications, including vehicle alarms Technical Brief. For additional information on KEELOQ®
and automatic garage doors. Conventional remote and code hopping, refer to Technical Brief TB003.
control systems are based on unidirectional transmis- • RKE – Remote Keyless Entry
sion and normally have limited security.
• Button Status – Indicates what button input(s)
The popular unidirectional transmission systems activated the transmission. Encompasses the 4
currently have two very important security shortcom- button Status bits S3, S2, S1 and S0.
ings; the codes they transmit are usually fixed and the • Code Hopping – A method by which a code,
number of possible code combinations is relatively viewed externally to the system, appears to
small. Either of these shortcomings can lead to change unpredictably each time it is transmitted.
unauthorized access. It is a simple matter to build a
• Code Word – A block of data that is repeatedly
circuit to record such transmissions captured by the
transmitted upon button activation.
receiver. Such a device is known as a code or key
grabber. A would-be vehicle thief would typically lurk in • Transmission – A data stream consisting of
a parking lot, waiting until a vehicle owner arms his repeating code words.
alarm with a remote control. The key grabber would • Crypto Key – A unique and secret 64-bit number
capture the transmitted code, enabling the thief to used to encrypt and decrypt data. In a symmetrical
retransmit this code as soon as the owner leaves the block cipher such as the KEELOQ® algorithm, the
parking lot. Typically, this would leave the alarm and/or encryption and decryption keys are equal and will
immobilizer disabled and even the central locking therefore be referred to generally as the crypto key.
unlocked. • Encoder – A device that generates and encodes
The limited number of possible combinations available data.
in most remote control systems makes it also possible • Encryption Algorithm – A recipe whereby data
to transmit all possible combinations in a relatively is scrambled using a crypto key. The encrypted
short time. A handheld microprocessor-based system, data can only be interpreted by the respective
for this purpose (called a code scanner), can easily be decryption algorithm using the same crypto key.
constructed. • Decoder – A device that decodes data received
It is apparent that secure remote control systems can from an encoder (i.e., HCS5XX).
only be implemented if two conditions are met: • Decryption Algorithm – A recipe whereby data
scrambled by an encryption algorithm can be
1. The random code algorithm never responds to
unscrambled using the same crypto key.
the same code twice over several lifetimes of a
typical system. • Learn – Learning involves the receiver calculating
the transmitter's appropriate crypto key, decrypt-
2. A large number of possible combinations must
ing the received hopping code and storing the
be available.
serial number, synchronization counter value, and
The KEELOQ® Code Hopping System meets both these crypto key in EEPROM. The KEELOQ® product
conditions with ease. A 66-bit transmission code is family facilitates several learning strategies to be
normally used to make scanning impossible. The 32-bit implemented on the decoder. The following are
encrypted portion provides for more than 4 billion code examples of what can be done.
combinations. A complete scan of all the combinations - Simple Learning – The receiver uses a fixed
would take 17 years! If the 34-bit fixed portion is taken crypto key. The crypto key is common to
into account, the time required for a complete scan every component used by the same
jumps to 5,600 billion years! manufacturer.
This Technical Brief describes how to use the supplied - Normal Learning – The receiver derives a
KEELOQ® encryption firmware function to implement crypto key from the encoder serial number.
code hopping codes. Every transmitter has a unique crypto key.
2004-2011 Microchip Technology Inc. Confidential DS91074B_C-page 1
TB074
- Secure Learning – The receiver derives a Encryption Algorithm
crypto key from the encoder seed value.
An encryption algorithm is a recipe whereby crucial
Every encoder has a unique seed value that
information, for example the synchronization counter,
is only transmitted by a special button
can be scrambled or obscured from someone
combination.
listening in on the public media. KEELOQ® devices use
- Manufacturer's Code – A unique and secret
an algorithm based on a 32-bit wide block cipher and
64-bit number used to derive crypto keys.
a 64-bit wide cryptographical key. The algorithm
Each encoder is programmed with a crypto
obscures the information in a way that even if the
key that is a function of the manufacturer's
transmission information (before coding) differs by
code. Each decoder is programmed with the
only one bit from that of the previous transmission, the
manufacturer code itself.
next coded transmission will be completely different.
Statistically, if only one bit in the 32-bit string of
KEELOQ® ENCRYPTION FUNCTION information changes, more than 50 percent of the
coded transmission bits will change.
Overview Both the data (CSR3:CSR0) and crypto key registers
(KEY7:KEY0) must be initialized before the user calls
As described in the previous section, using a technique
the KEELOQ® encryption function. The result of the
of transmitting non-repeatable random looking
encryption function call will be a scrambled or
numbers, with large possible number combinations
encrypted copy of the 32 bits of data passed to the
between a transmitter and a receiver, can make it more
function. This 32-bit result is also sometimes called the
difficult to reproduce valid data combinations that gain
hopping code portion of a KEELOQ® transmission.
access to secure systems. KEELOQ® devices use a
combination of a “counter+1” synchronization counter The combination of the constantly incrementing
scheme and an encryption algorithm to produce secure synchronization counter and the encryption thereof
authentication transmissions through the use of code creates that familiar hopping code data pattern. The bit
hopping codes. length of the synchronization counter can vary, but
most of Microchip's KEELOQ® devices only use a 16-bit
Counter+1 Synchronization counter scheme. The other 16 bits of the 32-bit data
register normally contain information like the
A synchronization counter (normally 16 bits wide) is discrimination bits and button function code, as shown
used in the KEELOQ® code hopping technology. This in Figure 1.
synchronization counter gets incremented each time
the KEELOQ® encoder device is activated to ensure that
the next code word being transmitted will have a coun-
ter value at least one count higher than the previous
transmitted value. The decoder or receiver system
keeps track of these transmitted synchronization coun-
ter values and only allows counter values that are
higher than the previously received and verified coun-
ter value. This synchronization mechanism of using a
counter protects the system against the code grabbing
technique by not allowing previously grabbed codes.
For more information on how to implement these
KEELOQ® decoders in software, please see our wide
range of KEELOQ® decoder applications notes on our
KEELOQ® CD-ROM (DS40038), or at
www.microchip.com.
DS91074B_C-page 2 Confidential 2004-2011 Microchip Technology Inc.
TB074
FIGURE 1: HOPCODE TRANSMISSION REGISTER
34 bits of Fixed Portion 32 bits of Encrypted Portion
Repeat VLOW Button Serial Number Button OVR DISC Sync Counter
(1 bit) (1 bit) Status (28 bits) Status (2 bits) (10 bits) (16 bits)
S2 S1 S0 S3 S2 S1 S0 S3
MSb LSb
66 Data bits
Transmitted
LSb first
BASIC KEELOQ® SYSTEM
Overview
KEELOQ® devices normally have a small EEPROM
array, which must be loaded with several parameters
before use; most often programmed by the manufac-
turer at the time of production. Following is a list of the
most important arrays:
• 28/32-bit serial number, typically unique for every
encoder
• 64-bit crypto key
• Initial 16-bit synchronization value
The crypto key generator typically inputs the transmit-
ter serial number and 64-bit manufacturer's code into a
key generation algorithm, as shown in Figure 2. The
manufacturer's code is chosen by the system manufac-
turer and must be carefully controlled, as it is a pivotal
part of the overall system security.
FIGURE 2: CREATION AND STORAGE OF CRYPTO KEY DURING PRODUCTION
Production KEELOQ Device
Transmitter
Programmer Serial Number EEPROM Array
Serial Number
Crypto Key
Sync Counter
Key .
Manufacturer’s Generation Crypto
.
Code Algorithm Key .
2004-2011 Microchip Technology Inc. Confidential DS91074B_C-page 3
TB074
Transmitter Receiver
Figure 3 shows how the key values stored in EEPROM A receiver can be a stand-alone decoder, like the
are used in the encoder. Once the encoder detects a HCS500, or a Microchip PIC® microcontroller with
button press, it reads the button inputs and updates the compatible firmware that allows the decoder to operate
synchronization counter. The synchronization counter in conjunction with a KEELOQ® based transmitter. A
and crypto key are input into the encryption algorithm, transmitter must first be “learned” by the receiver
and the output is 32 bits of encrypted information. This before its use is allowed in the system. Learning
data will change with every button press, its value includes calculating the transmitter's appropriate crypto
appearing externally to “randomly hop around”, hence key, decrypting the received hopping code and storing
it is referred to as the hopping portion of the code word. the serial number, synchronization counter value and
The 32-bit hopping code is combined with the button crypto key in EEPROM. In normal operation, each
information and serial number to form the code word received message of valid format is evaluated. The
transmitted to the receiver. serial number is used to determine if it is from a learned
transmitter. If it is from a learned transmitter, the
message is decrypted and the synchronization counter
is verified. Finally, the button status is checked to see
what operation is requested. Figure 3 and Figure 4
show the relationship between some of the values
stored by the receiver and the values received from the
transmitter.
FIGURE 3: BUILDING THE TRANSMITTED CODE WORD (ENCODER)
EEPROM Array
KEELOQ
Crypto Key Encryption
Sync Counter Algorithm
Serial Number
Button Press Serial Number 32 Bits
Information Encrypted Data
Transmitted Information
DS91074B_C-page 4 Confidential 2004-2011 Microchip Technology Inc.
TB074
FIGURE 4: BASIC OPERATION OF RECEIVER (DECODER)
1 Received Information EEPROM Array
Manufacturer Code
Button Press Serial Number 32 Bits of
Information Encrypted Data
Check for Serial Number
2 Match
Sync Counter
3 Crypto Key
KEELOQ
Decryption
Algorithm
Perform Function Decrypted
Indicated by Synchronization Check for
5 4 Match
button press Counter
Note: Numbers indicate the sequence of decoder events.
2004-2011 Microchip Technology Inc. Confidential DS91074B_C-page 5
TB074
USING THE KEELOQ® ENCRYPTION Setting-up the variables
ALGORITHM The code examples shown in Figure 5 are only one
way of initializing the 64-bit key register and the 32-bit
System Resource Requirements data register. The values in these examples are hard
coded. Encryption keys are normally stored in
The software implementation of the KEELOQ® encryption EEPROM and then read into 64-bit key registers
algorithm uses a 64-bit key register, a 32-bit data (KEY[7:0]) as needed. The 32-bit data register is
register, two internal loop counter registers, and one normally a combination of the synchronization counter
temporary work register. Table 1 lists all the various value (also stored in EEPROM), user defined discrimi-
registers that the KEELOQ® Encryption algorithm uses. nation bits, and button information bits as shown in
Figure 1.
TABLE 1: KEELOQ ENCRYPTION
ALGORITHM REGISTERS FIGURE 5: INITIALIZATION EXAMPLE
Description Register Definitions INIT_REG
* LOADING 0x0123456789ABCDEF INTO THE
64-bit Key register(1) KEY0, KEY1, KEY2, KEY3, * 64-BIT KEY REGISTERS *
KEY4, KEY5, KEY6, KEY7
32-bit Data register(2) CSR0, CSR1, CSR2, CSR3 LOAD-KEY
Internal loop counters CNT1, CNT2
MOVLW 001H ;LOAD 0x01 INTO MSB OF KEY
8-bit temporary work register MASK
;BUFFER
Note 1: KEY7 is the Most Significant Byte (MSB) of the MOVWF KEY7
8 byte Key register (64 bits wide). MOVLW 023H
2: CSR3 is the Most Significant Byte of the 4 byte MOVWF KEY6
Data register (32 bits wide). MOVLW 045H
MOVWF KEY5
The KEELOQ® Encryption Algorithm function uses the
MOVLW 067H
following PIC microcontroller resource: MOVWF KEY4
• 15 RAM Locations (All needs to be on the same
RAM BANK) MOVLW 089H
MOVWF KEY3
• 65 instructions (depending on processor)
MOVLW 0ABH
• The function executes normally in ~30 ms (OSC = MOVWF KEY2
4 MHz) with all interrupts disable MOVLW 0CDH
MOVWF KEY1
Note: Interrupts can be used in conjunction with
MOVLW 0EFH
the encryption function as long as all
MOVWF KEY0 ;LOAD 0xEF into LSB OF
status and work registers are properly ;KEY BUFFER
stored and recovered on each interrupt.
This can however extensively extend the LOAD_DATA
calculation time of the function.
* LOADING 0xAABBCCDD INTO 32-BIT DATA
The source code modules can be found in the files
* REGISTER *
listed below. These files were installed on your PC after
the acceptance of the license agreement: MOVLW 0AAH
• ENCRYPT12.ASM (source code for PIC12 MOVWF CSR3
processors) MOVLW 0BBH
MOVWF CSR2
• ENCRYPT16.ASM (source code for PIC16 MOVLW 0CCH
processors) MOVWF CSR1
• ENCRYPT18.ASM (source code for PIC18 MOVLW 0DDH
processors) MOVWF CSR0
RETLW 0H
DS91074B_C-page 6 Confidential 2004-2011 Microchip Technology Inc.
TB074
Calling KEELOQ® Encryption The main benefit of hopping codes is to prevent the
retransmission of captured code words. This works
Once the crypto key and data are loaded into the very well for code words that the receiver decodes. Its
appropriate registers, the user only needs to call the weakness is if a code is captured when the receiver
supplied KEELOQ® encryption function, as shown in misses it, the code may trick the receiver once if it is
Figure 6. The result will be in CSR<3:0> registers after used before the next valid transmission. To make the
successful completion of the encryption function. receiver more secure, it could increment the counter on
questionable code word receptions. Also, it could use
FIGURE 6: CALL EXAMPLE separate buttons for lock and unlock functions. Another
KLQ_ENC way would be to require two different buttons in
CALL INIT_REG ;Initialize variables sequence to gain access.
CALL ENCRYPT ;Call encryption
;function There are other ways to make KEELOQ® systems more
RETLW 0H secure, but these are all trade-offs. You need to find a
balance between:
Encryption Key Management & Security • Security
• Design effort
The strength of any security system is based on keep- • Usability (particularly in failure modes)
ing a secret inside the transmitter that can be verified
through the use of encrypted transmissions by a For example, if a button sticks or someone plays with
trained receiver. The transmitter's secret is the encoder it, the counter should not end up in the blocked code
encryption key and not the encryption algorithm itself. window rendering the transmitter useless or requiring
This key is normally derived from a manufacturer's the receiver to relearn the transmitter.
code by either using the unit serial number or a fixed
seed value. If the manufacturer key of the system is CONCLUSION
compromised, a smart transceiver can:
This Technical Brief described how easy it is to use the
• Capture any serial number and/or seed
KEELOQ® Encryption Function and KEELOQ® patented
• Create a valid code word code hopping technology to implement secure unidi-
• Trick all receivers trained with that serial number. rectional or bidirectional communication over a public
The encryption key should be code-protected so the media, like RF transmission, to communicate from a
key cannot be read from the EEPROM (where it is transmitter (slave) to the receiver (master) unit. An
normally stored) without costly die probing. It can still import note to remember is that the security of any
be calculated by brute force decryption attacks on cryptographical system does not rely on the algorithm
transmitted code words. The cost for these attacks being a secret, but in how you manage to keep these
should exceed what you would want to protect. encryption and decryption keys a secret (i.e., crypto
key management).
To protect the security of other receivers with the same
manufacturer's code, you can use a random number to
implement a secure learning scheme. It is a second ADDITIONAL INFORMATION
hidden secret that is unique for each transmitter. It is
Microchip’s Secure Data Products are covered by
normally only transmitted on a special button press
some or all of the following: Code hopping encoder pat-
combination, which can be disabled after a few trans-
ents issued in European countries and U.S.A. Secure
missions by limiting it to the first 127 transmissions for
learning patents issued in European countries, U.S.A.
the receiver to learn. This way it is very unlikely to ever
and R.S.A.
be captured. If a manufacturer's key is compromised in
any way, new transmitters can still be created. But with-
out the unique seed value, the receiver must relearn
them before they can work.
In the same way, if the transmissions are decrypted by
brute force on a computer, the random seed hides the
manufacturer's key and prevents more than one trans-
mitter from being compromised. The typical length of
the code word, at these baud rates, makes brute force
attacks that guess the hopping code require years to
perform. To ensure the receiver is less susceptible to
this attack, test ALL the bits in the decrypted code for
the correct value. Do not test just the low counter bits
for sync and the bit for the button input of interest.
2004-2011 Microchip Technology Inc. Confidential DS91074B_C-page 7
TB074
NOTES:
DS91074B_C-page 8 Confidential 2004-2011 Microchip Technology Inc.
Note the following details of the code protection feature on Microchip devices:
• Microchip products meet the specification contained in their particular Microchip Data Sheet.
• Microchip believes that its family of products is one of the most secure families of its kind on the market today, when used in the
intended manner and under normal conditions.
• There are dishonest and possibly illegal methods used to breach the code protection feature. All of these methods, to our
knowledge, require using the Microchip products in a manner outside the operating specifications contained in Microchip’s Data
Sheets. Most likely, the person doing so is engaged in theft of intellectual property.
• Microchip is willing to work with the customer who is concerned about the integrity of their code.
• Neither Microchip nor any other semiconductor manufacturer can guarantee the security of their code. Code protection does not
mean that we are guaranteeing the product as “unbreakable.”
Code protection is constantly evolving. We at Microchip are committed to continuously improving the code protection features of our
products. Attempts to break Microchip’s code protection feature may be a violation of the Digital Millennium Copyright Act. If such acts
allow unauthorized access to your software or other copyrighted work, you may have a right to sue for relief under that Act.
Information contained in this publication regarding device Trademarks
applications and the like is provided only for your convenience
The Microchip name and logo, the Microchip logo, dsPIC,
and may be superseded by updates. It is your responsibility to
KEELOQ, KEELOQ logo, MPLAB, PIC, PICmicro, PICSTART,
ensure that your application meets with your specifications.
PIC32 logo, rfPIC and UNI/O are registered trademarks of
MICROCHIP MAKES NO REPRESENTATIONS OR
Microchip Technology Incorporated in the U.S.A. and other
WARRANTIES OF ANY KIND WHETHER EXPRESS OR countries.
IMPLIED, WRITTEN OR ORAL, STATUTORY OR
OTHERWISE, RELATED TO THE INFORMATION, FilterLab, Hampshire, HI-TECH C, Linear Active Thermistor,
INCLUDING BUT NOT LIMITED TO ITS CONDITION, MXDEV, MXLAB, SEEVAL and The Embedded Control
QUALITY, PERFORMANCE, MERCHANTABILITY OR Solutions Company are registered trademarks of Microchip
FITNESS FOR PURPOSE. Microchip disclaims all liability Technology Incorporated in the U.S.A.
arising from this information and its use. Use of Microchip Analog-for-the-Digital Age, Application Maestro, chipKIT,
devices in life support and/or safety applications is entirely at chipKIT logo, CodeGuard, dsPICDEM, dsPICDEM.net,
the buyer’s risk, and the buyer agrees to defend, indemnify and dsPICworks, dsSPEAK, ECAN, ECONOMONITOR,
hold harmless Microchip from any and all damages, claims, FanSense, HI-TIDE, In-Circuit Serial Programming, ICSP,
suits, or expenses resulting from such use. No licenses are Mindi, MiWi, MPASM, MPLAB Certified logo, MPLIB,
conveyed, implicitly or otherwise, under any Microchip MPLINK, mTouch, Omniscient Code Generation, PICC,
intellectual property rights. PICC-18, PICDEM, PICDEM.net, PICkit, PICtail, REAL ICE,
rfLAB, Select Mode, Total Endurance, TSHARC,
UniWinDriver, WiperLock and ZENA are trademarks of
Microchip Technology Incorporated in the U.S.A. and other
countries.
SQTP is a service mark of Microchip Technology Incorporated
in the U.S.A.
All other trademarks mentioned herein are property of their
respective companies.
© 2004-2011, Microchip Technology Incorporated, Printed in
the U.S.A., All Rights Reserved.
Printed on recycled paper.
ISBN: 978-1-61341-279-4
Microchip received ISO/TS-16949:2002 certification for its worldwide
headquarters, design and wafer fabrication facilities in Chandler and
Tempe, Arizona; Gresham, Oregon and design centers in California
and India. The Company’s quality system processes and procedures
are for its PIC® MCUs and dsPIC® DSCs, KEELOQ® code hopping
devices, Serial EEPROMs, microperipherals, nonvolatile memory and
analog products. In addition, Microchip’s quality system for the design
and manufacture of development systems is ISO 9001:2000 certified.
2004-2011 Microchip Technology Inc. Confidential DS91074B_C-page 9
Worldwide Sales and Service
AMERICAS ASIA/PACIFIC ASIA/PACIFIC EUROPE
Corporate Office Asia Pacific Office India - Bangalore Austria - Wels
2355 West Chandler Blvd. Suites 3707-14, 37th Floor Tel: 91-80-3090-4444 Tel: 43-7242-2244-39
Chandler, AZ 85224-6199 Tower 6, The Gateway Fax: 91-80-3090-4123 Fax: 43-7242-2244-393
Tel: 480-792-7200 Harbour City, Kowloon India - New Delhi Denmark - Copenhagen
Fax: 480-792-7277 Hong Kong Tel: 45-4450-2828
Tel: 91-11-4160-8631
Technical Support: Tel: 852-2401-1200 Fax: 45-4485-2829
Fax: 91-11-4160-8632
http://www.microchip.com/
Fax: 852-2401-3431 France - Paris
support India - Pune
Australia - Sydney Tel: 91-20-2566-1512 Tel: 33-1-69-53-63-20
Web Address:
Tel: 61-2-9868-6733 Fax: 91-20-2566-1513 Fax: 33-1-69-30-90-79
www.microchip.com
Fax: 61-2-9868-6755 Germany - Munich
Atlanta Japan - Yokohama
China - Beijing Tel: 49-89-627-144-0
Duluth, GA Tel: 81-45-471- 6166
Tel: 86-10-8569-7000 Fax: 81-45-471-6122 Fax: 49-89-627-144-44
Tel: 678-957-9614
Fax: 86-10-8528-2104 Italy - Milan
Fax: 678-957-1455 Korea - Daegu
China - Chengdu Tel: 39-0331-742611
Boston Tel: 82-53-744-4301
Tel: 86-28-8665-5511 Fax: 39-0331-466781
Westborough, MA Fax: 82-53-744-4302
Tel: 774-760-0087 Fax: 86-28-8665-7889 Netherlands - Drunen
Korea - Seoul
Fax: 774-760-0088 China - Chongqing Tel: 82-2-554-7200 Tel: 31-416-690399
Tel: 86-23-8980-9588 Fax: 82-2-558-5932 or Fax: 31-416-690340
Chicago
Itasca, IL Fax: 86-23-8980-9500 82-2-558-5934 Spain - Madrid
Tel: 630-285-0071 China - Hangzhou Tel: 34-91-708-08-90
Malaysia - Kuala Lumpur
Fax: 630-285-0075 Tel: 86-571-2819-3180 Tel: 60-3-6201-9857 Fax: 34-91-708-08-91
Cleveland Fax: 86-571-2819-3189 Fax: 60-3-6201-9859 UK - Wokingham
Independence, OH China - Hong Kong SAR Tel: 44-118-921-5869
Malaysia - Penang
Tel: 216-447-0464 Tel: 852-2401-1200 Fax: 44-118-921-5820
Tel: 60-4-227-8870
Fax: 216-447-0643 Fax: 852-2401-3431 Fax: 60-4-227-4068
Dallas China - Nanjing Philippines - Manila
Addison, TX Tel: 86-25-8473-2460 Tel: 63-2-634-9065
Tel: 972-818-7423 Fax: 86-25-8473-2470 Fax: 63-2-634-9069
Fax: 972-818-2924
China - Qingdao Singapore
Detroit Tel: 86-532-8502-7355 Tel: 65-6334-8870
Farmington Hills, MI
Fax: 86-532-8502-7205 Fax: 65-6334-8850
Tel: 248-538-2250
Fax: 248-538-2260 China - Shanghai Taiwan - Hsin Chu
Tel: 86-21-5407-5533 Tel: 886-3-6578-300
Indianapolis Fax: 86-21-5407-5066 Fax: 886-3-6578-370
Noblesville, IN
Tel: 317-773-8323 China - Shenyang Taiwan - Kaohsiung
Fax: 317-773-5453 Tel: 86-24-2334-2829 Tel: 886-7-213-7830
Fax: 86-24-2334-2393 Fax: 886-7-330-9305
Los Angeles
Mission Viejo, CA China - Shenzhen Taiwan - Taipei
Tel: 949-462-9523 Tel: 86-755-8203-2660 Tel: 886-2-2500-6610
Fax: 949-462-9608 Fax: 86-755-8203-1760 Fax: 886-2-2508-0102
Santa Clara China - Wuhan Thailand - Bangkok
Santa Clara, CA Tel: 86-27-5980-5300 Tel: 66-2-694-1351
Tel: 408-961-6444 Fax: 86-27-5980-5118 Fax: 66-2-694-1350
Fax: 408-961-6445 China - Xian
Toronto Tel: 86-29-8833-7252
Mississauga, Ontario, Fax: 86-29-8833-7256
Canada China - Xiamen
Tel: 905-673-0699 Tel: 86-592-2388138
Fax: 905-673-6509 Fax: 86-592-2388130
China - Zhuhai
Tel: 86-756-3210040
05/02/11
Fax: 86-756-3210049
DS91074B_C-page 10 Confidential 2004-2011 Microchip Technology Inc.