18
© 2008 Microchip Technology Inc. DS01128A-page 1 AN1128 INTRODUCTION Internet Radios are defined as a “hardware device that receives and plays audio from Internet Radio stations or a user’s PC”. The audio is streamed to the radio using MPEG-1 Audio Layer 3 (MP3), Windows ® Media Audio (WMA) or Advanced Audio Coding (AAC) compressed audio formats. The “radio stations” range anywhere from public AM or FM radio stations that broadcast over the air as well as on the Internet, to University radio stations down to any individual wishing to create their own radio station. The idea of an Internet Radio is not a new idea. You can buy commercially available Internet Radios, ranging in price from $129 US to $400 US, from companies such as Barix™, Logitech™/Slim Devices, Roku™ Labs and Philips ® . Most of these make the connection using wired Ethernet; some have a wireless connection. The focus of this application note is to show how to create a low-cost Internet Radio that connects to SHOUTcast servers and plays MP3 audio. The hardware uses the PIC18F67J60 microcontroller with integrated 10Base-T MAC and PHY and an external MP3 audio decoder. The software uses the standard Microchip TCP/IP Stack with external serial SRAM buff- ering to ease the streaming of compressed audio data to the MP3 decoder. Figure 1 shows a picture of the Inter- net Radio Demonstration Board (DM183033) that is available for purchase on MicrochipDirect or through one of Microchip’s distributors. Figure 2 shows the block diagram for the Internet Radio design used in this application note. FIGURE 1: INTERNET RADIO DEMONSTRATION BOARD Author: Howard Schlunder Rodger Richey Microchip Technology Inc. Power Jack Heartbeat LED Headphone Plug ICD 2 REAL ICE™ Ethernet Jack OLED Display Push Button Switches TCP/IP Networking: Internet Radio Using OLED Display and MP3 Audio Decoder

TCP/IP Networking: Internet Radio Using OLED Display …ww1.microchip.com/downloads/en/AppNotes/01128a.pdf · AN1128 OLED display Internet

Embed Size (px)

Citation preview

Page 1: TCP/IP Networking: Internet Radio Using OLED Display …ww1.microchip.com/downloads/en/AppNotes/01128a.pdf · AN1128 OLED display Internet

AN1128TCP/IP Networking: Internet Radio Using OLED Display

and MP3 Audio Decoder

INTRODUCTIONInternet Radios are defined as a “hardware device thatreceives and plays audio from Internet Radio stationsor a user’s PC”. The audio is streamed to the radiousing MPEG-1 Audio Layer 3 (MP3), Windows® MediaAudio (WMA) or Advanced Audio Coding (AAC)compressed audio formats. The “radio stations” rangeanywhere from public AM or FM radio stations thatbroadcast over the air as well as on the Internet, toUniversity radio stations down to any individual wishingto create their own radio station.

The idea of an Internet Radio is not a new idea. You canbuy commercially available Internet Radios, ranging inprice from $129 US to $400 US, from companies suchas Barix™, Logitech™/Slim Devices, Roku™ Labs andPhilips®. Most of these make the connection usingwired Ethernet; some have a wireless connection.

The focus of this application note is to show how tocreate a low-cost Internet Radio that connects toSHOUTcast servers and plays MP3 audio. Thehardware uses the PIC18F67J60 microcontroller withintegrated 10Base-T MAC and PHY and an externalMP3 audio decoder. The software uses the standardMicrochip TCP/IP Stack with external serial SRAM buff-ering to ease the streaming of compressed audio data tothe MP3 decoder. Figure 1 shows a picture of the Inter-net Radio Demonstration Board (DM183033) that isavailable for purchase on MicrochipDirect or throughone of Microchip’s distributors. Figure 2 shows the blockdiagram for the Internet Radio design used in thisapplication note.

FIGURE 1: INTERNET RADIO DEMONSTRATION BOARD

Author: Howard SchlunderRodger RicheyMicrochip Technology Inc.

PowerJack

HeartbeatLED

HeadphonePlug

ICD 2REAL ICE™

EthernetJack

OLEDDisplay

Push ButtonSwitches

© 2008 Microchip Technology Inc. DS01128A-page 1

Page 2: TCP/IP Networking: Internet Radio Using OLED Display …ww1.microchip.com/downloads/en/AppNotes/01128a.pdf · AN1128 OLED display Internet

AN1128

FIGURE 2: INTERNET RADIO BLOCK DIAGRAM

MAKING THE CONNECTIONThe heart of this design is the PIC18F67J60 micro-controller. This MCU has an integrated 10Base-T MACand PHY peripheral in addition to the standard periph-eral set of 64-pin PIC18 MCUs. It controls the entireprocess, from making the connection to the audio

server, to streaming the data to the MP3 decoder, todisplaying status on the LEDs and OLED display andreading user input on the push button switches.

While this particular application does not use many ofthe resources on the PIC18F67J60, it does have a fullcomplement of peripherals. Table 1 shows the featureset for all PIC18FXXJ60 devices.

TABLE 1: PIC18FXXJ60 MICROCONTROLLER FAMILY FEATURES

N256S0830HDA x 2

32-KbyteSerialSRAM

32-KbyteSerialSRAM

HeadphoneConnector

MP3 AudioConnector

VS1011OLED Display

128 x 64MCP1703

+5V to +9V

RJ45 MagJack®

I/O Pins SPI

PIC18F67J60

10Base-TMAC/PHY I/O Pins

I/O P

ins

CS

CS

Device

Flash Program Memory (bytes)

SRAM Data

Memory (bytes)

Ethernet TX/RX Buffer (bytes)

I/O 10-Bit A/D (ch)

CCP/ECCP

MSSP

EUSA

RT

Com

para

tors

Timers8/16-Bit PSP

Exte

rnal

M

emor

y B

usSPI Master

I2C™

PIC18F66J60 64K 3808 8192 39 11 2/3 1 Y Y 1 2 2/3 N NPIC18F66J65 96K 3808 8192 39 11 2/3 1 Y Y 1 2 2/3 N NPIC18F67J60 128K 3808 8192 39 11 2/3 1 Y Y 1 2 2/3 N NPIC18F86J60 64K 3808 8192 55 15 2/3 1 Y Y 2 2 2/3 N NPIC18F86J65 96K 3808 8192 55 15 2/3 1 Y Y 2 2 2/3 N NPIC18F87J60 128K 3808 8192 55 15 2/3 1 Y Y 2 2 2/3 N NPIC18F96J60 64K 3808 8192 70 16 2/3 2 Y Y 2 2 2/3 Y YPIC18F96J65 96K 3808 8192 70 16 2/3 2 Y Y 2 2 2/3 Y YPIC18F97J60 128K 3808 8192 70 16 2/3 2 Y Y 2 2 2/3 Y Y

DS01128A-page 2 © 2008 Microchip Technology Inc.

Page 3: TCP/IP Networking: Internet Radio Using OLED Display …ww1.microchip.com/downloads/en/AppNotes/01128a.pdf · AN1128 OLED display Internet

AN1128

The second crucial piece of this application is theMicrochip TCP/IP Stack. The Stack is what makes theconnection to the audio server and then receives theaudio stream for deployment to the MP3 decoder. TheStack is a suite of programs that provides services to all

TCP/IP-based applications. You don't need to know allof the intimate details of the TCP/IP specifications touse the Stack. Microcontrollers using embedded TCP/IP Stacks can be used to enable a myriad ofapplications, such as those shown in Figure 3.

FIGURE 3: EMBEDDED ETHERNET ENABLED APPLICATIONS

Based on the TCP/IP reference model, the Stack isdivided into multiple layers, where each layer accessesservices from one or more layers below it. Per thespecifications, many of the TCP/IP layers are “live”, inthe sense that they not only act when a service isrequested, but also when events like time-outs or newpackets arrive. The Stack is modular in design andwritten in the C programming language. Typical

implementations will use 30-60 Kbytes of code,depending on which modules are included, leavingplenty of code space on the PIC18FXXJ60 devices.Table 2 shows many of the supported protocols. Thesize of each protocol is not listed here in the applicationnote but is available in the help files that come with theTCP/IP Stack.

Entry MonitorLights

Security

SprinklerSystem

Thermostat

GamesPower

Office Phone

Cell Phone

Fire/SmokeDetector

PoolLeveler

10 MbpsEthernet

© 2008 Microchip Technology Inc. DS01128A-page 3

Page 4: TCP/IP Networking: Internet Radio Using OLED Display …ww1.microchip.com/downloads/en/AppNotes/01128a.pdf · AN1128 OLED display Internet

AN1128

TABLE 2: MICROCHIP TCP/IP STACK SUPPORTED PROTOCOLS

The Microchip TCP/IP Stack software provides manyessential services to implement the Internet Radio,including protocols, such as TCP, UDP, DHCP, DNS, IPand ARP. The Transmission Control Protocol (TCP)transports the main MP3 audio and metadata while pro-viding flow control to prevent the SHOUTcast serverfrom sending more data than can be held in the InternetRadio RAM at any given time.

The User Datagram Protocol (UDP) transports DHCPand DNS packets. The Dynamic Host ConfigurationProtocol (DHCP) automatically provides the board’s IPaddress, gateway address, subnet mask and otherconfiguration parameters when the Ethernetconnection is first established. These configurationparameters tell the board how the network is organizedand how to reach the Internet. The Domain NameSystem (DNS) is used whenever the user changes thecurrent radio station. It converts the radio station’sstatic host name (ex: “scfire-dll-aa02.stream.aol.com”)into a potentially dynamic IP address (ex:149.174.134.200) which the rest of the TCP/IP Stackprotocols require.

The Internet Protocol (IP) transports both TCP and UDPpackets across the Internet to the correct destination.However, before the IP transport can be used, the Stackuses the Address Resolution Protocol (ARP) to obtainthe Ethernet MAC address (ex: 00-04-A3-BE-EF-1E)associated with the local Internet gateway. All of theseservices work simultaneously, or in tandem, to establishthe connection to the radio server and then ensure arobust user listening experience. These protocols allwork in the background without requiring any manualuser configuration or intervention.

While this application is based on the PIC18FXXJ60devices, the Stack has been optimized for use on anyPIC18, PIC24, dsPIC® or PIC32 device with enoughprogram memory. It includes support for the ENC28J60Stand-Alone Ethernet Interface Controller for each ofthese device platforms. The best part is that the Stackis royalty-free and requires a no fee license agreement,restricting use to Microchip microcontrollers and digitalsignal controllers. The Stack can be downloaded atwww.microchip.com/tcpip. The files for the InternetRadio are part of this distribution.

Now that we have the embedded application defined,we need to have the audio source. There are manysources of audio available off the Internet using file for-mats described previously. For this application, we willfocus on the SHOUTcast protocol and servers.SHOUTcast is a freeware audio streaming technologydeveloped by Nullsoft™. SHOUTcast only uses MP3 orAAC audio encoding and an HTTP-like protocol totransfer files from the server to the client. SHOUTcastis available in both server and client forms on Windows95/98/ME/NT/2000/XP, Macintosh® OS X, FreeBSD™,Linux and Solaris™ at www.shoutcast.com.

To make the connection from the PIC18F67J60 deviceto the SHOUTcast server, we must send it a message.The following example shows a typical data structurewithin the Internet Radio code used to establish theconnection.

EXAMPLE 1:

The structure, stations[ ], holds the information forthe various radio stations that are preprogrammed intothe microcontroller. Metadata refers to informationabout the data. In the case of a SHOUTcast stream,metadata refers to the song name and artist. If meta-data is not enabled, the human readable name of theradio station that is provided in the structure can bedisplayed. With metadata enabled, the station namecan be automatically obtained from the SHOUTcastserver during the initial connection phase. In the cur-rent application, the HumanName string is not used. Weuse the radio station name provided in the metadatafrom the SHOUTcast server.

The remote DNS HostName is provided, specifyingwhere on the Internet the SHOUTcast server islocated. The TCP port through which the connectionis made follows. Normally, the port is 80, but can varydepending on the setup of the SHOUTcast serveryou are connecting to.

Application HTTP FTP SMTP Telnet DHCP DNS SNMP NetBIOS Bootloader Ping

Transport TCP UDP ICMPInternet and Network Access

IPv4, ARP

Physical Ethernet – ENC28J60 or PIC18F97J60 Family

stations[0].HumanName = "SKY.FM Top Hits, 96K";stations[0].HostName =

"scfire-dll-aa02.stream.aol.com";stations[0].port = 80;stations[0].Message =

"GET /stream/1014 HTTP/1.0\r\n""Host: scfire-dll-aa02.stream.aol.com\r\n""Accept: */*\r\n""Icy-MetaData:1\r\n""Connection: close\r\n\r\n";

DS01128A-page 4 © 2008 Microchip Technology Inc.

Page 5: TCP/IP Networking: Internet Radio Using OLED Display …ww1.microchip.com/downloads/en/AppNotes/01128a.pdf · AN1128 OLED display Internet

AN1128

The last piece is the Message to initiate the connectionto the SHOUTcast server. The GET command specifiesthe name of the audio file or stream on the server. TheHost specifies which target server we want to connectto. In some cases, there are multiple servers runningthrough a single Internet IP address, and in mostcases, the Host parameter is always identical to theHostName field. The Accept field indicates that weare interested in receiving any audio data type, not lim-ited to MP3s alone. In addition to MP3s, the InternetRadio can also play uncompressed PCM WAVstreams. Icy-metadata determines if song metadatashould be inserted into the stream. The most commondata inserted is artist name and song title. In the currentapplication, we enable metadata and parse the incom-ing stream. Typically, the SHOUTcast server sends avariable length block of metadata after every8192 bytes of audio. We must continuously check thelocation in the stream and extract the metadata. If themetadata was not filtered out of the stream, the audiodecoder would play it, resulting in an audio glitch. TheConnection: close field notifies the server that itshould immediately disconnect our TCP client if theserver runs out of data to send us. This generallyoccurs only during the initial connection phase if weprovide an invalid GET string, or the server isoverloaded and cannot handle another radio listener.By immediately disconnecting, we can attempt to auto-matically reconnect or give up and switch to a differentradio station.

The typical response from the SHOUTcast server isshown below. Each of the tags in this response starts withan Icy prefix. This is part of the SHOUTcast protocol.

EXAMPLE 2:

The main information used by the Internet Radioapplication is the following:

• icy-name – radio station name• icy-metaint – the interval at which metadata

arrives in the audio stream• icy-br – the bit rate in kbps of the audio stream;

the bit rate can also be read out of the MP3 decoder chip

If the radio receives the icy-name SHOUTcastresponse, the MP3 client task will execute a callbackfunction, allowing the main application to save theresult. The callback is NewServerTitleProc(BYTE*strServerTitle), where strServerTitle is setto the contents of icy-name. The string is volatile andmust be saved by the main application code if it wishesto continue using the string after returning from thecallback function.

The other tags are not meaningful for this application soare discarded automatically by the MP3 client task. Oncewe receive the server response, the audio streamfollows, which we will discuss in the next section.

Two useful pieces of information, usually transferred asmetadata in the audio stream, are the song title andauthor. The MP3 client code checks at every metadatainterval (icy-metaint), usually every 8192 bytes, forthe following text:

• StreamTitle='<artist name, song name>';

• StreamUrl='<url>';

The callback function, NewStreamTitleProc(BYTE*strStreamTitle), provides the contents of theStreamTitle metadata. Here again, the data isvolatile and must be saved by the application.Providing this data makes a big difference in customersatisfaction with the Internet Radio because the songtitle and artist can be displayed.

ICY 200 OK icy-notice1: <BR>This stream requires <a href="http://www.winamp.com/">Winamp</a><BR> icy-notice2: SHOUTcast Distributed Network Audio Server/SolarisSparc v1.9.93atdn<BR> icy-name: S K Y . F M - Top Hits Music - who cares about the chart order, less rap & more hits! icy-genre: Pop Top 40 Dance Rock icy-url: http://www.sky.fm icy-pub: 1 icy-metaint: 8192 icy-br: 96 icy-irc: #shoutcast icy-icq: 0 icy-aim: N/A

© 2008 Microchip Technology Inc. DS01128A-page 5

Page 6: TCP/IP Networking: Internet Radio Using OLED Display …ww1.microchip.com/downloads/en/AppNotes/01128a.pdf · AN1128 OLED display Internet

AN1128

DECODING THE AUDIO STREAMThe ~4 Kbytes of general purpose RAM inside thePIC18F67J60 are not enough to buffer the incomingaudio stream and keep up when experiencing exces-sive packet loss on the Internet. The TCP transportprotocol carrying the MP3 data across the Internet hasa variable retransmission delay, which can be 300 msor longer for packets that get lost. This requires a largerRAM buffer, which would allow the software to haveenough audio data buffered which can compensate forthese variable latency issues. The result of not enoughRAM are clicks and pops in the audio output resultingfrom missing packets.

In order to provide more RAM, two external serialSRAMs from AMI Semiconductor (N256S0830HDA)provide a total of 64 Kbytes; 32 Kbytes for the TCP layerand 32 Kbytes for the audio buffer. Figure 4 shows aflow diagram for the incoming stream for the server.

The SPI SRAM chips are functionally isolated fromeach other; however, they are both serving the functionof implementing FIFO buffers. In the first chip instance,the 32K x 8 SRAM bolts directly into the TCP module ofthe TCP/IP Stack. The TCP layer stores all incomingapplication layer data in this chip. This includes theMP3 stream with the embedded song title and othermetadata. All TCP, IP and Ethernet headers are

stripped off while being transferred out of the Ethernetmodule SRAM and are not stored in this external32K x 8 SRAM. The TCP protocol communicates theamount of free space in this external SRAM chip backto the remote SHOUTcast server, permitting theSHOUTcast server to throttle the data transmission toprevent buffer overflow. Similarly, a large amount offree space communicated to the SHOUTcast serverencourages the transmission of more audio data toprevent buffer underflow.

In the main() program loop, the MP3Client.c appli-cation module periodically copies data out of the TCPbuffer and into the second 32K x 8 SRAM chip. Whilebeing copied, the application strips out the song titleand other metadata from the stream and displays it onthe OLED. The second external SRAM is written withthe raw MP3 stream with no extraneous metadata,allowing minimal processing before being finally copiedinto the VS1011 audio decoder.

Periodically, during code execution, a timer expires andtriggers the MP3Client.c application’s InterruptService Routine (ISR). In the ISR, the MP3 data iscopied out of the second external SRAM and writtendirectly to the VS1011 audio decoder. The VS1011signals to the ISR when more data is required byasserting its DREQ signal output.

FIGURE 4: DATA FLOW DIAGRAM USING EXTERNAL SERIAL SRAM

Shoutcast Server

OLED display

and push buttons

Internet

PIC18F67J60

Ethernet Module8K x 8 SRAM

Microchip TCP/IP Stack

(TCP Layer)

MP3Client.c Application

main() Context

MP3Client.c Application

Interrupt Context

256K x 8 SPI SRAM

256K x 8 SPI SRAM2

VLSI VS1011 MP3 Decoder

and DAC

Microchip Internet Radio

32K x 8SPI SRAM

SHOUTcastServer

32K x 8SPI SRAM

DS01128A-page 6 © 2008 Microchip Technology Inc.

Page 7: TCP/IP Networking: Internet Radio Using OLED Display …ww1.microchip.com/downloads/en/AppNotes/01128a.pdf · AN1128 OLED display Internet

AN1128

With the audio data buffered, we can stream it to theMP3 decoder. As mentioned before, we need to strip outthe metadata; otherwise, the MP3 decoder tries todecode this as compressed audio data which results inblips in the reconstructed audio output. For this applica-tion, we selected the VS1011 MPEG Audio Codec fromVLSI Solution Oy. This device contains all the necessarycomponents for decoding and playing the audio stream:

• High-performance, low-power processor core• Decodes MPEG 1.0 and 2.0 Audio Layer III, WAV,

PCM and IMA ADPCM• Up to 320 Kbit/s MP3• Volume, bass and treble controls• High-quality stereo DAC• Stereo earphone driver capable of 30Ω loads• Separate serial control and data interfaces

Figure 5 shows a generic block diagram of the connec-tion between the PIC18F67J60 and the VS1011. Thefollowing signals, with descriptions, are used:

• SO – SPI serial output• SI – SPI serial input• SCLK – SPI serial clock• xCS – SPI chip select for commands• xRESET – chip Reset• xDCS – SPI chip select for data• DREQ – data request

© 2008 Microchip Technology Inc. DS01128A-page 7

Page 8: TCP/IP Networking: Internet Radio Using OLED Display …ww1.microchip.com/downloads/en/AppNotes/01128a.pdf · AN1128 OLED display Internet

AN1128

FIGURE 5: MCU TO MP3 DECODER CONNECTIONS

PIC® Microcontroller

100K

GND

33 pF

33 pF

GND

1M

24.576 MHz

100K 100K100K 100K

GND GND AGND

AGND

AGND

100 nF

GND

2.7V

2.7V

AVDD Limits 2.5V-3.6V

10 μF6.3V 100 nF

AGND

GND

10 μF6.3V 100 nF

DVDD Limits 2.5V-3.6V

VS1011SOSISCLKXCSXRESET

DVDD

DGND

OPENXDCS/BSYNC

XT1/HCLKXT2

GPD0GPD1GPD2/OCLKGPD3/SDATATEST

AVDD

LEFTRIGHTGBUF

RCAPAGND

19, 14, 6

22, 21, 20, 16, 4

45, 43, 38

463942

4447, 41, 40, 37

302928233

813

1817

333491032

Connect AGND to GND together as closeto the chip as possible

ESD protection typediodes should be used

AVDD

100n

GND

47n 10n 47n

GND GND GND

10 20 20

orDigital Signal Controller

CN1

DS01128A-page 8 © 2008 Microchip Technology Inc.

Page 9: TCP/IP Networking: Internet Radio Using OLED Display …ww1.microchip.com/downloads/en/AppNotes/01128a.pdf · AN1128 OLED display Internet

AN1128

Once the chip is configured, we only need to feed itdata when it requests it. The occasional request tochange volume, bass or treble is fed to the SPI controlinterface and does not interfere with data transfer. Thesoftware monitors the DREQ line from the VS1011, andwhile asserted, feeds data to the device. When DREQgoes high, it indicates that the VS1011 is capable ofaccepting at least 32 bytes of data. If DREQ goes low,the firmware stops sending data.

As mentioned before, the VS1011 has controls forvolume, bass and treble. We had to make some trade-offs at this point. Our display was small and we onlyhad three push button switches. Our goal was a simpleuser interface. We, therefore, only have control of radiostation, volume and bass; treble was left out.

Volume is controlled by the SCI_VOL register in theVS1011. It is a 16-bit register, with the upper 8 bits for theleft channel and the lower 8 bits for the right channel. Avalue of 0 represents the highest volume and a value of254 represents total silence. Each step represents a0.5 dB increment. On power-up of the application,the volume of both channels is set to 31. TheSetVolume(BYTE vRight, BYTE vLeft) functionis used to modify the volume. It follows the devicesettings, where 0 is maximum volume and 254 issilence.

Bass is controlled in a similar manner. The SCI_BASSregister in the VS1011 contains controls for both bassand treble. Bass control has two settings: bass boostand frequency limit. The boost control value rangesfrom 0 to 15, with 0 being off and each step represent-ing 1 dB of bass enhancement. The frequency limit alsohas a 2 to 15 range with each step representing incre-ments of 10 Hz. The SetBassBoost(BYTE bass,BYTE gfreq) function is used to set both.

USER INTERFACENow that the hardware and software is set up and work-ing, we need to provide status feedback to the user andallow them to control the application. The discrete LEDprovides a heartbeat from the TCP/IP Stack, indicatingthat the TCP/IP Stack is operating correctly.

The application provides three push button switches forcontrol. The push button switches are used to navigatethe simple menu structure which is displayed on theOLED display. You can change the channel forward orbackward, and increase or decrease the bass andvolume levels.

The OLED display allows the application to display thestatus of the Internet Radio. It provides the radio stationname, the song title and artist, and also the navigationmenu to change the radio station, bass and volume.This display is a monochrome, 128 x 64 display fromOSD Displays, part number OSD-2864ASWAG01.

OLED displays provide excellent contrast, high bright-ness, low-power, fast response times, wide viewingangles and several colors. The only two drawbacks tothe display are the lifetime and burn-in. This displayhas a life of 10,000 hours at maximum brightness. Thelife can be extended by adding an ambient light sensorand dim the display according to the ambient light. TheOLED displays can also suffer from burn-in of imagesdisplayed. It is therefore recommended that a screensaver is implemented when images are displayed forlong periods of time. For the purposes of this applica-tion, the navigation menu is blanked after 60 secondsand the radio station name and song title and artist areconstantly rotated at 1 character shift per second. Thisensures that there is no static image displayed for morethan 60 seconds.

The particular display used in this application is avail-able with SPI, I2C™, and both 68 and 80 series parallelinterfaces. The only difference between the Serial andParallel modes is that you can not read from the displayin the Serial modes. The Parallel mode is implementedin this application because we wanted to use a put pixelsubroutine which requires reading the contents ofmemory and then modifying one bit of data. The otherfeature of this display is that it provides a voltage boostdriver circuit that can be used with an assortment ofexternal components to create the 9-12V required forthe drive circuit.

The OLED display uses the SH1101A driver from SinoWealth. The 132 x 64-bit RAM is organized as 8 pages,0 through 7, as shown in Figure 6. The OSD Displayssupplied OLED display has only 128 columns, andtherefore, has 4 extra bytes. Note that the first columnthat is visible on the display starts at column 2, not 0,as one would expect.

FIGURE 6: GRAPHIC DISPLAY DATA RAM FOR THE OLED DISPLAY

Page 0 (Area Color Section)

Page 1 (Area Color Section

Page 2

Page 3

Page 4

Page 5

Page 6

Page 7

© 2008 Microchip Technology Inc. DS01128A-page 9

Page 10: TCP/IP Networking: Internet Radio Using OLED Display …ww1.microchip.com/downloads/en/AppNotes/01128a.pdf · AN1128 OLED display Internet

AN1128

Each page of the driver is arranged as shown inFigure 6. Each byte written to the display is shownvertically. This results in a page being 8 pixels high by128 pixels wide. As Figure 7 shows, the LeastSignificant bit is towards the top of the page and the

Most Significant bit is towards the bottom of the page.In the example shown, page 2 is selected and thefourth byte in the page is written with 0xFF, which turnsall bits in that column on.

FIGURE 7: PAGE 2 EXAMPLE SHOWING STRUCTURE OF RAM vs. WHAT IS DISPLAYED

This application displays an initial welcome screen.The opening graphic is 128 x 64 pixels and the imageis stored in the file, OSDOLED.c. We use the function,oledPutImage(rom unsigned char *ptr,unsigned char sizex, unsigned char sizey,unsigned char startx, unsigned charstarty), to write this image to the display. This func-tion allows a variable image size and placement on thedisplay. We provide a pointer to the array of data, the xand y size of the image, and also the x and ycoordinates to start.

The application also provides a font. The font is stored inthe file, OSDOLED.c, and is only the characters from0x20 to 0x7E on the ASCII chart. Since most applica-tions don't use the characters outside this range, weremove them from the array to save memory. The font is5 x 8 with the last line being blank. There are two func-tions associated with writing characters to the display.Characters can be written as 1 or 2 pages high using thefunctions, oledWriteChar1x(char letter,unsigned char page, unsigned char column)or oledWriteChar2x(char letter, unsignedchar page, unsigned char column). Because ofthe structure of the display, font sizes are limited to pageheight boundaries. For one-page tall characters, you

select the page and starting column. The character iswritten to the page at the starting column address. Thefunction does not check to see if the starting columnvalue is within the size of the display. For the two-pagetall characters, the only difference is that the page statesthe 1st of two pages to display the characters. Thisfunction also performs no checking on location.

In this application, pages 0 and 1 are used to displaythe song title. Pages 2 and 3 display the URL asobtained through the metadata. These pages areshifted from left to right, to display text longer than thewidth of the display. Page 4 displays the IP addressobtained through DHCP. Pages 5-7 are used for menu-ing. Page 5 is only used on the submenus to displaywhich submenu the application is currently in. Pages 6and 7 display the action that is taken by pushing thecorresponding push button switch. These pages disap-pear after 60 seconds as part of the screen saver. Anypress of a push button switch will display the menu forinput.

To better understand the operation of this display, it isrecommended that you obtain copies of the SH1011Adata sheet and the OSD Displays OLED data sheet.See the “References” section for more details.

SEG0 SEG2 (First visible column) SEG131

LSb [D0]

MSb [D7]

• • • • • • • • • • • •Page 2

DS01128A-page 10 © 2008 Microchip Technology Inc.

Page 11: TCP/IP Networking: Internet Radio Using OLED Display …ww1.microchip.com/downloads/en/AppNotes/01128a.pdf · AN1128 OLED display Internet

AN1128

DEBUGGING INTERNET CONNECTIONSWhen developing applications using TCP/IP and Ether-net, you may find an instance where having a tool todebug an issue is required. When developing theSHOUTcast interface code, we used a tool calledWireshark to figure out what an application sends to aSHOUTcast server to initiate the stream, what theserver responds with and how the metadata is embed-ded in the audio stream. Wireshark allows data to becaptured from TCP/IP connections on your PC. Youcan use Winamp or other player software to makeconnections to SHOUTcast servers and capture thedata streams. The other important piece of informationacquired with Wireshark is the IP address and portnumber for these Internet Radio stations. This isneeded to make the connection. Wireshark is a freedownload available at http://www.wireshark.org.

FUTURE CONSIDERATIONSThis application note was designed to provide anexample of the capabilities of 8-bit microcontrollers run-ning TCP/IP Stacks and interfacing to existing Internetinfrastructure. There are many improvements that canbe made to make the Internet Radio design moredesirable and customer friendly.

The first change is more for aesthetics than perfor-mance. Many handheld devices are using QVGAgraphics LCDs to display information. These displaysare quite powerful, ranging in colors from 256 to morethan 65,000 colors. They are often packaged with aresistive touch screen that can replace any push buttonswitches. The combination of the two can result in avery powerful user interface to the Internet Radio.Companies such as Ramtex Internation ApS, SeggerMicrocontroller Systems and Microchip offer graphicsLCD libraries that greatly simplify the interface to thedisplay and generation of objects, menus, etc.

The second potential change to the application pertainsto applications that require more processing powerthan the PIC18F67J60 can provide. Microchip offers awide range of 16-bit microcontrollers that increase theperformance up to 40 MIPs. The PIC24F micro-controllers offer 16 MIPs of performance and manyperipherals, such as a Parallel Master Port (PMP) tointerface to graphics LCDs or the Peripheral Pin Select(PPS) module that allows efficient use of I/O pins.Microchip also offers 32-bit microcontrollers in ourPIC32 product line with all the same features of PIC24,with up to a 1.5 DMIPS/MHz core. To add the Ethernetinterface capability, the ENC28J60 from Microchipprovides the same Ethernet MAC and PHY used in thePIC18F67J60, but in a 28-pin stand-alone packagewith SPI connection.

Finally, connections to a subscription-based audiostreaming web site, such as Slacker™, Pandora,Live365, etc., can be developed to provide uniqueaudio streaming capabilities. These services allowusers to define playlists and select artists to tailor theaudio stream to the listener.

CONCLUSIONAt first, the idea of creating an Internet Radio on any-thing other than a 32-bit microcontroller may not seemfeasible. Once the data rates of streaming audio areconsidered and application overhead is understood,the processing power of the PIC18F67J60 family ofmicrocontrollers coupled with an integrated 10Base-TMAC/PHY can be used to create the basic platform forthese radios. The extra bandwidth can be applied toenhance the user interface with touch screens andgraphics LCDs.

Many thanks to Professor Dr. Francesco P. Volpe andChristoph Stein from the Microcomputer Lab at theUniversity of Applied Sciences Aschaffenburg inGermany for their innovative use of PIC microcontrollersin Ethernet applications.

© 2008 Microchip Technology Inc. DS01128A-page 11

Page 12: TCP/IP Networking: Internet Radio Using OLED Display …ww1.microchip.com/downloads/en/AppNotes/01128a.pdf · AN1128 OLED display Internet

AN1128

MEMORY USAGETotal Flash program memory on PIC18F67J60 = 131,072 bytes

Total memory used by Internet Radio = 40 Kbytes

Main routine = 4.7 Kbytes

OLED driver (includes font and introductory image) = 2.7 Kbytes

VS1011 driver = ~1 Kbyte

MP3 client = ~2.5 Kbytes

Intro graphics image = ~1 Kbyte

Font table = ~0.5 Kbytes

Miscellaneous routines = ~2.6 Kbytes

TCP/IP Stack protocols = ~26 Kbytes

Protocols used = TCP, UDP, DHCP, PIC18F97J60Ethernet driver, ARP, IP, DNS

Total data memory on PIC18F67J60 = 3808 bytes

Total data memory used by Internet Radio = 1820 bytes

Audio and TCP/IP Stack buffering uses 64 Kbytes fromthe external serial SRAMs.

REFERENCESSH1011A Data Sheet – www.sinowealth.com

OSD-2864ASWAG01 – www.osddisplays.com

VS1011 Data Sheet and Application Notes – www.vlsi.fi

N256S0830HDA – http://www.amis.com

SHOUTcast – www.shoutcast.com

Microchip TCP/IP Stack – www.microchip.com/tcpip

PIC18F97J60 Family Data Sheet – www.microchip.com

Original Internet Radio DesignProf. Dr. Francesco P. Volpe & Christoph Stein,Microcomputer Lab, University of Applied SciencesAschaffenburg, Wuerzburger Strasse 45, D-63743Aschaffenburg, Germany; [email protected]

DS01128A-page 12 © 2008 Microchip Technology Inc.

Page 13: TCP/IP Networking: Internet Radio Using OLED Display …ww1.microchip.com/downloads/en/AppNotes/01128a.pdf · AN1128 OLED display Internet

AN1128

APPENDIX A: SCHEMATICS

FIGURE A-1: INTERNET RADIO SCHEMATICS (SHEET 1 OF 2)

D3

RE4

xRESET

RESET

TPOUT+

TPOUT-

R/W

LEDA

CS

E

TXDD

4

D6

D7

D/C

VS

_CS

DR

EQD

0

SW

D7

D3

D1

VC

OM

H

RE

SE

T

RE

SE

T

D6

D4

D0E

D/C

TXD

+3.3

V

.1

FC

5

TPO

UT-

180

R12

RB

6

RB

4

SO

SO

RE

4

RF1

SC

LK

SI

C20

10

F

.1

FC

10

D5

XD

CS

MC

LRD1

D2

+3.3

V

RE5

FB

+3.3

V

+3.3

V

R13

820K

R/W

VP

P D5

+3.3

V

+3.3

V

D2

CS

+3.3

V

RX

D

.1

FC

11

C7

33 p

F

TPO

UT+

LED

B

R7

49.9

R8

49.9

R9

180

LED

A

+3.3

V

ICD

Con

nect

or

+3.3

VMC

LR

RB

7

+3.3

VR34

100K

RE

5

+3.3

V

S3

SI

SC

LK

S2

+3.3

V

RF1

LEDB

C13

4.7

F

C30 10

00 p

F

.1

FC

15

1 F

C19

RXD

.1

FC

1

.1

FC

4

.1

FC

6

220

F

C33

R33

100K

+3.3

V

D3

R10

10K

R14

10K

R11 10K

VB

RE

F

SC

LK

SORB

7

RB

5

RB

4

TPIN

-

TPIN

+

R2

2.26

K 1

%

R26

2

CS

10-2

5.00

0MA

BJT

R

TPIN

-

TPIN

+

RB

5

R6

180

RC

2

1 F

C16

+3.3

V

1 F

C9

+3.3

V

IRE

F

RC

2

+3.3

V

SI

RB

6

+3.3

V

+3.3

V

+3.3

V

1 3 2

2IN

1

GN

D

3O

UT

MC

P17

03-3

302E

/MB

R25

2

C8

33 p

F

L149

.9R

4

49.9

R5

S1

+3.3

V

+3.3

V

+3.3

V

SDG

Q1

MG

SF1

N02

LT1 R24

.12

ohm

1%

.1

FC

14

D5

MB

R05

20

L2

10uH

R23

10K

23D

5

20D

2

11C

S

5FB

25D

724

D6

22D

421

D3

15R

D

18D

0

13A

0

10P

S

19D

1

26IR

EF

17V

PP

14W

R

8V

DD

1

2G

ND

27N

C

16V

CO

MH

12R

ES

9C

86

1N

C

6S

EN

SE

3S

W4

VD

D2

7V

BR

EF

1 2 3 4

J5

.1

FC

2

.1

FC

29C

31

2.2

F

.1

FC

3

1 2 3 4 65

J4

.1

FC

39

2S

O7

HO

LD

4G

ND

5S

I

8V

cc1

CS

6S

CK

3N

C

U6

N25

6S08

30H

DA

.1

FC

32

2S

O7

HO

LD

4G

ND

5S

I

8V

cc1

CS

6S

CK

3N

C

U4

N25

6S08

30H

DA

25 M

Hz

Y1

Jam

eco

2527

35 P

ower

Sup

ply

5V 2

.5A

6.8u

F_Ta

ntC

34

R16

110K

1%

81053 74 962 1

J8J6J4J3J2J1 J5 J7

Grn

/Orn

Yel

low

J1

08B

0-1X

1T-3

6-F

18ENVREG

27RA5/AN4

30RC0/T1OSO

63 RE3/P3C

21RA3/AN3/VREF+60 RD0/P1B

24RA0/LEDA/AN057 VDD

54VDD_TXPLL

51TPOUT+

46TP

IN-

19AVDD

20AVSS

25VSS

26VDD

28RA4/T0CKI

31RC6/TX/CK

32RC7/RX/DT

36R

C5/

SD

O

48V

DD

_RX

47TP

IN+

17RF1/AN6/C2OUT

64RE2/P2B

62RE4/P3B

61RE5/P1C

22RA2/AN2/VREF-

23RA1/LEDB/AN1

56VSS

55VSS_TXPLL

29RC1/T1OSI/CCP2/P2A

53RBIAS

52 VSS_TX

50TPOUT-

49 VDD_TX

45V

SS

_RX

59RD1/CCP3/P3A

58RD2/CCP4/P3D

15R

F3/A

N8/

C2I

NB

12R

F6/A

N11

/C1I

NA

9V

SS

6R

B3/

INT3

3R

B0/

INT0

34R

C3/

SC

K/S

CL

37R

B7/

KB

I3/P

GD

40O

SC

2/C

LKO

/RA

6

43R

B5/

KB

I1/P

GM

11R

F7/

SS

1

13R

F5/A

N10

/C1I

NB

/CV

RE

F

14R

F4/A

N9/

C2I

NA

5R

B2/

INT2

7M

CLR

8R

G4/

CC

P5/

P1D

1R

E1/

P2C

2R

E0/

P2D

38V

DD

_OS

C

35R

C4/

SD

I/SD

A

44R

B4/

KB

I0

42R

B6/

KB

I2/P

GC

41V

SS

_OS

C

4R

B1/

INT1

10V

DD

CO

RE

/VC

AP

16R

F2/A

N7/

C1O

UT

39O

SC

1/C

LKI

33R

C2/

CC

P1/

P1A

U1

PIC

18F6

7J60

R15

930K

1%

© 2008 Microchip Technology Inc. DS01128A-page 13

Page 14: TCP/IP Networking: Internet Radio Using OLED Display …ww1.microchip.com/downloads/en/AppNotes/01128a.pdf · AN1128 OLED display Internet

AN1128

FIGURE A-2: INTERNET RADIO SCHEMATICS (SHEET 2 OF 2)

SI

SO

VS

_CS

AV

DD

AV

DD

22 p

F

C27

C28

22 p

F

R19

1M

AV

DD

xDC

S

+3.

3V

SCLK

+3.

3V

AV

DD

xRE

SE

T

R22

100K

AV

DD

R30

10

R29

10

10 n

F

C35

10 n

F

C36

R20 20

R21

20

47 n

F

C37

R31

10

L3

10

H+

3.3V

R18

10K

10K

R17

100

nF

C25

100

nF

C38

100

nF

C18

47 n

F

C26

DR

EQ

RIG

HT

LEF

T

AV

DD

AV

DD

100KR32

100

nF

C23

10

F

C17

MG

054S

05X

150D

P

D4

321 4 5

J2

Y2

CS

10-2

4.57

6MA

BJ-

UT

47A

GN

D3

44R

CA

P

41A

GN

D2

23xC

S38

AV

DD

0

14D

VD

D1

17X

TA

LO

20D

GN

D2

25NC

28SCLK

31NC

35NC

48N

C

15N

C46

LEF

T

43A

VD

D1

42G

BU

F

45A

VD

D2

24N

C

40A

GN

D1

37A

GN

D0

39R

IGH

T

26NC

27NC

30SO

32TEST

34GPIO1

36NC

13xD

CS

/BS

YN

C

16D

GN

D1

18X

TA

LI19

DV

DD

2

21D

GN

D3

22D

GN

D4

29SI

11NC

8DREQ

5NC

2NC

9GPIO2/DCLK

10GPIO3/SDATA

12NC

3xRESET

4DGND0

6DVDD0

7NC

1NC

33GPIO0/SPIBOOT

U2

VS

1011

DS01128A-page 14 © 2008 Microchip Technology Inc.

Page 15: TCP/IP Networking: Internet Radio Using OLED Display …ww1.microchip.com/downloads/en/AppNotes/01128a.pdf · AN1128 OLED display Internet

AN1128

APPENDIX B: SOFTWARE FLOWCHARTS

Since the TCP/IP Stack is very large, the softwareflowchart is only for the main routine found in theMainDemo.c file. The files are part of the MicrochipTCP/IP Stack distribution that can be found atwww.microchip.com/tcpip.

FIGURE B-1: MAIN ROUTINE SOFTWARE FLOWCHART (MainDemo.c)

Time Elapsed= 60 secs?

menuState = IDLE

Clear OLED Lines5,6,7

Time Elapsed= 1 sec?

Station Name> 21

Shift Song NameLeft 1 Character

Song Name> 21

Shift Song NameLeft 1 Character

ProcessPush Button

Switches

Track IP AddressRenewals since

Reset

NO

YES

NO

YES

NO

NO

YES

YES

Initialize Device

Initialize TCP/IP

Initialize OLED

Initialize VS1011

Call Stack and

MP3ClientTask()

menuState =

Reset OLED to

MainDemo.c

Stack

Time Elapsed= 0.5 sec?

Toggle LED0

Protocol Tasks

Is DHCPBound?

Time Elapsed= 16 secs?

MENU

menuState

YES

YES

YES

© 2008 Microchip Technology Inc. DS01128A-page 15

Page 16: TCP/IP Networking: Internet Radio Using OLED Display …ww1.microchip.com/downloads/en/AppNotes/01128a.pdf · AN1128 OLED display Internet

AN1128

NOTES:

DS01128A-page 16 © 2008 Microchip Technology Inc.

Page 17: TCP/IP Networking: Internet Radio Using OLED Display …ww1.microchip.com/downloads/en/AppNotes/01128a.pdf · AN1128 OLED display Internet

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 ourproducts. Attempts to break Microchip’s code protection feature may be a violation of the Digital Millennium Copyright Act. If such actsallow 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 deviceapplications and the like is provided only for your convenienceand may be superseded by updates. It is your responsibility toensure that your application meets with your specifications.MICROCHIP MAKES NO REPRESENTATIONS ORWARRANTIES OF ANY KIND WHETHER EXPRESS ORIMPLIED, WRITTEN OR ORAL, STATUTORY OROTHERWISE, RELATED TO THE INFORMATION,INCLUDING BUT NOT LIMITED TO ITS CONDITION,QUALITY, PERFORMANCE, MERCHANTABILITY ORFITNESS FOR PURPOSE. Microchip disclaims all liabilityarising from this information and its use. Use of Microchipdevices in life support and/or safety applications is entirely atthe buyer’s risk, and the buyer agrees to defend, indemnify andhold harmless Microchip from any and all damages, claims,suits, or expenses resulting from such use. No licenses areconveyed, implicitly or otherwise, under any Microchipintellectual property rights.

© 2008 Microchip Technology Inc.

Trademarks

The Microchip name and logo, the Microchip logo, Accuron, dsPIC, KEELOQ, KEELOQ logo, MPLAB, PIC, PICmicro, PICSTART, PRO MATE, rfPIC and SmartShunt are registered trademarks of Microchip Technology Incorporated in the U.S.A. and other countries.

FilterLab, Linear Active Thermistor, MXDEV, MXLAB, SEEVAL, SmartSensor and The Embedded Control Solutions Company are registered trademarks of Microchip Technology Incorporated in the U.S.A.

Analog-for-the-Digital Age, Application Maestro, CodeGuard, dsPICDEM, dsPICDEM.net, dsPICworks, dsSPEAK, ECAN, ECONOMONITOR, FanSense, In-Circuit Serial Programming, ICSP, ICEPIC, Mindi, MiWi, MPASM, MPLAB Certified logo, MPLIB, MPLINK, mTouch, PICkit, PICDEM, PICDEM.net, PICtail, PIC32 logo, PowerCal, PowerInfo, PowerMate, PowerTool, REAL ICE, rfLAB, Select Mode, Total Endurance, UNI/O, 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.

© 2008, Microchip Technology Incorporated, Printed in the U.S.A., All Rights Reserved.

Printed on recycled paper.

DS01128A-page 17

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.

Page 18: TCP/IP Networking: Internet Radio Using OLED Display …ww1.microchip.com/downloads/en/AppNotes/01128a.pdf · AN1128 OLED display Internet

DS01128A-page 18 © 2008 Microchip Technology Inc.

AMERICASCorporate Office2355 West Chandler Blvd.Chandler, AZ 85224-6199Tel: 480-792-7200 Fax: 480-792-7277Technical Support: http://support.microchip.comWeb Address: www.microchip.comAtlantaDuluth, GA Tel: 678-957-9614 Fax: 678-957-1455BostonWestborough, MA Tel: 774-760-0087 Fax: 774-760-0088ChicagoItasca, IL Tel: 630-285-0071 Fax: 630-285-0075DallasAddison, TX Tel: 972-818-7423 Fax: 972-818-2924DetroitFarmington Hills, MI Tel: 248-538-2250Fax: 248-538-2260KokomoKokomo, IN Tel: 765-864-8360Fax: 765-864-8387Los AngelesMission Viejo, CA Tel: 949-462-9523 Fax: 949-462-9608Santa ClaraSanta Clara, CA Tel: 408-961-6444Fax: 408-961-6445TorontoMississauga, Ontario, CanadaTel: 905-673-0699 Fax: 905-673-6509

ASIA/PACIFICAsia Pacific OfficeSuites 3707-14, 37th FloorTower 6, The GatewayHarbour City, KowloonHong KongTel: 852-2401-1200Fax: 852-2401-3431Australia - SydneyTel: 61-2-9868-6733Fax: 61-2-9868-6755China - BeijingTel: 86-10-8528-2100 Fax: 86-10-8528-2104China - ChengduTel: 86-28-8665-5511Fax: 86-28-8665-7889China - Hong Kong SARTel: 852-2401-1200 Fax: 852-2401-3431China - NanjingTel: 86-25-8473-2460Fax: 86-25-8473-2470China - QingdaoTel: 86-532-8502-7355Fax: 86-532-8502-7205China - ShanghaiTel: 86-21-5407-5533 Fax: 86-21-5407-5066China - ShenyangTel: 86-24-2334-2829Fax: 86-24-2334-2393China - ShenzhenTel: 86-755-8203-2660 Fax: 86-755-8203-1760China - WuhanTel: 86-27-5980-5300Fax: 86-27-5980-5118China - XiamenTel: 86-592-2388138 Fax: 86-592-2388130China - XianTel: 86-29-8833-7252Fax: 86-29-8833-7256China - ZhuhaiTel: 86-756-3210040 Fax: 86-756-3210049

ASIA/PACIFICIndia - BangaloreTel: 91-80-4182-8400 Fax: 91-80-4182-8422India - New DelhiTel: 91-11-4160-8631Fax: 91-11-4160-8632India - PuneTel: 91-20-2566-1512Fax: 91-20-2566-1513Japan - YokohamaTel: 81-45-471- 6166 Fax: 81-45-471-6122Korea - DaeguTel: 82-53-744-4301Fax: 82-53-744-4302Korea - SeoulTel: 82-2-554-7200Fax: 82-2-558-5932 or 82-2-558-5934Malaysia - Kuala LumpurTel: 60-3-6201-9857Fax: 60-3-6201-9859Malaysia - PenangTel: 60-4-227-8870Fax: 60-4-227-4068Philippines - ManilaTel: 63-2-634-9065Fax: 63-2-634-9069SingaporeTel: 65-6334-8870Fax: 65-6334-8850Taiwan - Hsin ChuTel: 886-3-572-9526Fax: 886-3-572-6459Taiwan - KaohsiungTel: 886-7-536-4818Fax: 886-7-536-4803Taiwan - TaipeiTel: 886-2-2500-6610 Fax: 886-2-2508-0102Thailand - BangkokTel: 66-2-694-1351Fax: 66-2-694-1350

EUROPEAustria - WelsTel: 43-7242-2244-39Fax: 43-7242-2244-393Denmark - CopenhagenTel: 45-4450-2828 Fax: 45-4485-2829France - ParisTel: 33-1-69-53-63-20 Fax: 33-1-69-30-90-79Germany - MunichTel: 49-89-627-144-0 Fax: 49-89-627-144-44Italy - Milan Tel: 39-0331-742611 Fax: 39-0331-466781Netherlands - DrunenTel: 31-416-690399 Fax: 31-416-690340Spain - MadridTel: 34-91-708-08-90Fax: 34-91-708-08-91UK - WokinghamTel: 44-118-921-5869Fax: 44-118-921-5820

WORLDWIDE SALES AND SERVICE

01/02/08