Analog Devices Complex Numbers - Revenir à l'accueil

Farnell Element 14 :

Farnell-NA555-NE555-..> 08-Sep-2014 07:33 1.5M

Farnell-AD9834-Rev-D..> 08-Sep-2014 07:32 1.2M

Farnell-MSP430F15x-M..> 08-Sep-2014 07:32 1.3M

Farnell-AD736-Rev-I-..> 08-Sep-2014 07:31 1.3M

Farnell-AD8307-Data-..> 08-Sep-2014 07:30 1.3M

Farnell-Single-Chip-..> 08-Sep-2014 07:30 1.5M

Farnell-Quadruple-2-..> 08-Sep-2014 07:29 1.5M

Farnell-ADE7758-Rev-..> 08-Sep-2014 07:28 1.7M

Farnell-MAX3221-Rev-..> 08-Sep-2014 07:28 1.8M

Farnell-USB-to-Seria..> 08-Sep-2014 07:27 2.0M

Farnell-AD8313-Analo..> 08-Sep-2014 07:26 2.0M

Farnell-SN54HC164-SN..> 08-Sep-2014 07:25 2.0M

Farnell-AD8310-Analo..> 08-Sep-2014 07:24 2.1M

Farnell-AD8361-Rev-D..> 08-Sep-2014 07:23 2.1M

Farnell-2N3906-Fairc..> 08-Sep-2014 07:22 2.1M

Farnell-AD584-Rev-C-..> 08-Sep-2014 07:20 2.2M

Farnell-ADE7753-Rev-..> 08-Sep-2014 07:20 2.3M

Farnell-TLV320AIC23B..> 08-Sep-2014 07:18 2.4M

Farnell-AD586BRZ-Ana..> 08-Sep-2014 07:17 1.6M

Farnell-STM32F405xxS..> 27-Aug-2014 18:27 1.8M

Farnell-MSP430-Hardw..> 29-Jul-2014 10:36 1.1M

Farnell-LM324-Texas-..> 29-Jul-2014 10:32 1.5M

Farnell-LM386-Low-Vo..> 29-Jul-2014 10:32 1.5M

Farnell-NE5532-Texas..> 29-Jul-2014 10:32 1.5M

Farnell-Hex-Inverter..> 29-Jul-2014 10:31 875K

Farnell-AT90USBKey-H..> 29-Jul-2014 10:31 902K

Farnell-AT89C5131-Ha..> 29-Jul-2014 10:31 1.2M

Farnell-MSP-EXP430F5..> 29-Jul-2014 10:31 1.2M

Farnell-Explorer-16-..> 29-Jul-2014 10:31 1.3M

Farnell-TMP006EVM-Us..> 29-Jul-2014 10:30 1.3M

Farnell-Gertboard-Us..> 29-Jul-2014 10:30 1.4M

Farnell-LMP91051-Use..> 29-Jul-2014 10:30 1.4M

Farnell-Thermometre-..> 29-Jul-2014 10:30 1.4M

Farnell-user-manuel-..> 29-Jul-2014 10:29 1.5M

Farnell-fx-3650P-fx-..> 29-Jul-2014 10:29 1.5M

Farnell-2-GBPS-Diffe..> 28-Jul-2014 17:42 2.7M

Farnell-LMT88-2.4V-1..> 28-Jul-2014 17:42 2.8M

Farnell-Octal-Genera..> 28-Jul-2014 17:42 2.8M

Farnell-Dual-MOSFET-..> 28-Jul-2014 17:41 2.8M

Farnell-TLV320AIC325..> 28-Jul-2014 17:41 2.9M

Farnell-SN54LV4053A-..> 28-Jul-2014 17:20 5.9M

Farnell-TAS1020B-USB..> 28-Jul-2014 17:19 6.2M

Farnell-TPS40060-Wid..> 28-Jul-2014 17:19 6.3M

Farnell-TL082-Wide-B..> 28-Jul-2014 17:16 6.3M

Farnell-RF-short-tra..> 28-Jul-2014 17:16 6.3M

Farnell-maxim-integr..> 28-Jul-2014 17:14 6.4M

Farnell-TSV6390-TSV6..> 28-Jul-2014 17:14 6.4M

Farnell-Fast-Charge-..> 28-Jul-2014 17:12 6.4M

Farnell-NVE-datashee..> 28-Jul-2014 17:12 6.5M

Farnell-Excalibur-Hi..> 28-Jul-2014 17:10 2.4M

Farnell-Excalibur-Hi..> 28-Jul-2014 17:10 2.4M

Farnell-REF102-10V-P..> 28-Jul-2014 17:09 2.4M

Farnell-TMS320F28055..> 28-Jul-2014 17:09 2.7M

Farnell-MULTICOMP-Ra..> 22-Jul-2014 12:35 5.9M

Farnell-RASPBERRY-PI..> 22-Jul-2014 12:35 5.9M

Farnell-Dremel-Exper..> 22-Jul-2014 12:34 1.6M

Farnell-STM32F103x8-..> 22-Jul-2014 12:33 1.6M

Farnell-BD6xxx-PDF.htm 22-Jul-2014 12:33 1.6M

Farnell-L78S-STMicro..> 22-Jul-2014 12:32 1.6M

Farnell-RaspiCam-Doc..> 22-Jul-2014 12:32 1.6M

Farnell-SB520-SB5100..> 22-Jul-2014 12:32 1.6M

Farnell-iServer-Micr..> 22-Jul-2014 12:32 1.6M

Farnell-LUMINARY-MIC..> 22-Jul-2014 12:31 3.6M

Farnell-TEXAS-INSTRU..> 22-Jul-2014 12:31 2.4M

Farnell-TEXAS-INSTRU..> 22-Jul-2014 12:30 4.6M

Farnell-CLASS 1-or-2..> 22-Jul-2014 12:30 4.7M

Farnell-TEXAS-INSTRU..> 22-Jul-2014 12:29 4.8M

Farnell-Evaluating-t..> 22-Jul-2014 12:28 4.9M

Farnell-LM3S6952-Mic..> 22-Jul-2014 12:27 5.9M

Farnell-Keyboard-Mou..> 22-Jul-2014 12:27 5.9M

Farnell-Full-Datashe..> 15-Jul-2014 17:08 951K

Farnell-pmbta13_pmbt..> 15-Jul-2014 17:06 959K

Farnell-EE-SPX303N-4..> 15-Jul-2014 17:06 969K

Farnell-Datasheet-NX..> 15-Jul-2014 17:06 1.0M

Farnell-Datasheet-Fa..> 15-Jul-2014 17:05 1.0M

Farnell-MIDAS-un-tra..> 15-Jul-2014 17:05 1.0M

Farnell-SERIAL-TFT-M..> 15-Jul-2014 17:05 1.0M

Farnell-MCOC1-Farnel..> 15-Jul-2014 17:05 1.0M

Farnell-TMR-2-series..> 15-Jul-2014 16:48 787K

Farnell-DC-DC-Conver..> 15-Jul-2014 16:48 781K

Farnell-Full-Datashe..> 15-Jul-2014 16:47 803K

Farnell-TMLM-Series-..> 15-Jul-2014 16:47 810K

Farnell-TEL-5-Series..> 15-Jul-2014 16:47 814K

Farnell-TXL-series-t..> 15-Jul-2014 16:47 829K

Farnell-TEP-150WI-Se..> 15-Jul-2014 16:47 837K

Farnell-AC-DC-Power-..> 15-Jul-2014 16:47 845K

Farnell-TIS-Instruct..> 15-Jul-2014 16:47 845K

Farnell-TOS-tracopow..> 15-Jul-2014 16:47 852K

Farnell-TCL-DC-traco..> 15-Jul-2014 16:46 858K

Farnell-TIS-series-t..> 15-Jul-2014 16:46 875K

Farnell-TMR-2-Series..> 15-Jul-2014 16:46 897K

Farnell-TMR-3-WI-Ser..> 15-Jul-2014 16:46 939K

Farnell-TEN-8-WI-Ser..> 15-Jul-2014 16:46 939K

Farnell-Full-Datashe..> 15-Jul-2014 16:46 947K

Farnell-HIP4081A-Int..> 07-Jul-2014 19:47 1.0M

Farnell-ISL6251-ISL6..> 07-Jul-2014 19:47 1.1M

Farnell-DG411-DG412-..> 07-Jul-2014 19:47 1.0M

Farnell-3367-ARALDIT..> 07-Jul-2014 19:46 1.2M

Farnell-ICM7228-Inte..> 07-Jul-2014 19:46 1.1M

Farnell-Data-Sheet-K..> 07-Jul-2014 19:46 1.2M

Farnell-Silica-Gel-M..> 07-Jul-2014 19:46 1.2M

Farnell-TKC2-Dusters..> 07-Jul-2014 19:46 1.2M

Farnell-CRC-HANDCLEA..> 07-Jul-2014 19:46 1.2M

Farnell-760G-French-..> 07-Jul-2014 19:45 1.2M

Farnell-Decapant-KF-..> 07-Jul-2014 19:45 1.2M

Farnell-1734-ARALDIT..> 07-Jul-2014 19:45 1.2M

Farnell-Araldite-Fus..> 07-Jul-2014 19:45 1.2M

Farnell-fiche-de-don..> 07-Jul-2014 19:44 1.4M

Farnell-safety-data-..> 07-Jul-2014 19:44 1.4M

Farnell-A-4-Hardener..> 07-Jul-2014 19:44 1.4M

Farnell-CC-Debugger-..> 07-Jul-2014 19:44 1.5M

Farnell-MSP430-Hardw..> 07-Jul-2014 19:43 1.8M

Farnell-SmartRF06-Ev..> 07-Jul-2014 19:43 1.6M

Farnell-CC2531-USB-H..> 07-Jul-2014 19:43 1.8M

Farnell-Alimentation..> 07-Jul-2014 19:43 1.8M

Farnell-BK889B-PONT-..> 07-Jul-2014 19:42 1.8M

Farnell-User-Guide-M..> 07-Jul-2014 19:41 2.0M

Farnell-T672-3000-Se..> 07-Jul-2014 19:41 2.0M

Farnell-0050375063-D..> 18-Jul-2014 17:03 2.5M

Farnell-Mini-Fit-Jr-..> 18-Jul-2014 17:03 2.5M

Farnell-43031-0002-M..> 18-Jul-2014 17:03 2.5M

Farnell-0433751001-D..> 18-Jul-2014 17:02 2.5M

Farnell-Cube-3D-Prin..> 18-Jul-2014 17:02 2.5M

Farnell-MTX-Compact-..> 18-Jul-2014 17:01 2.5M

Farnell-MTX-3250-MTX..> 18-Jul-2014 17:01 2.5M

Farnell-ATtiny26-L-A..> 18-Jul-2014 17:00 2.6M

Farnell-MCP3421-Micr..> 18-Jul-2014 17:00 1.2M

Farnell-LM19-Texas-I..> 18-Jul-2014 17:00 1.2M

Farnell-Data-Sheet-S..> 18-Jul-2014 17:00 1.2M

Farnell-LMH6518-Texa..> 18-Jul-2014 16:59 1.3M

Farnell-AD7719-Low-V..> 18-Jul-2014 16:59 1.4M

Farnell-DAC8143-Data..> 18-Jul-2014 16:59 1.5M

Farnell-BGA7124-400-..> 18-Jul-2014 16:59 1.5M

Farnell-SICK-OPTIC-E..> 18-Jul-2014 16:58 1.5M

Farnell-LT3757-Linea..> 18-Jul-2014 16:58 1.6M

Farnell-LT1961-Linea..> 18-Jul-2014 16:58 1.6M

Farnell-PIC18F2420-2..> 18-Jul-2014 16:57 2.5M

Farnell-DS3231-DS-PD..> 18-Jul-2014 16:57 2.5M

Farnell-RDS-80-PDF.htm 18-Jul-2014 16:57 1.3M

Farnell-AD8300-Data-..> 18-Jul-2014 16:56 1.3M

Farnell-LT6233-Linea..> 18-Jul-2014 16:56 1.3M

Farnell-MAX1365-MAX1..> 18-Jul-2014 16:56 1.4M

Farnell-XPSAF5130-PD..> 18-Jul-2014 16:56 1.4M

Farnell-DP83846A-DsP..> 18-Jul-2014 16:55 1.5M

Farnell-Dremel-Exper..> 18-Jul-2014 16:55 1.6M

Farnell-MCOC1-Farnel..> 16-Jul-2014 09:04 1.0M

Farnell-SL3S1203_121..> 16-Jul-2014 09:04 1.1M

Farnell-PN512-Full-N..> 16-Jul-2014 09:03 1.4M

Farnell-SL3S4011_402..> 16-Jul-2014 09:03 1.1M

Farnell-LPC408x-7x 3..> 16-Jul-2014 09:03 1.6M

Farnell-PCF8574-PCF8..> 16-Jul-2014 09:03 1.7M

Farnell-LPC81xM-32-b..> 16-Jul-2014 09:02 2.0M

Farnell-LPC1769-68-6..> 16-Jul-2014 09:02 1.9M

Farnell-Download-dat..> 16-Jul-2014 09:02 2.2M

Farnell-LPC3220-30-4..> 16-Jul-2014 09:02 2.2M

Farnell-LPC11U3x-32-..> 16-Jul-2014 09:01 2.4M

Farnell-SL3ICS1002-1..> 16-Jul-2014 09:01 2.5M

Farnell-T672-3000-Se..> 08-Jul-2014 18:59 2.0M

Farnell-tesaÂ®pack63..> 08-Jul-2014 18:56 2.0M

Farnell-Encodeur-USB..> 08-Jul-2014 18:56 2.0M

Farnell-CC2530ZDK-Us..> 08-Jul-2014 18:55 2.1M

Farnell-2020-Manuel-..> 08-Jul-2014 18:55 2.1M

Farnell-Synchronous-..> 08-Jul-2014 18:54 2.1M

Farnell-Arithmetic-L..> 08-Jul-2014 18:54 2.1M

Farnell-NA555-NE555-..> 08-Jul-2014 18:53 2.2M

Farnell-4-Bit-Magnit..> 08-Jul-2014 18:53 2.2M

Farnell-LM555-Timer-..> 08-Jul-2014 18:53 2.2M

Farnell-L293d-Texas-..> 08-Jul-2014 18:53 2.2M

Farnell-SN54HC244-SN..> 08-Jul-2014 18:52 2.3M

Farnell-MAX232-MAX23..> 08-Jul-2014 18:52 2.3M

Farnell-High-precisi..> 08-Jul-2014 18:51 2.3M

Farnell-SMU-Instrume..> 08-Jul-2014 18:51 2.3M

Farnell-900-Series-B..> 08-Jul-2014 18:50 2.3M

Farnell-BA-Series-Oh..> 08-Jul-2014 18:50 2.3M

Farnell-UTS-Series-S..> 08-Jul-2014 18:49 2.5M

Farnell-270-Series-O..> 08-Jul-2014 18:49 2.3M

Farnell-UTS-Series-S..> 08-Jul-2014 18:49 2.8M

Farnell-Tiva-C-Serie..> 08-Jul-2014 18:49 2.6M

Farnell-UTO-Souriau-..> 08-Jul-2014 18:48 2.8M

Farnell-Clipper-Seri..> 08-Jul-2014 18:48 2.8M

Farnell-SOURIAU-Cont..> 08-Jul-2014 18:47 3.0M

Farnell-851-Series-P..> 08-Jul-2014 18:47 3.0M

Farnell-SL59830-Inte..> 06-Jul-2014 10:07 1.0M

Farnell-ALF1210-PDF.htm 06-Jul-2014 10:06 4.0M

Farnell-AD7171-16-Bi..> 06-Jul-2014 10:06 1.0M

Farnell-Low-Noise-24..> 06-Jul-2014 10:05 1.0M

Farnell-ESCON-Featur..> 06-Jul-2014 10:05 938K

Farnell-74LCX573-Fai..> 06-Jul-2014 10:05 1.9M

Farnell-1N4148WS-Fai..> 06-Jul-2014 10:04 1.9M

Farnell-FAN6756-Fair..> 06-Jul-2014 10:04 850K

Farnell-Datasheet-Fa..> 06-Jul-2014 10:04 861K

Farnell-ES1F-ES1J-fi..> 06-Jul-2014 10:04 867K

Farnell-QRE1113-Fair..> 06-Jul-2014 10:03 879K

Farnell-2N7002DW-Fai..> 06-Jul-2014 10:03 886K

Farnell-FDC2512-Fair..> 06-Jul-2014 10:03 886K

Farnell-FDV301N-Digi..> 06-Jul-2014 10:03 886K

Farnell-S1A-Fairchil..> 06-Jul-2014 10:03 896K

Farnell-BAV99-Fairch..> 06-Jul-2014 10:03 896K

Farnell-74AC00-74ACT..> 06-Jul-2014 10:03 911K

Farnell-NaPiOn-Panas..> 06-Jul-2014 10:02 911K

Farnell-LQ-RELAYS-AL..> 06-Jul-2014 10:02 924K

Farnell-ev-relays-ae..> 06-Jul-2014 10:02 926K

Farnell-ESCON-Featur..> 06-Jul-2014 10:02 931K

Farnell-Amplifier-In..> 06-Jul-2014 10:02 940K

Farnell-Serial-File-..> 06-Jul-2014 10:02 941K

Farnell-Both-the-Del..> 06-Jul-2014 10:01 948K

Farnell-Videk-PDF.htm 06-Jul-2014 10:01 948K

Farnell-EPCOS-173438..> 04-Jul-2014 10:43 3.3M

Farnell-Sensorless-C..> 04-Jul-2014 10:42 3.3M

Farnell-197.31-KB-Te..> 04-Jul-2014 10:42 3.3M

Farnell-PIC12F609-61..> 04-Jul-2014 10:41 3.7M

Farnell-PADO-semi-au..> 04-Jul-2014 10:41 3.7M

Farnell-03-iec-runds..> 04-Jul-2014 10:40 3.7M

Farnell-ACC-Silicone..> 04-Jul-2014 10:40 3.7M

Farnell-Series-TDS10..> 04-Jul-2014 10:39 4.0M

Farnell-03-iec-runds..> 04-Jul-2014 10:40 3.7M

Farnell-0430300011-D..> 14-Jun-2014 18:13 2.0M

Farnell-06-6544-8-PD..> 26-Mar-2014 17:56 2.7M

Farnell-3M-Polyimide..> 21-Mar-2014 08:09 3.9M

Farnell-3M-VolitionT..> 25-Mar-2014 08:18 3.3M

Farnell-10BQ060-PDF.htm 14-Jun-2014 09:50 2.4M

Farnell-10TPB47M-End..> 14-Jun-2014 18:16 3.4M

Farnell-12mm-Size-In..> 14-Jun-2014 09:50 2.4M

Farnell-24AA024-24LC..> 23-Jun-2014 10:26 3.1M

Farnell-50A-High-Pow..> 20-Mar-2014 17:31 2.9M

Farnell-197.31-KB-Te..> 04-Jul-2014 10:42 3.3M

Farnell-1907-2006-PD..> 26-Mar-2014 17:56 2.7M

Farnell-5910-PDF.htm 25-Mar-2014 08:15 3.0M

Farnell-6517b-Electr..> 29-Mar-2014 11:12 3.3M

Farnell-A-True-Syste..> 29-Mar-2014 11:13 3.3M

Farnell-ACC-Silicone..> 04-Jul-2014 10:40 3.7M

Farnell-AD524-PDF.htm 20-Mar-2014 17:33 2.8M

Farnell-ADL6507-PDF.htm 14-Jun-2014 18:19 3.4M

Farnell-ADSP-21362-A..> 20-Mar-2014 17:34 2.8M

Farnell-ALF1210-PDF.htm 04-Jul-2014 10:39 4.0M

Farnell-ALF1225-12-V..> 01-Apr-2014 07:40 3.4M

Farnell-ALF2412-24-V..> 01-Apr-2014 07:39 3.4M

Farnell-AN10361-Phil..> 23-Jun-2014 10:29 2.1M

Farnell-ARADUR-HY-13..> 26-Mar-2014 17:55 2.8M

Farnell-ARALDITE-201..> 21-Mar-2014 08:12 3.7M

Farnell-ARALDITE-CW-..> 26-Mar-2014 17:56 2.7M

Farnell-ATMEL-8-bit-..> 19-Mar-2014 18:04 2.1M

Farnell-ATMEL-8-bit-..> 11-Mar-2014 07:55 2.1M

Farnell-ATmega640-VA..> 14-Jun-2014 09:49 2.5M

Farnell-ATtiny20-PDF..> 25-Mar-2014 08:19 3.6M

Farnell-ATtiny26-L-A..> 13-Jun-2014 18:40 1.8M

Farnell-Alimentation..> 14-Jun-2014 18:24 2.5M

Farnell-Alimentation..> 01-Apr-2014 07:42 3.4M

Farnell-Amplificateu..> 29-Mar-2014 11:11 3.3M

Farnell-An-Improved-..> 14-Jun-2014 09:49 2.5M

Farnell-Atmel-ATmega..> 19-Mar-2014 18:03 2.2M

Farnell-Avvertenze-e..> 14-Jun-2014 18:20 3.3M

Farnell-BC846DS-NXP-..> 13-Jun-2014 18:42 1.6M

Farnell-BC847DS-NXP-..> 23-Jun-2014 10:24 3.3M

Farnell-BF545A-BF545..> 23-Jun-2014 10:28 2.1M

Farnell-BK2650A-BK26..> 29-Mar-2014 11:10 3.3M

Farnell-BT151-650R-N..> 13-Jun-2014 18:40 1.7M

Farnell-BTA204-800C-..> 13-Jun-2014 18:42 1.6M

Farnell-BUJD203AX-NX..> 13-Jun-2014 18:41 1.7M

Farnell-BYV29F-600-N..> 13-Jun-2014 18:42 1.6M

Farnell-BYV79E-serie..> 10-Mar-2014 16:19 1.6M

Farnell-BZX384-serie..> 23-Jun-2014 10:29 2.1M

Farnell-Battery-GBA-..> 14-Jun-2014 18:13 2.0M

Farnell-C.A-6150-C.A..> 14-Jun-2014 18:24 2.5M

Farnell-C.A 8332B-C...> 01-Apr-2014 07:40 3.4M

Farnell-CC2560-Bluet..> 29-Mar-2014 11:14 2.8M

Farnell-CD4536B-Type..> 14-Jun-2014 18:13 2.0M

Farnell-CIRRUS-LOGIC..> 10-Mar-2014 17:20 2.1M

Farnell-CS5532-34-BS..> 01-Apr-2014 07:39 3.5M

Farnell-Cannon-ZD-PD..> 11-Mar-2014 08:13 2.8M

Farnell-Ceramic-tran..> 14-Jun-2014 18:19 3.4M

Farnell-Circuit-Note..> 26-Mar-2014 18:00 2.8M

Farnell-Circuit-Note..> 26-Mar-2014 18:00 2.8M

Farnell-Cles-electro..> 21-Mar-2014 08:13 3.9M

Farnell-Conception-d..> 11-Mar-2014 07:49 2.4M

Farnell-Connectors-N..> 14-Jun-2014 18:12 2.1M

Farnell-Construction..> 14-Jun-2014 18:25 2.5M

Farnell-Controle-de-..> 11-Mar-2014 08:16 2.8M

Farnell-Cordless-dri..> 14-Jun-2014 18:13 2.0M

Farnell-Current-Tran..> 26-Mar-2014 17:58 2.7M

Farnell-Current-Tran..> 26-Mar-2014 17:58 2.7M

Farnell-Current-Tran..> 26-Mar-2014 17:59 2.7M

Farnell-Current-Tran..> 26-Mar-2014 17:59 2.7M

Farnell-DC-Fan-type-..> 14-Jun-2014 09:48 2.5M

Farnell-DC-Fan-type-..> 14-Jun-2014 09:51 1.8M

Farnell-Davum-TMC-PD..> 14-Jun-2014 18:27 2.4M

Farnell-De-la-puissa..> 29-Mar-2014 11:10 3.3M

Farnell-Directive-re..> 25-Mar-2014 08:16 3.0M

Farnell-Documentatio..> 14-Jun-2014 18:26 2.5M

Farnell-Download-dat..> 13-Jun-2014 18:40 1.8M

Farnell-ECO-Series-T..> 20-Mar-2014 08:14 2.5M

Farnell-ELMA-PDF.htm 29-Mar-2014 11:13 3.3M

Farnell-EMC1182-PDF.htm 25-Mar-2014 08:17 3.0M

Farnell-EPCOS-173438..> 04-Jul-2014 10:43 3.3M

Farnell-EPCOS-Sample..> 11-Mar-2014 07:53 2.2M

Farnell-ES2333-PDF.htm 11-Mar-2014 08:14 2.8M

Farnell-Ed.081002-DA..> 19-Mar-2014 18:02 2.5M

Farnell-F28069-Picco..> 14-Jun-2014 18:14 2.0M

Farnell-F42202-PDF.htm 19-Mar-2014 18:00 2.5M

Farnell-FDS-ITW-Spra..> 14-Jun-2014 18:22 3.3M

Farnell-FICHE-DE-DON..> 10-Mar-2014 16:17 1.6M

Farnell-Fastrack-Sup..> 23-Jun-2014 10:25 3.3M

Farnell-Ferric-Chlor..> 29-Mar-2014 11:14 2.8M

Farnell-Fiche-de-don..> 14-Jun-2014 09:47 2.5M

Farnell-Fiche-de-don..> 14-Jun-2014 18:26 2.5M

Farnell-Fluke-1730-E..> 14-Jun-2014 18:23 2.5M

Farnell-GALVA-A-FROI..> 26-Mar-2014 17:56 2.7M

Farnell-GALVA-MAT-Re..> 26-Mar-2014 17:57 2.7M

Farnell-GN-RELAYS-AG..> 20-Mar-2014 08:11 2.6M

Farnell-HC49-4H-Crys..> 14-Jun-2014 18:20 3.3M

Farnell-HFE1600-Data..> 14-Jun-2014 18:22 3.3M

Farnell-HI-70300-Sol..> 14-Jun-2014 18:27 2.4M

Farnell-HUNTSMAN-Adv..> 10-Mar-2014 16:17 1.7M

Farnell-Haute-vitess..> 11-Mar-2014 08:17 2.4M

Farnell-IP4252CZ16-8..> 13-Jun-2014 18:41 1.7M

Farnell-Instructions..> 19-Mar-2014 18:01 2.5M

Farnell-KSZ8851SNL-S..> 23-Jun-2014 10:28 2.1M

Farnell-L-efficacite..> 11-Mar-2014 07:52 2.3M

Farnell-LCW-CQ7P.CC-..> 25-Mar-2014 08:19 3.2M

Farnell-LME49725-Pow..> 14-Jun-2014 09:49 2.5M

Farnell-LOCTITE-542-..> 25-Mar-2014 08:15 3.0M

Farnell-LOCTITE-3463..> 25-Mar-2014 08:19 3.0M

Farnell-LUXEON-Guide..> 11-Mar-2014 07:52 2.3M

Farnell-Leaded-Trans..> 23-Jun-2014 10:26 3.2M

Farnell-Les-derniers..> 11-Mar-2014 07:50 2.3M

Farnell-Loctite3455-..> 25-Mar-2014 08:16 3.0M

Farnell-Low-cost-Enc..> 13-Jun-2014 18:42 1.7M

Farnell-Lubrifiant-a..> 26-Mar-2014 18:00 2.7M

Farnell-MC3510-PDF.htm 25-Mar-2014 08:17 3.0M

Farnell-MC21605-PDF.htm 11-Mar-2014 08:14 2.8M

Farnell-MCF532x-7x-E..> 29-Mar-2014 11:14 2.8M

Farnell-MICREL-KSZ88..> 11-Mar-2014 07:54 2.2M

Farnell-MICROCHIP-PI..> 19-Mar-2014 18:02 2.5M

Farnell-MOLEX-39-00-..> 10-Mar-2014 17:19 1.9M

Farnell-MOLEX-43020-..> 10-Mar-2014 17:21 1.9M

Farnell-MOLEX-43160-..> 10-Mar-2014 17:21 1.9M

Farnell-MOLEX-87439-..> 10-Mar-2014 17:21 1.9M

Farnell-MPXV7002-Rev..> 20-Mar-2014 17:33 2.8M

Farnell-MX670-MX675-..> 14-Jun-2014 09:46 2.5M

Farnell-Microchip-MC..> 13-Jun-2014 18:27 1.8M

Farnell-Microship-PI..> 11-Mar-2014 07:53 2.2M

Farnell-Midas-Active..> 14-Jun-2014 18:17 3.4M

Farnell-Midas-MCCOG4..> 14-Jun-2014 18:11 2.1M

Farnell-Miniature-Ci..> 26-Mar-2014 17:55 2.8M

Farnell-Mistral-PDF.htm 14-Jun-2014 18:12 2.1M

Farnell-Molex-83421-..> 14-Jun-2014 18:17 3.4M

Farnell-Molex-COMMER..> 14-Jun-2014 18:16 3.4M

Farnell-Molex-Crimp-..> 10-Mar-2014 16:27 1.7M

Farnell-Multi-Functi..> 20-Mar-2014 17:38 3.0M

Farnell-NTE_SEMICOND..> 11-Mar-2014 07:52 2.3M

Farnell-NXP-74VHC126..> 10-Mar-2014 16:17 1.6M

Farnell-NXP-BT136-60..> 11-Mar-2014 07:52 2.3M

Farnell-NXP-PBSS9110..> 10-Mar-2014 17:21 1.9M

Farnell-NXP-PCA9555 ..> 11-Mar-2014 07:54 2.2M

Farnell-NXP-PMBFJ620..> 10-Mar-2014 16:16 1.7M

Farnell-NXP-PSMN1R7-..> 10-Mar-2014 16:17 1.6M

Farnell-NXP-PSMN7R0-..> 10-Mar-2014 17:19 2.1M

Farnell-NXP-TEA1703T..> 11-Mar-2014 08:15 2.8M

Farnell-Nilï¬-sk-E-..> 14-Jun-2014 09:47 2.5M

Farnell-Novembre-201..> 20-Mar-2014 17:38 3.3M

Farnell-OMRON-Master..> 10-Mar-2014 16:26 1.8M

Farnell-OSLON-SSL-Ce..> 19-Mar-2014 18:03 2.1M

Farnell-OXPCIE958-FB..> 13-Jun-2014 18:40 1.8M

Farnell-PADO-semi-au..> 04-Jul-2014 10:41 3.7M

Farnell-PBSS5160T-60..> 19-Mar-2014 18:03 2.1M

Farnell-PDTA143X-ser..> 20-Mar-2014 08:12 2.6M

Farnell-PDTB123TT-NX..> 13-Jun-2014 18:43 1.5M

Farnell-PESD5V0F1BL-..> 13-Jun-2014 18:43 1.5M

Farnell-PESD9X5.0L-P..> 13-Jun-2014 18:43 1.6M

Farnell-PIC12F609-61..> 04-Jul-2014 10:41 3.7M

Farnell-PIC18F2455-2..> 23-Jun-2014 10:27 3.1M

Farnell-PIC24FJ256GB..> 14-Jun-2014 09:51 2.4M

Farnell-PMBT3906-PNP..> 13-Jun-2014 18:44 1.5M

Farnell-PMBT4403-PNP..> 23-Jun-2014 10:27 3.1M

Farnell-PMEG4002EL-N..> 14-Jun-2014 18:18 3.4M

Farnell-PMEG4010CEH-..> 13-Jun-2014 18:43 1.6M

Farnell-Panasonic-15..> 23-Jun-2014 10:29 2.1M

Farnell-Panasonic-EC..> 20-Mar-2014 17:36 2.6M

Farnell-Panasonic-EZ..> 20-Mar-2014 08:10 2.6M

Farnell-Panasonic-Id..> 20-Mar-2014 17:35 2.6M

Farnell-Panasonic-Ne..> 20-Mar-2014 17:36 2.6M

Farnell-Panasonic-Ra..> 20-Mar-2014 17:37 2.6M

Farnell-Panasonic-TS..> 20-Mar-2014 08:12 2.6M

Farnell-Panasonic-Y3..> 20-Mar-2014 08:11 2.6M

Farnell-Pico-Spox-Wi..> 10-Mar-2014 16:16 1.7M

Farnell-Pompes-Charg..> 24-Apr-2014 20:23 3.3M

Farnell-Ponts-RLC-po..> 14-Jun-2014 18:23 3.3M

Farnell-Portable-Ana..> 29-Mar-2014 11:16 2.8M

Farnell-Premier-Farn..> 21-Mar-2014 08:11 3.8M

Farnell-Produit-3430..> 14-Jun-2014 09:48 2.5M

Farnell-Proskit-SS-3..> 10-Mar-2014 16:26 1.8M

Farnell-Puissance-ut..> 11-Mar-2014 07:49 2.4M

Farnell-Q48-PDF.htm 23-Jun-2014 10:29 2.1M

Farnell-Radial-Lead-..> 20-Mar-2014 08:12 2.6M

Farnell-Realiser-un-..> 11-Mar-2014 07:51 2.3M

Farnell-Reglement-RE..> 21-Mar-2014 08:08 3.9M

Farnell-Repartiteurs..> 14-Jun-2014 18:26 2.5M

Farnell-S-TRI-SWT860..> 21-Mar-2014 08:11 3.8M

Farnell-SB175-Connec..> 11-Mar-2014 08:14 2.8M

Farnell-SMBJ-Transil..> 29-Mar-2014 11:12 3.3M

Farnell-SOT-23-Multi..> 11-Mar-2014 07:51 2.3M

Farnell-SPLC780A1-16..> 14-Jun-2014 18:25 2.5M

Farnell-SSC7102-Micr..> 23-Jun-2014 10:25 3.2M

Farnell-SVPE-series-..> 14-Jun-2014 18:15 2.0M

Farnell-Sensorless-C..> 04-Jul-2014 10:42 3.3M

Farnell-Septembre-20..> 20-Mar-2014 17:46 3.7M

Farnell-Serie-PicoSc..> 19-Mar-2014 18:01 2.5M

Farnell-Serie-Standa..> 14-Jun-2014 18:23 3.3M

Farnell-Series-2600B..> 20-Mar-2014 17:30 3.0M

Farnell-Series-TDS10..> 04-Jul-2014 10:39 4.0M

Farnell-Signal-PCB-R..> 14-Jun-2014 18:11 2.1M

Farnell-Strangkuhlko..> 21-Mar-2014 08:09 3.9M

Farnell-Supercapacit..> 26-Mar-2014 17:57 2.7M

Farnell-TDK-Lambda-H..> 14-Jun-2014 18:21 3.3M

Farnell-TEKTRONIX-DP..> 10-Mar-2014 17:20 2.0M

Farnell-Tektronix-AC..> 13-Jun-2014 18:44 1.5M

Farnell-Telemetres-l..> 20-Mar-2014 17:46 3.7M

Farnell-Termometros-..> 14-Jun-2014 18:14 2.0M

Farnell-The-essentia..> 10-Mar-2014 16:27 1.7M

Farnell-U2270B-PDF.htm 14-Jun-2014 18:15 3.4M

Farnell-USB-Buccanee..> 14-Jun-2014 09:48 2.5M

Farnell-USB1T11A-PDF..> 19-Mar-2014 18:03 2.1M

Farnell-V4N-PDF.htm 14-Jun-2014 18:11 2.1M

Farnell-WetTantalum-..> 11-Mar-2014 08:14 2.8M

Farnell-XPS-AC-Octop..> 14-Jun-2014 18:11 2.1M

Farnell-XPS-MC16-XPS..> 11-Mar-2014 08:15 2.8M

Farnell-YAGEO-DATA-S..> 11-Mar-2014 08:13 2.8M

Farnell-ZigBee-ou-le..> 11-Mar-2014 07:50 2.4M

Farnell-celpac-SUL84..> 21-Mar-2014 08:11 3.8M

Farnell-china_rohs_o..> 21-Mar-2014 10:04 3.9M

Farnell-cree-Xlamp-X..> 20-Mar-2014 17:34 2.8M

Farnell-cree-Xlamp-X..> 20-Mar-2014 17:35 2.7M

Farnell-cree-Xlamp-X..> 20-Mar-2014 17:31 2.9M

Farnell-cree-Xlamp-m..> 20-Mar-2014 17:32 2.9M

Farnell-cree-Xlamp-m..> 20-Mar-2014 17:32 2.9M

Farnell-ir1150s_fr.p..> 29-Mar-2014 11:11 3.3M

Farnell-manual-bus-p..> 10-Mar-2014 16:29 1.9M

Farnell-propose-plus..> 11-Mar-2014 08:19 2.8M

Farnell-techfirst_se..> 21-Mar-2014 08:08 3.9M

Farnell-testo-205-20..> 20-Mar-2014 17:37 3.0M

Farnell-testo-470-Fo..> 20-Mar-2014 17:38 3.0M

Farnell-uC-OS-III-Br..> 10-Mar-2014 17:20 2.0M

Sefram-7866HD.pdf-PD..> 29-Mar-2014 11:46 472K

Sefram-CAT_ENREGISTR..> 29-Mar-2014 11:46 461K

Sefram-CAT_MESUREURS..> 29-Mar-2014 11:46 435K

Sefram-GUIDE_SIMPLIF..> 29-Mar-2014 11:46 481K

Sefram-GUIDE_SIMPLIF..> 29-Mar-2014 11:46 442K

Sefram-GUIDE_SIMPLIF..> 29-Mar-2014 11:46 422K

Sefram-SP270.pdf-PDF..> 29-Mar-2014 11:46 464KCHAPTER 30 h ’ > 2 2 % v t Complex Numbers Complex numbers are an extension of the ordinary numbers used in everyday math. They have the unique property of representing and manipulating two variables as a single quantity. This fits very naturally with Fourier analysis, where the frequency domain is composed of two signals, the real and the imaginary parts. Complex numbers shorten the equations used in DSP, and enable techniques that are difficult or impossible with real numbers alone. For instance, the Fast Fourier Transform is based on complex numbers. Unfortunately, complex techniques are very mathematical, and it requires a great deal of study and practice to use them effectively. Many scientists and engineers regard complex techniques as the dividing line between DSP as a tool, and DSP as a career. In this chapter, we look at the mathematics of complex numbers, and elementary ways of using them in science and engineering. The following three chapters discuss important techniques based on complex numbers: the complex Fourier transform, the Laplace transform, and the z-transform. These complex transforms are the heart of theoretical DSP. Get ready, here comes the math! The Complex Number System To illustrate complex numbers, consider a child throwing a ball into the air. For example, assume that the ball is thrown straight up, with an initial velocity of 9.8 meters per second. One second after it leaves the child's hand, the ball has reached a height of 4.9 meters, and the acceleration of gravity (9.8 meters per second2) has reduced its velocity to zero. The ball then accelerates toward the ground, being caught by the child two seconds after it was thrown. From basic physics equations, the height of the ball at any instant of time is given by: 552 The Scientist and Engineer's Guide to Digital Signal Processing t ’ 1± 1&h/4.9 where h is the height above the ground (in meters), g is the acceleration of gravity (9.8 meters per second2), v is the initial velocity (9.8 meters per second), and t is the time (in seconds). Now, suppose we want to know when the ball passes a certain height. Plugging in the known values and solving for t: For instance, the ball is at a height of 3 meters twice: t ’ 0.38 (going up) and t ’ 1.62 seconds (going down). As long as we ask reasonable questions, these equations give reasonable answers. But what happens when we ask unreasonable questions? For example: At what time does the ball reach a height of 10 meters? This question has no answer in reality because the ball never reaches this height. Nevertheless, plugging the value of h ’ 10 into the above equation gives two answers: t ’ 1% &1.041 and t ’ 1& &1.041. Both these answers contain the square-root of a negative number, something that does not exist in the world as we know it. This unusual property of polynomial equations was first used by the Italian mathematician Girolamo Cardano (1501-1576). Two centuries later, the great German mathematician Carl Friedrich Gauss (1777-1855) coined the term complex numbers, and paved the way for the modern understanding of the field. Every complex number is the sum of two components: a real part and an imaginary part. The real part is a real number, one of the ordinary numbers we all learned in childhood. The imaginary part is an imaginary number, that is, the square-root of a negative number. To keep things standardized, the imaginary part is usually reduced to an ordinary number multiplied by the square-root of negative one. As an example, the complex number: t ’ 1% &1.041, is first reduced to: t ’ 1% 1.041 &1, and then to the final form: t ’ 1% 1.02 &1 . The real part of this complex number is 1, while the imaginary part is 1.02 &1 . This notation allows the abstract term, &1, to be given a special symbol. Mathematicians have long used i to denote &1. In comparison, electrical engineers use the symbol, j, because i is used to represent electrical current. Both symbols are common in DSP. In this book the electrical engineering convention, j, will be used. For example, all the following are valid complex numbers: 1% 2 j , 1& 2 j , &1% 2 j , 3.14159% 2.7183 j , (4/3)% (19/2) j , etc. All ordinary numbers, such as: 2, 6.34, and -1.414, can be viewed as a complex number with zero for the imaginary part, i.e., 2% 0 j , 6.34% 0 j , and &1.414% 0 j . Just as real numbers are described as having positions along a number line, complex numbers are represented by locations in a two-dimensional display called the complex plane. As shown in Fig. 30-1, the horizontal axis of the Chapter 30- Complex Numbers 553 Real axis -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 2 + 6 j -4 - 1.5 j 3 - 7 j 8j 7j 6j 5j 4j 3j 2j 1j 0j -1j -2j -3j -4j -5j -6j -7j -8j FIGURE 30-1 The complex plane. Every complex number has a unique location in the complex plane, as illustrated by the three examples shown here. The horizontal axis represents the real part, while the vertical axis represents the imaginary part. Imaginary axis A ’ 2 % 6j B ’ &4 & 1.5j C ’ 3 & 7j Re A = 2 Im A = 6 Re B = -4 Im B = -1.5 Re C = 3 Im C = -7 complex plane is the real part of the complex number, while the vertical axis is the imaginary part. Since real numbers are those complex numbers that have an imaginary part equal to zero, the real number line is the same as the x-axis of the complex plane. In mathematical equations, a complex number is represented by a single variable, even though it is composed of two parts. For example, the three complex variables in Fig. 30-1 could be written: where A, B, & C are complex variables. This illustrates a strong advantage and a strong disadvantage of using complex numbers. The advantage is the inherent shorthand of representing two things by a single symbol. The disadvantage is having to remember which variables are complex and which variables are ordinary numbers. The mathematical notation for separating a complex number into its real and imaginary parts uses the operators: Re ( ) and Im( ) . For example, using the above complex numbers: 554 The Scientist and Engineer's Guide to Digital Signal Processing (a%bj ) % (c%dj ) ’ (a%c ) % j (b%d) (a%bj ) & (c%dj ) ’ (a&c ) % j (b&d) (a%bj ) (c%dj ) ’ (ac& bd) % j (bc% ad) (a%bj ) (c%dj ) ’ ac% bd c 2% d 2 % j bc & ad c 2% d 2 EQUATION 30-1 Addition of complex numbers. EQUATION 30-2 Subtraction of complex numbers. EQUATION 30-3 Multiplication of complex numbers. EQUATION 30-4 Division of complex numbers. EQUATION 30-5 AB ’ BA Commutative property. EQUATION 30-6 Associative property. EQUATION 30-7 Distributive property. (A% B)% C ’ A% (B% C) A(B%C) ’ AB% AC Notice that the value returned by the mathematical operator, Im ( ), does not include the j. For example, Im(3% 4j ) is equal to 4, not 4 j . Complex numbers follow the same algebra as ordinary numbers, treating the quantity, j, as a constant. For instance, addition, subtraction, multiplication and division are given by: Two tricks are used when manipulating equations such as these. First, whenever a j 2 term is encountered, it is replaced by -1. This follows from the definition of j, that is: j 2 ’ ( &1 )2 ’ &1. The second trick is a way to eliminate the j term from the denominator of a fraction. For instance, the left side of Eq. 30-4 has a denominator of c % dj . This is handled by multiplying the numerator and denominator by the term c & jd , cancelling all the imaginary terms from the denominator. In the jargon of the field, switching the sign of the imaginary part of a complex number is called taking the complex conjugate. This is denoted by a star at the upper right corner of the variable. For example, if Z ’ a % b j , then Zt ’ a & b j . In other words, Eq. 30- 4 is derived by multiplying both the numerator and denominator by the complex conjugate of the denominator. The following properties hold even when the variables A, B, and C are complex. These relations can be proven by breaking each variable into its real and imaginary parts and working out the algebra. Chapter 30- Complex Numbers 555 M ’ (Re A)2 % (Im A)2 2 ’ arctan Im A Re A Re A ’ M cos (2) Im A ’ M sin (2) EQUATION 30-8 Rectangular-to-polar conversion. The complex variable, A, can be changed from rectangular form: Re A & Im A, to polar form: M & 2. EQUATION 30-9 Polar-to-rectangular conversion. This is changing the complex number from M & 2 to Re A & Im A. Real axis -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 2 + 6 j or M = % 85 2 = arctan (6/2) 3 - 7 j or M = % 58 2 = arctan (-7/3) -4 - 1.5 j or M = % 18.25 2 = arctan (-1.5/-4) 8j 7j 6j 5j 4j 3j 2j 1j 0j -1j -2j -3j -4j -5j -6j -7j -8j FIGURE 30-2 Complex numbers in polar form. Three example points in the complex plane are shown in polar coordinates. Figure 30-1 shows these same points in rectangular form. Imaginary axis Polar Notation Complex numbers can also be expressed in polar notation, besides the rectangular notation just described. For example, Fig. 30-2 shows three complex numbers in polar form, the same ones previously presented in Fig. 30-1. The magnitude is the length of the vector starting at the origin and ending at the complex point, while the phase angle is measured between this vector and the positive x-axis. Complex numbers can be converted between rectangular and polar notation by the following equations (paying attention to the polar notation nuisances discussed in Chapter 8): This brings up a giant leap in the mathematics. (Yes, this means you should pay extra attention). A complex number written in rectangular notation 556 The Scientist and Engineer's Guide to Digital Signal Processing EQUATION 30-10 Rectangular and polar complex numbers. The left side is the rectangular form of a complex number, while the expression on the right is the polar representation. The conversion between: M & 2 and a & b, is given by Eqs. 30-8 and 30-9. a%jb ’ M ( cos2 % j sin 2 ) EQUATION 30-11 Euler's relation. This is a key equation for using complex numbers in science and engineering. e jx ’ cos x % j sin x e jx ’ j4 n’ 0 ( j x)n n! ’ j4 k’ 0 (&1)k x 2k (2k)! % j j4 k’ 0 (&1)k x 2k%1 (2k%1)! is in the form: a % bj . The information is carried in the variables: a & b, but the proper complex number is the entire expression: a % bj . In polar form, the key information is contained in M & 2, but what is the full expression for the proper complex number? The key to this is Eq. 30-9, the polar-to-rectangular conversion. If we start with the proper complex number, a % bj , and apply Eq. 30-9, we obtain: The expression on the left is the proper rectangular description of a complex number, while the expression on the right is the proper polar description. Before continuing with the next step, let's review how we arrived at this point. First, we gave the rectangular form of a complex number a graphical representation, that is, a location in a two-dimensional plane. Second, we defined the terms M & 2 to be consistent with our previous experience about the relationship between polar and rectangular coordinates (Eq. 30-8 and 30-9). Third, we followed the mathematical consequences of these actions, arriving at what the correct polar form of a complex number must be, i.e., M(cos2% j sin2) . Even though this logic is straightforward, the result is difficult to see with "intuition." Unfortunately, it gets worse. One of the most important equations in complex mathematics is Euler's relation, named for the clever and very prolific Swiss mathematician, Leonhard Euler (1707-1783; Euler is pronounced: "Oiler"): If you like such things, this relation can be proven by expanding the exponential term into a Taylor series: The two bracketed terms on the right of this expression are the Taylor series for cos(x) and sin(x) . Don't spend too much time on this proof; we aren't going to use it for anything. Chapter 30- Complex Numbers 557 EQUATION 30-12 Exponential form of complex numbers. The rectangular form, on the left, is equal to the exponential polar form, on the right. a%jb ’ M e j 2 M1 e j21 M2 e j22 ’ M1M2 e j (21 EQUATION 30-13 % 22 ) Multiplication of complex numbers. EQUATION 30-14 Division of complex numbers. M1 e j21 M2 e j22 ’ M1 M2 e j( 21 &22 ) Rewriting Eq. 30-10 using Euler's relation results in the most common way of expressing a complex number in polar notation, a complex exponential: Complex numbers in this exponential form are the backbone of DSP mathematics. Start your understanding by memorizing Eqs. 30-8 through 30- 12. A strong advantage of using this exponential polar form is that it is very simple to multiply and divide complex numbers: That is, complex numbers in polar form are multiplied by multiplying their magnitudes and adding their angles. The easiest way to perform addition and subtraction in polar form is to convert the numbers to rectangular form, perform the operation, and reconvert back into polar. Complex numbers are usually expressed in rectangular form in computer routines, but in polar form when writing and manipulating equations. Just as Re ( ) and Im( ) are used to extract the rectangular components from a complex number, the operators Mag ( ) and Phase ( ) are used to extract the polar components. For example, if A ’ 5e jB/7 , then Mag (A) ’ 5 and Phase (A) ’ B/7 . Using Complex Numbers by Substitution Let's summarize where we are at. Solutions to common algebraic equations often contain the square-root of a negative number. These are called complex numbers, and represent solutions that cannot exist in the world as we know it. Complex numbers are expressed in one of two forms: a % bj (rectangular), or Me j 2 (polar), where j is a symbol representing &1. Using either notation, a single complex number contains two separate pieces of information, either a & b, or M & 2. In spite of their elusive nature, complex numbers follow mathematical laws that are similar (or identical) to those governing ordinary numbers. This describes what complex numbers are and how they fit into the world of pure mathematics. Our next task is to describe ways they are useful in science 558 The Scientist and Engineer's Guide to Digital Signal Processing and engineering problems. How is it possible to use a mathematics that has no connection with our everyday experience? The answer: If the tool we have is a hammer, make the problem look like a nail. In other words, we change the physical problem into a complex number form, manipulate the complex numbers, and then change back into a physical answer. There are two ways that physical problems can be represented using complex numbers: a simple method of substitution, and a more elegant method we will call mathematical equivalence. Mathematical equivalence will be discussed in the next chapter on the complex Fourier transform. The remainder of this chapter is devoted to substitution. Substitution takes two real physical parameters and places one in the real part of the complex number and one in the imaginary part. This allows the two values to be manipulated as a single entity, i.e., a single complex number. After the desired mathematical operations, the complex number is separated into its real and imaginary parts, which again correspond to the physical parameters we are concerned with. A simple example will show how this works. As you recall from elementary physics, vectors can represent such things as: force, velocity, acceleration, etc. For example, imagine a sailboat being pushed in one direction by the wind, and in another direction by the ocean current. The resulting force on the boat is the vector sum of the two individual force vectors. This example is shown in Fig. 30-3, where two vectors, A and B, are added through the parallelogram law, resulting in C. We can represent this problem with complex numbers by placing the east/west coordinate into the real part of a complex number, and the north/south coordinate into the imaginary part. This allows us to treat each vector as a single complex number, even though it is composed of two parts. For instance, the force of the wind, vector A, might be in the direction of 2 parts to the east and 6 parts to the north, represented as the complex number: 2 % 6j . Likewise, the force of the ocean current, vector B, might be in the direction of 4 parts to the east and 3 parts to the south, represented as the complex number: 4 & 3j . These two vectors can be added via Eq. 30-1, resulting in the complex number representing vector C: 6 % 3j . Converting this back into a physical meaning, the combined force on the sailboat is in the direction of 6 parts to the north and 3 parts to the east. Could this problem be solved without complex numbers? Of course! The complex numbers merely provide a formalized way of keeping track of the two components that form a single vector. The idea to remember is that some physical problems can be converted into a complex form by simply adding a j to one of the components. Converting back to the physical problem is nothing more than dropping the j. This is the essence of the substitution method. Here's the rub. How do we know that the rules and laws that apply to complex mathematics are the same rules and laws that apply to the original Chapter 30- Complex Numbers 559 Real axis -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 B A+B=C North South 8j 7j 6j 5j 4j 3j 2j 1j 0j -1j -2j -3j -4j -5j -6j -7j -8j C FIGURE 30-3 A Adding vectors with complex numbers. The vectors A & B represent forces measured with respect to north/south and east/west. The east/west dimension is replaced by the real part of the complex number, while the north/south dimension is replaced by the imaginary part. This substitution allows complex mathematics to be used with an entirely real problem. Imaginary axis West East physical problem? For instance, we used Eq. 30-1 to add the force vectors in the sailboat problem. How do we know that the addition of complex numbers provides the same result as the addition of force vectors? In most cases, we know that complex mathematics can be used for a particular application because someone else said it does. Some brilliant and well respected mathematician or engineer worked out the details and published the results. The point to remember is that we cannot substitute just any problem into a complex form and expect the answer to make sense. We must stick to applications that have been shown to be applicable to complex analysis. Let's look at an example where complex number substitution does not work. Imagine that you buy apples for $5 a box, and oranges for $10 a box. You represent this by the complex number: 5 % 10j . During a particular week, you buy 6 boxes of apples and 2 boxes of oranges, which you represent by the complex number: 6 % 2j . The total price you must pay for the goods is equal to number of items multiplied by the price of each item, that is, (5 % 10j ) (6 % 2 j ) ’ 10 % 70 j . In other words, the complex math indicates you must pay a total of $10 for the apples and $70 for the oranges. The problem is, the answer is completely wrong! The rules of complex mathematics do not follow the rules of this particular physical problem. Complex Representation of Sinusoids Complex numbers find a niche in electronics and signal processing because they are a compact way to represent and manipulate the most useful of all waveforms: sine and cosine waves. The conventional way to represent a sinusoid is: M cos (Tt % N) or Acos(Tt ) % Bsin(Tt ), in polar and rectangular 560 The Scientist and Engineer's Guide to Digital Signal Processing Acos (Tt) % Bsin (Tt) W a% jb (conventional representation) (complex number) M cos(Tt % N) W Me j 2 (conventional representation) (complex number) notation, respectively. Notice that we are representing frequency by T, the natural frequency in radians per second. If it makes you more comfortable, you can replace each T with 2Bf to make the expressions in hertz. However, most DSP mathematics is written using the shorter notation, and you should become familiar with it. Since it requires two parameters to represent a single sinusoid (i.e., A & B, or M & N), the use of complex numbers to represent these important waveforms is a natural. Using substitution, the change from the conventional sinusoid representation to a complex number is straightforward. In rectangular form: where AWa, and B W&b. Put in words, the amplitude of the cosine wave becomes the real part of the complex number, while the negative of the sine wave's amplitude becomes the imaginary part. It is important to understand that this is not an equation, but merely a way of letting a complex number represent a sinusoid. This substitution also can be applied in polar form: where M WM, and 2W&N. In words, the polar notation substitution leaves the magnitude the same, but changes the sign of the phase angle. Why change the sign of the imaginary part & phase angle? This is to make the substitution appear in the same form as the complex Fourier transform described in the next chapter. The substitution techniques of this chapter gain nothing from this sign change, but it is almost always done to keep things consistent with the more advanced methods. Using complex numbers to represent sine and cosine waves is a common technique in electrical circuit analysis and DSP. This is because many (but not all) of the rules and laws governing complex numbers are the same as those governing sinusoids. In other words, we can represent the sine and cosine waves with complex numbers, manipulate the numbers in various ways, and have the resulting answer match the way the sinusoids behave. However, we must be careful to use only those mathematical operations that mimic the physical problem being represented (sinusoids in this case). For example, suppose we use the complex variables, A and B, to represent two sinusoids of the same frequency, but with different amplitudes and phase shifts. When the two complex numbers are added, a third complex number is produced. Likewise, a third sinusoid is created when the two sinusoids are Chapter 30- Complex Numbers 561 added. As you would hope, the third complex number represents the third sinusoid. The complex addition matches the physical system. Now, imagine multiplying the complex numbers A and B, resulting in another complex number. Does this match what happens when the two sinusoids are multiplied? No! Multiplying two sinusoids does not produce another sinusoid. Complex multiplication fails to match the physical system, and therefore cannot be used. Fortunately, the valid operations are clearly defined. Two conditions must be satisfied. First, all of the sinusoids must be at the same frequency. For example, if the complex numbers: 1%1j and 2%2j represent sinusoids at the same frequency, then the sum of the two sinusoids is represented by the complex number: 3%3j . However, if 1%1j and 2%2j represent sinusoids with different frequencies, there is nothing that can be done with the complex representation. In this case, the sum of the complex numbers, 3%3j , is meaningless. In spite of this, frequency can be left as a variable when using complex numbers, but it must be the same frequency everywhere. For instance, it is perfectly valid to add: 2T%3Tj and 3T%1 j , to produce: 5T% (3T%1) j . These represent sinusoids where the amplitude and phase vary as frequency changes. While we do not know what the particular frequency is, we do know that it is the same everywhere, i.e., T. The second requirement is that the operations being represented must be linear, as discussed in Chapter 5. For instance, sinusoids can be combined by addition and subtraction, but not by multiplication or division. Likewise, systems may be amplifiers, attenuators, high or low-pass filters, etc., but not such actions as: squaring, clipping and thresholding. Remember, even convolution and Fourier analysis are only valid for linear systems. Complex Representation of Systems Figure 30-4 shows an example of using complex numbers to represent a sinusoid passing through a linear system. We will use continuous signals for this example, although discrete signals are handled the same way. Since the input signal is a sinusoid, and the system is linear, the output will also be a sinusoid, and at the same frequency as the input. As shown, the example input signal has a conventional representation of: 3 cos(Tt % B/4), or the equivalent expres s ion: 2.1213 cos(Tt ) & 2.1213 sin(Tt ) . When represented by a complex number this becomes: 3 e or . &jB/4 2.1213% j 2.1213 Likewise, the conventional representation of the output is: 1.5 cos(Tt & B/8), or in the alternate form: 1.3858 cos(Tt ) % 0.5740sin(Tt ). This is represented by the complex number: 1.5 e j B/8 or 1.3858& j 0.5740 . The system's characteristics can also be represented by a complex number. The magnitude of the complex number is the ratio between the magnitudes 562 The Scientist and Engineer's Guide to Digital Signal Processing Time 0 1 2 3 4 5 -4 -3 -2 -1 0 1 2 3 4 Time 0 1 2 3 4 5 -4 -3 -2 -1 0 1 2 3 4 Linear System Input signal Output signal or or or or or 1.5e jB/8 2.1213 % j 2.1213 3e &jB/4 3cos(Tt % B/4) 2.1213cos(Tt ) & 2.1213sin (Tt ) 0.1913 & j 0.4619 1.3858 & j 0.5740 0.5e j3B/8 1.5cos(Tt & B/8) 1.3858cos(Tt ) % 0.5740sin (Tt ) FIGURE 30-4 Sinusoids represented by complex numbers. Complex numbers are popular in DSP and electronics because they are a convenient way to represent and manipulate sinusoids. As shown in this example, sinusoidal input and output signals can be represented as complex numbers, expressed in either polar or rectangular form. In addition, the change that a linear system makes to a sinusoid can also be expressed as a complex number. Complex Conventional representation Amplitude Amplitude of the input and output (i.e., M ). Likewise, the angle of the complex out /Min number is the negative of the difference between the input and output angles (i.e., & [N ). In the example used here, the system is described by the out & Nin ] complex number, 0.5 e j 3B/8 . In other words, the amplitude of the sinusoid is reduced by 0.5, while the phase angle is changed by &3B/8. The complex number representing the system can be converted into rectangular form as: 0.1913& j 0.4619 , but we must be careful in interpreting what this means. It does not mean that a sine wave passing through the system is changed in amplitude by 0.1913, nor that a cosine wave is changed by -0.4619. In general, a pure sine or cosine wave entering a linear system is converted into a mixture of sine and cosine waves. Fortunately, the complex math automatically keeps track of these cross-terms. When a sinusoid passes through a linear system, the complex numbers representing the input signal and the system are multiplied, producing the complex number representing the output. If any two of the complex numbers are known, the third can be found. The calculations can be carried out in either polar or rectangular form, as shown in Fig. 30-4. In previous chapters we described how the Fourier transform decomposes a signal into cosine and sine waves. The amplitudes of the cosine waves are called the real part, while the amplitudes of the sine waves are called the imaginary part. We stressed that these amplitudes are ordinary numbers, and Chapter 30- Complex Numbers 563 I ×Z ’ V the terms real and imaginary are just names used to keep the two separate. Now that complex numbers have been introduced, it should be quite obvious were the names come from. For example, imagine a 1024 point signal being decomposed into 513 cosine waves and 513 sine waves. Using substitution, we can represent the spectrum by 513 complex numbers. However, don't be misled into thinking that this is the complex Fourier transform, the topic of Chapter 31. This is still the real Fourier transform; the spectrum has just been placed in a complex format by using substitution. Electrical Circuit Analysis This method of substituting complex numbers for cosine & sine waves is called the Phasor transform. It is the main tool used to analyze networks composed of resistors, capacitors and inductors. [More formally, electrical engineers define the phasor transform as multiplying by the complex term: e jTt and taking the real part. This allows the procedure to be written as an equation, making it easier to deal with in mathematical work. “Substitution” achieves the same end result, but is less elegant]. The first step is to understand the relationship between the current and voltage for each of these devices. For the resistor, this is expressed in Ohm's law: v ’ iR, where i is the instantaneous current through the device, v is the instantaneous voltage across the device, and R is the resistance. In contrast, the capacitor and inductor are governed by the differential equations: i ’ C dv/dt , and v ’ L di /dt , where C is the capacitance and L is the inductance. In the most general method of circuit analysis, these nasty differential equations are combined as dictated by the circuit configuration, and then solved for the parameters of interest. While this will answer everything about the circuit, the math can become a real mess. This can be greatly simplified by restricting the signals to be sinusoids. By representing these sinusoids with complex numbers, the difficult differential equations can be directly replaced with much simpler algebraic equations. Figure 30-5 illustrates how this works. We treat each of these three components (resistor, capacitor & inductor) as a system. The input to the system is the sinusoidal current through the device, while the output is the sinusoidal voltage across its two terminals. This means we can represent the input and output of the system by the two complex variables: I (for current) and V (for voltage), respectively. The relation between the input and output can also be expressed by a complex number. This complex number is called the impedance, and is given the symbol: Z. This means: In words, the complex number representing the sinusoidal voltage is equal to the complex number representing the sinusoidal current multiplied by the impedance (another complex number). Given any two, the third can be 564 The Scientist and Engineer's Guide to Digital Signal Processing Time V I Time Time V V I I Resistor Capacitor Inductor V I V I V I Amplitude Amplitude Amplitude FIGURE 30-5 Definition of impedance. When sinusoidal voltages and currents are represented by complex numbers, the ratio between the two is called the impedance, and is denoted by the complex variable, Z. Resistors, capacitors and inductors have impedances of R, &j/TC, and jTL, respectively. found. In polar form, the magnitude of the impedance is the ratio between the amplitudes of V and I. Likewise, the phase of the impedance is the phase difference between V and I. This relation can be thought of as Ohm's law for sinusoids. Ohms's law ( v ’ iR) describes how the resistance relates the instantaneous current and voltage in a resistor. When the signals are sinusoids represented by complex numbers, the relation becomes: V ’ IZ. That is, the impedance relates the current and voltage. Resistance is an ordinary number, since it deals with two ordinary numbers. Impedance is a complex number, since it relates two complex numbers. Impedance contains more information than resistance, because it dictates both the amplitudes and the phase angles. From the differential equations that govern their operation, it can be shown that the impedance of the resistor, capacitor, and inductor are: R, &j /TC , and jTL, respectively. As an example, imagine that the current in each of these components is a unity amplitude cosine wave, as shown in Fig. 30-5. Using substitution, this is represented by the complex number: 1%0 j . The voltage across the resistor will be: V ’ I Z ’ (1%0 j )R ’ R%0j . In other words, a cosine wave of amplitude R. The voltage across the capacitor is found to be: V ’ IZ ’ (1%0j )(&j /TC ) . This reduces to: 0&j /TC , a sine wave of amplitude, 1/TC . Likewise, the voltage across the inductor can be calculated: V ’ IZ ’ (1%0j ) ( jTL ) . This reduces to: 0%jTL, a negative sine wave of amplitude, TL. The beauty of this method is that RLC circuits can be analyzed without having to resort to differential equations. The impedance of the resistors, capacitors, Chapter 30- Complex Numbers 565 Vin Vout Z1 Z2 Z3 FIGURE 30-6 RLC notch filter. This circuit removes a narrow band of frequencies from a signal. The use of complex substitution greatly simplifies the analysis of this and similar circuits. Vout Vin ’ Z2% Z3 Z1% Z2% Z3 Vout Vin ’ jTL & j TC R % jTL & j TC and inductors is treated the same as resistance in a DC circuit. This includes all of the basic combinations, such as: resistors in series, resistors in parallel, voltage dividers, etc. As an example, Fig. 30-6 shows an RLC circuit called a notch filter, used to remove a narrow band of frequencies. For instance, it could eliminate 60 hertz interference in an audio or instrumentation signal. If this circuit were composed of three resistors (instead of the resistor, capacitor and inductor), the relationship between the input and output signals would be given by the voltage divider formula: v . Since the circuit contains out / vin ’ (R2%R3) / (R1%R2%R3) capacitors and inductors, the equation is rewritten with impedances: where: Vout, Vin, Z1, Z2, and Z3 are all complex variables. Plugging in the impedance of each component: Next, we crank through the algebra to separate everything containing a j, from everything that does not contain a j. In other words, we separate the equation into its real and imaginary parts. This algebra can be tiresome and long, but the alternative is to write and solve differential equations, an 566 The Scientist and Engineer's Guide to Digital Signal Processing Frequency (MHz) 0.0 0.5 1.0 1.5 2.0 -2 -1 0 1 2 b. Phase Frequency (MHz) 0.0 0.5 1.0 1.5 2.0 0.0 0.5 1.0 1.5 a. Magnitude Phase (radians) Amplitude FIGURE 30-7 Notch filter frequency response. These curves are for the component values: R = 50S, C = 470DF, and L = 54 μH. Vout Vin ’ k 2 R 2% k 2 % j Rk R 2% k 2 where: k ’ TL& 1/TC Mag ’ TL &1/TC R 2% [TL &1/TC ] 2 1/2 Phase ’ arctan R TL& 1/TC even nastier task. When separated into the real and imaginary parts, the complex representation of the notch filter becomes: Lastly, the relation is converted to polar notation, and graphed in Fig. 30-7: The key point to remember from these examples is how substitution allows complex numbers to represent real world problems. In the next chapter we will look at a more advanced way to use complex numbers in science and engineering, mathematical equivalence. a Basic trigonometric subroutines for the ADMC300 AN300-10 © Analog Devices Inc., January 2000 Page 1 of 11 a Basic trigonometric subroutines for the ADMC300 AN300-10 a Basic trigonometric subroutines for the ADMC300 AN300-10 © Analog Devices Inc., January 2000 Page 2 of 11 Table of Contents SUMMARY...................................................................................................................... 3 1 THE TRIGONOMETRIC LIBRARY ROUTINES....................................................... 3 1.1 Using the Trigonometric Routines ................................................................................................................3 1.2 Formats of inputs and outputs.......................................................................................................................3 1.3 Implemented algorithms ................................................................................................................................4 1.4 Usage of the DSP registers .............................................................................................................................4 1.5 The program code...........................................................................................................................................4 1.6 Access to the library: the header file.............................................................................................................6 2 SOFTWARE EXAMPLE: GENERATION OF THREE-PHASE SINE-WAVES......... 7 2.1 The main program: main.dsp........................................................................................................................7 2.2 The main include file: main.h ........................................................................................................................8 2.3 Example output...............................................................................................................................................9 3 PRECISION OF THE ROUTINES ............................................................................ 9 3.1 Sine and Cosine functions ..............................................................................................................................9 3.2 Arctangent function......................................................................................................................................10 4 DIFFERENCES BETWEEN LIBRARY AND ADMC300 “ROM-UTILITIES” ......... 11 a Basic trigonometric subroutines for the ADMC300 AN300-10 © Analog Devices Inc., January 2000 Page 3 of 11 Summary This application note illustrates the usage of some basic trigonometric subroutines such as sine and cosine. They are implemented in a library-like module for easy access. The realisation follows the one described in chapter 4 of the DSP applications handbook1. Then, a software example will be described that may be downloaded from the accompanying zipped files. Finally, some data will be shown concerning the accuracy of the algorithms. 1 The Trigonometric Library Routines 1.1 Using the Trigonometric Routines The routines are developed as an easy-to-use library, which has to be linked to the user’s application. The library consists of two files. The file “trigono.dsp” contains the assembly code for the subroutines. This package has to be compiled and can then be linked to an application. The user simply has to include the header file “trigono.h”, which provides function-like calls to the routines. The following table summarises the set of macros that are defined in this library. Note that every trigonometric function stores the result in the ar register. Operation Usage Operands Initialisation Set_DAG_registers_for_trigonometric; none Sine Sin(angle); angle = dreg2 or constant Cosine Cos(angle); angle = dreg3 or constant Arctangent Atan(integer_part, fractional_part); integer_part = dreg4 or constant fractional_part = dreg5 or constant Table 1: Implemented routines The routines do not require any configuration constants from the main include-file “main.h” that comes with every application note. For more information about the general structure of the application notes and including libraries into user applications refer to the Library Documentation File. Section 2 shows an example of usage of this library. In the following sections each routine is explained in detail with the relevant segments of code which is found in either “trigono.h” or “trigono.dsp”. For more information see the comments in those files. 1.2 Formats of inputs and outputs The implementation of the routines is such that values for angles are expected to be in the usual scaled 1.15 format. Therefore, +1 (0x7FFF) corresponds to +π radians or 180 degrees, and –1 (0x8000) to -π radians or -180 degrees. The sine and cosine functions use this format for their input. Since the output of these functions is limited to the range [-1, 1], the scaled 1.15 format is the natural choice for it. 1 a ”Digital Signal Applications using the ADSP-2100 Family”, Volume 1, Prentice Hall, 1992 2 Any data register of the ADSP-2171 core 3 Any data register of the ADSP-2171 core 4 Any data register of the ADSP-2171 core except mr0 5 Any data register of the ADSP-2171 core except mr1 a Basic trigonometric subroutines for the ADMC300 AN300-10 © Analog Devices Inc., January 2000 Page 4 of 11 The arctan function requires a different format. Since its argument may sweep from –∞ to +∞, the scaling is no longer feasible. The argument is represented by a (signed) 32-bit value in the 16.16 format. The overall range is therefore from –32768 (0x8000.0000) to +32768-2-16 (0x7FFF.FFFF). The output value is an angle in the range from -½π to +½π, corresponding in the above-defined 1.15 format to –0.5 to +0.5. 1.3 Implemented algorithms The calculation is achieved through approximation of the functions by means of a fifth order Taylor series expansion. The equations that are used are reported hereafter: ( ) [ [ arctan( ) 0.318253 0.003314 0.130908 0.068542 0.009159 [-1,1] sin 3.140625 0.02026367 5.325196 0.5446778 1.800293 0,1 2 3 4 5 2 3 4 5 = + − + − ∈ = + − + + ∈ x x x x x x x α α α α α α α The approximation for the sine function is accurate for any angle in the 1st quadrant. Values in the other quadrants are reported the 1st quadrant for the known symmetries of the functions. The cosine is calculated with the same approximation since (α ) = (π −α ) 2 cos sin . The arctangent is valid for any argument of absolute value less or equal than 1. For arguments outside this interval, the following property is used: ( ) ( 1 ) 2 arctan x = 1 − arctan x− . Refer to the above-mentioned DSP applications handbook for more details. 1.4 Usage of the DSP registers The following table gives an overview of the registers that are used by the functions. It may be noted that the DAG registers M5 and L5 must be set to 1 and 0 respectively and that they are not modified by the trigonometric routines. The already mentioned call to Set_DAG_registers_for_trigonometric prepares these registers for the trigonometric functions. It now becomes clear that this routine is necessary only once if M5 and/or L5 are not modified in another part of the user’s code, as shown in the example in section Error! Reference source not found.. Subroutine Input Output Modified registers Other registers Sin_ ax0 ar ay0, ay1, af, ar, mx1, my1, mf, mr, sr, I5 M5 = 1, L5 = 0 Cos_ ax0 ar ay0, ay1, af, ar, mx1, my1, mf, mr, sr, I5 M5 = 1, L5 = 0 Atan_ mr1, mr0 ar ax0, ax1, ay0, ay1, af, ar, mx1, my0, my1, mf, mr, sr, si, I5 M5 = 1, L5 = 0 Table 2: Usage of DSP core registers 1.5 The program code The following code defines the three routines Sine, Cosine and Arctangent. a Basic trigonometric subroutines for the ADMC300 AN300-10 © Analog Devices Inc., January 2000 Page 5 of 11 The functions are declared as globally accessible to other applications. The code is almost identical to the one described in the handbook. Both the Sine and Cosine routine make use of the core sine approximation that is documented in the handbook. The coefficients have been moved into program memory instead of data memory (which implies the use of I5 instead of I3). Therefore, the initial part of these routines simply modifies the argument in order to lie within the 1st quadrant where the adopted approximation by Taylor series is valid. The final result is then obtained by making use of the well known symmetries of these functions and the relation cos(α)=sin(½π-α). {*************************************************************************************** * Routines Defined in this Module * ***************************************************************************************} .ENTRY Sin_; .ENTRY Cos_; .ENTRY Atan_; {*************************************************************************************** * Local Variables Defined in this Module * ***************************************************************************************} .VAR/PM/RAM/SEG=USER_PM1 SIN_COEFF[5]; .INIT SIN_COEFF : 0x324000, 0x005300, 0xAACC00, 0x08B700, 0x1CCE00; .VAR/PM/RAM/SEG=USER_PM1 ATN_COEFF[5]; .INIT ATN_COEFF : 0x28BD00, 0x006D00, 0xEF3E00, 0x08C600, 0xFED400; Cos_: ar=abs ax0; { abs(x)} ay0=0x4000; { pi/2 = 0.5 } ay1=0x7fff; { pi = 1.0 } ar=ay0-ar; { pi/2 - |x|} ay0=ar; { store sign of result in ay0} ar=abs ar; { abs value for approx } jump sin_approx; { skip to Taylor series } Sin_: ay0=0x4000; { pi/2 } ay1=0x7fff; { pi = 1 } ar=ax0 and ay1; { take |x| } af=ay0-ar; { pi/2 - |x| check for LHS angle} if LT ar=ay1-ar; { if x > pi/2 x = pi -x } ay0=ax0; { store sign of result in ay0} sin_approx: I5=^sin_coeff; {Pointer to coeff. buffer} my1=ar; {Coeffs in 4.12 format} mf=ar*my1 (rnd), mx1=pm(i5,m5); {mf = x**2} mr=mx1*my1 (ss), mx1=pm(i5,m5); {mr = c1*x} cntr=3; do approx1 until ce; mr=mr+mx1*mf (SS); {Do summation } approx1: mf=ar*mf (RND), mx1=PM(I5,M5); mr=mr+mx1*mf (SS); sr=ASHIFT mr1 by 3 (HI); sr=sr or LSHIFT mr0 by 3 (LO); {Convert to 1.15 format} ar=pass sr1; if LT ar=pass ay1; {Saturate if needed} af=pass ay0; if LT ar=-ar; {Negate output if needed} rts; Atan_: I5 = ^ATN_COEFF; {point to coefficients} ay0=0; ax1=mr1; ar=pass mr1; if GE jump posi; {Check for positive input} ar=-mr0; {Make negative number positive} a Basic trigonometric subroutines for the ADMC300 AN300-10 © Analog Devices Inc., January 2000 Page 6 of 11 mr0=ar; ar=ay0-mr1+c-1; mr1=ar; posi: sr=LSHIFT mr0 by -1 (LO); {Produce 1.15 value in SR0} ar=sr0; ay1=mr1; af=pass mr1; if EQ jump noinv; {If input < 1, no need to invert} se=exp mr1 (HI); {Invert input} sr=norm mr1 (HI); sr=sr or NORM mr0 (LO); ax0=sr1; si=0x0001; sr=NORM si (HI); ay1=sr1; ay0=sr0; divs ay1,ax0; divq ax0; divq ax0; divq ax0; divq ax0; divq ax0; divq ax0; divq ax0; divq ax0; divq ax0; divq ax0; divq ax0; divq ax0; divq ax0; divq ax0; divq ax0; ar=ay0; noinv: my0=ar; mf=ar*my0 (RND), my1=PM(I5,M5); mr=ar*my1 (SS), mx1=PM(I5,M5); cntr=3; do approx2 until CE; mr=mr+mx1*mf (SS), mx1=PM(I5,M5); approx2: mf=ar*mf (RND); mr=mr+mx1*mf (SS); ar=mr1; ay0=0x4000; af=pass ay1; if NE ar=ay0-mr1; af=pass ax1; if LT ar=-ar; rts; 1.6 Access to the library: the header file The library may be accessed by including the header file “trigono.h” in the application code. The header file is intended to provide function-like calls to the routines presented in the previous section. It defines the calls shown in Error! Reference source not found.. The file is self-explaining and needs no further comments. It is worth adding a few comments about efficiency of these routines. The first macro simply sets the DAG registers M5 and L5 to its correct values. The user may however just replace the macro with one of its instructions when the application code modifies just one of these registers. The sine and cosine subroutines expect the argument to be placed into ax0. This is what the macros do. However, if the angle is already stored in ax0, the user may just place an instruction call Sin_; instead of Sin(ax0) in order to avoid an additional instruction ax0 = ax0; in the expanded code. Similarly, a instruction Atan(mr1, mr0) should be avoided or replaced by the direct call to the subroutine Atan_. .MACRO Set_DAG_registers_for_trigonometric; M5 = 1; L5 = 0; .ENDMACRO; .MACRO Sin(%0); ax0 = %0; call Sin_; .ENDMACRO; .MACRO Cos(%0); ax0 = %0; a Basic trigonometric subroutines for the ADMC300 AN300-10 © Analog Devices Inc., January 2000 Page 7 of 11 call Cos_; .ENDMACRO; .MACRO Atan(%0, %1); mr1= %0; mr0= %1; call Atan_; .ENDMACRO; 2 Software Example: Testing the Trigonometric Functions 2.1 The main program: main.dsp The example demonstrates how to use the routines. All it does is to cycle through the whole range of definition of the sine function and converting the results by means of the digital to analog converter. The application has been adapted from two previous notes6,7. This section will only explain the few and intuitive modifications to those applications. The file “main.dsp” contains the initialisation and PWM Sync and Trip interrupt service routines. To activate, build the executable file using the attached build.bat either within your DOS prompt or clicking on it from Windows Explorer. This will create the object files and the main.exe example file. This file may be run on the Motion Control Debugger. In the following, a brief description of the additional code (put in evidence by bold characters) is given. Start of code – declaring start location in program memory .MODULE/RAM/SEG=USER_PM1/ABS=0x60 Main_Program; Next, the general systems constants and PWM configuration constants (main.h – see the next section) are included. Also included are the PWM library, the DAC interface library and the trigonometric library. {*************************************************************************************** * Include General System Parameters and Libraries * ***************************************************************************************} #include