Quick viewing(Text Mode)

Analysis, Design, and Optimization of RF CMOS Polyphase Filters

Analysis, Design, and Optimization of RF CMOS Polyphase Filters

Analysis, Design, and Optimization of RF CMOS Polyphase Filters

Vom Fachbereich Ingenieurwissenschaften der Universität Duisburg-Essen zur Erlangung des akademischen Grades eines

Doktors der Ingenieurwissenschaften

genehmigte Dissertation

von

Zisan Zhang aus Guoyang, Anhui Province, China

Referent: Prof. Dr.-Ing. habil. Peter Jung Korreferent: Prof. Dr.-Ing. Horst Fiedler Tag der mündlichen Prüfung: 29. September 2005

To my wife, Hongjin and my son, Berkeley

Abstract

Polyphase filters (PPFs) are an efficient solution for high accuracy quadrature generation in frequency (RF) CMOS design. Although there are some guidelines for design of RF CMOS PPFs, they give too much freedom. With layout considerations, optimization of RF CMOS PPFs cannot be reached by using analytical calculations because of many constraints and tradeoffs in the design. Thus, in design of RF CMOS PPFs, intensive trials and several design iterations are needed to reach given specifications. In this situation, a computer-aided analysis and design optimization tool for RF CMOS PPFs is of great help to the community of RF CMOS PPFs designers, especially for industrial projects that are under time-to-market pressures. However, such a dedicated tool has not been available until now, to the author’s best knowledge. Focusing on computer-aided analysis and design optimization tools for RF CMOS PPFs, this dissertation has the following scientific contributions: • PPFANA, a dedicated computer-aided software tool for analysis of the influences from the nonideal effects, namely, process tolerance, components mismatch on the quadrature accuracy of the RF CMOS PPFs, was developed by the author and presented in this dissertation. • Physical design considerations for RF CMOS PPFs in system-on-a-chip (SoC) solution were proposed by the author through the analysis on the influences from parasitic effects in RF SoC. • Silicon success of an RF CMOS PPF designed by the author for a low-IF receiver using Fraunhofer-IMS 0.6 µm CMOS process was achieved. • PPFOPTIMA, a computer-aided synthesis and optimization tool for RF CMOS PPFs with dedicated worst-case simulation and Monte Carlo simulation toolboxes for verification of the performance of RF CMOS PPFs, was developed by the author and presented in this dissertation.

Zusammenfassung

Polyphasenfilter (PPF) sind eine leistungsfähige Lösung für die hochgenaue Quadraturerzeugung im Hochfrequenz (HF)-CMOS-Entwurf. Obgleich es einige Richtlinien für den Entwurf von HF-CMOS-PPF gibt, erlauben diese zu viele Freiheiten. Eine Optimierung der Schaltung und der Layout kann mit Rücksicht auf viele technisch und wirtschaftlich vorgegebene Randbedingungen und der daraus resultierenden Kompromisse mit analytischen Methoden alleine nicht erreichen werden. Es werden aufwändige Versuche und mehrere Entwurfsverbesserungen benötigt, um einen zufriedenstellenden Entwurf zu erreichen. Deshalb ist ein computerbasiertes Werkzeug zur Analyse und Optimierung des Entwurfs von HF-CMOS-PPF besonders für den industriellen Anwendungsbereich wünschenswert. Nach bestem Wissen des Autors gab es bislang ein solches Werkzeug nicht. Im Hinblick auf computerbasierte Werkzeuge zur Analyse und Optimierung des Entwurfs von HF-CMOS-PPF bringt die vorliegende Dissertation folgende wissenschaftliche Beiträge: • PPFANA, ein spezielles Entwurfswerkzeug für die Simulation der Einflüsse von den nichtidealen Effekten wie beispielsweise von Prozesstoleranzen, von Fehlanpassungen der Komponenten und der Quadraturgenauigkeit, wurde vom Autor entwickelt und vorgestellt. • Richtlinien für den Entwurf von HF-CMOS-PPF auf „System-on-a-Chip“- Lösungen werden vom Autor unter Berücksichtigung parasitärer Effekte erarbeitet und vorgeschlagen. • Die erfolgreiche Realisierung eines HF-CMOS-PPF für einen Bluetooth- Empfänger mit niedriger Zwischenfrequenz wurde mit dem Fraunhofer-IMS 0.6 µm CMOS Prozeß nachgewiesen. • PPFOPTIMA, ein Synthese- und Optimierungswerkzeug für HF-CMOS-PPF auf Basis von Worst-Case- und Monte-Carlo-Simulationen wurde vom Autor entwickelt und vorgestellt.

Acknowledgements

Time really flies; four years have passed. Looking back to the time I arrived at Duisburg, the first colleague I met was Dr. Dieter Greifendorf, who picked my wife and me up at the railway station of Duisburg in the middle of the night. In the last few years, he has been the most important person who has given me countless helps in both my academic works and daily life. My life here in Germany could not have been so easy if there had not been a warm-hearted friend like him. Hereby I would like to give my special thanks to him. This dissertation would not have been completed; if there had not been continuous supervisions and encouragements from my Ph.D supervisor, Professor Dr.-Ing. habil. Peter Jung. His brilliance and solid academic foundations have given me invaluable helps in the development of this dissertation. Dr. Rainer Kokozinski, an expert in analog circuit design, has given me many comments and suggestions in my research work. I cannot imagine how many difficulties I should have had met, if there had not been his timely helps. My group leaders Dr. Stephan Kolnsberg and Dr. Jörg Stammen have given me many helps and supports. And I have enjoyed working under their supervision very much. I can never forget Dr. Thomas Kaiser, who accepted my application and gave me the opportunity to working in Fraunhofer IMS. And he has given me countless support in my academic development during the last four years. My colleagues in the department of Chips and Systems (WCS), Fraunhofer-Institute of Microelectronics Circuits and Systems have given me many warm-hearted helps during my stay in Germany. Hereby I would like to give them my sincere thanks.

Zisan Zhang October, 2005 Duisburg, Germany Table of Contents

List of Figures………………………………………………………..…………………………….V

List of Tables………………………………………………………….…………………………..IX

List of Abbreviations……………………………………………..…………………………….X

List of Symbols…………………………………………………………………………………XII

Chapter 1 Introduction……………………………………………...………………………1

1.1 Wireless communications with single chip ………..……………………1

1.2 Analog conversion and complex mixing……………...……………...………………… 2

1.3 State-of-the-art of wireless architectures ………….…..…………………5 1.3.1 Introduction …….……………….……...………….…….………….……….…………5 1.3.2 Conventional heterodyne receiver architecture …………………………………6

1.3.3 Direct-conversion receiver architecture………………………………..………….8

1.3.4 Wideband IF double-conversion receiver architecture……………………….11

1.3.5 Low-IF receiver architecture………………………………………………...…….13

1.3.6 Selection of transceiver architecture in this work……………………….…….14

1.4 Analysis of RF quadrature generation techniques…………...…………………...….16

1.4.1 Introduction………………………………………………………………………...….16

1.4.2 Haven’s technique………………………………………………………………...….16

1.4.3 Frequency division……………………………………………………………….…..17

1.4.4 RC-CR network………………………………………………………………………18

1.4.5 RC polyphase filter…………………………………………………………………..19

1.5 Limitations of previous works …………………...……………………………………...23

1.6 Objectives and contributions of this dissertation …………………..………………..25

1.7 Outline of this dissertation …………………………………………...…………………..26

I Chapter 2 Analysis of Nonidealities in RF CMOS Polyphase Filters

…………………….……………………………..………….29

2.1 Introduction………………………………….……………………………………………….29

2.2 Vector analysis of polyphase filters…………………………..………………………...31

2.3 PPFANA, a software tool for RF CMOS PPFs…………………..…………………..38

2.3.1 Overview………..……….…..…………..……..………..………………..………….38

2.3.2 Explicit transfer function of RF CMOS PPFs…………..……...…………….38

2.3.3 Development of PPFANA………………………………………………………..40

2.4 Analysis of quadrature accuracy in ideal PPFs……………………………….……....42

2.5 Analysis of quadrature accuracy influenced by process tolerances……………....46

2.6 Analysis of quadrature accuracy influenced by component mismatch….……….51

2.7 Analysis of influences from parasitic effects…….….………………………………...54

2.7.1 Simplified RF models of and …………..……………….54

2.7.2 Substrate noise coupling………………………………………………………….58

2.8 Summary………………………….…………………………………………………………..62

Chapter 3 Design of an RF CMOS Polyphase Filter………..………………64 3.1 Overview…………………………………………….…………………………64

3.2 Schematic design………………...………………………………………………………….65

3.2.1 Derivation of specifications…………………………………..………………….65

3.2.2 Design guidelines………………………….………………………………………66

3.2.3 Tolerance design………………………………..………………………………….68

3.2.4 Analytical calculations……………………...…………….………………………69

3.2.5 Schematic simulation……………………………….……………………………..72

3.3 Physical layout design………………………………………...……………...……………73

3.3.1 Layout techniques……………………………….…………………………………73

3.3.2 On-chip noise isolation techniques………….…………………………...…….76

II 3.3.3 Layout and post-layout simulation……………………………………………..77

3.3.4 Chip photo…………………………………………………………………………...79

3.4 Measurement……………………...…………………………………………………………80

3.4.1 Introductory remarks……………………………………………………...…….…80

3.4.2 Modeling of test pads and bonding ……………………………………..80

3.4.3 Design of the test PCB……………………………………………………………81

3.4.4 Measurement setup………………………………………………………………...83

3.4.5 Measurement results……………………………………………………………….84

3.5 Analysis of simulation and measurement results…………………...………………..88

3.6 Summary…………………………………...…………………………………………………88

Chapter 4 Optimization of RF CMOS Polyphase Filters…………………90

4.1 Introduction………………..………………………………………………………………...90

4.2 Design considerations and design flow…………………………….…………………..91

4.3 Problem formulation for RF CMOS PPFs optimization……………..…………….96

4.4 Analysis of possible optimization methods…………….…………..………………..100

4.4.1 Limitations of conventional optimization methods……………………..…100

4.4.2 Simulated annealing……………………………………………………………...102

4.4.3 Genetic algorithms……………………………………………………………….103

4.5 MATLAB implementation of genetic algorithms…………………………………105

4.5.1 Overview…………………………………………………...………………………105

4.5.2 Chromosome representation…...…………...………………………....105

4.5.3 Genetic operation……………………...……………………………....107

4.5.4 Initialization, termination and fitness functions.....…………………....111

4.6 Implementation of PPFOPTIMA………………………………..…………………….114

4.6.1 Introduction……………………………...……………………………………...…114

III 4.6.2 Construction of fitness functions…………………………………………...…116

4.6.3 Graphic user interface………………………………………………………...…116

4.6.4 Verification toolboxes……………………………………………...…...……….118

4.7 Experimental results…………………..…………………………………………….....…123

4.7.1 Overview…………………..………….………………………………………...….123

4.7.2 Experiments on RF CMOS PPFs for a Bluetooth receiver……………124

4.7.3 Automated synthesis and verification of RF CMOS PPFs

for different communication standards………………………………………135

4.8 Summary……………………………………..……………………………………………..146

Chapter 5 Summary and Outlook………………………………………………….149

5.1 Summary…..………………………………………..………………………………………..149

5.2 Outlook………………………………………….…………………………………………...151

References………………………………………………………………………………………...153

Appendix 1 Publications From the Author…………..…………………………..163

Appendix 2 Transfer Functions of Multi-Stage RF CMOS PPFs…….165

Appendix 3 Source Code of PPFANA ………………………………………...……167

Appendix 4 Source Code of PPFOPTIMA……………………………………… 222

IV List of Figures

Figure 1.1 Mixing a real signal with a real sinusoid. ………………….….……………….…3

Figure 1.2 Mixing a real signal with a complex exponential. ……….….……………….…4

Figure 1.3 A practical implementation of the complex mixer. …………...…………….… 5

Figure 1.4 A generic heterodyne receiver……………………………………...…………….…6

Figure 1.5 A generic homodyne receiver…………………………………….…..………….… 8

Figure 1.6 Self-mixing of the LO and/or of an interfere in homodyne receiver frontend

……………………………………………….9

Figure 1.7 A wideband double-conversion receiver……………………….….…………….12

Figure 1.8 A generic low-IF receiver architecture………………………….…….………....14

Figure 1.9 Schematic of Haven’s technique. ………………………..……….………………17

Figure 1.10 A frequency divider as a quadrature generator. ……………………………...18

Figure 1.11 RC-CR networks as a quadrature generator. …………………………………19

Figure 1.12 Polyphase filter as a quadrature generator…………………………………… 20

Figure 2.1 One phase of a generalized N-phase PPFN………..……………………….…….32

Figure 2.2 One-stage RC sequence asymmetric PPFN……………………………...……....33

Figure 2.3 Quadrature signal generation using four-phase network.

(a) Circuit diagram. (b) Decomposition of the two-phase

input sequence into two four-phase symmetric sequences………………..…35

Figure 2.4 Graphic user interface of PPFANA for 4-stage RF CMOS PPF……….……41

Figure 2.5 Gain mismatch in ideal multi-stage RF CMOS PPFs tailored to

the Bluetooth frequency range 2.4GHz-2.48GHz...………………….……....43

Figure 2.6 Phase difference in ideal multi-stage RF PPFs tailored to

the Bluetooth frequency range 2.4GHz-2.48GHz..………...... …...…44

Figure 2.7 Gain mismatch influenced by process tolerance in a 2-stage

V RF CMOS PPF (2.4GHz-2.48GHz) with regular design…………..…………48

Figure 2.8 Phase mismatch influenced by process tolerance in a 2-stage

RF CMOS PPF (2.4GHz-2.48GHz) with regular design….…………………48

Figure 2.9 Gain mismatch influenced by process tolerance in a 2-stage

RF CMOS PPF (2.4GHz-2.48GHz) with tolerance design. …………………50

Figure 2.10 Simplified RF model of a polysilicon ……….……….…………..……55

Figure 2.11 Simplified RF model of a ……..……..…………………..…..………...56

Figure 2.12 Principle of substrate noise coupling

in system-on-a-chip……………………...……………………..……………..……58

Figure 2.13 Simplified model of substrate noise coupling model

in RF CMOS PPFs…………………………………………..……………………...59

Figure 3.1 Schematic of a 3-stage RF CMOS PPF

for a low-IF Bluetooth receiver…………………..………………………………..71

Figure 3.2 Simulation results of a 3-stage RF CMOS PPFs

obtained by using SpectreRF………………...…………………….…….....72

Figure 3.3 Simulation results of a 3-stage RF CMOS PPFs

obtained by using PPFANA……………………………………………………..…72

Figure 3.4 Layout of the four resistors in one-stage of RF CMOS PPF ……...………74

Figure 3.5 Layout of the four capacitors and wires

in one-stage of an RF CMOS PPF……….…..……………………….…………..75

Figure 3.6 Layout of a 3-stage RF CMOS PPF with test pads…………………....………78

Figure 3.7 Chip photo of an RF CMOS PPF

for a low-IF Bluetooth receiver……………………………………..…...………..79

VI Figure 3.8 Model of test pads and bonding wires…………………………………….....…...81

Figure 3.9 Schematic of the (PCB)

for test of the RF CMOS PPF…………..……………………..……………....…...82

Figure 3.10 Photo of the fabricated test PCB…………………………….…….………...…...83

Figure 3.11 Diagram of the measurement setup for test of the RF CMOS PPF ….…....84

Figure 3.12 Time domain measurement results of the RF CMOS PPF ……….….….….85

Figure 3.13 Gain mismatch of the RF CMOS PPF measured in frequency domain…..86

Figure 3.14 Phase difference of the RF CMOS PPF

measured in frequency domain…………………………………………………….87

Figure 4.1 A design flow for specification-driven

automated synthesis of RF CMOS PPFs………..…………………………….…95

Figure 4.2 A three-dimensional plot of the amplitude mismatch

in a 2-stage RF CMOS PPF, expressed in the equation (4.20)…..…..……100

Figure 4.3 Mapping variables into chromosomes……………………..…...……………….106

Figure 4.4 Roulette wheel selection……………………………………….………………….109

Figure 4.5 Flowchart of the genetic algorithm implemented in PPFOPTIMA……....113

Figure 4.6 Framework of PPFOPTIMA…………………………………………….…….....115

Figure 4.7 Graphic user interface of PPFOPTIMA……..…………………………..……..117

Figure 4.8 Flowchart of Monte Carlo simulation option in PPFOPTIMA….….…….121

Figure 4.9 Flowchart of the novel worst-case simulation

methodology in PPFOPTIMA…………………………………………………..122

Figure 4.10 Synthesis result of a 2-stage RF CMOS PPF for a Bluetooth receiver….125

Figure 4.11 Worst-case simulation results of a 2-stage RF CMOS PPF for

a Bluetooth receiver…..………..………………………………………………….126

Figure 4.12 Monte Carlo simulation results of a 2-stage RF CMOS PPF

for a Bluetooth receiver……………………….……………………..…………...127

VII Figure 4.13 Synthesis results of a 3-stage RF CMOS PPF for a Bluetooth receiver...29

Figure 4.14 Worst-case simulation results of a 3-stage RF CMOS PPF

for a Bluetooth receiver…….....…………………………...………...…………...130

Figure 4.15 Monte Carlo simulation results of a 3-stage RF CMOS PPF

for a Bluetooth receiver…..…..………………….……………….……………....131

Figure 4.16 Synthesis results of a 4-stage RF CMOS PPF for a Bluetooth receiver...132

Figure 4.17 Worst-case simulation results of a 4-stage RF CMOS PPF

for a Bluetooth receiver…………….…….………………………………..……..133

Figure 4.18 Monte Carlo simulation results of a 4-stage RF CMOS PPF

for a Bluetooth receiver…….…………………………..……………………...... 134

Figure 4.19 Graphic user interfaces of PPFOPTIMA

for automated synthesis of RF CMOS PPFs. ……………………………….136

Figure 4.20 Synthesis results of a 3-stage RF CMOS PPF for a GSM receiver….....137

Figure 4.21 Worst-case simulation results of

a 3-stage RF CMOS PPF for a GSM receiver…………………………...….138

Figure 4.22 Monte Carlo simulation results of

a 3-stage RF CMOS PPF for a GSM receiver..………………………….....139

Figure 4.23 Synthesis results of a 2-stage RF CMOS PPF for a DECT receiver….…140

Figure 4.24 Worst-case simulation results of

a 2-stage RF CMOS PPF for a DECT receiver………………………....…141

Figure 4.25 Monte Carlo simulation results of

a 2-stage RF CMOS PPF for a DECT receiver……………………………..42

Figure 4.26 Synthesis results of a 3-stage-RF CMOS PPF for a WCDMA receiver..144

Figure 4.27 Worst-case simulation results of

a 3-stage RF CMOS PPF for a WCDMA receiver……………………….145

Figure 4.28 Monte Carlo simulation results of

a 3-stage RF CMOS PPF for a WCDMA receiver………………………..146

VIII List of Tables

Table 1.1 Advantages and disadvantages of different receiver architectures. …….……15

Table 2.1 Quadrature accuracy of ideal RF CMOS PPFs (2.4GHz-2.48GHz),

obtained by using PPFANA and SpectreRF……….…………………………….45

Table 2.2 Quadrature accuracy of RF CMOS PPFs (2.4GHz-2.48GHz)

with process tolerance, obtained by PPFANA and SpectreRF……….………50

Table 2.3 Quadrature accuracy influenced by component mismatch in

multi-stage RF CMOS PPFs (2.4GHz-2.48GHz). ……………..………………53

Table 3.1 Specification of RF CMOS PPF for a low-IF Bluetooth receiver……..…..…66

Table 3.2 Dimension of a 3-stage RF CMOS PPF

for a low-IF Bluetooth receiver………………………………….……………..….71

Table 3.3 Simulation results of a 3-stage RF CMOS PPFs obtained

by using PPFANA and SpectreRF……………………………..………………..…73

Table 3.4 Simulation results obtained by using Cadence

post-layout simulation and PPFANA……….…………………..……………..….78

Table 4.1 Main functions used in the optimization engine of PPFOPTIMA………….114

IX List of Abbreviations

ABBREVIATION FULL EXPRESSION AM Amplitude mismatch BALUN Balance unbalance converter BiCMOS Bipolar CMOS C Capacitor CDMA Code division multiple access CEC Compression and error correction CM Component mismatch CMOS Complementary metal oxide semiconductor CPU DC Direct current DCR Direct-down conversion receiver DECT Digitally enhanced cordless ESD Electro static discharge FM Frequency modulation GA Genetic algorithms GaAs GM Gain mismatch GSM Global system for mobile communications GUI Graphical user interface IC IF Intermediate frequency IMS Institut für Mikroelektronische Schaltungen und Systeme I/O Input / output I/Q In phase/quadrature phase IRF Image reject filter IRM Image reject mixer IRR Image reject ratio ISM Industrial, scientific and medical

X LNA Low noise

LO Local oscillator

LPF Low pass filter

MC Monte Carlo

MIM Metal insulator metal

MLR Maximum length of resistors

NF Noise figure

PA Power amplifier

PC Personal computer

PCB Printed circuit board

PD Phase difference

PDF Probability density function

PM Phase mismatching

PPF Polyphase filter PPFANA Polyphase filter analysis toolbox PPFN Polyphase filter network PPFOPTIMA Polyphase filter optimization toolbox PS Postlayout simulation PT Process tolerances QAM Quadrature amplitude modulation QM Quadrature modulation QPSK Quadrature phase shift keying RC Resistance capacitance RF SA Simulated annealing SiGe Silicon germanium SoC VCO Voltage controlled oscillator WLAN Wireless local area network WCDMA Wideband code division multiple access XI

List of Symbols

AI Amplitude of the I path output signal in RF CMOS PPFs

AQ Amplitude of the Q path output signal in RF CMOS PPFs A Fitting parameter for the standard deviation of σ Re Re A Fitting parameter for the standard deviation of σ Rsh Rsh σ A∆w Fitting parameter for the standard deviation of ∆w

CC Parasitic capacitance between back plate of the capacitor and the substrate

Ci Capacitor of the ith stage in the RF CMOS PPFs

Ci,CM Capacitor of the ith stage with component mismatch between I path and Q path in the RF CMOS PPFs

Ci,PT Capacitor of the ith stage with process tolerance in the RF CMOS PPFs

CI,i Capacitor of the ith stage in the I path of the RF CMOS PPFs

Cpara Parasitic capacitance

CQ,i Capacitor of the ith stage in the Q path of the RF CMOS PPFs

CR Parasitic capacitance between polysilicon resistor and the substrate

Csum Sum of parasitic capacitance between RF CMOS PPFs and the substrate

CuaC Parasitic capacitance between unit area capacitor and the substrate

CuaCi Parasitic capacitance between the capacitors in the ith stage and the substrate

CuaRi Parasitic capacitance between the resistors in the ith stage and the substrate

XII Cunit Unit capacitance of the capacitor

dphase Phase difference between I path and Q path in PPFs f Frequency of a signal

fa Constant describing influences of area on mismatch

f p Constant describing influences of periphery on mismatch

fd Constant describing influences of distance on mismatch

Fi Fitness of the individual i H(jω) Transfer function of polyphase filters

HI (jω) Imaginary part of the transfer function of polyphase filters

HR (jω) Real part of the transfer function of polyphase filters

Iin Input current in RF CMOS PPFs

Ik,in The kth input current in RF CMOS PPFs

Ik,out The kth output current in RF CMOS PPFs

Iout Output current in RF CMOS PPFs

Lmax,Res Maximum length of the resistor

LR Length of the resistor

M C Mismatch between the neighboring capacitors

M CMC Component mismatch of the capacitors

M CMR Component mismatch of the resistors

M R Mismatch between the neighboring resistors

mgain,CM Gain mismatch in RF CMOS PPFs with component mismatch

mgain,ideal Gain mismatch in the ideal RF CMOS PPFs

mgain,PT Gain mismatch in RF CMOS PPFs with process tolerances

mphase Phase mismatch in RF CMOS PPFs

mphase,CM Phase mismatch in RF CMOS PPFs with component mismatch

XIII mphase,ideal Phase mismatch in the ideal RF CMOS PPFs

mphase,PT Phase mismatch in RF CMOS PPFs with process tolerances

Nunit Number of unit capacitor

Pj Probability of selection of the j population

PR Process tolerance of the resistors Q Quality factor

Re End resistance of a resistor

Ri Resistor of the ith stage in the RF CMOS PPFs

Ri,CM Resistor of the ith stage with component mismatch between I path and Q path in the RF CMOS PPFs

RI,i Resistors of the ith stage in the I path of the RF CMOS PPFs

Ri,PT Resistor of the ith stage with process tolerance in the RF CMOS PPFs

RIR Image reject ratio

RQ,i Resistors of the ith stage in the Q path of the RF CMOS PPFs

Rsh Sheet resistance of resistor

Rsub Resistivity of the substrate

RUIR Ultimately obtainable image reject ratio

SCi Area of the capacitor in the ith stage in RF CMOS PPFs

SRi Area of the resistor in the ith stage in RF CMOS PPFs

SR Area of a resistor

Vin Input voltage in RF CMOS PPFs

Vk , in The kth input voltage in RF CMOS PPFs

Vk , out The kth output voltage in RF CMOS PPFs

VI, in Real part of the input signal in RF CMOS PPFs

VI, mid Intermediate I path signal

XIV VQ, mid Intermediate Q path signal

VIout I path output signal in RF CMOS PPFs

Vout Output voltage in RF CMOS PPFs

VQ, in Imaginary part of the input signal in RF CMOS PPFs

VQout Q path output signal in RF CMOS PPFs

WR Width of a resistor

wi Weight of the ith item Y Admittances ω Angular frequency

ωIF Angular frequency of the intermediate frequency signal

ωimage Angular frequency of the image

ωLO Angular frequency of the signal from the local oscillator

ωRF Angular frequency of the radio frequency signal

ωsignal Angular frequency of the signal σ a Standard deviation of mismatch caused by area variation σ component Standard deviation of component mismatch σ d Standard deviation of mismatch caused by distance σ p Standard deviation of mismatch caused by periphery

σRe Standard deviation of the end resistance σ Standard deviation of the sheet resistance Rsh

σ∆w Standard deviation of the width of a resistor φ Phase of a signal θ Relative phase difference in RF CMOS PPFs ∆A Amplitude mismatch in volts ∆φ Phase mismatch in degrees

XV

Chapter 1 Introduction

Chapter 1

Introduction

1.1 Wireless Communications With Single Chip Transceivers

The wireless communications market has grown substantially during the last decades; there has always been pressure to reduce both the size and the cost of wireless products. However, nowadays, in most designs, the analog part of receivers use multiple packages and/or multiple integrated circuits (ICs) which are implemented in gallium arsenide (GaAs) or silicon germanium (SiGe) bipolar processes, while components are fabricated in low-cost complementary metal oxide semiconductor

(CMOS) processes [1]. Since analog and digital components are designed for different processes, it is cumbersome to integrate RF, analog and baseband in a single chip and cost cannot be easily lowered.

Since a couple of decades ago, there have been tremendous endeavors in developing CMOS wireless single chip transceivers, i.e., integrated and receiver. Some pioneers, just name a few, Abidi [6, 8, 9] at University of California at

Los Angeles, Steyaert [23, 32] at Katholiek Universiteit Leuven, and Lee [2, 3] at

Stanford University, have contributed by both theoretical studies and practical system implementations. Since the middle of the 1990s, more efforts have been put in developing CMOS single chip transceivers with applications to various standards, for example, global system for mobile communications (GSM), digitally enhanced cordless telephony (DECT), Bluetooth, wireless local area network (WLAN), etc.

1

Chapter 1 Introduction

Even though there are a lot of GaAs, SiGe, bipolar circuits available, it is still quite a challenge to implement similar circuits in CMOS processes. Oriented for digital circuit design, a standard CMOS process has poor analog, and especially radio frequency (RF) performance because of its process tolerances, parasitic effects, and low quality (Q) factor passive components [2]. Thus, insights into transceiver architectures which are integrateble and capable of providing good CMOS transceiver performances become essential.

1.2 Analog Conversion and Complex Mixing

In RF receivers, frequency downconversion is an essential operation. Typically, frequency downconversion of a passband signal is performed by multiplying, i.e.,

mixing, the signal with a sinusoid such as cos(2πfLOt ) . In Figure 1.1 [24], case 1, fLO is not equal to the center frequency of the desired signal. This setup is used in a

heterodyne receiver. Figure 1.1 case 2 shows the situation for fLO equals to the center frequency of the desired signal. This principle is used in the homodyne receiver. In the next section, we will discuss the architecture of heterodyne and homodyne receivers in more details. The spectra of the inputs of the mixer and the corresponding spectrum of the output of the mixer are shown in Figure 1.1 to help understanding the frequency response.

For a real signal, the negative and positive Fourier components are complex conjugates of each other. A multiplication in the time domain is equivalent to a convolution in the frequency domain. Since the Fourier transform of a sinusoid contains two equal-amplitude impulses symmetrically placed around zero on the frequency axis, the spectrum of the mixer output signal is the superposition of the positive and negative

2

Chapter 1 Introduction shifted versions of the spectrum of the input signal. From Figure 1.1, we can see that, two frequency bands symmetric around the multiplying frequency are downconverted to the same output band. The undesired input signal band, which will be superimposed on the desired signal band after mixing, is called the ‘image band’. This is an important issue in the design of a heterodyne receiver. It is necessary to suppress any signal in the image band prior to the mixing operation. This is the task of the image reject (IR) filter which usually precedes the mixer. In the special case where the multiplying frequency is equal to the center frequency of the incoming signal, the image band is the same as the signal band, and the image cannot be eliminated by filtering.

x(t) y(t)

cos(2πf t) Spectra of the signals LO in the image band

Case1 Case2 Amplitude Amplitude

f f

- fLO fLO - fLO fLO

f f

Spectra of the desired signals

Figure 1.1 Mixing a real signal with a real sinusoid.

3

Chapter 1 Introduction

The image problem arises due to the fact that the frequency spectrum of a real sinusoid contains impulses at both positive and negative frequencies. One way to avoid this problem is to mix the signal with a complex exponential which can be expressed as:

− π j2 ftLO = ππ e cos(2ftLO ) - jsin(2 f LOt) . (1.1)

Mixing a real signal with this negative frequency complex exponential gives a complex signal whose spectrum is a shifted version of the real signal spectrum. Theoretically, this eliminates the image problem associated with frequency shifting when mixing with a real sinusoid. The realization of a multiplier for mixing a real signal with a complex exponential requires two real multipliers as shown in Figure 1. 2.

yr (t)

cos(2πfLOt)

° xr (t) 0 cos(2πfLOt) 90 °

sin( 2πfLOt)

yi (t)

Figure 1.2 Mixing a real signal with a complex exponential [24].

Now, consider the mixing process shown in the above figure in a general way.

Mixing two complex signals xt() and zt() generates:

== + + y(t) xtzt ().() ( xtztrr (). ()- xtzt ii ().()) jxtzt ( ri ().() xtzt ir (). ()) , (1.2)

yr (t) = xr (t).zr (t) - xi (t).zi (t) , (1.3)

yi (t) = xr (t).zi (t) + xi (t).zr (t) . (1.4)

4

Chapter 1 Introduction

A practical realization of this complex mixer using four real mixers and two adders is shown in Figure 1.3. This realization is used in the wideband double- conversion receiver discussed in the next section.

cos(2πfLOt) Adder

xr (t) yr (t)

sin(2πfLOt)

xi (t) yi (t)

Adder cos(2πf t) LO

Figure 1.3 A practical implementation of the complex mixer [24].

1.3 State-of-the-Art of Wireless Transceiver Architectures

1.3.1 Introduction

In this section, we briefly review state-of-the-art receiver topologies and discuss their advantages and disadvantages. For a given receiver architecture, there exists a corresponding transmitter architecture with essentially the same fundamental building blocks. Therefore, we focus on receiver structures.

5

Chapter 1 Introduction

1.3.2 Conventional Heterodyne Receiver Architecture

Most of today’s commercially available RF transceivers utilize some variant of the conventional heterodyne architecture. In a heterodyne receiver, as shown in Figure

1.4, the RF front-end preselection filter serves to remove out-of band signal energy as well as partially reject image band signals. After this prefiltering, the received signal is amplified by a low-noise amplifier (LNA). The IR filter following the LNA further attenuates the undesired signals at the image band frequencies. The desired signal at the output of the IR filter is then downconverted from the carrier frequency to a fixed intermediate frequency (IF) by mixing with the output of a local oscillator (LO).

Low-pass Mixer Filter

RF ADC Bandpass Bandpass LNA Mixer PGA I IR Filter Filter 0° D LO ° 2 S 90 P

Preselection Q LO1 Bandpass (RF) ADC Filter

Low-pass Mixer Filter

Figure 1.4 A generic heterodyne receiver.

In conventional heterodyne receivers, high performance, low voltage- controlled oscillators (VCOs) employed as LOs are realized with discrete components such as high quality (Q) factor , varactors and [3]. At the output of the

6

Chapter 1 Introduction mixer, an IF filter, typically followed by an IF programmable-gain amplifier (PGA), selects the desired channel and reduces the distortion and dynamic range requirements of the subsequent receiver blocks [3]. The signal can be shifted to baseband and demodulated or alternatively further downconverted to lower IFs, and then shifted to baseband and demodulated. Since, at the carrier frequency the desired band and image band are separated by twice the IF, it is desirable to choose a high IF to reduce the requirements on the IR filter. In fact, if the IF is chosen high enough that the RF filter can sufficiently attenuate the image band; it might be possible to directly connect the output of the LNA to the mixer without including an IR filter [24]. On the other hand, since channel selection in a heterodyne system is done at the IF, a low IF allows the employment of higher quality channel-select filters. Therefore, the choice of the IF depends on the trade-off between image rejection and channel selection.

Conventionally, all the filters used in the heterodyne system are high-Q discrete component filters, such as surface acoustic wave (SAW) or ceramic filters. Compared to other receiver architectures discussed below, the heterodyne receiver has superior performance with respect to selectivity, a measure of a receiver’s ability to separate the desired band around the carrier frequency from signals received at other frequencies, and sensitivity, the minimal signal level at the receiver input for which there is sufficient signal-to-noise ratio (SNR) at the receiver output. This is achieved with the use of high-Q discrete components [3], which mainstream CMOS processes do not have.

Thus, the conventional heterodyne receiver is not well suited to be integrated onto a

CMOS single chip.

7

Chapter 1 Introduction

1.3.3 Direct-Conversion Receiver Architecture

Direct-conversion receiver (DCR), also known as homodyne receiver or zero-IF receiver [84], is a natural approach to convert an RF signal directly down to baseband.

This architecture, shown in Figure 1.5, employs low-pass filtering in the baseband to suppress nearby interferers and select the desired channel.

The homodyne architecture has several fundamental advantages over its heterodyne counterpart [8]. The IF stages and the IR filters are removed, furthermore, the absence of the bulky off-chip IR filters removes the requirement on the LNA to drive a low impedance load. The functions of channel selection and subsequent amplification at a nonzero IF are replaced by low-pass filtering and baseband amplification, amenable to monolithic integration [8]. Despite this suitability for higher levels of integration, a homodyne receiver has the following issues that either do not exist or are not as serious in a heterodyne receiver.

Low-pass Mixer PGA Filter

RF ADC

LNA I 0° D LO ° S 90 P

Bandpass Q RF Filter ADC

Mixer PGA Low-pass Filter

Figure 1.5 A generic homodyne receiver [8].

8

Chapter 1 Introduction

DC-Offsets — Perhaps the most serious problem is that of direct current (DC) offsets in the baseband section of the homodyne receiver [4]. These extraneous offset voltages can corrupt the desired signal and/or saturate the following stages. They arise due to the self-mixing phenomenon of the local oscillator or the in-band interferer, aside from the usual element mismatch in the signal path circuitry.

RF

Filter LNA Mixer

IF

LO Self - mixing

Figure 1.6 Self-mixing of the LO and/or of an interfere in homodyne receiver frontend.

To better understand the origin of these offsets, consider the received signal path shown in Figure 1.6. First, the isolation between the LO port and the inputs of the mixer and the LNA is not perfect, and a finite amount of feedthrough exists from the LO port to the other mixer input and to the input of the LNA. Known as LO leakage, this effect arises from capacitive and substrate coupling and, if the LO signal is provided externally, through bond- coupling [21]. The leakage signal appearing at the inputs of the LNA and the mixer is now mixed with the original LO signal, thus producing a

DC component at the output of the mixer [21]. This LO self-mixing can be quite severe, and a time-varying DC-offset occurs when the LO signal leaks out through the antenna, and is radiated and reflected from nearby objects back to the receiver [21]. A similar

9

Chapter 1 Introduction effect occurs if a large interferer in the passband of the RF filter leaks from the LNA output to the mixer LO port and gets multiplied by itself [24].

From the above discussion, we can see that direct-conversion receivers require appropriate methods to remove undesired DC offsets. A simple approach is to use alternate current (AC) coupling in the downconverted signal path [21]. However, the spectra of all the spectrally efficient modulation schemes currently used exhibit significant energy at and around DC, this kind of signals are corrupted by AC coupling filters [4]. A better method is the use of baseband analog and/or digital (DSP) techniques for offset estimation and cancellation [3][24]. However, these techniques add complexity and do not solve the problems associated with 1/f noise at low frequencies in CMOS implementations, another significant issue.

I/Q Mismatch — For most currently used modulation schemes, a homodyne receiver must incorporate quadrature downconversion to avoid loss of information. This requires shifting either the RF signal or the LO output by 90°, generating an in-phase (I) path and a quadrature-phase (Q) path. Since phase-shifting the RF signal generally entails severe noise, power, gain trade-offs [2] and is especially difficult for the wideband signals used in high data-rate systems, it is often desirable to shift the LO output. In either case, the errors in the nominally 90° phase shift and mismatches between the amplitudes of the I and Q signal paths corrupt the downconverted signal constellation, thereby increasing the bit error ratio (BER).

To gain more insight into the effect of I/Q mismatch, and show the versatility and convenience of using complex formulation, consider the practical case where the quadrature LO generates the complex signal:

=+∆+∆ωωφ xtLO( ) cos( LO t ) - j(1 A )sin( LO t ) (1.5)

10

Chapter 1 Introduction

Here ∆A and ∆φ represent LO gain and phase errors. One can rewrite the quadrature

LO output as:

11∆∆φφωω xt( )=+∆+ [1-(1 Aee )j-j ]j-jLOLOtt [1+(1 +∆ Aee ) ] (1.6) LO 22

Ideally, the complex LO output should contain only the negative frequency. However, from the above expression, it is apparent that, due to gain and phase errors, there is a positive frequency component with a magnitude of|1−+∆ (1Ae )j∆φ | /2. This component causes interfering images and, if not compensated, can deteriorate the sensitivity of the receiver.

Aside from the problems mentioned above, direct-conversion receivers are sensitive to even order distortions. Also, since the downconverted spectrum is located around zero frequency, the flicker (1/f) noise of the devices, a severe problem in CMOS implementations [2], has a profound effect on the signal-to-noise ratio (SNR).

Furthermore, integrating the high-frequency low-phase-noise channel select frequency synthesizer is difficult to achieve with low-Q VCOs available in integrated circuits [3].

1.3.4 Wideband IF Double-Conversion Receiver Architecture

Shown in Figure 1.7 is the wideband double-conversion receiver [23]. In this receiver, after filtering and amplification, all potential RF channels are complex mixed and downconverted to IF. A second complex mixing is done from IF to baseband, using a tunable channel-select frequency-synthesizer. In this complex mixer, by properly adding the outputs of the real multipliers in pairs, the image frequencies are canceled while the desired channels add constructively. If the IF is chosen high enough, additional image rejection may be obtained from the RF frontend filter [3].

11

Chapter 1 Introduction

Comparing the homodyne receiver and the wideband IF double-conversion receiver, we can see that channel selection is performed in the baseband in both architectures, allowing the possibility of a programmable integrated channel-select filter for multi-standard receiver applications.

1st Mixing 2nd Mixing

Stage Stage Low-pass Low-pass cos(2πfLO2t) Mixer PGA Filter Filter Adder

RF ADC

LNA I D 0° sin(2πf t) S LO LO2 1 90° P

Bandpass Q Filter ADC

Low-pass Adder Mixer PGA Low-pass Filter 2 f t cos( π LO2 ) Filter

Figure 1.7 A wideband IF double-conversion receiver [23].

However, the wideband IF double-conversion receiver architecture has some advantages over its homodyne counterpart [21]. Due to the fact that channel tuning is performed using the IF LO, the RF LO can be implemented as a fixed-frequency crystal-controlled oscillator [25]. Several techniques may be utilized to realize a low- phase-noise fixed LO with low-Q on-chip components [3]. Also, since tuning is performed with the IF LO operating at a lower frequency, the phase-noise performance

12

Chapter 1 Introduction of this oscillator can be significantly better than that of the tunable RF oscillator employed in a homodyne receiver. Furthermore, since in the wideband IF system there is no LO operating at the same frequency as the incoming RF carrier, the potential problems associated with LO leakage and time-varying DC offsets are minimized [24].

Although in the wideband IF double-conversion receiver the second LO is at the same frequency as the desired IF channel, the DC offset which results at the baseband from self-mixing is relatively constant and may be cancelled using adaptive signal processing methods [3].

The limitations of wideband IF double-conversion receivers are the following:

Since the first LO is fixed in frequency, all channels must pass through the IF stage. The desired frequency channel is selected using the second LO. This has two problematic implications: First, as a result of moving the channel selection to a lower frequency, the

IF synthesizer requires a VCO with the capability of tuning across a broader frequency range than a small percentage of the nominal operating frequency. Second, by removing the channel-select filter from the first mixing stage, strong adjacent channel interferers are now a concern for the second mixer stage as well as the baseband blocks. This implies a higher dynamic range requirement for these latter receiver stages [25]. Also,

I/Q phase and gain mismatch degrade the performance of the receiver [3].

1.3.5 Low-IF Receiver Architecture

The idea behind low-IF topologies is to combine the advantages of both heterodyne and homodyne receivers [23]. Figure 1.8 shows a low-IF receiver architecture [84], in which the IF is usually chosen at a low frequency, typically at a few hundred KHz. Low-IF architectures are suitable for the integration since they provide

13

Chapter 1 Introduction on-chip image rejection, and the channel selection can be done by using a low-Q filter following the mixer. Unlike the zero-IF architecture, a low-IF receiver is not sensitive to the parasitic DC offset, LO leakage, and even-order distortion [3]. Low-IF architectures also provide flexibility for processing the signal in multiple ways. One of the drawbacks of this architecture is its limited image rejection (~40 dB) due to the on-chip matching between I and Q generators [84]. Without proper pre-filtering, the dynamic range and resolution requirement on an analog-to-digital (A/D) converter can substantially increase. Also, an increase in current consumption results when this topology is used for wide-channel bandwidth application.

PGA Phase Shifter Mixer ° RF 90 LNA I

° D 0 Adder LO ADC S 90 ° P Low-pass Q Band-pass Filter Filter

Mixer PGA

Figure 1.8 A generic low-IF receiver architecture [84].

1.3.6 Selection of Transceiver Architecture in This Work

In order to select a well suited transceiver architecture for this work on multi- standard CMOS single-chip transceivers, based on the above analysis, the aforementioned receiver architectures, namely, heterodyne, homodyne, wideband IF

14

Chapter 1 Introduction double-conversion, and low-IF, were compared by using following Table 1.1. In this table, eight important aspects in the receiver design are ranked as ‘+’ and ‘++’, which stands for ‘advantage’ and ‘outstanding advantage’, ‘-’ and ‘--’, which stands for

‘disadvantage’ and ‘severe disadvantage’, or ‘NO’, which stands for ‘no need to consider’. From Table 1.1, we can see that the low-IF receiver architecture has the most advantages. Thus, the low-IF receiver architecture is chosen in this work.

Wideband Dual Architecture Heterodyne Homodyne Low-IF Conversion Items

Sensitivity ++ - ++ +

Image reject ++ NO + +

DC offset NO -- NO NO

Flicker noise NO -- - -

IQ mismatch - -- - --

Multi-standard -- ++ ++ ++ compatibility

Integratebility -- ++ ++ ++

Simplicity -- ++ -- +

Table 1.1 Advantages and disadvantages of different receiver architectures.

15

Chapter 1 Introduction

1.4 Analysis of RF Quadrature Generation Techniques

1.4.1 Introduction

As discussed in section 1.2, quadrature conversion is dominant in modern wireless transceiver design, because frequency modulation and phase modulation are deployed in most digital communication systems. In the low-IF receiver architecture we chose, quadrature signal generation is an important function block, because quadrature accuracy, that is the accuracy of 90° phase-shifted signal, directly determines the image reject ratio (IRR), an important specification determining the sensitivity of the receiver

[23].

Generally, there are four quadrature generation techniques; namely, Havens’ technique, Frequency division, RC-CR networks and RC polyphase filters (PPFs).

Although RC PPFs are cascaded RC-CR networks, there are significant differences between them in CMOS implementation. Thus, we take RC PPFs as an independent quadrature generation technique based on the ‘stagger-tuning’ techniques [55] used in this circuitry.

1.4.2 Haven’s Technique

Figure 1.9 shows a schematic implementation of Haven’s technique [84]. This schematic consists of a phase splitter (phase shifter), two first limiters, two adders, and

two further limiters. The phase splitter first splits the input signal Vin , creating 2 paths,

° namely, VI, mid and VQ, mid , with approximately 90 phase difference, then adds and

subtracts them, producing the output signals VIout and VQout .

16

Chapter 1 Introduction

In Haven’s technique, if VI, mid and VQ, mid have equal amplitudes, the angle

° between VIout and VQout is equal to 90 . The limiting stages will equalize the amplitudes

of VI, mid and VQ, mid by phase shift circuit. Moreover, the adders’ outputs will have

° different amplitude if the phase difference between VI, mid and VQ, mid is not exactly 90 .

Another amplitude mismatch in Haven’s technique is the capacitive coupling between the inputs of adders [23]. This may have significant effect in the phase imbalance at the input, if output impedance of the limiter is not small.

Limiter Adder Limiter

VI, mid + Phase VIout Splitter +

Vin ≈90o - VQout V Q, mid + Limiter Adder Limiter

Figure 1.9 Schematic of Haven’s technique [84].

1.4.3 Frequency Division

As shown in Figure 1.10, the idea of frequency division is to use a master-slave

flip-flop to divide a signal by a factor of 2, if Vin has an exact 50% duty cycle, then

° there is an accurate 90 phase difference between VIout and VQout [23].

Generating quadrature signals using frequency division at radio frequency has the following main disadvantages:

17

Chapter 1 Introduction

• It consumes a substantial power to generate a reference signal whose frequency

is twice the operating frequency; for some CMOS processes with low cut-off

frequency, this is simply impossible. For example, in the Fraunhofer-Institut

für Mikroelektronische Schaltungen und Systeme (Fraunhofer-IMS) 0.6 µm

CMOS process, the cut-off frequency is only 4.5 GHz; it is impossible to use

frequency division for generating quadrature LO signal in the low-IF Bluetooth

receiver, because a 4.9 GHz reference signal is required.

• There is a considerable phase mismatch when the input duty cycle deviates

from 50%, further more, mismatch in the signal path through the latches also

contribute to the phase mismatch.

Latch

V V V Iout in Qout

Latch

Figure 1.10 A frequency divider as a quadrature generator [84].

1.4.4 RC-CR Networks

An RC-CR (R-resistor, C-capacitor) network is a quadrature generation technique

π π that shifts phases of the two signal paths by + and − respectively [23]. As shown 4 4 in Figure 1.11, this circuit consists of a low-pass filter and a high-pass RC filter in two

signal paths. In the RC-CR network, the phase differences between VIout and VQout is

18

Chapter 1 Introduction

90° for all frequencies, however, the amplitudes of the outputs are equal only at the corner frequency of the RC filter, that is, ω equals to 1/(RC ). As the absolute values of the RC network vary with temperature and process, the corner frequency also varies; it is thus impossible to get a robust quadrature signal in CMOS technology by using RC-

CR networks. Moreover, this technique is only suitable for narrow band operation, because a good gain matching between two quadrature outputs can only be achieved with a very narrow band centered on the corner frequency of this RC-CR network.

C Low-pass R Filter

VIout

Vin C

VQout High-pass R Filter

Figure 1.11 RC-CR networks as a quadrature generator [84].

1.4.5 RC Polyphase Filter (PPF)

From the above discussions, we can see that traditional quadrature generation techniques widely used in processes with high precision resistors and capacitors are not well suited to CMOS implementation. Therefore, alternative circuitries, which are

19

Chapter 1 Introduction robust against component mismatch and process variation, are needed. At this point, we would like to point out that process variation is often also termed as process tolerances.

Originally, polyphase filters (PPFs) were developed by Gingell [45, 46] in 1971 for generating quadrature signals with even amplitude in audio. In 1994, integrated

PPFs were rediscovered as an efficient RF quadrature generation technique in CMOS technology by Steyaert [55]. This has introduced PPFs into a new regime, which we name as RF CMOS PPFs.

R1 Rm Rn

VIout +

C1 Cm Cn Vin +

R1 Rm Rn V + Qout C C C 1 m n R R R 1 m n − VIout

− Vin C1 Cm Cn

R1 Rm Rn − VQout

C1 Cm Cn

stage 1 stage m stage n

Figure 1.12 Polyphase filter as a quadrature generator [55].

20

Chapter 1 Introduction

The topology of PPF is shown in Figure 1.12, and it can be viewed as ‘n’ stages of RC networks in cascaded connection [55]. Each stage is composed of four identical resistors and four identical capacitors. The resistors and capacitors vary from stage to

− − stage. In Figure 1.12, Vin + and Vin are the differential inputs, VIout + and VIout are

− differential outputs of the I path, VQout + and VQout are the differential outputs of the Q path.

The principle of PPFs is a so-called ‘stagger tuning’ technique [55], that is, by using two or more cascaded stages of RC-CR networks, the amplitude of the quadrature signal generated can be smoothed, and the bandwidth can be extended. As a quadrature generator, PPFs have the following advantages over other traditional quadrature generation techniques [56]:

• They are simple in implementation, because only resistors and capacitors are

used.

• Since a stagger-tuning technique is used in PPFs, they can overcome the

problems brought by CMOS process variation without any other complicated

tuning circuitry.

• They are well suited for wideband quadrature signal generation.

The above-mentioned features make PPFs well suited for the CMOS implementation, and nowadays, PPFs are widely used as quadrature generators at radio frequency (RF). In this work, we name them as RF CMOS PPFs for this specific application.

Though PPFs are well suited to function as RF quadrature in a

CMOS process, they have the following disadvantages:

21

Chapter 1 Introduction

• Being passive filters, RF CMOS PPFs have insertion loss of 3 dB/stage.

Buffers, i.e. , are usually needed to compensate the signal attenuation.

For high accuracy quadrature signal generation, multiple cascaded stages are

needed in the PPFs, and the buffers are power hungry.

• If PPFs are used in the signal path, thermal noise of the resistors deteriorates

the noise figure (NF) of the receiver.

The problems mentioned above can be overcome or reduced by the following techniques:

• In order to reduce power consumption of quadrature generation in wireless

transceiver design, direct-connection between voltage-controlled oscillator

(VCO) and RF CMOS PPFs can be used. Borremans [60] successfully

demonstrated that it is viable to connect RF CMOS PPF directly to VCO, thus

power-hungry buffers can be skipped.

• If RF CMOS PPFs are used in the signal path, proper values of resistors can be

chosen to avoid deteriorating noise figure (NF) of the receiver. The values of

resistors in the first stage of a PPF should be determined by the output

impedance of the preceding component, for example, the LNA. And the values

of resistors in the last stage of the PPFs should be as close as possible to 50

Ohms. By using this configuration, influences of the resistors on NF of the

receivers can be controlled in an acceptable range [32].

From the above discussions, we find that RF CMOS PPFs have advantages over other conventional quadrature generation techniques in simplicity, bandwidth and robustness against CMOS process variation. Moreover, frequency division technique is

22

Chapter 1 Introduction not applicable in our project, thus, PPF is chosen as the quadrature generator in this dissertation.

1.5 Limitations of Previous Works

Originally developed for generating quadrature signals with even amplitude in audio by Gingell [45, 46], PPFs have received a lot of attention in both theoretical analysis and practical designs [45-54]. In his doctoral dissertation, Gingell [48] did some simple analytical work for guiding the practical designs. As in discrete components implementation, matching and absolute values of resistors and capacitors are under control by properly selecting components, process variation is not an issue for this application. And in low frequency applications of PPFs, parasitic effects are usually not under consideration.

In 1994, integrated PPFs were rediscovered as an efficient RF quadrature generation technique in CMOS technology by Steyaert [55]. Design of integrated RF

CMOS PPFs faces many challenges, which were not considered by the pioneers. In

1994 and 1995, Schmidt [53] and Tetsuo [54] analyzed the PPFs in a systematic way by using vector analysis. Though vector analysis of PPFs provides insight into the mathematic representation of PPFs, it is too abstract for the designer to get quantitative results of the influences from process tolerance and components mismatch on the quadrature accuracy of the RF CMOS PPFs.

The most comprehensive and important contribution so far in RF CMOS PPFs design is from Behbahani [62]; he analyzed practical design aspects and presented some

23

Chapter 1 Introduction design guidelines. For understanding the limitations of the design guidelines, let us analyze the main factors that should be considered in the design of an RF CMOS PPF.

1. CMOS process variation can be as much as 20%. The bandwidth of RF CMOS

PPFs should be extended so that the band of interest can be covered even the

worst case of the process variation occurs.

2. Quadrature accuracy (QA) is determined by component matching between the I

path and the Q path. In order to get good component matching, the layout of

resistors and capacitors should have large areas.

3. Parasitic effects in the RF CMOS PPFs cause signal losses and noise coupling

problems. Specifically, parasitic capacitors cause noise coupling from both

substrate and neighboring components; parasitic resistors make signal loss

more severe than the theoretical value of 3 dB insertion losses in each stage of

passive RC filters. In order to reduce unwanted parasitic effects, the layout of

resistors and capacitors should be kept as small as possible.

4. Compared to active components, in CMOS RF transceivers, passive

components usually consume more chip area, which is a main factor of cost. It

is thus required to design chips as small as possible.

From the above discussions, we can see that the main specification of the RF

CMOS PPF, quadrature accuracy, is very layout dependent; and the requirements from component matching is contradictory to that of minimization of noise coupling, signal loss and chip area. Thus, a tradeoff, that is, an optimization, must be made in a specific design. By simply following Behbahani’s guidelines [62], it takes intensive trials and many design iterations to reach a good design. Furthermore, with layout considerations,

24

Chapter 1 Introduction optimization of RF CMOS PPFs cannot be achieved by using analytical calculations, because of many constraints and tradeoffs in the design.

In this situation, a computer-aided analysis and design optimization tool for RF

CMOS PPFs is of great help to the community of RF CMOS PPFs designers, especially for industrial projects, which are under time-to-market pressures. However, until now, there has not been such a dedicated tool available in the open literature, to the author’s best knowledge.

1.6 Objectives and Contributions of This Dissertation

In order to solve the problems discussed in the previous section, the objective of this dissertation is to contribute a computer-aided analysis and design optimization tool for RF CMOS PPFs, which is in need for the community of RF CMOS PPFs designers.

Based on the whole design flow and the silicon success of an RF CMOS PPF for a

Bluetooth low-IF transceiver in the Fraunhofer-IMS 0.6 µm CMOS process, this dissertation has the following important contributions:

1. PPFANA, a dedicated computer-aided software tool developed by the author

for analyzing the influences from the nonideal effects, namely, process

tolerances and component mismatch on the quadrature accuracy of the RF

CMOS PPFs, is presented.

2. Physical design considerations for RF CMOS PPFs in system-on-a-chip (SoC)

solution are proposed by the author through the analysis of the influences

from parasitic effects in SoC.

25

Chapter 1 Introduction

3. Silicon success of an RF CMOS PPF for a low-IF Bluetooth receiver using

the Fraunhofer-IMS 0.6 µm CMOS process is reported.

4. The methodology of optimization of RF CMOS PPFs with layout

considerations by using genetic algorithms (GAs) is illustrated.

5. PPFOPTIMA, a computer-aided synthesis and optimization tool for RF

CMOS PPFs developed by the author, is presented.

6. Dedicated worst-case simulation and Monte Carlo (MC) simulation toolboxes

for verification of the performance of RF CMOS PPFs are illustrated.

1.7 Outline of This Dissertation

Chapter 1 begins with a discussion on CMOS single chip wireless transceivers, and then advantages and disadvantages of the state-of-the-art transceiver architectures are analyzed. Based on the analysis, the low-IF receiver architecture is chosen for the

CMOS single-chip Bluetooth transceiver design. RF quadrature signal generation is an important functional block in modern wireless transceiver design. Through the analysis of quadrature generation techniques, PPF is chosen as the RF quadrature generator in our low-IF Bluetooth receiver. Existing problems in analysis, design and optimization of RF CMOS PPFs are analyzed, limitations of previous work in this topic are pointed out, and then objectives and contributions of this dissertation are clarified.

In chapter 2, nonidealities in RF CMOS PPF design, namely, process tolerances and component mismatch, are analyzed by using the transfer function of PPFs.

PPFANA, a computer-aided software tool for analysis of influences from process tolerances and component mismatch on the quadrature accuracy (QA) of RF CMOS

26

Chapter 1 Introduction

PPFs developed by the author, is described. Based on the simplified RF models of resistors and capacitors, parasitic effects and their influences on RF CMOS PPFs are analyzed; techniques for minimizing unwanted noise coupling and signal losses are proposed and evaluated.

Based on the analytical results from chapter 2, physical design considerations for

RF CMOS PPFs to be implemented in System-on-a-Chip (SoC) solutions are proposed in chapter 3. The author designed an RF CMOS PPF for a low-IF Bluetooth receiver by using the Fraunhofer-IMS 0.6 µm CMOS process. The designed chip has been fabricated at the Fraunhofer-IMS in Duisburg. The author characterized the performance of the fabricated RF CMOS PPF by measurements. The design, fabrication, measurement procedure and measurement results are presented in chapter 3. Silicon success of this design lays a solid foundation for this dissertation.

Quadrature accuracy (QA), the main specification in design of an RF CMOS PPF is determined by component matching which requires large chip area; however, in order to minimize unwanted noise coupling, signal loss and the cost, the chip area must be minimized. Thus, a tradeoff among these design parameters, that is, an optimization, must be made in the design. Chapter 4 is committed to the optimization of RF CMOS

PPFs. First, the optimization problem is formulated with design specifications and constraints. Then, possible optimization algorithms like calculus-based optimization, gradient descend, simulated annealing (SA) and genetic algorithms (GA) are analyzed by the author. Based on the results of the analysis, GA is chosen as the optimization engine because of its advantages in escaping from local optima. The author implemented PPFOPTIMA, a GA based optimization tool for RF CMOS PPFs by using

MATLAB. In order to facilitate designers in design automation, this tool has been

27

Chapter 1 Introduction further developed into a synthesis and verification environment for RF CMOS PPFs by the author, and the detailed implementation of PPFOPTIMA is described in chapter 4.

Experiments on multistage RF CMOS PPFs for a given standard, and experiments on automated synthesis of RF CMOS PPF for different standards, such as, global system for mobile communications (GSM), digitally enhanced cordless telephony (DECT) and wide-band code division multiple access (WCDMA) demonstrate that PPFOPTIMA is effective and efficient in synthesis, optimization, and verification of RF CMOS PPFs.

In chapter 5, contributions and conclusions from this dissertation are summarized, and directions for possible future work are pointed out.

28

Chapter 2 Analysis of Nonidealities in RF CMOS PPFs

Chapter 2 Analysis of Nonidealities in RF CMOS PPFs

2.1 Introduction

Polyphase filters (PPFs) were invented by Gingell [45, 46] in 1971, for generation of quadrature signals with even amplitude in audio. At that time, PPFs were implemented by using discrete components. In his doctoral dissertation, Gingell [48] did some simple analytical work for guiding the practical design. In 1994 and 1995,

Schmidt [53] and Tetsuo [54] analyzed the PPFN in a systematic way by using vector analysis.

In 1994, integrated PPFs were rediscovered as an efficient RF quadrature generation technique in CMOS technology by Stayaert [55], introducing PPFs into a new regime, which we name as RF CMOS PPFs. The design of integrated RF CMOS

PPFs faces many challenges, which were not considered by the pioneers. In 2000, Galal

[58, 59] analyzed the sensitivity of the RF CMOS PPFs in RF integrated transceivers. In

2001, Behbahani [62] analyzed the application of RF CMOS PPFs in image rejection.

However, results from the open literature on the analysis of PPFs listed above have the following limitations:

29

Chapter 2 Analysis of Nonidealities in RF CMOS PPFs

1. Gingell worked on audio frequency single sideband modulation [45-49]. At

such low operating frequencies, the influences from parasitic resistors and

capacitors are negligible. Thus, they were not considered in his publications.

2. In discrete components implementation of PPFs, components can be selected

with any given specifications. Thus, component mismatch was not analyzed in

[50-54].

3. References [55-61] provide useful information about the analysis and the

design of RF CMOS PPFs. However, until today, nonidealities, such as,

process tolerances, component mismatch and parasitic effects, which are

critical in RF CMOS PPF design and optimization, were not analyzed in a

systematic way.

4. Though vector analysis of PPFs [53, 54, 62] provides insight into the

mathematic representation of PPFs, it is too abstract for the designer to get

quantitative results about the influences from process tolerance and

components mismatch on the quadrature accuracy (QA) of RF CMOS PPFs. A

dedicated computer-aided software tool for solving this problem is required by

the design community of RF CMOS PPFs. However, this kind of computer-

aided tool has not been available to the author’s best knowledge.

In order to solve the shortcomings mentioned above, based on the explicit transfer functions of PPFs, PPFANA, a dedicated computer-aided software tool for the

30

Chapter 2 Analysis of Nonidealities in RF CMOS PPFs

analysis and the simulation of influences from process tolerances and component mismatch on the quadrature accuracy of the RF CMOS PPFs, has been developed by the author, PPFANA will be presented in this chapter. By using simplified RF models of resistors and capacitors, parasitic effects in RF CMOS PPFs are analyzed. Furthermore, techniques for minimizing unwanted noise coupling and signal loss are proposed.

2.2 Vector Analysis of Polyphase Filters (PPFs)

A polyphase signal is a set of two or more vectors having the same frequency but different phases [59]. If its vectors have the same magnitude and are equally spaced in phase, it is said to be symmetric. Consequently, a symmetric four-phase signal consists of two vectors of equal magnitudes having the same frequency and being separated in phase by 90 degrees.

In general, polyphase filter networks (PPFNs) are networks having N input terminals and N output terminals [54]. These networks are physically symmetric in a way that the paths from each input to the corresponding output are symmetric. A PPFN is driven by a polyphase signal consisting of a number of vectors that correspond to the number of inputs of the PPFN. Although PPFNs are physically symmetric, they exhibit asymmetric responses to inputs of opposite polarities [54]. This sequence- discrimination property is the reason behind the name ‘sequence asymmetric’ [54]. The

31

Chapter 2 Analysis of Nonidealities in RF CMOS PPFs

response of a four-phase PPFN driven by a symmetric four phases input signal will be analyzed now. Since the four phases are symmetric, the chain matrix of a single phase represents the chain matrix of the network. The response of the same network to asymmetric inputs can be derived by resolving the input into a summation of symmetric inputs. Applying the rules of linear superposition, the output of the PPFN is then considered as the sum of the outputs cascaded by each symmetric input alone.

jθ e Vk ,in

Y2

Ik,in Ik,out Y1

V V k,in Y k,out 2

eV-jθ k ,out

Figure 2.1 One phase of a generalized N-phase PPFN.

Figure 2.1 shows the structure of one phase of a generalized N-phase PPFN,

where admittance Y1 is connected between the input and the corresponding output, and

admittance Y2 is skewed between the input and output of adjacent phases. Since the input is symmetric and the PPFN is physically symmetric, we expect the output to be also symmetric. The chain matrix of a single phase can be written as [58]:

+ VVkk,in1 YY, 1  ,out  = 12 (2.1) + jθ −+θ   IYYYYIkk,inYeY122 1 2 (1 cos ), 1 2  ,out 

32

Chapter 2 Analysis of Nonidealities in RF CMOS PPFs

θ Where represents the relative phase difference between V1 and the neighboring inputs,

θ jθ which in turn determines the polarity of the inputs. If <0, Vk,in will be leading e Vk ,in

θ in phase, which causes the inputs to be positive. On the other hand, if > 0, Vk,in will be lagging, thus causing the inputs to be negative.

Resistance–capacitance (RC) PPFNs are a special case of sequence asymmetric

ω PPFNs in which YR1 is equal to 1/ and YC2 is equal to j . The structure of an RC

four-phase PPFN is shown in Figure 2.2. In the following figure, Vk ,in ,Vk ,out , k=1,2,3,4, are the four inputs and the four outputs of the RC PPFN, respectively.

R V V1,in 1,out C

R V V2,in 2,out C

R

V3,in V3,out C

R V V4,in 4,out C

Figure 2.2 One-stage of an RC sequence asymmetric PPFN.

33

Chapter 2 Analysis of Nonidealities in RF CMOS PPFs

In four-phase PPFNs such as shown in Figure 2.2, the value of θ is either π / 2 or −π / 2 according to the polarity of the inputs. For such PPFNs, the chain matrix for positive inputs can be written as [59]:

VVkk,in1 1j+ ωRC , R  ,out  = , (2.2) +ω ωω+   ICRCIkk,in1 RC 2j ,1 j  ,out  while for negative inputs, we find [59]:

VVkk,in1 1+ jωRC , R ,out = . (2.3)  −ω ωω+ ICRCIkk,in1 RC 2j ,1 j ,out

The open-circuit voltage transfer function for the negative part of the inputs is

found for I k,out equals to zero [59]:

V 1-ωRC H(ω ) ==k ,out , (2.4) + ω Vk ,in 1jRC while for the positive part of the inputs, we yield [59]:

V 1+ωRC H(−=ω ) k ,out = (2.5) + ω Vk ,in 1jRC

Sequence-asymmetric PPFNs can be considered as a generalized structure of the classical RC–CR network used for quadrature signal generation. Consider the M-stage four-phase PPFN shown in Figure 2.3(a), having a positive part of the outputs transfer function H(ω) and a negative part of the outputs transfer function H(−ω) , where

H()ωω≠− H( ) . The PPFN is driven by only two phases representing a differential input signal, while the other two inputs are connected as shown in Figure 2.3 (a). Figure 2.3(b)

34

Chapter 2 Analysis of Nonidealities in RF CMOS PPFs

shows the phasor representation of the input sequence which consists of two vectors separated in phase by 180 degrees.

V1,in V1,out

V2,in PPFN V2,out

V V3,in V3,out H(ω) V4,in V4,out

(a)

V / 2 V /4 V /4 1 1 1 4 2 2 4

= jV / 4 −jV / 4 + jV / 4 −jV / 4 3 3 3

− V / 2 −V /4 −V /4

Inputs Negative part of the outputs Positive part of the outputs

(b)

Figure 2.3 Quadrature signal generation using four-phase PPFNs

(a) Circuit diagram.

(b) Decomposition of the two-phase inputs into two parts of four-phase outputs.

To be able to understand how quadrature phases are generated from a single input, the inputs can be represented as the sum of two parts of four-phase outputs of different

35

Chapter 2 Analysis of Nonidealities in RF CMOS PPFs

polarities. Using linear superposition, the PPFN output can be expressed as the sum of the outputs, separately. It should be noted that the voltage transfer function for any phase in the positive part is H(ω) , while that for any phase in the negative part is

H(−ω) . Thus, the output phases can be written as:

V V (ωωω)((H()H(-=+)) , (2.6) 1,out 2 V V (ωωω)= -j ((H( )-H(- )) , (2.7) 2,out 2 V V (ωωω)-((H()H(-=+)) , (2.8) 3,out 2 V V (ωωω)= j ((H( )-H(- )) . (2.9) 4,out 2 ωω− If we consider the in-phase component to be VV1,out( )( 3,out ) , and the

ωω quadrature-phase component VV2,out( )- 4,out ( ) , then we find:

ωωω=+ VVI ( )(H()H(-)) , (2.10)

ωωω= VVQ ( ) -j (H( )-H(- )) , (2.11)

The ratio of the quadrature-phase to the in-phase outputs of an RC single stage four-phase PPFN can be derived by substituting for H(ω) and H(−ω) . With (2.4) and

(2.5), we yield from (2.10) and (2.11),

V (jω ) Q = jωRC (2.12) ω VI (j )

The disadvantage of the described PPFN is its limited frequency range within which good gain matching can be achieved between quadrature outputs. The two outputs, although in quadrature, have equal amplitudes only at a frequency equals to

1/RC , which limits the use of this PPFN to narrow-band applications. Furthermore, the

36

Chapter 2 Analysis of Nonidealities in RF CMOS PPFs

gain and phase matching of the quadrature outputs is highly sensitive to the RC mismatch.

To achieve broadband quadrature with better gain matching and reduced sensitivity to components mismatch, a two-stage PPFN could be employed [65]. The two outputs have equal amplitudes at two frequencies corresponding to the resonant frequencies of each stage. The voltage transfer ratio can be derived by multiplying the chain matrix of the two stages and evaluating the open-circuit voltage transfer function.

From (2.10) and (2.11), we yield [65]:

V (jω ) jω()RC+ RC Q = 1 122 (2.13) ωω+ 2 VI (j) 1 (RRCC11 2 2)

This creates a wide-band quadrature generator defined by the resonant frequencies

π π 1/ 2 R1C1 and 1/ 2 R2C2 . For any input signal with frequencies lying in this band, the quadrature outputs are matched well in terms of gain and phase. The maximum gain

ω error occurs at frequency max , corresponding to the geometric mean of the two resonant frequencies. The maximum gain error at this frequency is given

V (jω ) R CRC+ Q ω = 11 2 2 , (2.14) ω max VI (j ) 2 (R1RCC222)

ω 1 where max is equal to . ()R1RCC222

37

Chapter 2 Analysis of Nonidealities in RF CMOS PPFs

2.3 PPFANA, a Software Tool for RF CMOS PPFs

2.3.1 Overview

As discussed in the first chapter, vector analysis is very helpful in understanding the mathematical representation of PPFs; however, it is too abstract for the designer to get quantitative calculation on the quadrature accuracy (QA) of the PPFs. Furthermore, in design and optimization of RF CMOS PPFs, it is of great importance to analyze and simulate QA influenced by process tolerances and component mismatch. Unfortunately, there is not any efficient simulation tool openly available. Thus, PPFANA, a software analysis tool for solving the problems mentioned above has been developed in this work.

The core of PPFANA is made up from explicit transfer functions, which will be derived in the following subsection.

2.3.2 Explicit Transfer Function of RF CMOS PPFs

Explicit transfer functions of RF CMOS PPFs are obtained by multiplying chain matrices of each cascaded stages, then separating the real and imaginary parts. The relation between input and output can thus be expressed by values of resistors and capacitors and the operating frequency, explicitly.

In CMOS wireless transceiver RF front-end design; 2-stage, 3-stage, and 4-stage

RF CMOS PPFs are most widely used [68]. RF CMOS PPFs with more than four

38

Chapter 2 Analysis of Nonidealities in RF CMOS PPFs

cascaded stages are rarely used because of their severe insertion loss. For passive filters, there is a theoretical insertion loss of 3dB/stage. We therefore derive the explicit transfer function of a 4-stge RF CMOS PPF. Those of 2-stage and 3-stage RF CMOS

PPFs can be derived by the same method used here. Details of the derivation are given in appendix 2 of this dissertation.

The transfer function of 4-stage RF CMOS PPFs is set out from

Vin1  1+jω R 1 C 1 R 1  =  ωω   Iin1-ω R11 C  2j C 1 1+j R 1 C 1  1 1+jω R22 C R 2

ωω 1-ω R22 C 2j C222 1+j R C (2.15) 1 1+jω R33 C R 3

ωω 1-ω R33 C 2j C333 1+j R C 1 1+jω R44 C R4  Vout  .  ω ω   1-ω R44 C 2j C4 1+j R44 C I out 

The complex transfer function of the 4-stage RF CMOS PPF is given by

N(jω) H(jω )= , (2.16) D(jω)

N(j)=(1-RC)(1-RC)(1-RC)(1-RCωω1 1223344 ω ω ω) , (2.17)

D(jωωω )=DRI ( )+jD ( ) , (2.18)

2 DR(ωω )=1- (RRCC+RRCC+RRCC1212 1313 2323

+RRCC+RRCC+RRCC 1 4 1 4 2 4 2 4 3 4 3 4

+2R1314 R C C +2R 2324 R C C +2R 1224 R C C

+2R1214 R C C +2R 1334 R C C +2R 2334 R C C (2.19)

+2R1323 R C C +2R 1223 R C C +2RRCC1424

+2R1434 R C C +2R 2434 R C C +2R 1213 R C C 4 +4R1 R324 C C )+ω (R 12341234 R R R C C C C ),

39

Chapter 2 Analysis of Nonidealities in RF CMOS PPFs

D(Iωω )= (RC+RC+RC+RC+2RC+2RC+2RC 11223344341213 3 +2RC+2RC+2RC)- 2 3 2 4 1 4ω (RRRCCC 1 2 3 1 2 3

+RRRCCC+RRRCCC+RRRCCC124124 134134 234234 (2.20)

+2RRRCCC+2RRRCCC+2RRRCCC123124 123234 123134

+2RRRCCC+2RRRCCC+2RRRCCC1 34234 124234 124134).

Equation (2.15) can also be expressed as:

H(jωω )=H12 (j )+jH (j ω) , (2.21)

1+aωω2 +b 4 H(j1 ω )= , (2.22) D(jω )

a=RRCC+RRCC+RRCC1 212 1313 2323 , (2.23) +RRCC+RRCC+RRCC 1414 2424 3434

b=R1 R234123 R R C C C C4 , (2.24)

cj+djωω3 H(j2 ω )= , (2.25) D(jω )

c=R1 C122334 +R C +R C +R C4 , (2.26)

d=RRRCCC+RRRCCC1 23123 124124 . (2.27) +RRRCCC+RRRCCC 134134 234234

2.3.3 Development of PPFANA

With the explicit transfer functions we derived in subsection 2.3.2, the quadrature accuracy of an RF CMOS PPF with given values of resistors, capacitors and operating frequency can be calculated by using MATLAB. In order to make it easy to use, graphical user interfaces (GUIs) have been developed for PPFANA. The GUI of

PPFANA for 4-stage RF CMOS PPFs is shown in Figure 2.4. The GUIs for the 2-stage and 3-stage RF CMOS PPFs are similar to this one.

40

Chapter 2 Analysis of Nonidealities in RF CMOS PPFs

Figure 2.4 Graphical user interface of PPFANA for 4-stage RF CMOS PPF.

In PPFANA, quadrature accuracy (QA), is measured by gain mismatch (GM) and phase mismatch (PM), the smaller GM and PM are, the better QA is. From Figure 2.4, we can see PPFANA has following features:

• QA influenced by process tolerance (PT) and component mismatch (CM) can

be analyzed independently.

41

Chapter 2 Analysis of Nonidealities in RF CMOS PPFs

• QA influenced by PT and CM can be analyzed at the same time.

• Worst-case QA can be analyzed.

• Default values for an RF CMOS PPF designed for a low-IF Bluetooth receiver

in Fraunhofer-IMS 0.6 µm CMOS technology are given as an example for new

users.

In the following sections, simulation results for QA influenced by PT and CM will be presented. The simulation results will be compared with those obtained with the commercial RF circuit simulator-Cadence SpectreRF to verify the effectiveness of

PPFANA.

2.4 Analysis of Quadrature Accuracy in Ideal PPFs

In this section, the quadrature accuracy (QA) of ideal PPFs is investigated by using

ω ω PPFANA. In the transfer function derived in the last section, H1(j ) , H2 (j ) are complex signal of the I, Q path respectively. From the definition of complex numbers,

we can derive the module and the complex angle. Gain mismatch, mgain , and phase mismatch, ∆φ , can be expressed by

=−ωω mgain| 20log 10 | H 1 ( j ) | 20log 10 | H 2 (j ) || , (2.28)

=∠ωω ∠ ° mjjphase||H()-H()|-90 1 2 | . (2.29)

42

Chapter 2 Analysis of Nonidealities in RF CMOS PPFs

Notice that in Cadence simulations, it is more convenient to get phase difference, dphase , than phase mismatch, ∆φ , between I path and Q path by using AC simulation. For the

purpose of comparison, we define a parameter, phase difference, d phase as

=∠ωω ∠ dphase| H(j 1 )- H(j 2 )|. (2.30)

∆φ Please note that in all of the equations related to mgain , , dphase used in this dissertation, the angular frequency ω is used for the convenience of expression of complex. Whereas

in all of the figures related to mgain , mphase , dphase , frequency f is used for the purpose of comparison with Cadence simulation results. It is well known that ω equals to 2πf .

Figure 2.5 Gain mismatch in ideal multi-stage RF CMOS PPFs tailored to

the Bluetooth frequency range 2.4 GH to 2.48 GHz.

43

Chapter 2 Analysis of Nonidealities in RF CMOS PPFs

Three ideal multi-stage (2-stage, 3-stage and 4-stage) RF CMOS PPFs for the frequency band of Bluetooth, i.e., 2.4 GHz to 2.48 GHz, were designed by the author and they were simulated by using PPFANA. Simulation results for the gain mismatch and phase difference in these ideal RF CMOS PPFs are shown in Figure 2.5 and Figure

2.6, respectively.

Figure 2.6 Phase difference in ideal multi-stage RF CMOS PPFs tailored to

the Bluetooth frequency range 2.4 GH to 2.48 GHz.

From above figures, we can see the following:

• For ideal RF CMOS PPFs, at the desired frequency, gain mismatch is almost

zero, and phase difference is almost 90 ° .

• With more cascaded stages, the useful bandwidth with less gain mismatch and

phase mismatch can be extended.

44

Chapter 2 Analysis of Nonidealities in RF CMOS PPFs

In order to compare simulation results, these ideal RF CMOS PPFs were simulated with Cadence SpectreRF as well. Simulation results from Cadence SpectreRF and from PPFANA are listed in the following Table 2.1.

Ideal RF ∆φ mgain /dB /degrees CMOS PPFs PPFANA SpectreRF PPFANA SpectreRF

− − − − 2-stage 10 3 10 3 10 3 10 3

− − − − 3-stage < 10 3 < 10 3 < 10 3 < 10 3

− − − − 4-stage < 10 3 < 10 3 < 10 3 < 10 3

Table 2.1 Quadrature accuracy of ideal RF CMOS PPFs (2.4 GHz to 2.48 GHz),

obtained by using PPFANA and SpectreRF.

From these simulation results listed in the table above, we can see the following:

− • For ideal 2-stage RF CMOS PPFs, the gain mismatch is 10 3 dB and the phase

mismatch is 10−3 degrees.

• For ideal RF CMOS PPFs with more than 2 cascaded stages, the gain mismatch

− − is less than 10 3 dB, and the phase mismatch is less than 10 3 degrees.

Considering computational errors, these values can be taken as zero. Thus, we

can say that ideal RF CMOS PPFs with more than two cascaded stages are

almost perfect in quadrature generation.

45

Chapter 2 Analysis of Nonidealities in RF CMOS PPFs

• The simulation results of PPFANA are in accordance with those of Cadence

SpectreRF. This validates the effectiveness of PPFANA.

2.5 Analysis of Quadrature Accuracy Influenced by Process

Tolerance

In CMOS processes, the actual values of identically designed and fabricated components can be different from wafer to wafer. The variation of the component values in a given CMOS process is called process tolerances, which is also named process variation. In this dissertation, these two terminologies are used without any difference.

In high performance CMOS analog/RF circuit, tuning techniques are usually needed to overcome process tolerances. Most tuning techniques use variable capacitors or variable resistors and additional control circuits, making circuitries complicated. In

RF CMOS PPFs, a special stagger-tuning technique [55] is used. The idea of this technique is to increase the bandwidth of the circuit, to guarantee a proper filter operation despite process tolerances. By using this special and simple tuning technique, conventional tuning techniques [55] are no longer needed in RF CMOS PPFs to overcome the influence from process variations.

46

Chapter 2 Analysis of Nonidealities in RF CMOS PPFs

Let us generalize the equations of GM and PM in multi-stage PPFs and derive expressions for GM and PM influenced by process tolerances (PT). GM and PM in RF

∆φ CMOS PPFs with ideal components are expressed as mgain,ideal and ,

= mgain,idealG(,,RC 1 1LL RCii ,, R n , C n ) (2.31)

∆=φ idealF(,R 1CRCRC 1 ,LLii ,, n , n ) (2.32)

∆φ Then we get GM and PM in RF CMOS PPFs with process tolerance mgain,PT and PT according to

= mRCRCRCgain,PTG(,, PT1 PT1LL PTii ,, PT PTn , PTn ) (2.33)

∆=φ PTF(,RC PT1 PT1 ,LL RC PTii ,, PT RC PTn , PTn ) (2.34) where G , F are gain and phase expressions of RF CMOS PPFs’ transfer functions,

= Ri ,Ci ,1inL , are the nominal values of the resistors and capacitors, and RPTi ,CPTi , in=1L , are the resistors and capacitors with process tolerance.

In this work, gain mismatch and phase mismatch influenced by process tolerances in multi-stage RF CMOS PPFs have been simulated by using PPFANA. These RF

CMOS PPFs are designed for the frequency band of Bluetooth, ranging from 2.4 GHz to 2.48 GHz, using the Fraunhofer-IMS 0.6 µm CMOS technology. In these simulations, the resistors are polysilicon resistors, in which process tolerance is ±16 % , and the capacitors are poly-N+ capacitors, in which process tolerance is ±14 % . Gain mismatch and phase mismatch are the worst value in the frequency band of interest, i.e. 2.4 GHz to 2.48 GHz.

47

Chapter 2 Analysis of Nonidealities in RF CMOS PPFs

Figure 2.7 Gain mismatch influenced by process tolerance

in a 2-stage RF CMOS PPF (2.4 GHz to 2.48 GHz) with regular design.

Figure 2.8 Phase mismatch influenced by process tolerance

in a 2-stage RF CMOS PPF (2.4 GHz to 2.48 GHz) with regular design.

48

Chapter 2 Analysis of Nonidealities in RF CMOS PPFs

Figure 2.7 and Figure 2.8 show the gain mismatch and the phase mismatch influenced by process tolerance in a 2-stage RF CMOS PPFs with regular design, that is, it is designed with lower corner frequency at 2.4 GHz and higher corner frequency at

2.48 GHz without any technique to overcome the influences from process tolerance.

From these figures, we can see the following:

• Process tolerances have significant influence on the gain mismatch of the RF

CMOS PPF, whereas, their influences on the phase mismatch of the RF CMOS

PPF is not that obvious.

• With regular design, RF CMOS PPF is not robust enough to overcome the

influence from process tolerance.

In order to get robust RF CMOS PPFs, the influence of process tolerances on the quadrature accuracy should be overcome. As the ‘stagger tuning’ technique is used in the polyphase filters, in practical design, we can extend the bandwidth to guarantee that the signal frequency band can be covered by worst-case lower and upper corner frequencies. This is the concept of tolerance design [102] in RF CMOS PPFs design.

The 2-stage RF CMOS PPF was redesigned with tolerance design, and the gain mismatch influenced by process tolerances is shown in the following Figure 2.9. From this figure, we can clearly see that, the gain mismatch is no longer sensitive to process tolerance. Thus, tolerance design should be applied in design of RF CMOS PPFs.

49

Chapter 2 Analysis of Nonidealities in RF CMOS PPFs

Figure 2.9 Gain mismatch influenced by process tolerance

in a 2-stage RF CMOS PPF (2.4 GHz to 2.48 GHz) with tolerance design.

RF CMOS ∆φ mgain,PT /dB PT /degrees PPFs PPFANA SpectreRF PPFANA SpectreRF

2-stage 0.220 0.224 0.500 0.509

3-stage 0.015 0.017 0.050 0.053

− − 4-stage 0.002 0.002 < 10 3 < 10 3

Table 2.2 Quadrature accuracy of RF CMOS PPFs (2.4 GHz to 2.48 GHz)

with process tolerance, obtained by PPFANA and SpectreRF

50

Chapter 2 Analysis of Nonidealities in RF CMOS PPFs

In order to compare the quadrature accuracy of multi-stage RF CMOS PPFs influenced by process tolerance and to compare simulation results obtained by using

PPFANA and those by using Cadence SpectreRF, three RF CMOS PPFs with two, three and four cascaded stages, respectively were designed for the frequency band of

Bluetooth with tolerance design. Simulation results for the gain mismatch and for the phase mismatch of these RF CMOS PPFs are shown in Table 2.2, from which we can see the following:

• Quadrature accuracy of RF CMOS PPFs is influenced by process tolerances,

significantly.

• By using more cascaded stages, the quadrature accuracy of the RF CMOS PPFs

can be improved.

• The simulation results from PPFANA are in accordance with those from

Cadence SpectreRF.

2.6 Analysis of Quadrature Accuracy Influenced by

Component Mismatch

In CMOS processes, two neighboring components that are ideally supposed to be identical can have slight differences. This phenomenon is called component mismatch

(CM) [81]. Ideally, in RF CMOS PPFs, components in the I path and in the Q path

51

Chapter 2 Analysis of Nonidealities in RF CMOS PPFs

should be identical; however, in practice, this is impossible to achieve because of component mismatch.

Now, let us generalize the transfer functions of multi-stage PPFs and analyze both the GM and the PM influenced by component mismatch (CM) between I path and Q path, we yield

= mRCRCRCRCgain,ideal| G( I I1 , I1 ,LL In , In )-G( Q Q1 , Q1 , Qn , Qn )|, (2.35)

∆=φ o ideal||F( IRC I1 , I1 ,LL RC In , In )-G Q ( R Q1 , C Q1 , R Qn , C Qn )|-90 | . (2.36)

Furthermore, we get

= mRCRCRCRCgain,CM| G( I ICM1 , ICM1 ,LL ICMn , ICMn )-G( Q QCM1 , QCM1 , QCMn , QCMn )|, (2.37)

∆=φ o CM||F( IRC ICM1 , ICM1 ,LL RC ICMn , ICMn )-F Q ( R QCM1 , C QCM1 , R QCMn , C QCMn )|-90 |.

(2.38)

± In (2.37) and (2.38) RICMkk equals (1 CM)R I , RQCMkk equals (1m CM)R Q , CICMk is

± = (1CM)CIk , and CQCMkk is (1m CM)C Q , kn1L , n is the number of cascaded stages

∆φ in a given RF CMOS PPF. In the equations above, mgain,ideal and ideal are the gain mismatch and the phase mismatch of RF CMOS PPFs with ideal resistors and

∆φ capacitors, mgain,CM and CM are the gain mismatch and the phase mismatch of RF

CMOS PPFs with component mismatch, FI , FQ , G I , GQ are I path and Q path gain and phase expressions derived from multi-stage RF CMOS PPFs’ transfer functions,

RIk ,CIk , RQk ,CQk are nominal values of resistors and capacitors in I path and Q path,

52

Chapter 2 Analysis of Nonidealities in RF CMOS PPFs

RICMk ,CICMk , RQCMk ,CQCMk are values of resistors and capacitors in I path and Q path with component mismatch.

In this work, quadrature accuracy influenced by component mismatch in multi- stage RF CMOS PPFs has been simulated by using PPFANA. These RF CMOS PPFs were designed for the frequency band of Bluetooth, using Fraunhofer-IMS 0.6 µm

CMOS technology. In the simulations, the resistors are polysilicon resistors, and the capacitors are poly-N+ capacitors. In order to compare the quadrature accuracy influenced by different levels of component mismatch, 1% and 2% component mismatch between neighboring resistors, and neighboring capacitors were simulated.

Gain and phase mismatches are the worst value in the band of interest, i.e., 2.4 GHz to

2.48 GHz. The simulation results are shown in Table 2.2.

resistors and capacitors with 1% resistors and capacitors with 2%

RF CMOS component mismatch component mismatch

PPFs ∆φ ∆φ mgain,CM /dB CM /degrees mgain,CM /dB CM /degrees

PPFANA PPFANA PPFANA PPFANA

2-stage 0.210 0.520 0.230 0.530

3-stage 0.025 0.030 0.060 0.090

4-stage 0.015 0.020 0.020 0.050

Table 2.3 Quadrature accuracy influenced by component mismatch in

multi-stage RF CMOS PPFs (2.4 GHz to 2.48 GHz).

53

Chapter 2 Analysis of Nonidealities in RF CMOS PPFs

From the simulation results in Table 2.3, we can see the following:

• Component mismatch has significant influence on quadrature accuracy of RF

CMOS PPF.

• Stronger component mismatch leads to worse quadrature accuracy, that is,

more gain mismatch and phase mismatch.

Though component mismatch cannot be totally eliminated in practice, layout techniques, such as, inter-digitized [77] and common-centroid [77] layout structures, are helpful to reduce the component mismatch to some extend. These techniques will be discussed in the Chapter 3.

2.7 Analysis of Influences from Parasitic Effects

2.7.1 Simplified RF Models of Resistors and Capacitors

There are several types of resistors in CMOS processes; polysilicon resistors [81] are the most favorable selection for RF applications for its area efficiency and comparatively good robustness against parasitic influences. In compact models [75-80], polysilicon resistors are usually modeled as distributed resistors and capacitors. As in our application, the physical dimension of the resistors are much smaller than the wavelength of the Bluetooth RF signal, for the purpose of analysis, we simplify the distributed model into a simplified model as shown in Figure 2.8.

54

Chapter 2 Analysis of Nonidealities in RF CMOS PPFs

From Figure 2.10, we can see that polysilicon resistors with its parasitic capacitance can form a low-pass filter. In RF CMOS PPFs, current flows through resistors. If the corner frequency of the low pass filter formed is lower than that of the signal frequency, the signal is then cut off. This phenomenon is unwanted and should be avoided in RF CMOS PPF design. R In Out

Cpara Cpara

Rsub Rsub

gnd gnd

Figure 2.10 Simplified RF model of a polysilicon resistor [81].

Now, let us investigate how the problem mentioned above can be avoided in the design of RF CMOS PPFs. We have [81]

11 1 f == = , (2.39) RCP 22ππRCLRCL 2 para2π LWR C sh uap W sh uap ≤ fop fRCP , (2.40)

1 L ≤ , (2.41) π 2 fopshuapRC

55

Chapter 2 Analysis of Nonidealities in RF CMOS PPFs

1 L = , (2.42) max,res π 2 fopshuapRC

where fRCP is the corner frequency of the filter formed by the polysilicon resistor and its

parasitic capacitor to the substrate, fop is the operating signal frequency, Rsh is the sheet

resistance of resistor, L is the length of the resistor, Cuap is parasitic capacitance per

unit area to the substrate, Lmax,res is the maximum length of resistors can be used.

From the derivations above, we can see that for a certain CMOS process and a given operating frequency of the RF CMOS PPF, before physical layout, the maximum length of the resistor should be calculated to avoid inappropriate physical design.

Rp1 1

C C p1 Rp2 p1

2

Cp2 Cp2

Rsub Rsub

gnd gnd

Figure 2.11 Simplified RF model of a capacitor [81].

56

Chapter 2 Analysis of Nonidealities in RF CMOS PPFs

In different CMOS processes, there are different kinds of capacitors, e.g. poly- poly capacitors [81], poly-well capacitors [81], MOS capacitors [81], and metal- insulator-metal (MIM) capacitors [81]. The first three kinds of capacitors are fairly standard, whereas MIM capacitors are only available in advanced CMOS processes [81].

RF capacitors are modeled as distributed networks including parasitic resistors and capacitors [81]. As in our application, the physical dimension of the capacitors are much smaller than the wavelength of the Bluetooth RF signal, for the purpose of analysis, we simplified the distributed model as the model shown in Figure 2.11. Now, let us investigate the quality (Q) factors of the capacitor and make a comparison among different capacitors mentioned above. The Q factor is given by [81]

1 Q(ω) = , (2.43) RCω = R RNshunit , (2.44)

Insert (2.44) into (2.43), we get

1 Q()ω = . (2.45) ω RshNC unit

In the above equations, R is the parasitic resistance of the capacitor, C is the nominal

ω capacitance, is the operating frequency, Rsh is the sheet resistance of the plates, Nunit is the number of unit squares.

From (2.45) we can see that for a given capacitance C and a given operating frequencyω , there are two ways to improve quality factor of the capacitor:

• Use capacitors with low sheet resistance plates.

57

Chapter 2 Analysis of Nonidealities in RF CMOS PPFs

• Use a low number of unit squares, e.g. Nunit equals 1.

As metal plates have less sheet resistance, the quality factor of metal-insulator- metal (MIM) capacitors is greater than that of poly-poly resistors, poly-well capacitors and MOS capacitors [81]. Thus, if possible, the use of MIM capacitors is highly recommended for design of RF CMOS PPFs. Furthermore, in the physical layout of capacitors, square capacitors should be used to get a greater quality factor.

2.7.2 Substrate Noise Coupling

In CMOS single chip transceiver design, the whole transceiver system, including

RF, analog and digital circuits, is integrated into a chip [99]. This concept is call system-on-a-chip (SoC) [99]. SoC design poses serious challenges different from conventional multi-chip or multi-package design, because digital circuits are placed on the same substrate with sensitive analog circuits [95].

Analog circuits Digital circuits

Noise Noise Noise Noise Coupling Coupling

Noise Semiconductive Noise Substrate

Figure 2.12 Principle of substrate noise coupling in system-on-a-chip [99].

58

Chapter 2 Analysis of Nonidealities in RF CMOS PPFs

The most critical issue in SoC design is substrate noise coupling [99], which occurs as a result of the conductive nature of silicon and the lack of perfect isolation between devices and the substrate [100]. Below frequencies of 5 GHz, the capacitive noise coupling is the main contributor to the substrate noise coupling [87, 88]. In this dissertation, the operating frequency is 2.45 GHz, which is well below 5 GHz. Thus, we consider only the capacitive noise coupling.

In SoC design, digital circuits are usually noisy. Noise generated by digital circuits is injected into the substrate [99]. Due to the semi-conductive nature of the silicon substrate, the noise is then sensed by the sensitive analog circuit via capacitive coupling [99]. The principle of substrate noise coupling in SoC is shown in Figure 2.12

[99].

In RF CMOS PPF Out

Cpara Cpara

Rsub Rsub

Noise Noise

gnd gnd

Figure 2.13 Simplified model of substrate noise coupling in RF CMOS PPFs.

59

Chapter 2 Analysis of Nonidealities in RF CMOS PPFs

Shown in Figure 2.13 is the simplified model of substrate noise coupling in RF

CMOS PPFs. In this model, simplified RF models of resistors and capacitors together with noisy resistive substrate model are used.

Now, let us analyze the noise coupled to the unshielded RF CMOS PPFs by the substrate noise coupling. The parasitic capacitance between the polysilicon resistor and

the substrate (CR ), and the parasitic capacitance between the capacitor and the substrate

(CC ) are

CR = LRWRCuaR = SRCuaR , (2.46)

CC = LCWCCuaC = SCCuaC . (2.47)

Summing all capacitances, we get

∑n Csum = 4× (SCiCuaCi + SRi ×CuaRi ) , (2.48) i=1

= where i 1Ln , n is the number of cascaded stages, CR is the parasitic capacitance

between the polysilicon resistors and the substrate, LR ,WR ,SR are length, width and

area of the polysilicon resistors, respectively, CuaR is the unit area parasitic capacitance

of the resistors, CC is the parasitic capacitance between the capacitor back plate and the

substrate, LC ,WC ,SC are length, width and area of the capacitors, respectively, and CuaC is the unit area parasitic capacitance of the capacitors.

In order to minimize noise coupling from the substrate, the parasitic capacitance

between RF CMOS PPF and the substrate, i.e., Csum , should be minimized. In (2.48),

for a certain CMOS process, CuaC,CuaR are known constants. Thus, what the designer

60

Chapter 2 Analysis of Nonidealities in RF CMOS PPFs

can do is to minimize the parasitic capacitance by minimizing the chip area. However, in practice, the chip area can only be reduced to a certain range, so noise coupling still exists [99], and in practice, it is impossible to get sufficiently low substrate noise coupling by only minimizing the chip area. Thus, noise isolation techniques, namely, N-

Well and guard ring should be applied [99].

For different types of substrates, these noise isolation techniques have different effects [93]. Categorized by resistivity in the substrates, there exist a high-resistivity substrate and a low-resistivity substrate in CMOS processes [93]. A high resistivity substrate is composed of a uniformly doped layer with a resistivity coefficient of 20

Ωcm to 50 Ωcm [93]. A low resistivity substrate consists of a thick, high resistivity epitaxial layer (10~15 Ωcm) and a low resistivity bulk (1 mΩcm) . Low resistivity substrates have been widely adopted for desirable latch-up suppression properties [93].

It has been found that at low and medium frequencies typically lower than 5 GHz, substrates show a resistive behavior [93]. At higher frequencies, the transport patterns are too complex to be accurately modeled by resistive or resistive-capacitive meshes

[98]. In this dissertation, the operating frequency is well below 5 GHz, thus we use resistive network to model the substrate. In high-resistivity substrates, distance and guard rings are effective attenuation techniques to reduce signal interaction [93]. In low resistivity substrates, the current tends to flow through low impedance paths located deep in the chip’s lower layers; as a result, guard rings are generally ineffective in

61

Chapter 2 Analysis of Nonidealities in RF CMOS PPFs

blocking substrate currents [94]. In low-resistivity substrates the use of a very low impedance backplate contact is often preferred [99]. From the discussions above, we can see that the choice of the isolation techniques should be based on the property of a given CMOS process and the specific application.

2.8 Summary

In this chapter, based on vector analysis, explicit transfer functions of multi-stage

PPFs were derived. Non-idealities in RF CMOS PPFs design, namely, process tolerance, component mismatch, and parasitic effects, were analyzed. Important contributions and conclusions in this chapter are:

• PPFANA, a software tool developed by the author for the simulation of the

quadrature accuracy (QA) of RF CMOS PPFs, which are influenced by process

tolerance and component mismatch, is presented.

• As is shown that the process tolerance has significant influences on quadrature

accuracy. In order to make an RF CMOS PPF robust against process tolerance,

tolerance design is used.

• Component mismatch also has an influence on the quadrature accuracy (QA).

Solution for design: use layout technique to minimize component mismatch.

62

Chapter 2 Analysis of Nonidealities in RF CMOS PPFs

• Parasitic effects in RF CMOS PPFs have been analyzed by using simplified RF

models of resistors and capacitors. Physical design considerations for

minimizing and isolating substrate noise coupling have been proposed.

63

Chapter 3 Design of an RF CMOS Polyphase Filter

Chapter 3

Design of an RF CMOS Polyphase Filter

3.1 Overview

In order to verify the effectiveness of PPFANA, an RF CMOS polyphase filter

(PPF) for a low-IF Bluetooth receiver using Fraunhofer-IMS 0.6 µm CMOS process has been designed, fabricated and measured. Influences from process tolerances and component mismatch on the quadrature accuracy of the RF CMOS PPF designed have been analyzed by using PPFANA. Schematic and post-layout simulation results obtained by using Cadence SpectreRF have been compared with those obtained by using PPFANA.

Silicon success of this design lays a solid foundation for this dissertation in the following two aspects:

• Physical design considerations for RF CMOS PPFs in a system-on-a-chip (SoC)

solution have been proposed based on the design practice.

• Design heuristics from this practical design lay the basis for optimization of RF

CMOS PPFs.

64

Chapter 3 Design of an RF CMOS Polyphase Filter

3.2 Schematic Design

3.2.1 Derivation of Specifications

The specifications of RF CMOS PPFs can be derived from the wireless communication standards and the selected transceiver architecture. In our design of a

Bluetooth receiver, a low-IF receiver architecture has been chosen because it incorporates advantages over heterodyne and homodyne receivers, providing high integratebility.

The target specification related to the RF CMOS PPFs in the receiver is the desired image reject ratio (IRR), which can be obtained from system level simulation. In our low-IF Bluetooth receiver, the IRR is required to be greater than or equal to 36 dB in the frequency band of Bluetooth, that is, between 2.4 GHz and 2.48 GHz. The relationship between the IRR, the gain mismatch ∆A and the phase mismatch ∆φ can be expressed as follows [84]:

∆∆A22φ R =+-20 log (3.1) IR 10 + 2 16(AAIQ ) 4

In (3.1) RIR is the IRR, and AI and AQ are the voltage gain of the I path and Q path output signal.

Setting out from (3.1), the main specifications of the RF CMOS PPF, i.e. the gain mismatch and phase mismatch have been derived. In order to compare these target specifications and the simulation results obtained by using Cadence SpectreRF and

PPFANA, the gain mismatch is expressed as:

65

Chapter 3 Design of an RF CMOS Polyphase Filter

mgain= -20log 10 ∆A (3.2)

Detailed specifications of this RF CMOS PPF are listed in the Table 3.1.

∆φ Frequency band / GHz mgain / dB / degrees

RF CMOS PPF 2.4-2.48 ≤ 0.6 ≤ 5

Table 3.1 Specifications of RF CMOS PPF for a low-IF Bluetooth receiver.

3.2.2 Design Guidelines

In 2001, Behbahani [62] proposed the following guidelines for the design of RF

CMOS PPFs:

[Step1] Calculate the number of cascaded stages required in the PPF from the

targeting image reject ratio (IRR) and the fractional bandwidth over which this

rejection is required.

[Step2] As an initial guess, place the two lowest and highest poles at the

boundaries of the rejection band. Space the remaining poles equally on the

logarithmic frequency axis. The actual pole locations are fine-tuned by

simulations.

[Step3] Specify the matching between the resistors and between the capacitors

based on the desired IRR. This determines the physical area of the filter.

66

Chapter 3 Design of an RF CMOS Polyphase Filter

[Step4] Large resistors will lower the power consumption of the amplifier

driving the PPF input. Use the largest filter resistance, limited either by the

maximum noise at the output or by the cut-off frequency. In low-noise or low

frequency circuits, the first is the limiting factor, while in high-frequency PPFs

it is the second.

[Step5] To lower cascaded loss, taper down the resistance of the PPF stages

toward the input. The resulting impedance of the input stage of the PPF will

determine the drive requirements on the amplifier prior to the filter.

[Step6] Design the driving amplifier. If the cascade filter loss is still too large,

insert interstage amplifiers to preserve signal dynamic range within the PPF;

the collinear common-mode signal at each output shifts the zero crossings and

corrupts the final phase relationship among the outputs. Thus, the outputs must

be sensed using linear differential circuits that reject the common mode.

Though rather comprehensive, an important design consideration is missing in these design guidelines, that is, process tolerance should be considered in selecting lower and upper corner frequencies for the RF CMOS PPFs. The importance of tolerance design in design of RF CMOS PPFs has already been analyzed in the previous chapter 1; in this chapter we apply it to a practical design.

67

Chapter 3 Design of an RF CMOS Polyphase Filter

3.2.3 Tolerance Design

In the design of RF CMOS PPFs, to guarantee that the worst-case circuit performance still satisfies the specifications, process tolerances should be considered by using the concept of ‘tolerance design’ [102]. Specifically, by enlarging the bandwidth of the PPF, the worst-case frequency range of the PPF can be guaranteed to be located in a given operating frequency band. In the Fraunhofer-IMS 0.6 µm CMOS process, sheet resistance of the polysilicon resistors used in this design varies from 36 Ω/square to 50 Ω /square, while the nominal value is 43 Ω/square. The unit capacitance of the poly_N+ capacitor in this process varies from 1.1 fF/µm2 to 1.7 fF/µm2 , whilst the nominal value is 1.4 fF/µm.2

It is well known that the relationship between the corner frequency fcorner of an

RC filter and the values of resistors and capacitors is given by 1 f = . (3.3) corner 2πRC From (3.3), we get the expression of RC time constant as follows:

1 RC = , (3.4) 2fπ corner

where R is the resistors value, C is the capacitor value, and fcorner is the corner frequency of this RC filter. For convenience of calculation of the RC time constant with tolerance design, we define the RC time constant variation ratio

()()RRCC+∆ +∆ σ =×100% (3.5) RC RC

68

Chapter 3 Design of an RF CMOS Polyphase Filter

In (3.5) ∆R and ∆C are the process variations of the resistors and capacitors,

σ respectively. Setting out from the Fraunhofer-IMS 0.6 µm CMOS process, we find RC

σ equal to 41.2%. In order to overcome the influence of RC , we need to decrease the lower RC time constant, determined by higher corner frequency of the RC filter, and increase the higher RC time constant, determined by lower corner frequency, by 41.2% respectively. The lower corner frequency is set to 1.44 GHz, and the higher corner frequency is set to 3.47 GHz with tolerance design of RF CMOS PPFs.

3.2.4 Analytical Calculations

In the schematic design, constraints in physical layout should also be considered to avoid unreasonable circuit sizing. In the design of RF CMOS PPFs, the maximum

length of resistors, Lmax,res , allowed in a given CMOS process, and minimum components area, required by a given standard deviation of the component mismatch, need to be calculated.

• Calculation of maximum resistor length. As discussed in section 2.7.1, at

radio frequency, parasitic effects have significant influences on the circuit

performance. By using the simplified model of RF resistors, the maximum

length of the resistor, Lmax,res , allowed in a given CMOS process has been

derived, and it is expressed in equation (2.42). Using this equation, at 2.45 GHz,

the maximum length Lmax,res of the polysilicon resistor in the Fraunhofer-IMS

0.6 µm CMOS process is equal to 132 µm.

69

Chapter 3 Design of an RF CMOS Polyphase Filter

• Calculation of minimum component area. In the design of RF CMOS PPFs,

component matching is a critical factor to be considered. From Monte Carlo

simulations [73], it has been found that

RUIR> -20log 10 (σ Component ) , (3.6)

σ where RUIR is the ultimately obtainable image reject ratio, component is the

variance of the component mismatch. It is known from the experimental study

[73] that the variance of adjacent on-chip resistors and capacitors is

proportional to the inverse of their surface area. Measurement results in

Fraunhofer-IMS 0.6 µm CMOS process show that for two neighboring

polysilicon resistors with width of 20 µm and length of 250 µm, the maximum

mismatch is 1%, for two neighboring poly-N+ capacitors with 300 µm,2 the

maximum mismatch is 0.5%.

In our design, the target specification of the image reject ratio (IRR) is 36 dB.

Calculated by using equation (3.6), a component mismatch of 1% is needed to satisfy this target specification. Based on the guidelines and the hand calculation results, the range of length, width of the resistor and the value of the capacitor were calculated as a preparation for the physical layout. The schematic of the RF CMOS PPF is shown in

Figure 3.1.

This design was based on intensive trials and it took several iterations between

schematic design and layout to obtain proper tradeoffs among design parameters, i.e.,

70

Chapter 3 Design of an RF CMOS Polyphase Filter

quadrature accuracy, signal loss, and chip area. The circuit dimensions are shown in the following Table 3.2.

R0 R1 R2 I_LO+ C0 C1 C2 LO+

R0 R1 R2 Q_LO+ C0 C1 C2

R0 R1 R2 I_LO- C0 C1 C2 LO-

R0 R1 R2 Q_LO- C0 C1 C2

Stage 1 Stage 2 Stage 3

Figure 3.1 Schematic of a 3-stage RF CMOS PPF for a low-IF Bluetooth receiver.

Stage Resistors Value Capacitors Value

1 R1 217.6 Ω C1 229.4 fF

2 R2 283.6 Ω C2 229.4 fF

3 R3 347.6 Ω C3 229.4 fF

Table 3.2 Dimensions of a 3-stage RF CMOS PPF for a low-IF Bluetooth receiver.

71

Chapter 3 Design of an RF CMOS Polyphase Filter

3.2.5 Schematic Simulation

Figure 3.2 Simulation results of a 3-stage RF CMOS PPF obtained by using SpectreRF

Figure 3.3 Simulation results of a 3-stage RF CMOS PPF obtained by using PPFANA.

72

Chapter 3 Design of an RF CMOS Polyphase Filter

mgain /dB dphase /degrees

PPFANA 0.012 90.063

SpectreRF 0.010 90.061

Table 3.3 Simulation results of a 3-stage RF CMOS PPFs

obtained by using PPFANA and SpectreRF.

The simulation results obtained for the schematic by using Cadence SpectreRF and PPFANA are shown in Figure 3.2 and Figure 3.3, respectively. Accurate results are listed in Table 3.3. From figures and table above, we can see that the simulation results match; the gain mismatch is approximately 0.01 dB and the phase difference is approximately 90.06 degrees, measured between 2.4 GHz and 2.48 GHz, and ignoring computational errors. As mentioned in the second chapter, the phase mismatch is phase difference minus 90 degrees, thus phase mismatch in this RF CMOS PPF is approximately 0.06 degrees. Compared with Table 3.1, we can see that the target specifications are met in the schematic simulation.

3.3 Physical Layout Design

3.3.1 Layout Techniques

As discussed in the chapter 2, in the physical design, special attention must be paid to the layout of the resistors and capacitors. The layout of the four resistors in one

73

Chapter 3 Design of an RF CMOS Polyphase Filter

stage of the RF CMOS PPF designed by the author is shown in Figure 3.4. To obtain good matching, the following techniques are applied:

• Identical structures, including end contacts, are used for all the resistors.

• Resistors are placed very closely.

• All of the resistors have the same orientation.

• A common-centroid structure is used [77].

• Dummy resistors are used to minimize the boundary effects.

Dummy resistor

Resistor 1

Resistor 2

Resistor 3

Resistor 4 Dummy resistor

N-Well Guard rings

Figure 3.4 Layout of the four resistors in one stage of an RF CMOS PPF.

The layout of the four capacitors in one stage of the RF CMOS PPF designed by the author is shown in Figure 3.5. In order to obtain good matching, the following techniques are applied:

74

Chapter 3 Design of an RF CMOS Polyphase Filter

• Identical structures, including terminals, are used for all capacitors.

• All of the capacitors to be matched are placed very closely.

• Capacitors to be matched are placed with the same geometrical orientation.

• A common-centroid structure is used [77].

• Dummy capacitors are placed around the matched array to minimize the

boundary effects.

• Input and output wires are placed as symmetrically as possible.

Guard ring

Capacitor 3 Capacitor 1

Wires

Capacitor 2 Capacitor 4

Note: Surrouding capacitors are dummy capacitors

Figure 3.5 Layout of the four capacitors and wires in one stage of an RF CMOS PPF.

Following the layout techniques mentioned above, component mismatch in RF

CMOS PPFs can be control well. The latest component mismatch model in [81] can be

75

Chapter 3 Design of an RF CMOS Polyphase Filter

used to estimate the standard deviation of the mismatch in the layout. Thus a layout of this design is taken as the layout pattern used in the chapter 4.

3.3.2 On-Chip Noise Isolation Techniques

As discussed in chapter 2, in the design of RF CMOS PPFs, special attentions must be paid to on-chip noise isolation techniques to reduce unwanted substrate noise coupling. On-chip shielding should be used to protect the sensitive RF CMOS PPFs from noise generated by other circuits. The CMOS process used in this design, the

Fraunhofer-IMS 0.6 µm CMOS process, is a P-substrate, single N-well process. In our application, N-well and a guard ring are used.

N-Wells: N-Well is an epitaxial layer fabricated on the P-substrate to differentiate it from the substrate. In an N-well process, i.e., a process with P-substrate and N-well, the N-well is originally used for the fabrication of P-. With proper biasing, the N-well can be used to provide isolation between a component and the substrate.

As shown in Figure 3.4, resistors in this design are protected by N-wells, the region with grids. These resistors are built in the shallow P-region within the buried N- well. A depletion layer exists on both sides of the N-well and this provides dielectric isolation between the active devices and the bulk region. Since in our application the N- well is connected to the low-impedance positive supply, the N-well performs a Farady

76

Chapter 3 Design of an RF CMOS Polyphase Filter

shield around the resistors. Thus, resistors are protected against noise coupling by N- well.

However, the N-well is not well suited to use for the capacitors in this design, because the bottom plate of the poly-N+ is already in the N+ region. Despite this fact, poly-N+ capacitors are the best capacitor in the sense of linearity in the Fraunhofer-IMS

0.6 µm CMOS process.

Guard Rings: The principle of guard ring, also named as guarding band, is to use a narrow ring of P+ or N+ with stable and noise-free connections forming a local clean zone to reduce noise coupling through the substrate. In the Fraunhofer-IMS 0.6

µm CMOS process, guard rings can be connected to either ground or Vdd. A grounded guard ring uses a low-resistance P+ area to connect to ground. A guard ring that connects to Vdd uses an N-well and N+ region on the substrate. Positive N+ connections attract electrons, and the grounded P+ connections attract holes. Thus, they can provide a barrier against substrate noise coupling. As shown in Figure 3.4 and

Figure 3.5, a P+ guard ring and a N+ guard ring are used in the layout of the resistors, a

P+ guard ring is used in the layout of capacitors, and these guard rings are placed as close as possible to the resistors and capacitor.

3.3.3 Layout and Post-Layout Simulation

In order to test this chip independently, test pads are added to the layout of the RF

CMOS PPF; shielded ground pads (Abschirm_GND) are used to avoid cross-coupling

77

Chapter 3 Design of an RF CMOS Polyphase Filter

between different paths and wiring in the layout is kept as symmetrical as possible to minimize additional mismatch. The final layout of the RF CMOS PPF with test pads is shown in Figure 3.10.

Test pads Stage 3 Stage 2 Stage 1 Decoupling capacitor

Figure 3.6 Layout of a 3-stage RF CMOS PPF with test pads.

∆φ mgain / dB / degrees

Cadence post- 0.071 0.26 layout simulation

PPFANA 0.27 1.8

Table 3.4 Simulation results obtained by using Cadence post-layout simulation and PPFANA.

78

Chapter 3 Design of an RF CMOS Polyphase Filter

After the layout, post-layout simulation (PS) of the RF CMOS PPF with coefficient extracted networks was done by using Cadence SpectreRF. In this extraction method, all kinds of parasitic resistances and capacitances, such as, parasitics between neighboring components, wires, and parasitics to the substrate, are extracted. In this way, we can provide realistic simulation results. Unfortunately, by this simulation method, the influences from process tolerances and component mismatching cannot be easily simulated. In this situation, PPFANA, the software the author developed in this dissertation shows its advantages over Cadence post-layout simulation. The simulation results by using PPFANA and Cadence post-layout simulation are shown in Table 3.4 for the purpose of comparison.

3.3.4 Chip Photo

`

Test pads Stage 3 Stage 2 Stage 1 Decoupling capacitor

Figure 3.7 Chip photo of an RF CMOS PPF for a low-IF Bluetooth receiver.

79

Chapter 3 Design of an RF CMOS Polyphase Filter

A chip photo of the fabricated chip is shown in Figure 3.7. The squares in the top of this photo are test pads; in the middle of the bottom part is the RF CMOS PPF designed for a low-IF Bluetooth receiver.

3.4 Measurements

3.4.1 Introductory Remarks

As an RF CMOS PPF has three ports, namely one input port and two output ports, and the wafer station in Fraunhofer-IMS can only measure components with two ports, a printed circuit board (PCB) providing interfaces to the measurement equipments was designed and manufactured. The fabricated chip was bonded to the test PCB to allow measurements.

3.4.2 Modeling of Test Pads and Bonding Wires

As test pads and bonding wires have parasitic resistance, inductances and capacitance, in order to simulate the influences from these parasitic components, a model of test pads and bonding wires shown in Figure 3.8 was built by using the

Cadence package physical geometrical modeling tools. Both schematic simulation and post-layout simulation of RF CMOS PPF with test pads and bonding wires show that the parasitic components have no significant influences on the gain mismatch and the

80

Chapter 3 Design of an RF CMOS Polyphase Filter

phase mismatch of the RF CMOS PPF, because they are in a fully balanced configuration and their layouts are symmetrical.

R_ESD R_Bond L_Bond BeforePad ∩∩∩∩ AfterBond r=99 r = 200m l = 800p

f =2.45GHz c = 183f C_Pad

r = 174 R_Pad

gnd

Figure 3.8 Model of test pads and bonding wires.

3.4.3 Design of the Test PCB

The functionality of the test PCB is to provide an interface to the RF measurement equipment. Specifically, the test PCB includes two types of conversions, i.e., impedance conversion and differential to single-end conversion. A schematic of the test PCB is shown in the Figure 3.9. From this schematic, we can see that the differential input of the RF CMOS PPF is accomplished by using a balance-unbalance converter (BALUN), and the differential outputs of I path and Q path are converted by

81

Chapter 3 Design of an RF CMOS Polyphase Filter

BALUNs to single-ended outputs respectively. In order to get maximum output power gain, resistors and capacitors with optimized values are connected to the outputs as loads.

gnd r =250 c = 240f SMA

I_LO + 2:1 in ⊃⊂ ⊃⊂ TOKO Balun ⊃⊂ 617DB-1023 I_LO- gnd SMA gnd 1:2 LO + in r =250 c = 240f ⊃⊂ f_lo = 2.449GHz TOKO Balun⊃⊂ i_DC = 0 gnd r =250 c = 240f 617DB-1023 LO- SMA gnd 2:1 Q_LO + in ⊃⊂ ⊃⊂ TOKO Balun ⊃⊂ 617DB-1023 Q_LO- gnd gnd

r =250 c = 240f

Figure 3.9 Schematic of the printed circuit board (PCB) for test of the RF CMOS PPF.

In Figure 3.10, the photo of the fabricated test PCB is shown. The metal connectors are the SMA connectors. The black block in the center of the PCB is the fabricated chip, which is bonded to the PCB.

82

Chapter 3 Design of an RF CMOS Polyphase Filter

Figure 3.10 Photo of the fabricated test PCB.

3.4.4 Measurement Setup

In the measurement setup by the author, an Agilent E8267C PSG vector signal generator and a Lecroy wavermaster digital oscilloscope were used to measure the performance of the fabricated chip. A diagram of the measurement setup is shown in

Figure 3.11.

The Agilent E8267C PSG vector signal generator generates a 2.45 GHz continuous sinusoidal signal, which is input to the test PCB via RF cable. Then the I (in- phase) path and Q (quadrature-phase) path were connected to the Lecroy wavemaster digital oscilloscope via an RF cable. A feature of this Lecroy wavemaster digital

83

Chapter 3 Design of an RF CMOS Polyphase Filter

oscilloscope is its embedded real time fast Fourier transform (FFT). With this digital oscilloscope, time domain and frequency domain measurements of the two port outputs can be conducted in real time.

Agilent E8267 PSG In Vector signal generator Out RF CMOS PPFs Test PCB P_in RF Cable I_out Q_out

RF Cable RF Cable

P_in P_out P_out In1 In2 Lecroy Wavemaster Power Supply Digital oscilloscope

Figure 3.11 Diagram of the measurement setup for test of the RF CMOS PPF.

3.4.5 Measurement Results

Two types of measurements, namely, time domain and frequency domain measurements, on RF CMOS PPFs have been conducted in this work. Time domain measurement results are shown in Figure 3.12. From the time domain signal, we can see that the gain mismatch is approximately 0.17 dB, and the phase difference is approximately 88.78 degrees, consequently, the phase mismatch is approximately 1.22 degrees.

84

Chapter 3 Design of an RF CMOS Polyphase Filter

Figure 3.12 Time domain measurement results of the RF CMOS PPF.

As time domain measurement is observed at only that time interval, it has significant measurement inaccuracy in the RF domain.

85

Chapter 3 Design of an RF CMOS Polyphase Filter

In order to get more accurate measurement result, frequency domain measurement was conducted.

Figure 3.13 Gain mismatch of the RF CMOS PPF measured in frequency domain.

86

Chapter 3 Design of an RF CMOS Polyphase Filter

The frequency domain measurement results of the gain mismatch and the phase mismatch in the RF CMOS PPF are shown in Figure 3.13 and Figure 3.14 respectively.

The measurement results are 0.45 dB gain mismatch and 3.2 degrees phase mismatch.

Figure 3.14 Phase difference of the RF CMOS PPF measured in frequency domain.

87

Chapter 3 Design of an RF CMOS Polyphase Filter

3.5 Analysis of Simulation and Measurement Results

By comparing schematic simulation results obtained by using PPFANA and

Cadence SpectreRF, which are shown in Table 3.3, we can see that they are in good accordance with each other; the effectiveness of PPFANA is thus verified. From the schematic and post-layout simulation of RF CMOS PPFs with test pads, we have found that test pads do not have significant influences on the quadrature accuracy of RF

CMOS PPFs because they have fully balanced configuration and symmetrical layout, whereas bonding wires, external components, i.e., load resistors and capacitors, and

BALUN contribute certain mismatch.

By comparing the post-layout simulation results of RF CMOS PPFs obtained by using PPFANA and Cadence SpectreRF and the measurement results, we can see that the simulation results obtained by using PPFANA are closer to the measurement results because the influences from process tolerances and component mismatch are simulated.

In this situation, PPFANA provides a useful design aid for RF CMOS PPF design.

3.6 Summary

This chapter concentrates on a practical design of an RF CMOS PPF for a low-IF

Bluetooth receiver. Detailed design considerations, analytical calculations and layout techniques for minimizing component mismatch were analyzed.

88

Chapter 3 Design of an RF CMOS Polyphase Filter

The fabricated chip was bonded to the test PCB. Measurement results show that

PPFANA developed by the author provides more realistic simulation results than the commercially available Cadence tools. Further contributions of this chapter are the following:

1. Silicon success of an RF CMOS PPF for a low-IF Bluetooth receiver was

presented.

2. Design heuristics from design practice reported here lay a solid foundation for

the optimization of RF CMOS PPFs.

3. The effectiveness of PPFANA was demonstrated.

89

Chapter 4 Optimization of RF CMOS Polyphase Filters

Chapter 4 Optimization of RF CMOS Polyphase Filters

4.1 Introduction

In the open literatures, there are some papers on analysis [55-60] and design[55-

68] of RF CMOS polyphase filters (PPFs). For instance, Behbahani [62] analyzed some practical aspects in the design of RF CMOS PPFs and presented some design guidelines.

It is known that the main specification of the RF CMOS PPFs, quadrature accuracy, is layout dependent. The requirements from component matching are contradictory to that of minimization of noise coupling, signal loss and chip area [ZHA2]. Thus, a tradeoff must be made in a specific design [ZHA2]. By simply following Behbahani’s guidelines

[62], it takes intensive trials and many design iterations to reach a good design [ZHA3].

Furthermore with layout considerations, optimization of RF CMOS PPFs cannot be accomplished by using analytical calculations because of many constraints and tradeoffs in the design [ZHA3]. In this situation, a computer-aided analysis and design optimization tool for RF CMOS PPFs is of great help to the community of RF CMOS

PPFs designers, especially, for industrial projects, which are under time-to-market pressures. Unfortunately, until now, there is not any such dedicated tool available openly, to the author’s best knowledge. In this chapter, the author will present a novel optimization tool for RF CMOS PPFs, based on MATLAB. The tool, which was

90

Chapter 4 Optimization of RF CMOS Polyphase Filters

developed by the author, is termed PPFOPTIMA and it takes layout constraints explicitly into considerations [ZHA3]. A genetic algorithm (GA) is proposed as the optimization engine of PPFOPTIMA for its capability in avoiding local optima. In order to enable users to carry out an automated design, PPFOPTIMA provides automated synthesis and verification incorporating dedicated worst-case and Monte Carlo simulation options. Experimental results illustrated in this chapter demonstrate that

PPFOPTIMA is effective and efficient in the synthesis, the optimization and the verification of RF CMOS PPFs.

4.2 Design Considerations and Design Flow

As analyzed in chapter 2, CMOS process tolerances, component mismatch and parasitic effects should be considered in the design of RF CMOS PPFs in order to accomplish a robust design. Design considerations and heuristics from our design practice in chapter 3 will be discussed in this section.

CMOS process tolerances should be considered by using the concept of

‘tolerance design’ [102]. Specifically, by enlarging the bandwidth of the PPF, the operating frequency can be covered by upper and lower corners frequency of the RF

CMOS PPFs, no matter how they shift with process variations [102].

91

Chapter 4 Optimization of RF CMOS Polyphase Filters

The most important specification for the design of an RF CMOS PPF is the image reject ratio (IRR), which is related to the sensitivity of a receiver. From Monte

Carlo (MC) simulations, it has been found that [59]

> σ RUIR-20log 10 ( Component ) , (4.1)

σ where RUIR is the ultimately obtainable IRR, and component is the standard deviation of

the component mismatch. Typically, RUIR is in the range of 25 dB to 60 dB for RF

σ CMOS PPFs [ZHA3]. The standard deviation component typically between 3% and 0.5%

[81]. It is known from the experimental study [73] that the variance of adjacent on-chip resistors and capacitors and their area are reciprocally proportional, that is, neighboring components with larger area have better matching than those with small area [73]. By using the latest resistor and capacitor mismatch models [81] of (4.2) and (4.3), the minimum chip area required by a target specification of the IRR can be calculated

[ZHA3].

σ The standard deviation component of the component mismatch between two neighboring resistors with identical layout can be calculated as follows [81]:

222 LLL  σσ22=++ σ 2 σ 2 , (4.2) ∆R/R Rsh ⋅+Re ⋅+∆W  +∆ (LRsh R e)( LR sh R e ) () W W with the standard deviation of the sheet resistance of the polysilicon resistors Rsh given by

AR σ = sh , (4.3) Rsh ()WL 1/ 2 with the standard deviation of the resistor width

92

Chapter 4 Optimization of RF CMOS Polyphase Filters

A σ = ∆W , (4.4) ∆W W 1/ 2

and with the standard deviation of the end resistance coefficient Re defined as

σ = A , (4.5) R e R e

In (4.2) to (4.5), W and L are the resistor width and the resistor length, and ∆W is the

resistor width offset, A , A∆ , and A are fitting parameters obtained from massive Rsh W Re

measurement results of σ , σ ∆ , σ , respectively. Rsh W Re

For two neighboring capacitors with identical layout and capacitance C, the

σ 2 variance ∆c /C of the component mismatch between them can be calculated as follows

[81]:

σ 2 = σ 2 + σ 2 + σ 2 ∆c/C p a d , (4.6)

σ where p denotes the standard deviation of the periphery, given by

f σ = p , (4.7) p C 3/4 with the standard deviation caused by area variations defined as f σ = a , (4.8) a C1/2 and with the standard deviation caused by distance fluctuations

σ = d fd.d , (4.9)

In (4.7) to (4.9), fp , fa , fd are constants describing the influences of periphery, area and distance fluctuations. In the component mismatch model of capacitors, the periphery component models the effect of edge roughness, and it is most significant for small capacitors, which have a relatively large amount of edge capacitance. The area

93

Chapter 4 Optimization of RF CMOS Polyphase Filters

component models the effect of short-range dielectric thickness variation, and it is most significant for moderate size capacitors. The distance component models the effect of global dielectric thickness variation across the wafer, and it becomes significant for large capacitors or widely spaced capacitors [81].

Optimized for digital circuits, parasitic effects in CMOS processes are severe for analog design. In the design of RF CMOS PPFs, there are two influences from parasitic effects, namely [ZHA3]

• signal loss in addition to the theoretical 3 dB/stage caused by the lossy

substrate and

• capacitive noise coupling caused by parasitic capacitances.

For a given CMOS process, there are two ways to minimize the influences from parasitic effects, one is to reduce the chip area as derived in Chapter 2 to decrease capacitive noise coupling, the other is to use on-chip noise isolation techniques, namely

N-wells and guard rings, to protect noise sensitive analog circuits [ZHA2].

With considerations of parasitics, the maximum length of the resistor (MLR) allowed in a CMOS process can be calculated by using the following equation [ZHA2]:

1 Lmax,res = (4.10) 2πfRCopshp

where Lmax,res is the MLR, fop is the operating frequency of the RF CMOS PPF, Rsh is

the sheet resistance, and Cp is parasitic capacitance per unit area between resistor and the substrate. Before accomplishing physical layout, the MLR must be calculated to avoid an inappropriate physical design.

94

Chapter 4 Optimization of RF CMOS Polyphase Filters

Start

Specifications

RF CMOS PPF with 2 cascaded stages

Calculate minimum area of resistors and capacitors

Calculate values of resistors with considerations of process tolerances

Increase the number of Worst-case schematic simulation cascaded stages by 1 No Satisfy specifications?

Yes Calculate maximum lengths of resistors

Tradeoff between lengths and widths of resistors

Physical layout

Worst-case post-layout simulation

No Satisfy specifications?

Yes

End

Figure 4.1 A design flow for specification-driven automated synthesis of RF CMOS PPFs.

95

Chapter 4 Optimization of RF CMOS Polyphase Filters

Based on aforementioned design considerations and the design heuristics, a design flow for specification-driven automated synthesis of RF CMOS PPFs, as shown in Figure 4.1, is proposed in this chapter. From Figure 4.1, we can see that all the design considerations and constraints we have just discussed are included in this design flow.

Setting out from a given target specification, we start with a 2-stage RF CMOS PPF, going through schematic design. If in the schematic simulation, the target specification cannot be met, we move on to an RF CMOS PPF with three cascaded stages, and deduce the compliance with the target specification. If we fail again, an RF CMOS PPF with four cascaded stage is taken. After completing the schematic design, we carry out the physical layout design and check whether the target specification can be met in the post-layout simulation. If we fail, we go back to the schematic design using an RF

CMOS PPF with more cascaded stages, until the target specifications are met in the post-layout simulation. Then we finish this design.

4.3 Problem Formulation for RF CMOS PPFs Optimization

In design of an RF CMOS PPF, the design objectives are

• to satisfy the target specifications required by a given wireless communication

standard and transceiver architecture,

• to minimize the chip area,

• to maximize the immunity to noise coupling, and

96

Chapter 4 Optimization of RF CMOS Polyphase Filters

• to minimize additional signal losses.

Based on these design objectives, we can categorize the design considerations by objective functions or constraints. Objective functions are the image reject ratio (IRR)

and the chip area. Here we use the relationship between the IRR RIR , the gain mismatch

∆φ mgain and the phase mismatch as shown in the following equation (4.11) [84].

m2 ∆φ 2 R =+-20log ( gain ) , (4.11) IR 10 + 16(AAIQ ) 4 where the gain mismatch is defined by

=− mgainAA I Q , (4.12) and where the phase mismatch is defined by

∆=φφφ − − o |||90IQ | . (4.13)

φ φ In (4.11) to (4.13), AI , AQ , I , Q are amplitudes and phases of the I path and the Q path, respectively. All of these parameters can be calculated by using the transfer functions of RF CMOS PPFs derived in chapter 3 of this dissertation.

In order to minimize the component mismatch, the layout pattern shown in Figure

3.4 and Figure 3.5 should be followed in the layout of resistors and capacitors. In this layout pattern, the chip areas of an RF CMOS PPF with n cascaded stages is given by

[ZHA3]

n = + S ∑(6SRi 16SCi ) , (4.14) i=1 where the chip area of resistors in the ith stage is

=⋅ SRi LWRRi i , (4.15)

97

Chapter 4 Optimization of RF CMOS Polyphase Filters

and where the chip area of the capacitor in the ith stage is

Ci SCi = , (4.16) Cunit

In (4.14) to (4.16), LRi , WRi are the length and width of resistors in the ith stage

respectively, Ci is the capacitor value in the ith stage, Cunit is the unit capacitance of the capacitors, i=1,2,3,…n, n is the number of the cascaded stages in an RF CMOS PPF.

Though the chip areas defined in (4.14) is an objective to be minimized for the reduction of substrate noise coupling, for a given target specification of the IRR and a given CMOS process, there exist a minimum area of resistors and capacitors to avoid bad component mismatch which cannot satisfy the specification of the IRR. Using the equation (4.1), we find the corresponding standard deviation of resistors and capacitors for a given target specification of IRR:

-RIR /20 σ∆R/R >10 , (4.17)

-RIR /20 σ∆C/C >10 . (4.18)

σ σ In (4.17) and (4.18), RIR is the IRR and ∆R/R , ∆C/C are standard deviations of matched resistors and capacitors, respectively. These figures can be calculated by using the latest component mismatch models proposed by Cheng [81] as shown in (4.2) and

(4.6). Another constraint in practice is that the length of resistors should be less than the

MLR calculated by using (4.10).

In order to choose a suitable optimization algorithm, let us investigate the relationship between the IRR and component values. For the purpose of simplification, we take the amplitude mismatch between the I path and the Q path in a 2-stage RF

98

Chapter 4 Optimization of RF CMOS Polyphase Filters

CMOS PPF for a Bluetooth receiver as an example. In the design of this 2-stage RF

CMOS PPFs, if we determine the values of the resistors in each stage, then the capacitors values are automatically determined by the relationship between corner frequency and RC time constant shown in (3.4). In this situation the amplitude mismatch ∆A can be expressed as:

ω 2 1+ ωω ∆=A 12 (4.19) 221/2 ωωωω2 R  12−+++1 ωω ω ωR ω  12 1 2 2 2 

ω Where is the frequency of interest; ω1 and ω2 are the upper and the lower corner

frequency of this RF CMOS PPF, which are 2.4 GHz and 2.48 GHz respectively; R1

and R2 are resistors values in the first stage and the second stage, which are in the range of 50 Ohms to 500 Ohms. Taking these into account, we can rewrite (4.19) as

1+ x2 z = . (4.20) x42−++222xxy

Where z is ∆A; x is the normalized frequency of interest, which is in the range of [0.5,

5]; and y is the ratio between R1 and R2 , which is in the range of [0.5, 5]. The three- dimensional plot of ∆A is shown in Figure 4.2. From this plot, we can clearly see that it has several maxima. This means that, the function in equation (4.20) has multiple local optima. For RF CMOS PPFs with more cascaded stages, the relationship between quadrature accuracy, component values, and frequency of interest is even more complex.

In this situation, an in-depth analysis of possible optimization methods is necessary.

99

Chapter 4 Optimization of RF CMOS Polyphase Filters

Figure 4.2 A three-dimensional plot of the amplitude mismatch

in a 2-stage RF CMOS PPF, expressed in the equation (4.20).

4.4 Analysis of Possible Optimization Methodologies

4.4.1 Limitations of Conventional Optimization Methods

There are various optimization theories and techniques in engineering mathematics [104]. Essentially, the targets of the optimization techniques are to search for the maximum or the minimum values in a certain search space [104].

The easiest way to find the accurate maximum or minimum in a continuous function is to use calculus-based search [104], in which the existence of the first order and the second order derivatives are required [104]. However, this technique is not

100

Chapter 4 Optimization of RF CMOS Polyphase Filters

suitable for solving the optimization problem in this dissertation for the following reasons:

• Tendency to get trapped on local maxima. Even though a better solution may

exist, all moves from the local maxima seem to decrease the fitness of the

solution.

• Dependence on the existence of derivatives.

There is another optimization technique, gradient descent [104], which is also referred to as hill-climbing [104]. This technique performs well on functions with only one peak. However, for functions with multiple peaks, the first peak found is taken as the maximum, no matter whether it is the highest peak or not [104]. Thus, hill-climbing is not suitable for our optimization problem either.

For optimization problems with multiple peaks or multiple valleys, the direct way is to use random search to find the optima. Unfortunately, for most of the real-life optimization problems, this method is inefficient because of the vast amount of computations and is therefore not selected by the author.

In order to save computational complexity, iterated climbing was proposed [104], which is a combination of random search and gradient search. Once a peak has been located, the hill-climbing is started again, but with another randomly chosen starting point. However, since each random trial is performed in isolation, no overall idea of the topology and photography of the search space is obtained. Furthermore, trials are randomly allocated over the entire search space; many points in regions of low fitness

101

Chapter 4 Optimization of RF CMOS Polyphase Filters

are evaluated as points in high fitness regions. Therefore, iterated climbing is not considered as a proper candidate for the optimization of RF CMOS PPFs and is therefore not selected by the author.

4.4.2 Simulated Annealing

Simulated annealing (SA) was invented by Kirkpatrick [109] in 1982 by mimicking the process of cooling of a solid. Essentially, it is a modified version of hill- climbing. The search process starts from a random point in the search space. Then, a random move is made. In the case of climbing reaches a higher point by this move, the move is accepted. Otherwise, it is accepted only with probability p(t) (where t is time).

The probability function p(t), essentially relates to the temperature. A value of p(t) close to one refers to a high temperature. Decreasing p(t) means lowering the temperature. At time t equal to zero, p(0) is approximately one. As time t passes, p(t) is decreased, approaching zero at the end of the SA operation. This procedure is an analogy with the cooling of a solid. Therefore, initially, any moves are accepted, but as p(t) decreases, the probability of accepting a negative move is lowered. This optimization algorithm has been successfully applied in analog design automation [109-112], especially in IC layout routing. However simulated annealing deals with only one candidate at a time.

Like random search, it does not build an overall picture of the search space, and no information from previous moves is used to guide the selection of new moves. This leads to a low efficiency in solving complicated optimization problems. Therefore, SA

102

Chapter 4 Optimization of RF CMOS Polyphase Filters

does not seem promising for the optimization of RF CMOS PPFs and is hence not selected by the author.

4.4.3 Genetic Algorithms

A. Introductory Remarks

Genetic algorithms (GAs) are adaptive methods based on the genetic processes of biological organisms. For GA basics, please refer to the famous textbook written by

Goldberg [113]. Here we focus on the analysis of the suitability of GAs to our optimization problems. The following four key schemes, which characterize GAs, create the benefit of GAs over conventional optimization techniques and the SA we had mentioned in the previous subsections.

B. Direct Manipulation of Coding [118]

GAs manipulate decisions or control variable representations at a string level to exploit similarities among high-performance strings [118]. Other methods usually deal with functions and their control variables directly. GAs deal with parameters of finite length, which are encoded using a finite alphabet, rather than directly manipulating the parameters. This means that the search is constrained neither by the continuity of the function under investigation, nor by the existence of a derivative function. Moreover, by exploring similarities in codings, GAs can deal effectively with a broader class of functions than can many other procedures.

103

Chapter 4 Optimization of RF CMOS Polyphase Filters

C. Search from a Population, not a Single Point [118]

In GAs, the search sets out from a population of many individuals, rather than starting from just one point. This parallelism means that the search will not become trapped on a local maximum - especially if a measure of diversity-maintenance is incorporated into the algorithm, even if one candidate may become trapped on a local maximum, but the need to maintain diversity in the search population means that other candidates will therefore avoid that particular area of the search space.

D. Search via Sampling, a Blind Search [118]

GAs remains general by exploiting information available in any search problem.

GAs process similarities in the coding with information and rank the structures according to their survival capabilities in the current environment. By exploiting such widely available information, GAs may be applied to virtually any problem.

E. Search Using Stochastic Operators, no Deterministic Rules [118]

The transition rules used by GAs are probabilistic, not deterministic. A distinction, however, exists between the randomized operators of GAs and other methods that are simple random walks. GAs use random choice to guide a highly exploitative search.

From the analysis of GA, SA and conventional optimization techniques, we can see that the GA is well suited for the solving of complicated optimization problems with

104

Chapter 4 Optimization of RF CMOS Polyphase Filters

multiple objectives and, consequently, with multiple local optima. Since the optimization of RF CMOS PPFs has multiple optimization objectives and multiple local optima, conventional optimization algorithms are not recommendable. Therefore, the

GA was chosen for the optimization engine in PPFOPTIMA, the optimization tool for

RF CMOS PPFs developed by the author of this dissertation.

4.5 MATLAB Implementation of Genetic Algorithms

4.5.1 Overview

In this section, the MATLAB implementation of genetic algorithms is presented.

MATLAB is chosen as the programming platform for the following reasons:

• It provides many built-in auxiliary functions useful for function optimization.

• It is efficient for numerical computations.

4.5.2 Chromosome Representation

The process of GA begins with a set of potential solutions, termed chromosomes, that are randomly generated or selected [113]. The entire set of those chromosomes establishes a population [113]. For any GA, a chromosome represents an individual in the population [113]. The representation scheme determines how the problem is structured in the GA and how the genetic operators that are used [113]. Each chromosome is made up of a sequence of genes, taken from a certain alphabet [113].

105

Chapter 4 Optimization of RF CMOS Polyphase Filters

The sequence of genes makes the value of a particular chromosome. This value of a chromosome is called genotypes [113]. The genotypes are uniquely mapped into the decision variables, called phenotypic domain. The chromosomes evolve during several iterations or generations.

The most commonly used representation in GAs is based on the binary alphabet

{0, 1}. In this case, each decision variable is encoded by a binary string. The binary strings are concatenated to form a chromosome. For example, a problem with two variables, X1 and X2, may be mapped onto the chromosome structure in the way shown in Figure 4.3. X1 is encoded by 10 bits and X2 is represented by 15 bits. This encoding may reflect the level of accuracy or range of the individual decision variables.

Examining the chromosome string in isolation yields no information about the problem we are trying to solve. It is only with the decoding of the chromosome into its phenotypic values that any meaning can be applied to the representation.

Chromosome comprising the values of two concatenated decision variables X and X 1 2

1011010011 010111010100101

Decision variable Decision variable

X1 X2

Figure 4.3 Mapping variables into chromosomes.

106

Chapter 4 Optimization of RF CMOS Polyphase Filters

4.5.3 Genetic Operation

A. Introductory Remarks

The genetic operation includes three basic operators, namely, reproduction, crossover and mutation [113]. These three basic operators provide the basic search mechanism of genetic algorithms (GAs) and they are used to create new solutions based on existing solutions in the population [113].

B. Reproduction

Reproduction is the selection of individuals to produce successive generations

[113]. Reproduction plays an important role in a genetic algorithm. A probabilistic selection is performed based upon the individual's fitness in such a way that the fitter individuals have an increased chance of being selected. An individual in the population can be selected more than once with all individuals in the population having a chance of being selected to be reproduced into the next generation.

A common selection approach assigns a probability of selection, Pj , to each individual, j, based on its fitness value [113]. In general, j is an integer, which can vary between 1 and N [113]. A series of N random numbers is generated and compared

N against the cumulative probability, ∑ p j , of the population. The appropriate individual, j=1 i, is selected and copied into the new population.

107

Chapter 4 Optimization of RF CMOS Polyphase Filters

Various methods exist to assign probabilities to individuals, namely, roulette wheel, linear ranking and geometric ranking. In the GA implemented in this work, the roulette wheel mechanism was chosen to probabilistically select individuals based on some measures of their performance.

The roulette wheel selection method, developed by Holland [113], was the first

selection method. The probability, Pj , for each individual is defined by

F = j Pj N (4.21) ∑ Fj j=1

Where Fj is the fitness of individual j, and N is the population size.

As shown in Figure 4.4, the circumference of the roulette wheel is the sum of all six individual’s fitness values; the sizes of the sectors stand for the fitness values of the individuals. Individual 5, which has the largest sector, is the fittest individual, whereas individuals 6 and 4 are the least fit and, correspondingly, have the smallest sectors within the roulette wheel. To select an individual, a uniformly distributed random number is generated in the predefined interval, and the individual whose sector spans the random number is selected. This process is repeated until the desired number of individuals has been selected. The roulette wheel selection is not only used in genetic algorithms in conjunction with maximization, when combined with e.g. windowing and scaling, it is well suited for minimization and negativity. Thus, roulette wheel selection method has been chosen by the author.

108

Chapter 4 Optimization of RF CMOS Polyphase Filters

Figure 4.4 Roulette wheel selections.

C. Crossover and Mutation

Crossover involves splitting two individuals and then combining one half of each individual with the other pair [113]. Mutation involves altering one individual to produce a single new solution [113]. If chromosomes are as binary types represented, simple crossover and binary mutation can be adopted [113].

Let X and Y be two m-dimensional row vectors denoting individuals (parents) from the population. Simple crossover generates a random sample r from a uniform distribution from 1 to m and creates two new individuals according to equation (4.22) and equation (4.23).

< ′ xi, if i r x i =  (4.22) yi, otherwise < ′ yi, if i r y i =  (4.23) xi, otherwise

For example, consider the two pairs of binary strings

109

Chapter 4 Optimization of RF CMOS Polyphase Filters

P1 = 1 0 0 1 0 1 1 0, (4.24)

P2 = 1 0 1 1 1 0 0 0. (4.25)

If an integer position, i, is selected uniformly and randomly, and the genetic information exchanged between the individuals about this point, then two new offspring strings are produced. The two offspring below are produced when the crossover point i

= 5 is selected,

O1 = 1 0 0 1 0 0 0 0, (4.26)

O2 = 1 0 1 1 1 1 1 0. (4.27)

This crossover operation is not necessarily performed on all strings in the population. Instead, it is applied with a probability Px when the pairs are chosen for breeding.

Binary mutation flips each bit in every individual in the population with probability Pm according to following equation (4. 28):

− < ′ 1,xi if U(0,1) Pm x i =  (4.28) xi , otherwise

For example, mutating the fourth bit of O1 leads to the new string:

O1m = 1 0 0 0 0 0 0 0. (4.29)

Mutation is generally considered to be a background operator, which ensures that, the probability of searching a particular subspace of the problem space is never zero.

This has the effect of tending to inhibit the possibility of converging to a local optimum, rather than the global optimum.

110

Chapter 4 Optimization of RF CMOS Polyphase Filters

4.5.4 Initialization, Termination and Fitness Functions

GAs simultaneously operate on a number of potential solutions, called a population, consisting of some encoding of the parameter set [113]. The mode of operation generates the required number of individuals using a random number generator that uniformly distributes numbers in the desired range. However, since GAs can iteratively improve existing solutions, i.e., solutions from other heuristics and/or current practices, the initial population can be seeded with potentially good solutions, with the remainder of the population being randomly generated solutions. One of the variations is the extended random initialization procedure of Bramlette [113], whereby a number of random initializations are tried for each individual and the one with the best performance is chosen for the initial population. Typically, a population is composed of between 30 and 100 individuals, which is about ten times the number of variables to be optimized.

The GA moves from generation to generation, selecting parents and reproducing offspring until a termination criterion is met. Because the GA is a stochastic search method, it is difficult to formally specify convergence criteria. The most frequently used stopping criterion is a specified maximum number of generations [118]. Another termination strategy involves population convergence criteria. In general, GAs will force much of the entire population to converge to a single solution. When the sum of the deviations among individuals becomes smaller than some specified threshold, the algorithm can be terminated. The algorithm can also be terminated due to a lack of

111

Chapter 4 Optimization of RF CMOS Polyphase Filters

improvement in the best solution over a specified number of generations. Alternatively, a target value for the evaluation measure can be established based on some arbitrarily

‘acceptable’ threshold. Several strategies can be used in conjunction with each other.

The objective function [118] is used to provide a measure of how individuals have performed in the problem domain. In the case of a minimization problem, the fittest individuals will have the lowest numerical value of the associated objective function. This raw measure of fitness is usually only used as an intermediate stage in determining the relative performance of individuals in a GA [118].

Another function, the fitness function, is normally used to transform the value of the objective function f (x) into measure of relative fitness, thus:

F (x) = g (f (x)) (4.30) where g()⋅ transforms the value of the objective function to a non-negative number and

F()⋅ is the resulting relative fitness. This mapping is always necessary when the objective function is to be minimized as the lower objective function values correspond to fitter individuals.

A linear transformation which offsets the objective function is often used prior to fitness assignment, such that,

F (x) = a f (x) + b, (4.31) where a is a positive scaling factor. If we are minimizing, the offset b is used to ensure that the resulting fitness values are non-negative.

112

Chapter 4 Optimization of RF CMOS Polyphase Filters

Start

Create initial random population End

Design best

Apply fitness measure to individual individuals of the population for result

Create a new Yes Termination Select best population criteria satisfied? individuals No

Select genetic operations

Select one Select two Select one individual individuals individual

based on fitness based on fitness based on fitness

Perform Perform Perform reproduction crossove r mutation

Copy into new Insert offsprings Insert mutation population into new into new population population

Figure 4.5 Flowchart of the genetic algorithm implemented in PPFOPTIMA.

The main functions used in the optimization engine of PPFOPTIMA are listed in the Table 4.1. These GA elements have been integrated into an operational GA. The flowchart of this GA is shown in Figure 4.5.

113

Chapter 4 Optimization of RF CMOS Polyphase Filters

Main functions Description

ga Basic function

roulette Selection function

simpleXover Crossover function

binaryMutation Mutation function.

initializega Initialization function

maxGenTerm Termination function

Table 4.1 Main functions used in the optimization engine of PPFOPTIMA.

4.6 Implementation of PPFOPTIMA

4.6.1 Introduction

In Figure 4.6, the framework of PPFOPTIMA is shown, from which we can see that inputs needed from the user are specifications of the design, e.g. the operating frequency, and process related information. Under these conditions, the GA used in the optimization engine makes tradeoffs between resistors, capacitors and their corresponding physical size. Values of the resistors and the capacitors are determined by process tolerances and constraints from thermal noise. The physical sizes of the resistors and the capacitors are determined by component mismatch properties and constraints from noise coupling and insertion loss. The output of PPFOPTIMA comprises the optimized circuit dimension for schematic and the physical layout, which

114

Chapter 4 Optimization of RF CMOS Polyphase Filters

is convenient and efficient for designers under time-to-market pressures. Details of the system implementation will be illustrated in the following subsections.

RF CMOS PPFs CMOS design specification s process files

Quadrature Process Component Design accuracy tolerance mismatch constraint s

Tolerance design Maximum area Insertion Thermal Coupled of resistors of resistors loss noise noise and capacitors and capacitors

Fewer stages, Constraints on Minimum Minimum area resistors values area

Trade - off values of Trade - off areas of resistors and capacitors resistors and capacitors

Trade - off values and areas of resistors and capacitors by using genetic algorithms

Circuit sizing for schmatic and layout

Figure 4.6 Framework of PPFOPTIMA.

115

Chapter 4 Optimization of RF CMOS Polyphase Filters

4.6.2 Construction of Fitness Functions

Unlike using conventional optimization methods, the first step of the GA is to establish a fitness function F, which is the criterion in selecting the suitable population for the next generation. In PPFOPTIMA, the fitness function is a sum of IRR, chip area and the component mismatch of the resistors and the capacitors with different weights:

=+ + + F wS1 w2RC3IR() M M wR (4.32)

The real numbers w1, ww2 and 3 are the weighting factors for chip area S, for the

component mismatch of resistors M R , and capacitors M C , and for the image reject ratio

(IRR) RIR , respectively. In our application, since S , M R and M C are in the order of

−3 4 10 , w1 and w2 are chosen in the order of 10 to differentiate good population from poor ones.

4.6.3 Graphical User Interface

In order to facilitate users input and visualize the outputs, a graphical user interface (GUI) has been developed for PPFOPTIMA, which is depicted in Figure 4.7.

The blank area shown in Figure 4.7 will be filled by simulation results. The GUI has the following features:

1. Explicit and regulated user input information: Operating frequency and

process information required are listed in the user input boxes. In order to

avoid possible errors caused by mis-operations, data types in input boxes are

116

Chapter 4 Optimization of RF CMOS Polyphase Filters

regulated. For example, in the case of inputs that require numbers, strings will

not be accepted, and a popup window will notify the user about this.

Figure 4.7 Graphical user interface of PPFOPTIMA.

117

Chapter 4 Optimization of RF CMOS Polyphase Filters

2. Visualized and classified outputs: The optimization results are classified and

displayed in different categorized windows.

3. Programmable weights for the fitness function: Weighting factors for

component mismatch, chip area and image reject ratio are taken as inputs.

4. Preset values for tutorial purpose: In order to support novice users, input

parameters for RF CMOS PPF designed for a Bluetooth receiver in Fraunhofer-

IMS 0.6 µm CMOS technology are provided in the GUI.

5. Integrated high-level verification toolboxes: In order to verify the optimization

results, high-level verification toolboxes, namely, Monte Carlo (MC)

simulation and worst-case simulation toolboxes, have been developed and

integrated into PPFOPTIMA.

4.6.4 Verification Toolboxes

A. Introductory Remarks

In order to verify the performance of the synthesized circuit, dedicated verification toolboxes, namely, Monte Carlo (MC) simulation and worst-case simulation were developed as already mentioned in section 4.6.3. In our application, the Monte

Carlo (MC) simulation provides an estimate of the discrete probability density of gain mismatch and phase mismatch, which are related to the required IRR, the main specification of RF CMOS PPFs. The worst-case simulation gives us the possible worst-

118

Chapter 4 Optimization of RF CMOS Polyphase Filters

case values for both the gain mismatch and the phase mismatch versus frequency, respectively.

B. Monte Carlo Simulation

In a real design, there are a lot of processes happening in probabilistic ways, and it is hard to model or describe them by using ordinary or differential equations.

Therefore, a statistical representation is a suitable way to characterize them. In statistical simulations, sequences of random numbers with a certain probability distribution function (PDF) are used to model the stochastic process. Based on this modeling technique, responses of systems to stochastic inputs can be simulated. Usually, many statistical simulations runs are conducted and averaged to reach good accuracy of the simulation results. This is the method of Monte Carlo (MC) simulation, which has following primary components:

• Probability distribution functions (PDF) - the statistical description of the

physical, or mathematical, system.

• Random number generator - a source of random numbers to mimic stochastic

factors in the physical system.

• Sampling rule - a prescription for sampling from random numbers with the

specified PDF.

• Scoring (or tallying) - the accumulated outcomes to meet overall tallies or

scores for the quantities of interest.

119

Chapter 4 Optimization of RF CMOS Polyphase Filters

• Error estimation - an estimate of the statistical error (variance) as a function of

the number of trials and other quantities.

Process tolerances and component mismatch in integrated circuits are consequences of stochastic processes within a certain range, and they are usually available in CMOS process files derived by elaborate measurements. It is known that both process tolerances and component mismatch have truncated Gaussian probability distribution functions [102]. In our application, Monte Carlo (MC) simulation can be applied to verify the statistical nature of the IRR with certain process tolerances and a resultant component mismatch. In order to obtain comparatively stable and reliable results, many simulation steps must be performed, and the results are taken as an average over the number of Monte Carlo (MC) runs. A flowchart of the Monte Carlo simulation toolbox implemented in PPFOPTIMA is shown in Figure 4.8.

The effect of the image reject ratio (IRR) used in this toolbox is represented by the following equation:

p == RIRFm( gain,)[(,,,)]/ m phase∑ FRi ,1 C i ,1L R in , C in , p , (4.33) i=1

=∗±∗±[][] Ri,RjjRP11 M R, (4.34)

=∗±∗±[][] Ci, jjCP11 C M C, (4.35)

where PR , PC , M R and M C are vectors of random numbers normalized by process tolerances and component mismatch of a given CMOS process. In (4.33) ip= 1L , p is the number of Monte Carlo (MC) runs. In (4.34) and (4.35), j = 1Ln , n is the number of cascaded stages in an RF CMOS PPF.

120

Chapter 4 Optimization of RF CMOS Polyphase Filters

Start Generate random numbers

Normalize random numbers according to probability distrinution functions of process tolerances and component mismatch

Take random values of resitors and capacitors to evaluate the IRR

No Meet termination criteria?

Yes Computer output by averaging the statistical samples

Print out, and save output

End

Figure 4.8 Flowchart of the Monte Carlo simulation option in PPFOPTIMA

C.Worst-case Simulation

In circuit design, it is required that the worst-case circuit performance satisfies a given target specifications. For most circuits, worst-case circuit performance occurs as the combination of worst-case process tolerance, temperature and component mismatch.

121

Chapter 4 Optimization of RF CMOS Polyphase Filters

Start

Find worst image reject ratio of RF CMOS PPFs without process tolerances

Shift corner frequencies, to make worst image reject ratio fall into the operating band

Calculate component mismatch according to the areas of resistors and capacitors

Add mismatch into neighboring components

Calculate, save and print out simulation results

End

Figure 4.9 Flowchart of the novel worst-case simulation methodology in PPFOPTIMA.

To obtain worst-case simulation results with widely used commercial tools like, e.g. Cadence SpectreRF, the user need to carry out the simulations with variety of models. For example, slow-to-fast, fast-to-slow, fast-to-fast, slow-to-slow and slow-gain models must be considered. The various simulation results must then be compared in order to find the worst-case performance of the circuit. This procedure is inconvenient and expensive with respect to computation and simulation time.

122

Chapter 4 Optimization of RF CMOS Polyphase Filters

RF CMOS PPFs with varying numbers of cascaded stages have varying worst- case boundaries. Through analysis, we have found that worst-case boundary of RF

CMOS PPFs does not necessarily to occur with the worst process variation. Instead, it occurs in the case of a process variation where worst image reject ratio falls in the operating frequency band. The verification toolboxes of PPFOPTIMA take this observation into account, yielding a novel simulation methodology proposed by the author of this dissertation. The flowchart of the novel worst-case simulation methodology is shown in Figure 4.9.

4.7 Experimental Results

4.7.1 Overview

In order to verify effectiveness of PPFOPTIMA, two categories of experiments have been conducted. The first category of experiments is to synthesize and verify multi-stage RF CMOS PPFs for local oscillator (LO) quadrature generation in receivers for a given communication standard. In these experiments, RF CMOS PPFs for LO quadrature generation in a Bluetooth receiver are taken as examples. The second category of experiments is the automated synthesis and verification of RF CMOS PPFs in receivers for different communication standards, especially, for GSM, DECT, and

WCDMA receivers, by using PPFOPTIMA. The CMOS process used in all of these experiments is Fraunhofer-IMS 0.6 µm CMOS process.

123

Chapter 4 Optimization of RF CMOS Polyphase Filters

4.7.2 Experiments on RF CMOS PPFs for a Bluetooth Receiver

A. Introductory Remarks

In this section, multi-stage RF CMOS PPFs following target specifications of a low-IF Bluetooth receiver, which were synthesized and analyzed with PPFOPTIMA, will be presented. These RF CMOS PPFs are designed for LO quadrature generation in this low-IF Bluetooth receiver in which the LO frequency is 2.45 GHz. The specification derived from the Bluetooth standard and the low-IF receiver architecture is an image reject ratio (IRR) great than 30 dB, which can be translated into a gain mismatch of less than 0.7 dB, and a phase mismatch of less than 5 degrees. Although

PPFOPTIMA is capable of synthesizing RF CMOS PPFs automatically, in these experiments, RF CMOS PPFs have been synthesized and verified by using

PPFOPTIMA manually to verify the effectiveness of the tool.

The first step in using PPFOPTIMA is the dimensioning of the circuit by pressing the button ‘Optimization by GA’ in the GUI. Synthesis results, which include values, lengths, widths and layout areas of resistors and capacitors, are shown as ‘Optimization

Results’ in the GUI. After that worst-case simulations are used to check whether the performance of the synthesized RF CMOS PPF satisfies the target specifications over all of the process corners. Then, Monte Carlo simulations are used to check the probability distribution of the gain mismatch and the phase difference, respectively.

124

Chapter 4 Optimization of RF CMOS Polyphase Filters

B. Experiments on a 2-Stage RF CMOS PPF for a Bluetooth Receiver

Shown in Figure 4.10 is the synthesis result of a 2-stage RF CMOS PPF designed for LO quadrature generation in a low-IF Bluetooth receiver.

Figure 4.10 Synthesis result of a 2-stage RF CMOS PPF for a Bluetooth receiver.

The worst-case simulation results of the RF CMOS PPF synthesized in Figure

4.10 are shown in Figure 4.11. The gain mismatch, mgain , is 0.81 dB and the phase

125

Chapter 4 Optimization of RF CMOS Polyphase Filters

difference, dphase , is 92 degrees, i.e., the phase mismatch, mphase , is 2 degrees. As the gain mismatch cannot meet the target specification, RF CMOS PPFs with more cascaded stages must be tried in the following subsections.

Figure 4.11 Worst-case simulation results of a 2-stage RF CMOS PPF for a Bluetooth receiver.

Upper plot: gain mismatch mgain versus frequency f.

Lower plot: phase difference dphase versus frequency f.

126

Chapter 4 Optimization of RF CMOS Polyphase Filters

As worst-case simulation only provides a boundary of the circuit performance, in order to know the statistical distribution of the circuit performance, Monte Carlo (MC) simulation runs using 2000 samples of RF CMOS PPFs have been conducted.

Figure 4.12 Monte Carlo simulation results of a 2-stage RF CMOS PPF for a Bluetooth receiver.

Upper plot: histogram of the gain mismatch mgain .

Lower plot: histogram of the phase difference dphase .

127

Chapter 4 Optimization of RF CMOS Polyphase Filters

The Monte Carlo simulation results are expressed as frequency of occurrence histogram for different intervals of the gain mismatch and the phase difference, and they are shown in Figure 4.12. In the MC simulations, after 200 MC runs, the simulation results enter steady state. In 2000 samples of RF CMOS PPFs, 1880, that is, 94% of them have a gain mismatch between 0.52 dB and 0.81 dB, and 1892, that is 94.6% of them have a phase difference between 91.27 degrees and 91.97 degrees, that is, a phase mismatch between 1.27 degrees and 1.97 degrees.

C. Experiments on a 3-Stage RF CMOS PPF for a Bluetooth Receiver

As the 2-stage RF CMOS PPF synthesized cannot satisfy the target specifications, now let us check whether a 3-stage RF CMOS PPF can satisfy the specifications.

Synthesis results of a 3-stage RF CMOS PPF are shown in Figure 4.13. The worst-case simulation results shown in Figure 4.14 reveal a gain mismatch of 0.083 dB, and a phase difference of 90.15 degrees, i.e., a phase mismatch of 0.15 degrees. As the target specifications of this design are met, a 3-stage RF CMOS PPF is chosen.

To verify the statistical distribution of gain mismatch and phase mismatch in this design, MC simulation has been used. After 200 MC runs, the simulation results enter steady state. The obtained results are shown in Figure 4.15. In 2000 samples of RF

CMOS PPFs, 90% of them have a gain mismatch of less than 0.047 dB and a phase mismatch of less than 0.1 degrees.

128

Chapter 4 Optimization of RF CMOS Polyphase Filters

Figure 4.13 Synthesis results of a 3-stage RF CMOS PPF for a Bluetooth receiver.

The author would like to mention that in Monte Carlo simulations gain mismatch and phase mismatch could be worse than that from worst-case simulation, because in

129

Chapter 4 Optimization of RF CMOS Polyphase Filters

the worst-case simulation, the worst image reject ratio (IRR), in which worst gain mismatch and worst phase mismatch of the RF CMOS PPFs do not necessarily happen at the same time.

Figure 4.14 Worst-case simulation results of a 3-stage RF CMOS PPF for a Bluetooth receiver.

Upper plot: gain mismatch mgain versus frequency f.

Lower plot: phase difference dphase versus frequency f.

130

Chapter 4 Optimization of RF CMOS Polyphase Filters

Figure 4.15 Monte Carlo simulation results of a 3-stage RF CMOS PPF for a Bluetooth receiver.

Upper plot: histogram of the gain mismatch mgain .

Lower plot: histogram of the phase difference dphase .

D. Experiments on a 4-stage RF CMOS PPF for a Bluetooth Receiver

In this section, a 4-stage RF CMOS PPF for a Bluetooth receiver was synthesized.

The synthesis results are shown as ‘Optimization Results’ in Figure 4.16.

131

Chapter 4 Optimization of RF CMOS Polyphase Filters

Figure 4.16 Synthesis results of a 4-stage RF CMOS PPF for a Bluetooth receiver.

132

Chapter 4 Optimization of RF CMOS Polyphase Filters

The worst-case simulation results of the RF CMOS PPF are shown in Figure 4.17, in which the gain mismatch is 0.028 dB, and the phase difference is 90.031 degrees, i.e., the phase mismatch is equal to 0.031 degrees.

Figure 4.17 Worst-case simulation results of a 4-stage RF CMOS PPF for a Bluetooth receiver.

Upper plot: gain mismatch mgain versus frequency f.

Lower plot: phase difference dphase versus frequency f.

133

Chapter 4 Optimization of RF CMOS Polyphase Filters

Monte Carlo simulation results are shown in Figure 4.18, after 700 Monte Carlo runs, the simulation result enter steady state. The MC simulation results show that in

2000 samples of RF CMOS PPFs, more than 90% of them have a gain mismatch less than 0.005 dB and phase mismatch less than 0.01 degrees.

Figure 4.18 Monte Carlo simulation results of a 4-stage RF CMOS PPF for a Bluetooth receiver.

Upper plot: histogram of the gain mismatch mgain .

Lower plot: histogram of the phase difference dphase .

134

Chapter 4 Optimization of RF CMOS Polyphase Filters

From the simulation results above, we can see that the performance of the 4-stage

RF CMOS PPF synthesized is more than sufficient for the target specifications in a low-

IF Bluetooth receiver. However, for passive filters like RF CMOS PPFs, they have a nominal insertion loss of 3 dB/stage. In order to compensate the insertion loss, buffer amplifiers are usually necessary for RF CMOS PPFs with many cascaded stages, thus, causing higher power consumption. In the design of CMOS wireless receivers, low power consumption is required. Thus, the strategy for topology selection in

PPFOPTIMA is to use as few cascaded stages as possible to satisfy the target specifications.

4.7.3 Automated Synthesis and Verification of RF CMOS PPFs for

Different Communication Standards

A. Introductory Remarks

In Figure 4.19 the GUI of PPFOPTIMA for automated synthesis of RF CMOS

PPFs is shown. The specification needed is image reject ratio (IRR) for CMOS wireless receivers. With a given specification, a 2-stage RF CMOS PPF is chosen at first, and optimized by PPFOPTIMA, and then the worst-case simulation is conducted to verify whether the specifications can be met. If the specifications are met, a popup window will notify the user that a 2-stage RF CMOS PPF is chosen and the optimized circuit dimension is provided. If a 2-stage RF CMOS PPF cannot meet the specifications, the

135

Chapter 4 Optimization of RF CMOS Polyphase Filters

number of stages of the RF CMOS PPFs is increased by one until the specification can be met. The final results are an RF CMOS PPF with a selected number of stages and optimized circuit dimensions.

Figure 4.19 Graphic user interfaces of PPFOPTIMA

for automated synthesis of RF CMOS PPFs.

In order to verify the effectiveness of PPFOPTIMA in automated synthesis and verification, RF CMOS PPFs for LO quadrature generation in receivers of different communication standards, for example, GSM, DECT and WCDMA were synthesized and verified. The results will be presented in the remainder of this section 4.7.3.

136

Chapter 4 Optimization of RF CMOS Polyphase Filters

B. Automated Synthesis and Verification of RF CMOS PPF for a GSM

Receiver

Figure 4.20 Synthesis results of a 3-stage-RF CMOS PPF for a GSM receiver.

137

Chapter 4 Optimization of RF CMOS Polyphase Filters

In this experiment, an RF CMOS PPF targeting an image reject ratio (IRR) of at least 40 dB for a low-IF GSM receiver was synthesized and verified. A 3-stage RF

CMOS PPF was chosen by PPFOPTIMA, the synthesis results are shown in Figure 4.20.

Figure 4.21 Worst-case simulation results of a 3-stage RF CMOS PPF for a GSM receiver.

Upper plot: gain mismatch mgain versus frequency f.

Lower plot: phase difference dphase versus frequency f.

138

Chapter 4 Optimization of RF CMOS Polyphase Filters

The worst-case simulation results are shown in Figure 4.21, in which the IRR is

49.2 dB, the gain mismatch is 0.0512 dB and the phase difference is 90.1072 degrees, i.e., the phase mismatch is 0.1072 degrees.

Figure 4.22 Monte Carlo simulation results of a 3-stage RF CMOS PPF for a GSM receiver.

Upper plot: histogram of the gain mismatch mgain .

Lower plot: histogram of the phase difference dphase .

139

Chapter 4 Optimization of RF CMOS Polyphase Filters

In order to check the statistical distribution of gain mismatch and phase mismatch, a Monte Carlo (MC) simulation in PPFOPTIMA was conducted. After 200 MC runs, the results enter a steady state. The results of the MC simulation are shown in the Figure

4.22, from which we can see that in 2000 samples of RF CMOS PPFs, more than 90% of them have a gain mismatch of less than 0.045 dB, and a phase mismatch of less than

0.1 degrees.

Figure 4.23 Synthesis results of a 2-stage-RF CMOS PPF for a DECT receiver.

140

Chapter 4 Optimization of RF CMOS Polyphase Filters

C. Automated Synthesis and Verification of RF CMOS PPFs for a

DECT Receiver

In this section, an RF CMOS PPF targeting 28 dB IRR for a low-IF DECT receiver has been synthesized and verified. A 2-stage RF CMOS PPF was chosen by

PPFOPTIMA, the synthesis results are shown in Figure 4.23.

Figure 4.24 Worst-case simulation results of a 2-stage RF CMOS PPF for a DECT receiver.

Upper plot: gain mismatch mgain versus frequency f.

Lower plot: phase difference dphase versus frequency f.

141

Chapter 4 Optimization of RF CMOS Polyphase Filters

The worst-case simulation results of the RF CMOS PPF synthesized according to

Figure 4.23 are shown in Figure 4.24. The worst-case IRR is 30.7 dB, the gain mismatch is 0.612 dB, and the phase difference is 91.51 degrees, i.e., the phase mismatch is 1.51 degrees.

Figure 4.25 Monte Carlo simulation results of a 2-stage RF CMOS PPF for a DECT receiver.

Upper plot: histogram of the gain mismatch mgain .

Lower plot: histogram of the phase difference dphase .

142

Chapter 4 Optimization of RF CMOS Polyphase Filters

To check the statistical distribution of gain and the phase mismatch, Monte Carlo simulation in PPFOPTIMA was applied. After 200 MC runs, the simulation results enter a steady state. The MC simulation results are shown in Figure 4.25. In 2000 samples of RF CMOS PPFs, more than 90% of them have the gain mismatch between

0.45 dB to 0.61 dB, and the phase mismatch between 0.9 degrees and 1.5 degrees.

D. Automated Synthesis and Verification of RF CMOS PPFs for a

WCDMA Receiver

In this section, an RF CMOS PPF for LO quadrature generation in a low-IF

WCDMA receiver was synthesized and verified. The LO frequency is set to 1.90 GHz, and the targeting specification of RF CMOS PPF is 36 dB IRR. A 3-stage RF CMOS

PPF was chosen by PPFOPTIMA, the synthesis results are shown in Figure 4.26.

The worst-case simulation results are shown in Figure 4.27, in which the worst- case IRR is 49.1 dB, the gain mismatch is 0.0541 dB, the phase difference is 90.1201 degrees, i.e., the phase mismatch is 0.1201 degrees.

To check the statistical distribution of the gain mismatch and the phase mismatch, a Monte Carlo simulation in PPFOPTIMA has been conducted. The MC simulation results shown in Figure 4.28 demonstrate that, in 2000 samples of RF CMOS PPFs, more than 90% of them have the gain mismatch less than 0.04 dB, and the phase mismatch less than 0.1 degrees.

143

Chapter 4 Optimization of RF CMOS Polyphase Filters

Figure 4.26 Synthesis results of a 3-stage-RF CMOS PPF for a WCDMA receiver.

144

Chapter 4 Optimization of RF CMOS Polyphase Filters

Figure 4.27 Worst-case simulation results of a 3-stage RF CMOS PPF for a WCDMA receiver.

Upper plot: gain mismatch mgain versus frequency f.

Lower plot: phase difference dphase versus frequency f.

145

Chapter 4 Optimization of RF CMOS Polyphase Filters

Figure 4.28 Monte Carlo simulation results of a 3-stage RF CMOS PPF for a WCDMA receiver.

Upper plot: histogram of the gain mismatch mgain .

Lower plot: histogram of the phase difference dphase .

4.8 Summary

In this chapter, the optimization problem for RF CMOS PPFs has been formulated. Possible optimization algorithms like calculus-based optimization, gradient

146

Chapter 4 Optimization of RF CMOS Polyphase Filters

descend, simulated annealing (SA) and genetic algorithms (GA) have been analyzed.

GA has been selected for the optimization engine because of its advantages in escaping from local optima.

PPFOPTIMA, a GA based optimization tool for RF CMOS PPFs has been implemented by using MATLAB. In order to facilitate designers in design automation, this tool has been developed further into a specification-driven automated synthesis and verification environment incorporating dedicated worst-case and Monte Carlo simulation.

In order to verify the effectiveness of PPFOPTIMA, two types of experiments have been conducted. The first type of experiments consists of the synthesis and the verification of multi-stage RF CMOS PPFs in a receiver for a given communication standard. Here, a low-IF Bluetooth receiver has been taken as an example. The second type of experiments consists of the synthesis and verification of the RF CMOS PPFs for different communications standards, namely GSM, DECT, and WCDMA. The experimental results demonstrate that PPFOPTIMA is effective in synthesis, optimization and verification of RF CMOS PPFs.

Focusing on the optimization of RF CMOS PPFs, this chapter has the following contributions:

1. The methodology of optimization of RF CMOS PPFs with layout

considerations by using genetic algorithm (GA) has been illustrated.

147

Chapter 4 Optimization of RF CMOS Polyphase Filters

2. PPFOPTIMA, a computer-aided synthesis and optimization tool for RF

CMOS PPFs, has been presented.

3. Dedicated worst-case simulation and Monte Carlo simulation toolboxes for

verification of the performance of RF CMOS PPF have been developed.

148

Chapter 5 Summary and Outlook

Chapter 5

Summary and Outlook

5.1 Summary

RF CMOS polyphase filters (PPFs) is an efficient solution for high accuracy radio frequency quadrature generation in CMOS technology. The main specification of the

RF CMOS PPF, namely the quadrature accuracy, is layout dependent; and the requirements from component match are contradictory to that of minimization of noise coupling, signal loss and chip area, thus a tradeoff must be made in a specific design.

By simply following guidelines proposed by Behbahani [62], it takes intensive trials and many design iterations to reach a good design. Furthermore, with layout considerations, the optimization of RF CMOS PPFs cannot be solved by using analytical calculations, because of many constraints and tradeoffs in the design.

In this situation, a computer-aided analysis and design optimization tool for RF

CMOS PPFs is of great help to the community of RF CMOS PPFs designers, especially for industrial projects, which are under time-to-market pressure. Unfortunately, until now, there is no such dedicated tool available, to the author’s best knowledge.

Focused on analysis, design and optimization of RF CMOS PPFs, this dissertation has following contributions:

1. PPFANA, a dedicated software tool for simulation of quadrature accuracy in

RF CMOS PPFs influenced by process tolerances and component mismatch,

149

Chapter 5 Summary and Outlook

has been developed. It provides an efficient computer-aided analysis for RF

CMOS PPFs.

2. Based on the simplified RF CMOS models of resistors, and capacitors,

parasitic effects in RF CMOS PPFs have been analyzed. Techniques of

minimizing those unwanted influences from parasitics have been proposed, and

physical design considerations for RF CMOS polyphase filter in system-on-a-

chip (SoC) solution have been analyzed.

3. Silicon success of an RF CMOS polyphase filter for a low-IF Bluetooth

receiver was achieved. Measurement results from this practical design further

verified the effectiveness of PPFANA. Design consideration and design

heuristics from this design practice lay a solid foundation for this dissertation.

4. Based on heuristics from the practical design of an RF CMOS PPF, a design

automation oriented design flow for RF CMOS PPFs has been proposed.

5. By analysis on existing optimization algorithms, the methodology of synthesis

and verification of RF CMOS PPFs with layout considerations by using genetic

algorithm (GA) has been proposed in this dissertation.

6. PPFOPTIMA, a GA based optimization tool for RF CMOS PPFs has been

implemented by using MATLAB. In order to enable the designers in design

automation, PPFOPTIMA has been developed further towards a specification-

driven automated synthesis and verification environment incorporating

dedicated worst-case and Monte Carlo simulation options.

150

Chapter 5 Summary and Outlook

5.2 Outlook

Compared to Electronic Design Automation (EDA) tools for digital circuit, those for analog circuit, especially for RF circuit, are still in their infancy. Nowadays, RF analog design is still a kind of ‘art’, which is done by ‘Analog Artists’. Although some research groups, e.g. at the University of California at Los Angeles, and at the

Katholieke Universiteit Leuven, have contributed some design automation tools for some RF components, there is still a far way to go in the research topic.

Optimization is a key step in design automation of analog and RF circuits. Though

RF circuits are comparatively simple in the sense of the number of components, taking layout considerations into account, optimization of RF circuits is complicated because of multiple design objectives and constraints. In this situation, genetic algorithm (GA) has advantages over other conventional optimization techniques for its capability in escaping from local optima. The successful application of GA in the optimization of RF

CMOS PPFs demonstrates that GA is effective and efficient in RF circuit optimization.

However, this optimization methodology has following drawbacks:

1. GA is able to escape from local optima, but it is not good at finding exact

optimum point.

2. GA is not intelligent enough to be trained, that is, for GA based optimization

tools, if modification is needed; change of fitness function and more work is

needed.

3. It is still heuristics based trials to find suitable weights in applications of GAs.

151

Chapter 5 Summary and Outlook

Compared to GA, an artificial neural network (ANN) may lead to improvements because of its self-learning mechanisms. For RF circuit synthesis and optimization, an

ANN may find a wider application in the future.

152

References

References

I. Review and Outlook of CMOS Processes

[1] Gray, P.; Meyer, R.: Future directions of silicon ICs for RF personal communications. Proceedings of the Custom Integrated Circuits Conference (CICC’95), Santa Clara/CA, pp. 83-90, 1995. [2] Lee, T. H.: CMOS RF.: No longer an oxymoron. Proceedings of the IEEE Gallium Arsenide Integrated Circuit Symposium (ICS’97), Anaheim/CA, pp. 244-247, 1997. [3] Lee, T. H.: Recent developments in CMOS RF integrated circuits. Proceedings of the IEEE International Symposium (MTT-S’98), Baltimore/ML, pp.137-141, 1998. [4] Huang, Q.; Piazza, F.; Orsatti, P.; Ohguro, T.: The impact of scaling down to deep- submicron on CMOS RF circuits. IEEE Journal of Solid State Circuits, vol. 33 (1998), pp.1023-1036. [5] Wen, K.; Wuen, W.: CMOS RFIC: application to wireless transceiver design, IEICE Transactions on Electronics. vol. E83-C (2000), pp. 187-202. [6] Abidi, A. A.: RF CMOS comes of age. 2003 Symposium on VLSI Circuits Digest of Technical Papers, 4-89114-035-6/03, Kyoto/Japan, June 2003. [7] Hoffman, K.: System integration, from design to large scale integrated circuits. Chichester: Wiley, 2004.

II. CMOS Wireless Transceivers

[8] Abidi, A. A.: Direct-conversion radio transceivers for digital communication. IEEE Journal of Solid State Circuits, vol. 30 (1995), pp. 1399-1410. [9] Abidi, A. A.: Low-power radio-frequency ICs for portable communications. Proceedings of the IEEE, vol. 83 (1995), pp. 544-69. [10] Rofougaran, A.; Chang, J.; Rofougaran, M.; Abidi, A. A.: A 1 GHz CMOS RF front-end IC for a direct-conversion wireless receiver. IEEE Journal of Solid State Circuits. vol. 31(1996), pp. 880-889. [11] Rudell, J. C.; Ou, J. J.; Cho, T.; Chien, G.; Brianti, F.; Weldon, J. A.; Gray, P. R.: A 1.9GHz wide-band IF double conversion CMOS receiver for cordless telephone applications. IEEE Journal of Solid State Circuits, vol. 32 (1997), pp. 2071-2088. [12] Piazza, F.; Huang, Q.: A 12mA triple conversion RF receiver for GPS. IEEE Journal of Solid State Circuits, vol. 33 (1998), pp. 202-209. [13] Rofougaran, A.; Chang, G.; Rael, J. J.; Chang, J.; Rofougaran, M.; Chang, P. J.; Djafari, M.; Min, J.; Roth, E.; Abidi, A. A.; Samueli, H.: A single- chip 900 MHz spread- spectrum wireless transceiver in 1 µm CMOS, Part 2: Receiver Design. IEEE Journal of Solid State Circuits, vol. 33 (1998), pp. 1087-1099.

153

References

[14] Wu, S.; Razavi, B.: A 900-MHz/1.8-GHz CMOS receiver for dual-band applications. IEEE Journal of Solid State Circuits, vol. 33 (1998), pp. 2178-2185. [15] Tadjpour, S.; Cijvat, E.; Hegazi, E.; Abidi, A. A.: A 900-MHz dual-conversion low-IF GSM receiver in 0.35µm CMOS. IEEE Journal of Solid State Circuits, vol. 36 (2001), pp. 1992-2002. [16] Zeijl, P. van.; Eikenboek, J. T.; Vervoort, P. P.; Setty, S.; Tangenberg, J.; Shipton, G.; Kooistra, E.; Keekstra, I.C.; Belot, D.; Visser, K.; Bosma, E.; Blaakmeer, S.C.: A Bluetooth radio in 0.18 µm CMOS. IEEE Journal of Solid State Circuits, vol. 37 (2002), pp. 1679-95. [17] Manstretta, D.; Castello, R.; Gatta, F.; Rossi, P.; Svelto, F.: A 0.18µm CMOS direct conversion receiver front-end for UMTS. Proceedings of IEEE Solid State Circuit Conference (ISSCC’02), Leuven/Belgium, Digest of Technical Papers, pp. 1120-1124. [18] Lee, K. Y.; Lee, S. W.; Koo, Y.; Huh, H.; Nam, H.; Lee, J.; Park, J.; Lee, K.; Jeong, D.; Kim, W.: A full-CMOS 2-GHz WCDMA direct conversion transmitter and receiver. IEEE Journal of Solid State Circuits, vol. 38 (2003), pp. 1174-1186.

III. Wireless Transceiver Architectures

[19] Hamilton, N. C.: Aspects of direct conversion receiver design. Proceedings of the fifth International Conferences on HF Radio System and Technology, Edinburgh/ UK, pp. 299-303, 1991. [20] Min, J.; Rofougaran, A.; Samueli, H.; Abidi, A. A.: An all-CMOS architecture for a low-power frequency-hopped 900 MHz spread-spectrum transceiver. Proceedings of the Custom IC Conference, San Diego/ CA, pp. 379-382, 1994. [21] Pottie, G. J.: System design choices in personal communications. IEEE Personal Communications, vol. 2 (1995), No. 5, pp. 50-67. [22] Rofougaran, A. G.; Chang, J. J.; Rael, J.; Chang, Y.C.; Rofougaran, M.; Chang, P. J.; Djafari, M.; Min, J.; Roth, E.; Abidi, A. A.; Samueli, H.: A single-chip 900 MHz spread-spectrum wireless transceiver in 1-µm CMOS, part 1: architecture and transmitter design. IEEE Journal of Solid State Circuits, vol. 33, (1998), pp. 583-601. [23] Crols, J.; Steyaert, M.: CMOS wireless transceiver design. London: Kluwer Academic Publishers, second edition, 2000. [24] Mirabbasi, S.; Martin, K.: Classical and modern receiver architectures. IEEE Communications Magazine, vol. 38 (2000), No. 8, pp. 132-139. [25] Razavi, B.: RF CMOS transceivers for cellular telephony. IEEE Communications Magazine, vol. 41 (2003), No. 8, pp. 144-149.

IV. Image Reject Mixer and Image Reject Receiver

154

References

[26] Rudell, J. C.; Ou, J. J.; Cho, T. band Chien, G.; Brianti, F.; Weldon, J. A.; Gray P. R.: A 1.9-GHz wide-band IF double conversion CMOS receiver for cordless telephone applications. IEEE Journal of Solid State Circuits, vol. 32 (1997), pp. 2071-2088. [27] Long, J. R.; Maliepaard, M. C.: A 1V 900MHz image-reject down-converter in 0.5 µm CMOS. Proceedings of the Custom Integrated Circuits Conference (CICC’99), San Diego/CA, pp. 665-668, May, 1999. [28] Maligeorgos J.; Long, J. R.: A 2V 5.1-5.8 GHz image-reject receiver with wide dynamic range. Proceedings of the International Solid State Circuits Conference (ISSCC’2000), pp .322-330, Feb. 2000. [29] Long, J. R.: A low-voltage 5.1-5.8-GHz image-reject down converter RF IC. IEEE Journal of Solid State Circuits, vol. 35 (2000), pp. 1320-1328. [30] Montemayor, R.; Razavi, B.: A self-calibrating 900-MHz CMOS image-reject receiver. Proceedings of the European Solid State Circuit Conference, pp. 292-295, Sept. 2000. [31] Maligeorgos, J. P.; Long, J. R.: A low-voltage 5.1-5.8-GHz image-reject receiver with wide dynamic range. IEEE Journal of Solid State Circuits, vol. 35 (2000), pp. 1917-1926. [32] Vancorenl, P.; Steyaert, M.: A wideband IMRR improving quadrature mixer/LO generator. Proceedings of the European Solid State Circuits Conference (ESSIRC”2001), Villach/Austria, pp. 360-363, Sept, 2001. [33] Weldon, J. A.; Narayanaswami, R. S.; Rudell, J. C.; Lin, L.; Masanori, O.; Dedieu, S.; Tsai, K. C.; Lee, C. W.; Gray, P. R.: A 1.75 GHz highly integrated narrow-band CMOS transmitter with harmonic-rejection mixers. IEEE Journal of Solid State Circuits, vol. 36 (2001), pp. 2003-2015. [34] Der, L.; Razavi, B.: A 2-GHz CMOS image-reject receiver with LMS calibration. IEEE Journal of Solid State Circuits, vol. 38 (2003), pp. 683-695.

V. Quadrature Generation Techniques

[35] Yamamoto, K.; Maemura, K.; Andoh, N.; Mitsui, Y.: A 1.9-GHz-band GaAs direct- quadrature modulator IC with a phase shifter. IEEE Journal of Solid State Circuits, vol. 28 (1993), pp. 994-1000. [36] Rofougaran, A.; Rael, J.; Rofougaran, M.; Abidi, A. A.: A 900 MHz CMOS LC-oscillator with quadrature outputs. Proceedings of the International Solid State Circuits Conference (ISSCC’96), San Francisco/CA, pp. 392-393, 1996. [37] Navid, S.; Behbahani, F.; Fotowat, A.; Hajimiri, A.; Gaethke, R.; Delurio, M.: Level- locked loop, A technique for broadband quadrature signal generation. Proceedings of the Custom Integrated Circuits Conference, Santa Clara/CA, pp. 411-414, May 1997. [38] Maloberti, F.; Signorelli, M.: Quadrature waveform generator with enhanced performances. Proceedings of the Symposium on VLSI circuits (VLSI’98), Lafayette/Louisiana, pp. 56-57, 1998.

155

References

[39] Matsuoka, H.; Tsukahara, T.: A 5-GHz frequency-doubling quadrature modulator with a ring-type local oscillator. IEEE Journal of Solid State Circuits, vol. 34 (1999), pp. 1345- 1348. [40] Liu, T. P.; Westerwick, E.: 5-GHz CMOS radio transceiver front-end chipset. IEEE Journal of Solid State Circuits, vol. 35 (2000), pp. 1927-1933. [41] Osa, J.; Carlosena, A.: Limitations of the MOS resistive circuit in MOSFET-C implementation: bandwidth, noise, offset and non-linearity. Analog Integrated Circuits and Signal Processing, vol. 28 (2001), pp. 239-252. [42] Melville, R.; Long, D.; Gopinathan, V.; Kinget, P.: An injection-locking scheme for precision quadrature generation. Proceedings of the European Solid State Circuits Conference, Villach/Austria, pp. 275-279, Sept. 2001. [43] Leenaerts, D. M. W.; Vaucher, C. S.; Bergveld, H. J.; Thompson, M.; Moore, K.: A 15- mW fully integrated I/Q synthesizer for Bluetooth in 0.18µm CMOS. IEEE Journal of Solid State Circuits, vol. 38 (2003), pp.1155-1162. [44] Mazzanti, A.; Uggetti, P.; Rossi, P.; Svelto, F.: Injection locking LC dividers for low power quadrature generator. Proceedings of the IEEE Custom Integrated Circuits Conference (CICC’2003), pp. 328-332, 2003.

VI. Polyphase Filters (Patent Related Documentations)

[45] Gingell, M. J.: A symmetrical polyphase network, British Patents 1,174,709 & 1,174,710. June 7, 1968. US Patent 3,559,042 & 3,618,133, Jan 26, 1971. [46] Gingell, M. J.: Single sideband modulation using sequence asymmetric polyphase networks, Electrical Communication Magazine, vol. 48 (1973), pp. 21-25. [47] Hawker, P.: Polyphase system for SSB generation. Radio Communication, pp. 698-699, Oct. 1973. [48] Gingell, M. J.: The synthesis and application of polyphase networks with sequence asymmetric properties, Ph.D. Thesis, University of London, 1975. [49] Gingell, M. J.: Sequence asymmetric polyphase networks: application to FDM. IEE Colloquium on Applications of Active, Digital and Passive Filters, London/UK, January 1975. [50] Hawker, P.: G3PLX polyphase SSB generator. Radio Communication, pp. 379-381, May 1975. [51] Horowitz.; Hill.: The art of electronics. New York, Cambridge University Press, 1990. [52] Richard, H.: Polyphase direct conversion SSB. Wireless World, pp. 202-206, March 1994. [53] Schmidt, K.: Phase-shift network analysis and optimization. QEX including Communications Quarterly, pp. 17-23, April 1994. [54] Tetsuo, Y.: Polyphase network calculation using a vector analysis method. QEX including Communications Quarterly, pp. 9-15, June 1995.

156

References

VII. Analysis and Design of RF CMOS Polyphase Filters

[55] Steyaert, M.; Crols, J.: Analog integrated polyphase filters. Proceedings of the Workshop on Advances in Analog Circuit Design, Duisburg / Germany, pp. 18, March 1994. [56] Crols, J.; Steyaert, M.: An analog integrated polyphase filter for a high performance low- IF receiver. Proceedings of the IEEE Symposium on VLSI Circuits (VLSI’95), Kyoto / Japan, pp. 87-92, June 1995. [57] De Ranter, C.; Borremans, M.; Steyaert, M.: A wideband linearisation technique for non- linear oscillators using a multi-stage polyphase filter. Proceedings of the European Solid State Circuits Conference (ESSIRC’99), Duisburg / Germany, pp. 214-217, Sept. 1999. [58] Galal, S. H.; Tawfik, S.: On the design and sensitivity of RC sequence asymmetric polyphase networks in RF integrated transceiver. Proceedings of the IEEE International Symposium on Circuit and System (ISCAS’99), pp. 593-597, 1999. [59] Galal, S. H.; Ragaie, H. F.; Tawfik, M. S.: RC sequence asymmetric polyphase networks for RF integrated transceivers. IEEE Transactions on Circuit and System (II), vol.47 (2000), pp. 1127-1134. [60] Borremans, M.; De Muer, B.; Steyaert, M.: The optimization of GHz integrated CMOS quadrature VCOs based on a polyphase filter loaded differential oscillator. Proceedings of the IEEE International Symposium on Circuits and Systems (ISCAS’2000), Geneva / Switzerland, pp. 729-732, May 2000. [61] Andreani, P.; Mattisson, S.; Essink, B.: A CMOS gm-C polyphase filter with high image band rejection. Proceedings of the European Solid State Circuits Conference (ESSIRC’2000), pp. 244-247, Sept. 2000. [62] Behbahani, F.; Kishigami, Y.; Leete, J.; Abidi, A. A.: CMOS mixers and polyphase filters for large image rejection. IEEE Journal of Solid State Circuits, vol. 36 (2001), pp. 873-887. [63] Mihai, S.; Tiberiu, A.: Power, accuracy and noise aspects in CMOS mixed-signal design. Boston: Kluwer Academic Publishers, March 2002. [64] Shi, B.; Shan, W.; Andreani, P.: A 57-dB image band rejection CMOS Gm-C polyphase filter with automatic frequency tuning for Bluetooth. Proceedings of the IEEE International Symposium on Circuit and System (ISCAS’02), Scottsdale/AZ, pp. 169-172, June 2002. [65] Kobayashi, H.; Kang, Jian.; Kitahara, Tokashi.: Explicit transfer function of RC polyphase filter for wirless transceiver. Proceedings of the Third IEEE Asian-pacific Conference on ASICs (APASIC’02), Session 3A-Analog Communication Circuits (II), Paper 5, Taipei / Taiwan, August 2002. [66] Andreani, P.; Bonfanti, A.; Romanò, L.; Samori, C.: Analysis and Design of a 1.8-GHz CMOS LC quadrature VCO. IEEE Journal of Solid State Circuits, vol. 37 (2002), pp. 1737-1747. [67] Kadoyama, T.; Suzuki, N.; Sasho, N.; Iizuka, H.; Nagase, I.; Usukubo, H.; Katakura, M.; A complete single-chip GPS receiver with 1.6-V 24-mW radio in 0.18-µm CMOS.

157

References

Proceedings of the Symposium on VLSI Circuits (VLSI’03), Kyoto / Japan, Section 10, paper 4, June 2003. [68] De Ranter, C.; Steyaert, M.: High data rate transmitter circuits, RF CMOS design and techniques for design automation. Boston: Kluwer Academic Publisher, 2003.

VIII. Analog Circuit Analysis, Device Modeling and Layout

[69] Chen, W. K.: Passive and active filters, theory and implementations. New York: Wiley, 1986. [70] Gray, P. R.; Meyer, R. G.: Analysis and Design of Analog Integrated Circuits, Wiley, 1993. [71] Martinez, J. S.; Stayaert, M.; Sansen, W.: High-performance CMOS continuous-time filters. Boston: Kluwer Academic Publishers, 1993. [72] Tsividis, Y. P.: Integrated continuous-time filter design - an overview. IEEE Journal of Solid State Circuits, vol. 29 (1994), pp. 166-176. [73] McNutt, M. J.; LeMarquis, S.; Dunkley, J.: Systematic capacitance matching errors and corrective layout procedures. IEEE Journal of Solid State Circuits, vol. 29 (1994), pp. 611- 616. [74] Berge, J. M.; Levia, O.; Rouillard, J.: Modeling in analog design. Boston, Kluwer Academic Publishers, 1995. [75] Engberg, J.; Larsen, T.: Noise theory of linear and nonlinear circuits. Wiley, 1996. [76] Klaassen, D. B. M.: Compact modeling of sub-micron CMOS. Proceedings of the European Solid State Circuits Conference (ESSIRC’96), Neuchatel/Switzerland, pp. 40-46, Sept. 1996. [77] Baker, R. J.; Li, H. W.; Boyce, D. E.: CMOS circuit design, layout, and simulation. New York: IEEE Press, 1998. [78] Thomas, R. E.; Rosa, A.: The analysis and design of linear circuits, Wiley, 2001. [79] Cheng, Y.: MOSFET modeling for RF IC design. International Journal of High Speed Electronics and Systems, vol.11 (2001), pp. 1321-1340. [80] Allen P.; Holberg, D.: CMOS analog circuit design. Oxford University Press, 2002. [81] Ytterdal, T.; Cheng, Y.; Fjeldly, T. A.: Device modeling for analog and RF CMOS circuit design. Wiley, 2003.

IX. RF Microeletronic Design (Books)

[82] Goyal, R.: High frequency analog integrated circuit design. New York: Wiley, 1995. [83] Nibler, F.: High frequency circuit engineering. London: IEE Press, 1996. [84] Razavi, B.: RF Microelectronics. New Jersey: Prentice-Hall, 1997. [85] Lee, T. H.: The design of CMOS radio-frequency integrated circuits. Cambridge: Cambridge University Press, 1998. [86] Pozar, D. M.: Microwave and RF design of wireless systems. New York: Wiley, 2001.

158

References

X. Substrate Noise Coupling

[87] Verghese, N.; Allstot, D. J.: Computer-aided design considerations for mixed-signal coupling in RF integrated circuits. IEEE Journal of Solid State Circuits, vol. 33 (1998), pp. 314-323. [88] Pfost, M.; Rein, H.: Modeling and measurement of substrate coupling in Si-bipolar ICs up to 40 GHz. IEEE Journal of Solid State Circuits, vol. 33 (1998), pp. 582-591. [89] Yue, C. P.; Wong, S. S.: On-chip spiral inductors with patterned ground shields for Si- based RF ICs. IEEE Journal of Solid State Circuits, vol. 33 (1998), pp. 743-752. [90] Charbon, E.; Gharpurey, R.; Meyer, R. G.; Sangiovanni-Vincentelli, A.: Substrate optimization based on semi-analytical techniques. IEEE Transactions on Computer-Aided Design, vol. 18 (1999), pp. 172-190. [91] Costa, J. P.; Chou, M.; Silveira, L. M.: Efficient techniques for accurate modeling and simulation of substrate coupling in mixed-signal ICs. IEEE Transactions on Computer- Aided Design, vol. 18 (1999), pp. 597-607. [92] Colvin, J. T.; Bhatia, S. S.; Kenneth, K. O.: Effects of substrate resistances on LNA performance and a bond-pad structure for reducing the effects in a silicon bipolar technology. IEEE Journal of Solid State Circuits, vol. 34 (1999), pp. 1339-1344. [93] Aragones, X.; Rubio, A.: Experimental comparison of substrate noise coupling using different wafer types. IEEE Journal of Solid State Circuits, vol. 34 (1999), pp. 1405-1409. [94] Felder, M.; Ganger, J.: Analysis of ground-bounce induced substrate noise coupling in a low resistive bulk epitaxial process: design strategies to minimize noise effects on a mixed- signal chip. IEEE Transactions on Circuit and System (II), vol. 46 (1999), pp. 1427-1436. [95] Makoto N.; Jin N.; Takashi M.; Atsushi I.; Measurements and analyses of substrate noise waveform in mixed-signal IC environment. IEEE Transactions on Computer-Aided Design, vol. 19 (2000), pp. 671-678. [96] Samavedam, A.; Sadate, A.; Mayaram, K.; Fiez T. S.: A scalable substrate noise-coupling model for design of mixed-signal ICs. IEEE Journal of Solid State Circuits, vol. 35 (2000), pp. 895-904. [97] Yuan, Z. Y.; Li, Z. F.; Zou, M. L.: Computer-aided analysis of on-chip interconnects near semiconductor substrate for high-speed VLSI. IEEE Transactions on Computer-Aided Design, vol. 19 (2000), pp. 990-998. [98] Masoumi, N.; Elmasry, M. I.; Safieddin, S. N.: Fast and efficient parametric modeling of contact-to-substrate coupling. IEEE Transactions on Computer-Aided Design, vol. 19 (2000), pp. 1282-1292. [99] Charbon, E.; Gharpurey, R.; Miliozzi, P.; Meyer, R.; Sangiovanni-Vincentelli, A.: Substrate noise-analysis and optimization for IC design. Boston: Kluwer Academic Publishers, 2001. [100] Peng, M. S.; Lee, H. S.: Study of substrate noise and techniques for minimization. Proceedings of the Symposium on VLSI Circuits (VLSI’03), Section 15, paper 2, Kyoto / Japan, June 2003.

159

References

[101] Charbon, E.; Miliozzi, P.; Carloni, L. P.; Ferrari, A.; Sangiovanni-Vincentelli, A.: modeling digital substrate noise injection in mixed-signal ICs. IEEE Transactions on Computer Aided Design of Integrated Circuit, vol. 18 (1999), pp. 301-310.

XI. Tolerance Design

[102] Spence, R.; Soin, R. S.: Tolerance design of electronic circuit. New York: Addison- Wesley, 1997.

XII. Conventional Optimization Methods and Applications in Electronic Design

[103] Sapatnekar, S. S.; Rao, V. B.; Vaidya, P. M.; Kang, S. M.: An exact solution to the transistor sizing problem for CMOS circuits using convex approximation. IEEE Transaction on Computer–Aided Design, vol. 12 (1993), pp. 1621-1634. [104] Devadas, S.; Malik, S.: Survey of optimization techniques targeting low power VLSI circuit. Proceedings of the Conference on Design Automation (DAC’95), San Francisco/CA, pp. 738-742, 1995. [105] Wolfe, A.: Opportunities and obstacles in low–power system–level CAD. Proceedings of the Conference on Design Automation (DAC’96), Paris/France, pp. 1178-1182, 1996. [106] Conn, A. R.; Haring, R. A.; Visweswariath, C.: Noise considerations in circuit optimization. Proceedings of the IEEE/ACM International conference on Computer Aided Design, Baltimore/ML, pp. 220-227, 1998. [107] Del Mar Hershenson, M.; Mohan, S. S.; Boyd, S. P.; Lee, T. H.: Design and optimization of LC oscillators. Proceedings of the IEEE/ACM International Conference on Computer Aided Design, San Jose / CA, pp. 65-69, Nov. 1999.

XIII. Simulated Annealing and Applications in Electronic Design

[108] Kirkpatrick, S.; Gelatt Jr. C. D.; Vecchi, M. P.: Optimization by Simulated Annealing. Science, pp. 671-680, 1983. [109] Gielen, G.; Walscharts, H.; Sansen, W.: Analog circuit design optimization based on symbolic simulation and simulated annealing. IEEE Journal of Solid State Circuits, vol. 25 (1990), pp. 707-713. [110] Swings, K.; Gielen, G.; Sansen, W.: An intelligent analog IC design system based on manipulation of design equations. Proceedings of the IEEE Custom Integrated Circuits Conference (CICC’90), pp. 8.6.1-8.6.4, 1990. [111] Lampaert, K.; Gielen, G.; Sansen, W.: A performance-driven placement tool for analog integrated circuits. IEEE Journal of Solid State Circuits, vol. 30 (1995), pp. 773-780.

160

References

[112] Carley, L. R.; Gielen, G.; Rutenbar, R.; Sansen, W.: Synthesis tools for mixed-signal ICs: Progress on frontend and backend strategies. Proceedings of the Design Automation Conference (DCA’96), Paris/France, pp. 298-303, June 1996.

XIV. Genetic Algorithms and Applications in Electronic Design

[113] Goldberg, D.E.: Genetic algorithms in search, optimization and machine learning. New York: Addison-Wesley, 1989. [114] Verghese, N. K.; Allstot, D. J.: Computer-aided design considerations for mixed-signal coupling in RF integrated circuits. IEEE Journal of Solid State Circuits, vol. 33 (1998), pp. 314-323. [115] Gupta, R.; Allstot, D.J.: Parasitic-aware design and optimization in CMOS RF integrated circuits. Proceedings of the IEEE International Microwave Symposium (MTT-S’98), Baltimore/ML, pp. 1867-1870, 1998. [116] Gupta, R.; Ballweber, B.M.; Allstot, D. J.: Design and optimization of CMOS RF power amplifiers. IEEE Journal of Solid State Circuits, vol. 36 (2001), pp. 166-175. [117] Choi, K.; Allstot, D. J.; Kiaei, S.: Parasitic-aware synthesis of RF CMOS switching power amplifiers. Proceedings of the IEEE International Symposium on Circuit and System (ISCAS’2002), Leuven/Belgium, vol. I, pp. 269-272, 2002. [118] Zebulum, R. S.; Pacheco, M. C.; Vellasco, M. R.: Evolutionary electronics-automatic design of electronic circuits systems by genetic algorithms. New York: CRC Press, 2002. [119] Allstot, D. J.; Choi, K.; Park, J.: Parasitic-aware optimization of CMOS RF circuits. Boston: Kluwer Academic Publishers, February 2003

XV. Ph.D Dissertations

[120] Kuhn, W. B.: Design of integrated, low power, radio receivers in BiCMOS technologies. Ph.D dissertation in Electrical Engineering, Virginia Polytechnic Institute and State University, 1995. [121] Min, J.: Analysis and design of a frequency-hopped spread-spectrum transceiver for wireless personal communications. Ph.D. dissertation in Electrical Engineering, University of California, Los Angeles, 1996. [122] Chang, J.: An integrated 900 MHz spread-spectrum wireless receiver in 1-µm CMOS and a suspended technique. Ph.D dissertation in Electrical Engineering, University of California, Los Angeles, March 1998. [123] Shaeffer, D.K.: The design and implementation of low-power CMOS radio receivers. Ph.D dissertation in Electrical Engineering, Stanford University, 1998. [124] Basedau, P. M.: Analysis and design of LC and . Ph.D dissertation in Electric Engineering, Swiss Federal Institute of Technology, Zurich, 1999. [125] Delaurenti, M.: Design and optimization techniques of high–speed VLSI circuits. PhD dissertation in Electrical Engineering, Politecnico di Torino, December 1999.

161

References

[126] Piazza, F.: Low power RF-receiver front-end ICs for mobile communications. Ph.D dissertation in Electrical Engineering, Swiss Federal Institute of Technology, Zurich, 2000. [127] Lin, L.: Design techniques for high performance integrated frequency synthesizers for multi-standard wireless communication applications. Ph.D dissertation in Electrical Engineering, University of California, Berkeley, 2000. [128] Hitko, D. A.: Circuit design and technological limitations of silicon RFICs for wireless applications. Ph.D dissertation in Electrical Engineering, Massachusetts Institute of Technology, 2002

162

Appendix 1. Publications from the Author

Appendix 1

Publications from the Author

Part 1. Publications from the Author After 2001

ZHA1. Zhang, Z.S.; Christoffers, N.; Hosticka B.J.; Kaiser, T.; Kokozinski, R.; Lin, J.: A survey of oscillator phase-noise: analysis and simulation. Proceedings of the Second Joint Symposium on Opto- & Microelectronic Devices and Circuits (SODC’02), pp. 322-326, Stuttgart/Germany, March 2002. (in English) ZHA2. Zhang, Z.S.; Kolnsberg, S.; Kokozinski, R.: Design considerations for RF CMOS polyphase filter in low-cost digital SoC solution. On-line Proceedings of The sixth workshop on Analog Circuit: http://www.imtek.uni-freiburg.de/workshop2004/, Freiburg/Germany, March 2004. (in English) ZHA3. Zhang, Z.S.; Kolnsberg, S.; Kokozinski, R.: Synthesis of RF CMOS polyphase filters with layout considerations. Chinese Journal of Semiconductors, vol.25 (2004), No.12, pp. 1612-1617. (in English)

Part 2. Publications from the Author Before 2001

ZHA4. Zhang, Z.S.; Lin, J.; Chen, Z.B.; Sun, M.: Design and experiments of PHV-I portable high- frequency vibrator, Instrument Technology & , vol.36 (2000), No.10, pp. 14-18. (in Chinese) ZHA5. Zhang, Z.S.; Lin, J.; Chen, Z.B.; Yu, S.B.: Development of portable high-frequency vibrator. Automation in Petroleum Industry, vol.14 (2000), No.6, pp. 14-17. (in Chinese) ZHA6. Zhang, Z.S.; Lin, J.; Chen, Z.B.; Yu, S.B.: Design and implementation of portable high frequency vibrator. Measurement & Control Technique, vol.19 (2000), No.10, pp. 10-53. (in Chinese) ZHA7. Zhang, Z.S.; Lin, J.; Chen, Z.B.; Yu, S.B.: An industrial PC-based measurement & control system in portable high-frequency vibrator. Computer Automated Measurement & Control, vol.8 (2000), No.4, pp. 10-13. (in Chinese) ZHA8. Zhang, Z.S.; Lin, J.; Jiang, H.: A novel interface between non-standard keyboard and industrial PC in portable measurement & control instruments. Measurement & Control Technique, vol.19 (2000), No.6, pp. 10-61. (in Chinese) ZHA9. Zhuang, J.; Lin, J.; Wu D. J.; Zhang, B.J.; Zhang, Z.S.: Analysis on amplitude characteristics of the coupling process between PHV and the earth. Journal of Changchun University of Science & Technology, vol.29 (1999), No.2, pp. 184-188. (in Chinese)

163

Appendix 1. Publications from the Author

ZHA10. Yu, S.B.; Lin, J.; Zhang, Z.S.: The Study on the frequency characteristic of portable high- frequency vibrator. Proceedings of The Fourth International Conference on Electronic Measurement & Instruments (ICEMI’99), Harbin/China, pp. 191-195, 1999. (in English) ZHA11. Zhang, Z.S.; Lin, J.; Yu, S.B.: The optimal signal design of linear sweep in PHVS system. Petroleum Instruments, vol.12 (1998), No.3, pp. 1-5. (in Chinese) ZHA12. Zhang, Z.S.: Serial ADC DSP101/102 directly interfaced with DSP and its applications. Petroleum Instruments, vol.12 (1998), No.2, pp. 19-22. (in Chinese) ZHA13. Zhang, Z.S.; Lin, J.; Fu X.J.; Sun C.T.: An analysis on sweep signal design of vibroseis system. Petroleum Instruments, vol.11 (1997), No.6, pp. 10-14. (in Chinese) ZHA14. Zhang, Z.S.: Realizing digital programmable filter by using universal filter UAF42. Electronic Technology, vol.24 (1997), No.9, pp. 13-34. (in Chinese)

164

Appendix 2 Transfer Functions of Multi-stage RF CMOS PPFs

Appendix 2

Transfer Functions of Multi-Stage RF CMOS PPFs

A2.1 Explicit Transfer Function of 2-Stage RF CMOS PPFs

The transfer function of the 2-stage RF CMOS PPF can be obtained by multiplying the chain matrices of each stage as follows:

Vin1  1+jω R 1 C 1 R 1  =  ωω   Iin1-ω R11 C  2j C 1 1+j R 1 C 1  (A2.1) 1 1+jω R2 C22 R V out . ωω 1-ωRC222j C2 1+j R 2 C 2 I out

The open circuit ( Iout = 0) complex transfer function is: ωω ω (1- RC)(1-11 RC) 22 H(j )= 2 . (A2.2) 1+jωω (R1 C1 +R 22 C +2R 12 C )- (R 1212 R C C )

Equation (A2.1) can also be expressed as:

H(jωω )=H12 (j )+jH (j ω) , (A2.3)

2 1+ω (RRCC)1212 1 ω Where H(j )= 2 , (A2.4) 1+jωω (RC+RC+2RC)-1 1 22 12 (RRCC 1212)

j(RC+RC)ω 11 22 2 ω H(j )= 2 , (A2.5) 1+jωω (RC+RC+2RC)-1 1 22 12 (RRCC 1212)

A2.2 Explicit Transfer Function of 3-Stage RF CMOS PPFs

The transfer function of the 3-stage RF CMOS PPF can be derived by multiplying the chain matrices of each stage as follows:

Vin1  1+jω R 1 C 1 R 1  =  ωω   Iin1-ω R11 C  2j C 1 1+j R 1 C 1  1 1+jω R22 C R 2 (A2.6) ωω 1-ωRC222j C222 1+j R C 1 1+jω R3 C33 R V out . ωω 1-ω R33 C 2j C333out 1+j R C I The complex transfer function is:

165

Appendix 2 Transfer Functions of Multi-stage RF CMOS PPFs

N(jω) H(jω )= , (A2.7) D(jω)

Where N(jωω )=(1- R1 C12233 )(1- ω R C )(1- ω R C ) , (A2.8)

D(jωωω )=DRI ( )+jD ( ) , (A2.9)

2 DR(ωω )=1- (RRCC+RRCC+RRCC1212 1313 2323 (A2.10) +2RRCC+2RRCC+2RRCC 1 3 2 3 1 2 1 3 1 2 2 3),

DI(ωω )= (R11 C +R 22 C +R 33 C +2R 12 C +2R 13 C (A2.11) 3 +2R2 C3 )-ω (R 123123 R R C C C ).

Equation (A2.7) can also be expressed as:

H(jωω )=H12 (j )+jH (j ω) (A2.12)

2 1+ω (RRCC+RRCC+RRCC1 212 1313 2323) Where H(j1 ω )= , (A2.13) D(jω )

3 jωω(RC+RC+RC)+j1 13322 (RRRCCC 123123) H(j2 ω )= . (A2.14) D(jω )

166

Appendix 3 Source Code of PPFANA

Appendix 3

Source Code of PPFANA

A3.1 Source Code for Analysis of Gain Mismatch Influenced by Process Tolerances

A.3.1.1 Source Code for Analysis of Gain Mismatch Influenced by Process Tolerances in 2-stage RF CMOS PPFs global f_1; global f_2; global rt_1; global rt_2; global ct_1; global ct_2; global pt_r; global pt_c; f_1=findobj(gcf,'Tag','f_1'); f_1=str2double(get(f_1,'string')); %get the value from GUI input f_2=findobj(gcf,'Tag','f_2'); f_2=str2double(get(f_2,'string')); rt_1=findobj(gcf,'Tag','rt_1'); rt_1=str2double(get(rt_1,'string')); rt_2=findobj(gcf,'Tag','rt_2'); rt_2=str2double(get(rt_2,'string')); ct_1=findobj(gcf,'Tag','ct_1'); ct_1=str2double(get(ct_1,'string')); ct_2=findobj(gcf,'Tag','ct_2'); ct_2=str2double(get(ct_2,'string')); pt_r=findobj(gcf,'Tag','pt_r'); pt_r=str2double(get(pt_r,'string')); if isempty(pt_r), pt_r=0.16; else pt_r= pt_r; end pt_c=findobj(gcf,'Tag','pt_c'); pt_c=str2double(get(pt_c,'string')); if isempty(pt_c), pt_c=0.21; else pt_c=pt_c; end if isempty(f_1), f_1=1.44e9; else f_1=f_1; end if isempty(f_2), f_2=3.47e9; else f_2=f_2; end if isempty(rt_1), rt_1=223.5; else rt_1=rt_1; end if isempty(rt_2), rt_2=265.6; else rt_2=rt_2; end if isempty(ct_1), ct_1=205.2; else ct_1=ct_1; end if isempty(ct_2), ct_2=416.7; else ct_2=ct_2; end figure hold on w=f_2.*(1+0.1):f_2./20:f_2.*(1+0.2); c2_2=ct_2.*(1+pt_c).*1e-15; c2_1=ct_1.*(1+pt_c).*1e-15; r2_1=rt_1.*(1+pt_r); r2_2=rt_2.*(1+pt_r); a=abs(((1+(2.*pi.*w).^2.*r2_1*r2_2*c2_1*c2_2)./ (1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.*w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1 *c2_2))); d=abs(((j*(2.*pi.*w).*(r2_1*c2_1+r2_2*c2_2))./ (1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.*w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1 *c2_2))); h=20.*log10(a); n=20.*log10(d); RinCin=abs(h-n); plot(w,RinCin,'g -s') c2_2=ct_2.*(1-pt_c).*1e-15; c2_1=ct_1.*(1-pt_c).*1e-15; r2_1=rt_1.*(1-pt_r); r2_2=rt_2.*(1-pt_r); a=abs(((1+(2.*pi.*w).^2.*r2_1*r2_2*c2_1*c2_2)./

167

Appendix 3 Source Code of PPFANA

(1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.*w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1 *c2_2))); d=abs(((j*(2.*pi.*w).*(r2_1*c2_1+r2_2*c2_2))./ (1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.*w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1 *c2_2))); h=20.*log10(a); n=20.*log10(d); RdeCde=abs(h-n); plot(w,RdeCde,'b -*') c2_2=ct_2.*(1-pt_c).*1e-15; c2_1=ct_1.*(1-pt_c).*1e-15; r2_1=rt_1.*(1+pt_r); r2_2=rt_2.*(1+pt_r); a=abs(((1+(2.*pi.*w).^2.*r2_1*r2_2*c2_1*c2_2)./ (1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.*w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1 *c2_2))); d=abs(((j*(2.*pi.*w).*(r2_1*c2_1+r2_2*c2_2))./ (1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.*w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1 *c2_2))); h=20.*log10(a); n=20.*log10(d); RinCde=abs(h-n); plot(w,RinCde,'r -^') c2_2=ct_2.*(1+pt_c).*1e-15; c2_1=ct_1.*(1+pt_c).*1e-15; r2_1=rt_1.*(1-pt_r); r2_2=rt_2.*(1-pt_r); a=abs(((1+(2.*pi.*w).^2.*r2_1*r2_2*c2_1*c2_2)./ (1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.*w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1 *c2_2))); d=abs(((j*(2.*pi.*w).*(r2_1*c2_1+r2_2*c2_2))./ (1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.*w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1 *c2_2))); h=20.*log10(a); n=20.*log10(d); RdeCin=abs(h-n); plot(w,RdeCin,'k -d') legend('RinCin','RdeCde','RinCde','RdeCin') w=f_1.*(1-0.4):f_1./1e3:f_2.*(1+0.4); c2_2=ct_2.*(1+pt_c).*1e-15; c2_1=ct_1.*(1+pt_c).*1e-15; r2_1=rt_1.*(1+pt_r); r2_2=rt_2.*(1+pt_r); a=abs(((1+(2.*pi.*w).^2.*r2_1*r2_2*c2_1*c2_2)./ (1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.*w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1 *c2_2))); d=abs(((j*(2.*pi.*w).*(r2_1*c2_1+r2_2*c2_2))./ (1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.*w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1 *c2_2))); h=20.*log10(a); n=20.*log10(d); RinCin=abs(h-n); plot(w,RinCin,'g -') c2_2=ct_2.*(1-pt_c).*1e-15; c2_1=ct_1.*(1-pt_c).*1e-15; r2_1=rt_1.*(1-pt_r); r2_2=rt_2.*(1-pt_r); a=abs(((1+(2.*pi.*w).^2.*r2_1*r2_2*c2_1*c2_2)./ (1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.*w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1 *c2_2))); d=abs(((j*(2.*pi.*w).*(r2_1*c2_1+r2_2*c2_2))./ (1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.*w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1 *c2_2))); h=20.*log10(a); n=20.*log10(d); RdeCde=abs(h-n); plot(w,RdeCde,'b -.') % % c2_2=ct_2.*(1-pt_c).*1e-15; c2_1=ct_1.*(1-pt_c).*1e-15; r2_1=rt_1.*(1+pt_r); r2_2=rt_2.*(1+pt_r);

168

Appendix 3 Source Code of PPFANA

a=abs(((1+(2.*pi.*w).^2.*r2_1*r2_2*c2_1*c2_2)./ (1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.*w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1 *c2_2))); d=abs(((j*(2.*pi.*w).*(r2_1*c2_1+r2_2*c2_2))./ (1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.*w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1 *c2_2))); h=20.*log10(a); n=20.*log10(d); RinCde=abs(h-n); plot(w,RinCde,'r --') % % c2_2=ct_2.*(1+pt_c).*1e-15; c2_1=ct_1.*(1+pt_c).*1e-15; r2_1=rt_1.*(1-pt_r); r2_2=rt_2.*(1-pt_r); a=abs(((1+(2.*pi.*w).^2.*r2_1*r2_2*c2_1*c2_2)./ (1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.*w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1 *c2_2))); d=abs(((j*(2.*pi.*w).*(r2_1*c2_1+r2_2*c2_2))./ (1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.*w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1 *c2_2))); h=20.*log10(a); n=20.*log10(d); RdeCin=abs(h-n); plot(w,RdeCin,'k :') xlabel('{\itf} / GHz','FontSize', 14) ylabel('{\itm}-{\itgain} / dB','FontSize', 14) title('Gain mismatch influenced by process tolerances','FontSize', 14)

A.3.1.2 Source Code for Analysis of Gain Mismatch Influenced by Process Tolerances in 3-stage RF CMOS PPFs global f_1; global f_2; global rth_1; global rth_2; global rth_3; global cth_1; global cth_2; global cth_3; global cm; global pt_r; global pt_c; f_1=findobj(gcf,'Tag','f_1'); f_1=str2double(get(f_1,'string')); %get the value from GUI input f_2=findobj(gcf,'Tag','f_2'); f_2=str2double(get(f_2,'string')); rth_1=findobj(gcf,'Tag','rth_1'); rth_1=str2double(get(rth_1,'string')); rth_2=findobj(gcf,'Tag','rth_2'); rth_2=str2double(get(rth_2,'string')); rth_3=findobj(gcf,'Tag','rth_3'); rth_3=str2double(get(rth_3,'string')); cth_1=findobj(gcf,'Tag','cth_1'); cth_1=str2double(get(cth_1,'string')); cth_2=findobj(gcf,'Tag','cth_2'); cth_2=str2double(get(cth_2,'string')); cth_3=findobj(gcf,'Tag','cth_3'); cth_3=str2double(get(cth_3,'string')); pt_r=findobj(gcf,'Tag','pt_r'); pt_r=str2double(get(pt_r,'string')); if isempty(pt_r), pt_r=0.16; else pt_r= pt_r; end pt_c=findobj(gcf,'Tag','pt_c'); pt_c=str2double(get(pt_c,'string')); if isempty(pt_c), pt_c=0.21;else pt_c=pt_c; end if isempty(f_1), f_1=1.44e9; else f_1=f_1; end if isempty(f_2), f_2=3.47e9; else f_2=f_2; end if isempty(rth_1), rth_1=263.9; else rth_1=rth_1; end if isempty(rth_2), rth_2=293.7; else rth_2=rth_2; end if isempty(rth_3), rth_3=315.2; else rth_3=rth_3; end

169

Appendix 3 Source Code of PPFANA

if isempty(cth_1), cth_1=173.8; else cth_1=cth_1; end if isempty(cth_2), cth_2=221.2; else cth_2=cth_2; end if isempty(cth_3), cth_3=350.7; else cth_3=cth_3; end figure hold on w=f_2.*(1+0.1):f_2./20:f_2.*(1+0.2); c3_3=cth_3.*(1+pt_c).*1e-15; c3_2=cth_2.*(1+pt_c).*1e-15; c3_1=cth_1.*(1+pt_c).*1e-15; r3_1=rth_1.*(1+pt_r); r3_2=rth_2.*(1+pt_r); r3_3=rth_3.*(1+pt_r); c=abs((1+(2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2))./ (1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); b=abs((- j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3)+(j.*2.*pi.*w).^3.*r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3 _3)./(1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w). ^3.*r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); m=20.*log10(c); k=20.*log10(b); RinCin=abs(m-k); plot(w,RinCin,'g -s') c3_3=cth_3.*(1-pt_c).*1e-15; c3_2=cth_2.*(1-pt_c).*1e-15; c3_1=cth_1.*(1-pt_c).*1e-15; r3_1=rth_1.*(1-pt_r); r3_2=rth_2.*(1-pt_r); r3_3=rth_3.*(1-pt_r); c=abs((1+(2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2))./ (1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); b=abs((- j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3)+(j.*2.*pi.*w).^3.*r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3 _3)./(1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); m=20.*log10(c); k=20.*log10(b); RdeCde=abs(m-k); plot(w,RdeCde,'b -*') c3_3=cth_3.*(1+pt_c).*1e-15; c3_2=cth_2.*(1+pt_c).*1e-15; c3_1=cth_1.*(1+pt_c).*1e-15; r3_1=rth_1.*(1-pt_r); r3_2=rth_2.*(1-pt_r); r3_3=rth_3.*(1-pt_r);

170

Appendix 3 Source Code of PPFANA

c=abs((1+(2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2))./ (1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); b=abs((- j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3)+(j.*2.*pi.*w).^3.*r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3 _3)./(1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); m=20.*log10(c); k=20.*log10(b); RdeCin=abs(m-k); plot(w,RdeCin,'r -^') c3_3=cth_3.*(1-pt_c).*1e-15; c3_2=cth_2.*(1-pt_c).*1e-15; c3_1=cth_1.*(1-pt_c).*1e-15; r3_1=rth_1.*(1+pt_r); r3_2=rth_2.*(1+pt_r); r3_3=rth_3.*(1+pt_r); c=abs((1+(2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2))./ (1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); b=abs((- j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3)+(j.*2.*pi.*w).^3.*r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3 _3)./(1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); m=20.*log10(c); k=20.*log10(b); RinCde=abs(m-k); plot(w,RinCde,'k -d') legend('RinCin','RdeCde','RinCde','RdeCin') w=f_1.*(1-0.4):f_1./1e3:f_2.*(1+0.4); c3_3=cth_3.*(1+pt_c).*1e-15; c3_2=cth_2.*(1+pt_c).*1e-15; c3_1=cth_1.*(1+pt_c).*1e-15; r3_1=rth_1.*(1+pt_r); r3_2=rth_2.*(1+pt_r); r3_3=rth_3.*(1+pt_r); c=abs((1+(2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2))./ (1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3));

171

Appendix 3 Source Code of PPFANA

b=abs((- j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3)+(j.*2.*pi.*w).^3.*r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3 _3)./(1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); m=20.*log10(c); k=20.*log10(b); RinCin=abs(m-k); plot(w,RinCin,'g -') c3_3=cth_3.*(1-pt_c).*1e-15; c3_2=cth_2.*(1-pt_c).*1e-15; c3_1=cth_1.*(1-pt_c).*1e-15; r3_1=rth_1.*(1-pt_r); r3_2=rth_2.*(1-pt_r); r3_3=rth_3.*(1-pt_r); c=abs((1+(2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2))./ (1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); b=abs((- j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3)+(j.*2.*pi.*w).^3.*r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3 _3)./(1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); m=20.*log10(c); k=20.*log10(b); RdeCde=abs(m-k); plot(w,RdeCde,'b -.') c3_3=cth_3.*(1+pt_c).*1e-15; c3_2=cth_2.*(1+pt_c).*1e-15; c3_1=cth_1.*(1+pt_c).*1e-15; r3_1=rth_1.*(1-pt_r); r3_2=rth_2.*(1-pt_r); r3_3=rth_3.*(1-pt_r); c=abs((1+(2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2))./ (1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); b=abs((- j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3)+(j.*2.*pi.*w).^3.*r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3 _3)./(1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); m=20.*log10(c); k=20.*log10(b); RdeCin=abs(m-k); plot(w,RdeCin,'r --') c3_3=cth_3.*(1-pt_c).*1e-15; c3_2=cth_2.*(1-pt_c).*1e-15; c3_1=cth_1.*(1-pt_c).*1e-15;

172

Appendix 3 Source Code of PPFANA

r3_1=rth_1.*(1+pt_r); r3_2=rth_2.*(1+pt_r); r3_3=rth_3.*(1+pt_r); c=abs((1+(2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2))./ (1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); b=abs((- j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3)+(j.*2.*pi.*w).^3.*r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3 _3)./(1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); m=20.*log10(c); k=20.*log10(b); RinCde=abs(m-k); plot(w,RinCde,'k :') xlabel('{\itf} / GHz','FontSize', 14) ylabel('{\itm}-{\itgain} / dB','FontSize', 14) title('Gain mismatch influenced by process tolerances','FontSize', 14)

A.3.1.3 Source Code for Analysis of Gain Mismatch Influenced by Process Tolerances in 4-stage RF CMOS PPFs global f_1; global f_4; global rf_1; global rf_2; global rf_3; global rf_4; global cf_1; global cf_2; global cf_3; global cf_4; global pt_r; global pt_c; f_1=findobj(gcf,'Tag','f_1'); f_1=str2double(get(f_1,'string')); %get the value from GUI input f_4=findobj(gcf,'Tag','f_4'); f_4=str2double(get(f_4,'string')); rf_1=findobj(gcf,'Tag','rf_1'); rf_1=str2double(get(rf_1,'string')); rf_2=findobj(gcf,'Tag','rf_2'); rf_2=str2double(get(rf_2,'string')); rf_3=findobj(gcf,'Tag','rf_3'); rf_3=str2double(get(rf_3,'string')); rf_4=findobj(gcf,'Tag','rf_4'); rf_4=str2double(get(rf_4,'string')); cf_1=findobj(gcf,'Tag','cf_1'); cf_1=str2double(get(cf_1,'string')); cf_2=findobj(gcf,'Tag','cf_2'); cf_2=str2double(get(cf_2,'string')); cf_3=findobj(gcf,'Tag','cf_3'); cf_3=str2double(get(cf_3,'string')); cf_4=findobj(gcf,'Tag','cf_4'); cf_4=str2double(get(cf_4,'string')); pt_r=findobj(gcf,'Tag','pt_r'); pt_r=str2double(get(pt_r,'string')); if isempty(pt_r), pt_r=0.16; else pt_r= pt_r; end pt_c=findobj(gcf,'Tag','pt_c'); pt_c=str2double(get(pt_c,'string')); if isempty(pt_c), pt_c=0.21; else pt_c=pt_c; end if isempty(f_1), f_1=1.44e9; else f_1=f_1; end if isempty(f_4), f_4=3.47e9; else f_4=f_4; end if isempty(rf_1), rf_1=289.9; else rf_1=rf_1; end if isempty(rf_2), rf_2=329; else rf_2=rf_2; end

173

Appendix 3 Source Code of PPFANA

if isempty(rf_3), rf_3=377.4; else rf_3=rf_3; end if isempty(rf_4), rf_4=390; else rf_4=rf_4; end if isempty(cf_1), cf_1=158.2; else cf_1=cf_1; end if isempty(cf_2), cf_2=186.9; else cf_2=cf_2; end if isempty(cf_3), cf_3=218.5; else cf_3=cf_3; end if isempty(cf_4), cf_4=283.4; else cf_4=cf_4; end figure hold on w=f_4.*(1+0.1):f_4./20:f_4.*(1+0.2); c4=cf_4.*(1+pt_c).*1e-15; c3=cf_3.*(1+pt_c).*1e-15; c2=cf_2.*(1+pt_c).*1e-15; c1=cf_1.*(1+pt_c).*1e-15; r1=rf_1.*(1+pt_r); r2=rf_2.*(1+pt_r); r3=rf_3.*(1+pt_r); r4=rf_4.*(1+pt_r); d=abs((1+(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3+r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4 *c3) +(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4+2*r1 *r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4) +(j*(2.*pi.*w)).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c4)- (j*(2.*pi.*w)).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4 +2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); a=abs(((2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4)+(2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c 4 +r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4 +2*r1*r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c 3*c4)+(j.*2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c 4) -(j.*2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4 +2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); m=20.*log10(d); k=20.*log10(a); RinCin=abs(m-k); plot(w,RinCin,'g -s') c4=cf_4.*(1-pt_c).*1e-15; c3=cf_3.*(1-pt_c).*1e-15; c2=cf_2.*(1-pt_c).*1e-15; c1=cf_1.*(1-pt_c).*1e-15; r1=rf_1.*(1-pt_r); r2=rf_2.*(1-pt_r); r3=rf_3.*(1-pt_r); r4=rf_4.*(1-pt_r); d=abs((1+(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3+r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4 *c3) +(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4. +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4+2*r1 *r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4) +(j*(2.*pi.*w)).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c4) - (j*(2.*pi.*w)).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4 +2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4)));

174

Appendix 3 Source Code of PPFANA

a=abs(((2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4)+(2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c 4 +r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4 +2*r1*r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c 3*c4)+(j.*2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c 4) -(j.*2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4 +2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); m=20.*log10(d); k=20.*log10(a); RdeCde=abs(m-k); plot(w,RdeCde,'b -*') % c4=cf_4.*(1+pt_c).*1e-15; c3=cf_3.*(1+pt_c).*1e-15; c2=cf_2.*(1+pt_c).*1e-15; c1=cf_1.*(1+pt_c).*1e-15; r1=rf_1.*(1-pt_r); r2=rf_2.*(1-pt_r); r3=rf_3.*(1-pt_r); r4=rf_4.*(1-pt_r); d=abs((1+(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3+r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4 *c3) +(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4+2*r1 *r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4) +(j*(2.*pi.*w)).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c4) - (j*(2.*pi.*w)).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4 +2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); a=abs(((2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4)+(2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c 4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4. +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4+2*r1 *r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4) +(j.*2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c4) - (j.*2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4+2*r 1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4+2*r1*r2*r4*c3 *c2*c4+2*r1*r2*r4*c1*c3*c4))); m=20.*log10(d); k=20.*log10(a); RdeCin=abs(m-k); plot(w,RdeCin,'r -^') % c4=cf_4.*(1-pt_c).*1e-15; c3=cf_3.*(1-pt_c).*1e-15; c2=cf_2.*(1-pt_c).*1e-15; c1=cf_1.*(1-pt_c).*1e-15; r1=rf_1.*(1+pt_r); r2=rf_2.*(1+pt_r); r3=rf_3.*(1+pt_r); r4=rf_4.*(1+pt_r); d=abs((1+(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3+r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4 *c3) +(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4. +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4 +2*r1*r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c 3*c4)+(j*(2.*pi.*w)).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1* c4)(j*(2.*pi.*w)).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4

175

Appendix 3 Source Code of PPFANA

+2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); a=abs(((2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4)+(2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c 4 +r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4 +2*r1*r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c 3*c4)+(j.*2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c 4) -(j.*2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4 +2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); m=20.*log10(d); k=20.*log10(a); RinCde=abs(m-k); plot(w,RinCde,'k -d') legend('RinCin','RdeCde','RinCde','RdeCin') w=f_1.*(1-0.4):f_1./1e3:f_4.*(1+0.4); c4=cf_4.*(1+pt_c).*1e-15; c3=cf_3.*(1+pt_c).*1e-15; c2=cf_2.*(1+pt_c).*1e-15; c1=cf_1.*(1+pt_c).*1e-15; r1=rf_1.*(1+pt_r); r2=rf_2.*(1+pt_r); r3=rf_3.*(1+pt_r); r4=rf_4.*(1+pt_r); d=abs((1+(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3+r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4 *c3) +(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4 +2*r1*r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c 3*c4)+(j*(2.*pi.*w)).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1* c4)(j*(2.*pi.*w)).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4. +2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); a=abs(((2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4)+(2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c 4 +r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4 +2*r1*r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c 3*c4)+(j.*2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c 4) -(j.*2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4 +2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); m=20.*log10(d); k=20.*log10(a); RinCin=abs(m-k); plot(w,RinCin,'g -') c4=cf_4.*(1-pt_c).*1e-15; c3=cf_3.*(1-pt_c).*1e-15; c2=cf_2.*(1-pt_c).*1e-15; c1=cf_1.*(1-pt_c).*1e-15; r1=rf_1.*(1-pt_r); r2=rf_2.*(1-pt_r); r3=rf_3.*(1-pt_r); r4=rf_4.*(1-pt_r); d=abs((1+(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3+r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4 *c3) +(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4.

176

Appendix 3 Source Code of PPFANA

+2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4+2*r1 *r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4) +(j*(2.*pi.*w)).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c4)- (j*(2.*pi.*w)).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4 +2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); a=abs(((2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4)+(2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c 4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4 +2*r1*r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c 3*c4)+(j.*2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c 4) -(j.*2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4 +2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); m=20.*log10(d); k=20.*log10(a); RdeCde=abs(m-k); plot(w,RdeCde,'b -.') % c4=cf_4.*(1+pt_c).*1e-15; c3=cf_3.*(1+pt_c).*1e-15; c2=cf_2.*(1+pt_c).*1e-15; c1=cf_1.*(1+pt_c).*1e-15; r1=rf_1.*(1-pt_r); r2=rf_2.*(1-pt_r); r3=rf_3.*(1-pt_r); r4=rf_4.*(1-pt_r); d=abs((1+(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3+r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4 *c3)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4+2*r1 *r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4) +(j*(2.*pi.*w)).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c4)- (j*(2.*pi.*w)).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4 +2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); a=abs(((2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4)+(2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c 4 +r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4 +2*r1*r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c 3*c4)+(j.*2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c 4) -(j.*2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4 +2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); m=20.*log10(d); k=20.*log10(a); RdeCin=abs(m-k); plot(w,RdeCin,'r --') % c4=cf_4.*(1-pt_c).*1e-15; c3=cf_3.*(1-pt_c).*1e-15; c2=cf_2.*(1-pt_c).*1e-15; c1=cf_1.*(1-pt_c).*1e-15; r1=rf_1.*(1+pt_r); r2=rf_2.*(1+pt_r); r3=rf_3.*(1+pt_r); r4=rf_4.*(1+pt_r); d=abs((1+(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3+r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3* c4*c3) +(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3

177

Appendix 3 Source Code of PPFANA

+r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4+2*r1 *r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4) +(j*(2.*pi.*w)).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c4)- (j*(2.*pi.*w)).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4 +2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); a=abs(((2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4)+(2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c 4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4))./(1- (2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3+r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1* r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4+2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2* c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4+2*r1*r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2 .*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4)+(j.*2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+ 2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c4)- (j.*2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4+2*r 1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); m=20.*log10(d); k=20.*log10(a); RinCde=abs(m-k); plot(w,RinCde,'k :') xlabel('{\itf} / GHz','FontSize', 14) ylabel('{\itm}-{\itgain} / dB','FontSize', 14) title('Gain mismatch influenced by process tolerances','FontSize', 14)

A3.2 Source Code for Analysis of Phase Mismatch Influenced

by Process Tolerances

A.3.2.1 Source Code for Analysis of Phase Mismatch Influenced by Process Tolerances in 2-stage RF CMOS PPFs global f_1; global f_2; global rt_1; global rt_2; global ct_1; global ct_2; global pt_r; global pt_c; f_1=findobj(gcf,'Tag','f_1'); f_1=str2double(get(f_1,'string')); %get the value from GUI input f_2=findobj(gcf,'Tag','f_2'); f_2=str2double(get(f_2,'string')); rt_1=findobj(gcf,'Tag','rt_1'); rt_1=str2double(get(rt_1,'string')); rt_2=findobj(gcf,'Tag','rt_2'); rt_2=str2double(get(rt_2,'string')); ct_1=findobj(gcf,'Tag','ct_1'); ct_1=str2double(get(ct_1,'string')); ct_2=findobj(gcf,'Tag','ct_2'); ct_2=str2double(get(ct_2,'string')); pt_r=findobj(gcf,'Tag','pt_r'); pt_r=str2double(get(pt_r,'string')); if isempty(pt_r), pt_r=0.16; else pt_r= pt_r; end pt_c=findobj(gcf,'Tag','pt_c'); pt_c=str2double(get(pt_c,'string')); if isempty(pt_c), pt_c=0.21; else pt_c=pt_c; end

178

Appendix 3 Source Code of PPFANA

if isempty(f_1), f_1=1.44e9; else f_1=f_1; end if isempty(f_2), f_2=3.47e9; else f_2=f_2; end if isempty(rt_1), rt_1=223.5; else rt_1=rt_1; end if isempty(rt_2), rt_2=265.6; else rt_2=rt_2; end if isempty(ct_1), ct_1=205.2; else ct_1=ct_1; end if isempty(ct_2), ct_2=416.7; else ct_2=ct_2; end figure hold on w=f_2.*(1+0.1):f_2./20:f_2.*(1+0.2); c2_2=ct_2.*(1+pt_c).*1e-15; c2_1=ct_1.*(1+pt_c).*1e-15; r2_1=rt_1.*(1+pt_r); r2_2=rt_2.*(1+pt_r); a=abs(((1+(2.*pi.*w).^2.*r2_1*r2_2*c2_1*c2_2)./(1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi. *w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1*c2_2))); d=abs(((j*(2.*pi.*w).*(r2_1*c2_1+r2_2*c2_2))./(1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.* w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1*c2_2))); h=atan(a); n=atan(d); RinCin=(h-n).*180./pi+90; plot(w,RinCin,'g -s') c2_2=ct_2.*(1-pt_c).*1e-15; c2_1=ct_1.*(1-pt_c).*1e-15; r2_1=rt_1.*(1-pt_r); r2_2=rt_2.*(1-pt_r); a=abs(((1+(2.*pi.*w).^2.*r2_1*r2_2*c2_1*c2_2)./(1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi. *w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1*c2_2))); d=abs(((j*(2.*pi.*w).*(r2_1*c2_1+r2_2*c2_2))./(1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.* w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1*c2_2))); h=atan(a); n=atan(d); RdeCde=(h-n).*180./pi+90; plot(w,RdeCde,'b -*') c2_2=ct_2.*(1-pt_c).*1e-15; c2_1=ct_1.*(1-pt_c).*1e-15; r2_1=rt_1.*(1+pt_r); r2_2=rt_2.*(1+pt_r); a=abs(((1+(2.*pi.*w).^2.*r2_1*r2_2*c2_1*c2_2)./(1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi. *w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1*c2_2))); d=abs(((j*(2.*pi.*w).*(r2_1*c2_1+r2_2*c2_2))./(1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.* w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1*c2_2))); h=atan(a); n=atan(d); RinCde=(h-n).*180./pi+90; plot(w,RinCde,'r -^') c2_2=ct_2.*(1+pt_c).*1e-15; c2_1=ct_1.*(1+pt_c).*1e-15; r2_1=rt_1.*(1-pt_r); r2_2=rt_2.*(1-pt_r); a=abs(((1+(2.*pi.*w).^2.*r2_1*r2_2*c2_1*c2_2)./(1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi. *w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1*c2_2))); d=abs(((j*(2.*pi.*w).*(r2_1*c2_1+r2_2*c2_2))./ (1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.*w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1 *c2_2))); h=atan(a); n=atan(d); RdeCin=(h-n).*180./pi+90; plot(w,RdeCin,'k -d') legend('RinCin','RdeCde','RinCde','RdeCin') w=f_1.*(1-0.4):f_1./1e3:f_2.*(1+0.4); c2_2=ct_2.*(1+pt_c).*1e-15; c2_1=ct_1.*(1+pt_c).*1e-15; r2_1=rt_1.*(1+pt_r); r2_2=rt_2.*(1+pt_r); a=abs(((1+(2.*pi.*w).^2.*r2_1*r2_2*c2_1*c2_2)./(1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi. *w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1*c2_2))); d=abs(((j*(2.*pi.*w).*(r2_1*c2_1+r2_2*c2_2))./(1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.* w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1*c2_2))); h=atan(a); n=atan(d); RinCin=(h-n).*180./pi+90; plot(w,RinCin,'g -')

179

Appendix 3 Source Code of PPFANA

c2_2=ct_2.*(1-pt_c).*1e-15; c2_1=ct_1.*(1-pt_c).*1e-15; r2_1=rt_1.*(1-pt_r); r2_2=rt_2.*(1-pt_r); a=abs(((1+(2.*pi.*w).^2.*r2_1*r2_2*c2_1*c2_2)./(1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi. *w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1*c2_2))); d=abs(((j*(2.*pi.*w).*(r2_1*c2_1+r2_2*c2_2))./(1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.* w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1*c2_2))); h=atan(a); n=atan(d); RdeCde=(h-n).*180./pi+90; plot(w,RdeCde,'b -.') % % c2_2=ct_2.*(1-pt_c).*1e-15; c2_1=ct_1.*(1-pt_c).*1e-15; r2_1=rt_1.*(1+pt_r); r2_2=rt_2.*(1+pt_r); a=abs(((1+(2.*pi.*w).^2.*r2_1*r2_2*c2_1*c2_2)./(1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi. *w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1*c2_2))); d=abs(((j*(2.*pi.*w).*(r2_1*c2_1+r2_2*c2_2))./(1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.* w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1*c2_2))); h=atan(a); n=atan(d); RinCde=(h-n).*180./pi+90; plot(w,RinCde,'r --') % % c2_2=ct_2.*(1+pt_c).*1e-15; c2_1=ct_1.*(1+pt_c).*1e-15; r2_1=rt_1.*(1-pt_r); r2_2=rt_2.*(1-pt_r); a=abs(((1+(2.*pi.*w).^2.*r2_1*r2_2*c2_1*c2_2)./(1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi. *w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1*c2_2))); d=abs(((j*(2.*pi.*w).*(r2_1*c2_1+r2_2*c2_2))./(1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.* w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1*c2_2))); h=atan(a); n=atan(d); RdeCin=(h-n).*180./pi+90; plot(w,RdeCin,'k :') xlabel('{\itf} / GHz','FontSize', 14) ylabel('{\itd}-{\rmphase} / degrees','FontSize', 14) title('Phase difference influenced by process tolerances','FontSize', 14)

A.3.2.2 Source Code for Analysis of Phase Mismatch Influenced by Process Tolerance in 3-stage RF CMOS PPFs global f_1; global f_2; global rth_1; global rth_2; global rth_3; global cth_1; global cth_2; global cth_3; global cm; global pt_r; global pt_c; f_1=findobj(gcf,'Tag','f_1'); f_1=str2double(get(f_1,'string')); %get the value from GUI input f_2=findobj(gcf,'Tag','f_2'); f_2=str2double(get(f_2,'string')); rth_1=findobj(gcf,'Tag','rth_1'); rth_1=str2double(get(rth_1,'string')); rth_2=findobj(gcf,'Tag','rth_2'); rth_2=str2double(get(rth_2,'string')); rth_3=findobj(gcf,'Tag','rth_3'); rth_3=str2double(get(rth_3,'string')); cth_1=findobj(gcf,'Tag','cth_1'); cth_1=str2double(get(cth_1,'string')); cth_2=findobj(gcf,'Tag','cth_2'); cth_2=str2double(get(cth_2,'string')); cth_3=findobj(gcf,'Tag','cth_3'); cth_3=str2double(get(cth_3,'string')); pt_r=findobj(gcf,'Tag','pt_r'); pt_r=str2double(get(pt_r,'string')); if isempty(pt_r), pt_r=0.16; else pt_r= pt_r; end pt_c=findobj(gcf,'Tag','pt_c'); pt_c=str2double(get(pt_c,'string')); if isempty(pt_c), pt_c=0.21; else pt_c=pt_c; end if isempty(f_1), f_1=1.44e9; else f_1=f_1; end if isempty(f_2), f_2=3.47e9; else f_2=f_2; end if isempty(rth_1), rth_1=263.9; else rth_1=rth_1; end

180

Appendix 3 Source Code of PPFANA

if isempty(rth_2), rth_2=293.7; else rth_2=rth_2; end if isempty(rth_3), rth_3=315.2; else rth_3=rth_3; end if isempty(cth_1), cth_1=173.8; else cth_1=cth_1; end if isempty(cth_2), cth_2=221.2; else cth_2=cth_2; end if isempty(cth_3), cth_3=350.7; else cth_3=cth_3; end figure hold on w=f_2.*(1+0.1):f_2./20:f_2.*(1+0.2); c3_3=cth_3.*(1+pt_c).*1e-15; c3_2=cth_2.*(1+pt_c).*1e-15; c3_1=cth_1.*(1+pt_c).*1e-15; r3_1=rth_1.*(1+pt_r); r3_2=rth_2.*(1+pt_r); r3_3=rth_3.*(1+pt_r); h=abs((1+(2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2))./ (1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3 _3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3.*r3_1.*r3_2. *r3_3.*c3_1.*c3_2.*c3_3)); t=abs((j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3)+(j.*2.*pi.*w).^3.*r3_1.*r3_2.*r3_3.*c3_1.*c 3_2.*c3_3)./(1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3 _3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3.*r3_1.*r3_2. *r3_3.*c3_1.*c3_2.*c3_3)); l=atan(h); n=atan(t); RinCin=(l-n).*180./pi+90; plot(w,RinCin,'g -s') c3_3=cth_3.*(1-pt_c).*1e-15; c3_2=cth_2.*(1-pt_c).*1e-15; c3_1=cth_1.*(1-pt_c).*1e-15; r3_1=rth_1.*(1-pt_r); r3_2=rth_2.*(1-pt_r); r3_3=rth_3.*(1-pt_r); h=abs((1+(2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2))./ (1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); t=abs((j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3)+(j.*2.*pi.*w).^3.*r3_1.*r3_2.*r3_3.*c3_1.*c 3_2.*c3_3)./(1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); l=atan(h); n=atan(t); RdeCde=(l-n).*180./pi+90; plot(w,RdeCde,'b -*') c3_3=cth_3.*(1+pt_c).*1e-15; c3_2=cth_2.*(1+pt_c).*1e-15; c3_1=cth_1.*(1+pt_c).*1e-15; r3_1=rth_1.*(1-pt_r); r3_2=rth_2.*(1-pt_r); r3_3=rth_3.*(1-pt_r); h=abs((1+(2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2))./ (1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3)

181

Appendix 3 Source Code of PPFANA

+2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); t=abs((- j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3)+(j.*2.*pi.*w).^3.*r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3 _3)./(1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2. +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); l=atan(h); n=atan(t); RdeCin=(l-n).*180./pi+90; plot(w,RdeCin,'r -d') c3_3=cth_3.*(1-pt_c).*1e-15; c3_2=cth_2.*(1-pt_c).*1e-15; c3_1=cth_1.*(1-pt_c).*1e-15; r3_1=rth_1.*(1+pt_r); r3_2=rth_2.*(1+pt_r); r3_3=rth_3.*(1+pt_r); h=abs((1+(2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2))./ (1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); t=abs((- j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3)+(j.*2.*pi.*w).^3.*r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3 _3)./(1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); l=atan(h); n=atan(t); RinCde=(l-n).*180./pi+90; plot(w,RinCde,'k -d') legend('RinCin','RdeCde','RinCde','RdeCin') w=f_1.*(1-0.4):f_1./1e3:f_2.*(1+0.4); c3_3=cth_3.*(1+pt_c).*1e-15; c3_2=cth_2.*(1+pt_c).*1e-15; c3_1=cth_1.*(1+pt_c).*1e-15; r3_1=rth_1.*(1+pt_r); r3_2=rth_2.*(1+pt_r); r3_3=rth_3.*(1+pt_r); h=abs((1+(2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2))./ (1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); t=abs((- j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3)+(j.*2.*pi.*w).^3.*r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3 _3)./(1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3)

182

Appendix 3 Source Code of PPFANA

+2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); l=atan(h); n=atan(t); RinCin=(l-n).*180./pi+90; plot(w,RinCin,'g -') c3_3=cth_3.*(1-pt_c).*1e-15; c3_2=cth_2.*(1-pt_c).*1e-15; c3_1=cth_1.*(1-pt_c).*1e-15; r3_1=rth_1.*(1-pt_r); r3_2=rth_2.*(1-pt_r); r3_3=rth_3.*(1-pt_r); h=abs((1+(2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2))./ (1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); t=abs((j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3)+(j.*2.*pi.*w).^3.*r3_1.*r3_2.*r3_3.*c3_1.*c 3_2.*c3_3)./(1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); l=atan(h); n=atan(t); RdeCde=(l-n).*180./pi+90; plot(w,RdeCde,'b -.') c3_3=cth_3.*(1+pt_c).*1e-15; c3_2=cth_2.*(1+pt_c).*1e-15; c3_1=cth_1.*(1+pt_c).*1e-15; r3_1=rth_1.*(1-pt_r); r3_2=rth_2.*(1-pt_r); r3_3=rth_3.*(1-pt_r); h=abs((1+(2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2))./ (1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); t=abs(( j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3)+(j.*2.*pi.*w).^3.*r3_1.*r3_2.*r3_3.*c3_1.*c 3_2.*c3_3)./(1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); l=atan(h); n=atan(t); RdeCin=(l-n).*180./pi+90; plot(w,RdeCin,'r --') c3_3=cth_3.*(1-pt_c).*1e-15; c3_2=cth_2.*(1-pt_c).*1e-15; c3_1=cth_1.*(1-pt_c).*1e-15; r3_1=rth_1.*(1+pt_r); r3_2=rth_2.*(1+pt_r); r3_3=rth_3.*(1+pt_r); h=abs((1+(2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2))./ (1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2

183

Appendix 3 Source Code of PPFANA

+2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); t=abs((j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3)+(j.*2.*pi.*w).^3.*r3_1.*r3_2.*r3_3.*c3_1.*c 3_2.*c3_3)./(1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); l=atan(h); n=atan(t); RinCde=(l-n).*180./pi+90; plot(w,RinCde,'k :') xlabel('{\itf} / GHz','FontSize', 14) ylabel('{\itd}-{\rmphase} / degrees','FontSize', 14) title('Phase difference influenced by process tolerances','FontSize', 14)

A.3.2.3 Source Code for Analysis of Phase Mismatch Influenced by Process Tolerance in 4-stage RF CMOS PPFs global f_1; global f_4; global rf_1; global rf_2; global rf_3; global rf_4; global cf_1; global cf_2; global cf_3; global cf_4; global cm; global pt_r; global pt_c; f_1=findobj(gcf,'Tag','f_1'); f_1=str2double(get(f_1,'string')); %get the value from GUI input f_4=findobj(gcf,'Tag','f_4'); f_4=str2double(get(f_4,'string')); rf_1=findobj(gcf,'Tag','rf_1'); rf_1=str2double(get(rf_1,'string')); rf_2=findobj(gcf,'Tag','rf_2'); rf_2=str2double(get(rf_2,'string')); rf_3=findobj(gcf,'Tag','rf_3'); rf_3=str2double(get(rf_3,'string')); rf_4=findobj(gcf,'Tag','rf_4'); rf_4=str2double(get(rf_4,'string')); cf_1=findobj(gcf,'Tag','cf_1'); cf_1=str2double(get(cf_1,'string')); cf_2=findobj(gcf,'Tag','cf_2'); cf_2=str2double(get(cf_2,'string')); cf_3=findobj(gcf,'Tag','cf_3'); cf_3=str2double(get(cf_3,'string')); cf_4=findobj(gcf,'Tag','cf_4'); cf_4=str2double(get(cf_4,'string')); pt_r=findobj(gcf,'Tag','pt_r'); pt_r=str2double(get(pt_r,'string')); if isempty(pt_r), pt_r=0.16; else pt_r= pt_r; end pt_c=findobj(gcf,'Tag','pt_c'); pt_c=str2double(get(pt_c,'string')); if isempty(pt_c), pt_c=0.21; else pt_c=pt_c; end if isempty(f_1), f_1=1.44e9; else f_1=f_1; end if isempty(f_4), f_4=3.47e9; else f_4=f_4; end if isempty(rf_1), rf_1=289.9; else rf_1=rf_1; end if isempty(rf_2), rf_2=329; else rf_2=rf_2; end if isempty(rf_3), rf_3=377.4; else rf_3=rf_3; end if isempty(rf_4), rf_4=390; else rf_4=rf_4; end if isempty(cf_1), cf_1=158.2; else cf_1=cf_1; end if isempty(cf_2), cf_2=186.9; else cf_2=cf_2; end if isempty(cf_3), cf_3=218.5; else cf_3=cf_3; end if isempty(cf_4), cf_4=283.4; else cf_4=cf_4; end

184

Appendix 3 Source Code of PPFANA

figure hold on w=f_4.*(1+0.1):f_4./20:f_4.*(1+0.2); c4=cf_4.*(1+pt_c).*1e-15; c3=cf_3.*(1+pt_c).*1e-15; c2=cf_2.*(1+pt_c).*1e-15; c1=cf_1.*(1+pt_c).*1e-15; r1=rf_1.*(1+pt_r); r2=rf_2.*(1+pt_r); r3=rf_3.*(1+pt_r); r4=rf_4.*(1+pt_r); c=abs((1+(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3+r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4 *c3) +(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4 +2*r1*r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c 3*c4)+(j*(2.*pi.*w)).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1* c4)(j*(2.*pi.*w)).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4. +2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); b=abs(((2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4)+(2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c 4 +r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4 +2*r1*r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c 3*c4)+(j.*2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c 4)-(j.*2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4 +2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); h=atan(c); n=atan(b); RinCin=(n-h).*180./pi+90; plot(w,RinCin,'g -s') c4=cf_4.*(1-pt_c).*1e-15; c3=cf_3.*(1-pt_c).*1e-15; c2=cf_2.*(1-pt_c).*1e-15; c1=cf_1.*(1-pt_c).*1e-15; r1=rf_1.*(1-pt_r); r2=rf_2.*(1-pt_r); r3=rf_3.*(1-pt_r); r4=rf_4.*(1-pt_r); c=abs((1+(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3+r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4 *c3) +(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4 +2*r1*r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c 3*c4)+(j*(2.*pi.*w)).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1* c4)(j*(2.*pi.*w)).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4. +2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); b=abs(((2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4)+(2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c 4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4 +2*r1*r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c 3*c4)+(j.*2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c 4)-(j.*2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4

185

Appendix 3 Source Code of PPFANA

+2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); h=atan(c); n=atan(b); RdeCde=(n-h).*180./pi+90; plot(w,RdeCde,'b -*') % c4=cf_4.*(1+pt_c).*1e-15; c3=cf_3.*(1+pt_c).*1e-15; c2=cf_2.*(1+pt_c).*1e-15; c1=cf_1.*(1+pt_c).*1e-15; r1=rf_1.*(1-pt_r); r2=rf_2.*(1-pt_r); r3=rf_3.*(1-pt_r); r4=rf_4.*(1-pt_r); c=abs((1+(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3+r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4 *c3) +(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4.+2*r1 *r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4) +(j*(2.*pi.*w)).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c4)- (j*(2.*pi.*w)).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4 +2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); b=abs(((2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4)+(2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c 4 +r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4 +2*r1*r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c 3*c4)+(j.*2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c 4)-(j.*2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4 +2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); h=atan(c); n=atan(b); RdeCin=(n-h).*180./pi+90; plot(w,RdeCin,'r -^') % c4=cf_4.*(1-pt_c).*1e-15; c3=cf_3.*(1-pt_c).*1e-15; c2=cf_2.*(1-pt_c).*1e-15; c1=cf_1.*(1-pt_c).*1e-15; r1=rf_1.*(1+pt_r); r2=rf_2.*(1+pt_r); r3=rf_3.*(1+pt_r); r4=rf_4.*(1+pt_r); c=abs((1+(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3+r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4 *c3) +(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4+2*r1 *r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4) +(j*(2.*pi.*w)).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c4)- (j*(2.*pi.*w)).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4 +2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); b=abs(((2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4)+(2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c 4 +r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4 +2*r1*r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c 3*c4)

186

Appendix 3 Source Code of PPFANA

+(j.*2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c4) -(j.*2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4 +2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); h=atan(c); n=atan(b); RinCde=(n-h).*180./pi+90; plot(w,RinCde,'k -d') legend('RinCin','RdeCde','RinCde','RdeCin') w=f_1.*(1-0.4):f_1./1e3:f_4.*(1+0.4); c4=cf_4.*(1+pt_c).*1e-15; c3=cf_3.*(1+pt_c).*1e-15; c2=cf_2.*(1+pt_c).*1e-15; c1=cf_1.*(1+pt_c).*1e-15; r1=rf_1.*(1+pt_r); r2=rf_2.*(1+pt_r); r3=rf_3.*(1+pt_r); r4=rf_4.*(1+pt_r); c=abs((1+(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3+r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4 *c3) +(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4 +2*r1*r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c 3*c4)+(j*(2.*pi.*w)).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1* c4)(j*(2.*pi.*w)).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4. +2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); b=abs(((2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4)+(2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c 4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4 +2*r1*r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c 3*c4)+(j.*2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c 4) -(j.*2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4 +2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); h=atan(c); n=atan(b); RinCin=(n-h).*180./pi+90; plot(w,RinCin,'g -') c4=cf_4.*(1-pt_c).*1e-15; c3=cf_3.*(1-pt_c).*1e-15; c2=cf_2.*(1-pt_c).*1e-15; c1=cf_1.*(1-pt_c).*1e-15; r1=rf_1.*(1-pt_r); r2=rf_2.*(1-pt_r); r3=rf_3.*(1-pt_r); r4=rf_4.*(1-pt_r); c=abs((1+(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3+r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4 *c3) +(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4))/(1- (2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3+r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1* r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4+2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2* c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4+2*r1*r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2 .*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4)+(j*(2.*pi.*w)).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2 +2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c4)(j*(2.*pi.*w)).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r 3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4+2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c 4+2*r1*r4*r3*c3*c2*c4+2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); b=abs(((2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4)+(2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c 4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3

187

Appendix 3 Source Code of PPFANA

+r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4+2*r1 *r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4) +(j.*2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c4)- (j.*2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4+2*r 1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4+2*r1*r2*r4*c3 *c2*c4+2*r1*r2*r4*c1*c3*c4))); h=atan(c); n=atan(b); RdeCde=(n-h).*180./pi+90; plot(w,RdeCde,'b -.') % c4=cf_4.*(1+pt_c).*1e-15; c3=cf_3.*(1+pt_c).*1e-15; c2=cf_2.*(1+pt_c).*1e-15; c1=cf_1.*(1+pt_c).*1e-15; r1=rf_1.*(1-pt_r); r2=rf_2.*(1-pt_r); r3=rf_3.*(1-pt_r); r4=rf_4.*(1-pt_r); c=abs((1+(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3+r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4 *c3) +(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4 +2*r1*r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c 3*c4)+(j*(2.*pi.*w)).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1* c4)(j*(2.*pi.*w)).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4. +2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); b=abs(((2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4)+(2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c 4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4+2*r1 *r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4) +(j.*2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c4) -(j.*2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4 +2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); h=atan(c); n=atan(b); RdeCin=(n-h).*180./pi+90; plot(w,RdeCin,'r --') % c4=cf_4.*(1-pt_c).*1e-15; c3=cf_3.*(1-pt_c).*1e-15; c2=cf_2.*(1-pt_c).*1e-15; c1=cf_1.*(1-pt_c).*1e-15; r1=rf_1.*(1+pt_r); r2=rf_2.*(1+pt_r); r3=rf_3.*(1+pt_r); r4=rf_4.*(1+pt_r); c=abs((1+(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3+r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4 *c3) +(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4+2*r1 *r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4) +(j*(2.*pi.*w)).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c4)- (j*(2.*pi.*w)).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4 +2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4)));

188

Appendix 3 Source Code of PPFANA

b=abs(((2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4)+(2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c 4 +r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4+2*r1 *r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4) +(j.*2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c4) - (j.*2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4+2*r 1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); h=atan(c); n=atan(b); RinCde=(n-h).*180./pi+90; plot(w,RinCde,'k :') xlabel('{\itf} / GHz','FontSize', 14) ylabel('{\itd}-{\rmphase} / degrees','FontSize', 14) title('Phase difference influenced by process tolerances','FontSize', 14)

A3.3 Source Code for Analysis of Gain Mismatch Influenced

by Component Mismatch

A.3.3.1 Source Code for Analysis of Gain Mismatch Influenced by Component Mismatch in 2-stage RF CMOS PPFs global f_1; global f_2; global rt_1; global rt_2; global ct_1; global ct_2; global cm; global pt; f_1=findobj(gcf,'Tag','f_1'); f_1=str2double(get(f_1,'string')); %get the value from GUI input f_2=findobj(gcf,'Tag','f_2'); f_2=str2double(get(f_2,'string')); rt_1=findobj(gcf,'Tag','rt_1'); rt_1=str2double(get(rt_1,'string')); rt_2=findobj(gcf,'Tag','rt_2'); rt_2=str2double(get(rt_2,'string')); ct_1=findobj(gcf,'Tag','ct_1'); ct_1=str2double(get(ct_1,'string')); ct_2=findobj(gcf,'Tag','ct_2'); ct_2=str2double(get(ct_2,'string')); cm=findobj(gcf,'Tag','cm'); cm=str2double(get(cm,'string')); if isempty(cm), cm=0.01;else cm=cm; end if isempty(f_1), f_1=1.44e9; else f_1=f_1;end if isempty(f_2), f_2=3.47e9; else f_2=f_2;end if isempty(rt_1), rt_1=223.5; else rt_1=rt_1;end if isempty(rt_2), rt_2=265.6; else rt_2=rt_2;end if isempty(ct_1), ct_1=205.2; else ct_1=ct_1; end if isempty(ct_2), ct_2=416.7; else ct_2=ct_2; end figure hold on w=f_2.*(1+0.1):f_2./20:f_2.*(1+0.2); c2_2=ct_2.*1e-15; c2_1=ct_1.*1e-15; r2_1=rt_1; r2_2=rt_2; b=abs(((1+(2.*pi.*w).^2.*r2_1*r2_2*c2_1*c2_2)./(1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi. *w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1*c2_2))); c2_2=ct_2.*(1+cm).*1e-15; c2_1=ct_1.*(1+cm).*1e-15;

189

Appendix 3 Source Code of PPFANA

r2_1=rt_1.*(1+cm); r2_2=rt_2.*(1+cm); c=abs(((j*(2.*pi.*w).*(r2_1*c2_1+r2_2*c2_2))./(1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.*w )*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1*c2_2))); m=20.*log10(b); k=20.*log10(c); RinCin=abs(m-k); plot(w,RinCin,'g -s') c2_2=ct_2.*1e-15; c2_1=ct_1.*1e-15; r2_1=rt_1; r2_2=rt_2; b=abs(((1+(2.*pi.*w).^2.*r2_1*r2_2*c2_1*c2_2)./(1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi. *w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1*c2_2))); c2_2=ct_2.*(1-cm).*1e-15; c2_1=ct_1.*(1-cm).*1e-15; r2_1=rt_1.*(1-cm); r2_2=rt_2.*(1-cm); c=abs(((j*(2.*pi.*w).*(r2_1*c2_1+r2_2*c2_2))./(1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.*w )*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1*c2_2))); m=20.*log10(b); k=20.*log10(c); RdeCde=abs(m-k); plot(w,RdeCde,'b -*') c2_2=ct_2.*1e-15; c2_1=ct_1.*1e-15; r2_1=rt_1; r2_2=rt_2; b=abs(((1+(2.*pi.*w).^2.*r2_1*r2_2*c2_1*c2_2)./(1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi. *w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1*c2_2))); c2_2=ct_2.*(1-cm).*1e-15; c2_1=ct_1.*(1-cm).*1e-15; r2_1=rt_1.*(1+cm);r2_2=rt_2.*(1+cm); c=abs(((j*(2.*pi.*w).*(r2_1*c2_1+r2_2*c2_2))./(1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.*w )*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1*c2_2))); m=20.*log10(b); k=20.*log10(c); RinCde=abs(m-k); plot(w,RinCde,'r - ^') c2_2=ct_2.*1e-15; c2_1=ct_1.*1e-15; r2_1=rt_1; r2_2=rt_2; b=abs(((1+(2.*pi.*w).^2.*r2_1*r2_2*c2_1*c2_2)./(1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi. *w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1*c2_2))); c2_2=ct_2.*(1+cm).*1e-15; c2_1=ct_1.*(1+cm).*1e-15; r2_1=rt_1.*(1-cm); r2_2=rt_2.*(1-cm); c=abs(((j*(2.*pi.*w).*(r2_1*c2_1+r2_2*c2_2))./(1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.*w )*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1*c2_2))); m=20.*log10(b); k=20.*log10(c); RdeCin=abs(m-k); plot(w,RdeCin,'k -d') legend('RinCin','RdeCde','RinCde','RdeCin') w=f_1.*(1-0.2):f_1./1e3:f_2.*(1+0.2); c2_2=ct_2.*1e-15; c2_1=ct_1.*1e-15; r2_1=rt_1; r2_2=rt_2; b=abs(((1+(2.*pi.*w).^2.*r2_1*r2_2*c2_1*c2_2)./(1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi. *w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1*c2_2))); c2_2=ct_2.*(1+cm).*1e-15; c2_1=ct_1.*(1+cm).*1e-15; r2_1=rt_1.*(1+cm); r2_2=rt_2.*(1+cm); c=abs(((j*(2.*pi.*w).*(r2_1*c2_1+r2_2*c2_2))./(1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.*w )*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1*c2_2))); m=20.*log10(b); k=20.*log10(c); RinCin=abs(m-k); plot(w,RinCin,'g -') c2_2=ct_2.*1e-15; c2_1=ct_1.*1e-15; r2_1=rt_1; r2_2=rt_2; b=abs(((1+(2.*pi.*w).^2.*r2_1*r2_2*c2_1*c2_2)./(1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi. *w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1*c2_2))); c2_2=ct_2.*(1-cm).*1e-15; c2_1=ct_1.*(1-cm).*1e-15; r2_1=rt_1.*(1-cm); r2_2=rt_2.*(1-cm); c=abs(((j*(2.*pi.*w).*(r2_1*c2_1+r2_2*c2_2))./(1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.*w )*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1*c2_2))); m=20.*log10(b); k=20.*log10(c); RdeCde=abs(m-k); plot(w,RdeCde,'b -.') % % c2_2=ct_2.*1e-15; c2_1=ct_1.*1e-15; r2_1=rt_1; r2_2=rt_2;

190

Appendix 3 Source Code of PPFANA

b=abs(((1+(2.*pi.*w).^2.*r2_1*r2_2*c2_1*c2_2)./(1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi. *w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1*c2_2))); c2_2=ct_2.*(1-cm).*1e-15; c2_1=ct_1.*(1-cm).*1e-15; r2_1=rt_1.*(1+cm); r2_2=rt_2.*(1+cm); c=abs(((j*(2.*pi.*w).*(r2_1*c2_1+r2_2*c2_2))./(1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi. *w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1*c2_2))); m=20.*log10(b);k=20.*log10(c); RinCde=abs(m-k); plot(w,RinCde,'r --')% % c2_2=ct_2.*1e-15; c2_1=ct_1.*1e-15; r2_1=rt_1; r2_2=rt_2; b=abs(((1+(2.*pi.*w).^2.*r2_1*r2_2*c2_1*c2_2)./(1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi. *w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1*c2_2))); c2_2=ct_2.*(1+cm).*1e-15; c2_1=ct_1.*(1+cm).*1e-15; r2_1=rt_1.*(1-cm); r2_2=rt_2.*(1-cm); c=abs(((j*(2.*pi.*w).*(r2_1*c2_1+r2_2*c2_2))./(1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.*w )*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1*c2_2))); m=20.*log10(b); k=20.*log10(c); RdeCin=abs(m-k); plot(w,RdeCin,'k :') xlabel('{\itf} / GHz','FontSize', 14) ylabel('{\itm}-{\itgain} / dB','FontSize', 14) title('Gain mismatch influenced by component mismatch','FontSize', 14)

A.3.3.2 Source Code for Analysis of Gain Mismatch Influenced by Component Mismatch in 3-stage RF CMOS PPFs global f_1; global f_2; global rth_1; global rth_2; global rth_3; global cth_1; global cth_2; global cth_3; global cm; f_1=findobj(gcf,'Tag','f_1'); f_1=str2double(get(f_1,'string')); %get the value from GUI input f_2=findobj(gcf,'Tag','f_2'); f_2=str2double(get(f_2,'string')); rth_1=findobj(gcf,'Tag','rth_1'); rth_1=str2double(get(rth_1,'string')); rth_2=findobj(gcf,'Tag','rth_2'); rth_2=str2double(get(rth_2,'string')); rth_3=findobj(gcf,'Tag','rth_3'); rth_3=str2double(get(rth_3,'string')); cth_1=findobj(gcf,'Tag','cth_1'); cth_1=str2double(get(cth_1,'string')); cth_2=findobj(gcf,'Tag','cth_2'); cth_2=str2double(get(cth_2,'string')); cth_3=findobj(gcf,'Tag','cth_3'); cth_3=str2double(get(cth_3,'string')); cm=findobj(gcf,'Tag','cm'); cm=str2double(get(cm,'string')); if isempty(cm), cm=0.01; else cm=cm; end if isempty(f_1), f_1=1.44e9; else f_1=f_1; end if isempty(f_2), f_2=3.47e9; else f_2=f_2; end if isempty(rth_1), rth_1=263.9; else rth_1=rth_1; end if isempty(rth_2), rth_2=293.7; else rth_2=rth_2; end if isempty(rth_3), rth_3=315.2; else rth_3=rth_3; end if isempty(cth_1), cth_1=173.8; else cth_1=cth_1; end if isempty(cth_2), cth_2=221.2; else cth_2=cth_2; end if isempty(cth_3), cth_3=350.7; else cth_3=cth_3; end figure hold on w=f_2.*(1+0.1):f_2./20:f_2.*(1+0.2); c3_3=cth_3.*1e-15; c3_2=cth_2.*1e-15;

191

Appendix 3 Source Code of PPFANA

c3_1=cth_1.*1e-15; r3_1=rth_1; r3_2=rth_2; r3_3=rth_3; c=abs((1+(2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2))./ (1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); c3_3=cth_3.*(1+cm).*1e-15; c3_2=cth_2.*(1+cm).*1e-15; c3_1=cth_1.*(1+cm).*1e-15; r3_1=rth_1.*(1+cm); r3_2=rth_2.*(1+cm); r3_3=rth_3.*(1+cm); b=abs((*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3)+(j.*2.*pi.*w).^3.*r3_1.*r3_2.*r3_3.*c3_1.*c3 _2.*c3_3)./(1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3 _3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3.*r3_1.*r3_2. *r3_3.*c3_1.*c3_2.*c3_3)); m=20.*log10(c); k=20.*log10(b); RinCin=abs(m-k); plot(w,RinCin,'g -s') c3_3=cth_3.*1e-15; c3_2=cth_2.*1e-15; c3_1=cth_1.*1e-15; r3_1=rth_1; r3_2=rth_2; r3_3=rth_3; c=abs((1+(2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2))./ (1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); c3_3=cth_3.*(1-cm).*1e-15; c3_2=cth_2.*(1-cm).*1e-15; c3_1=cth_1.*(1-cm).*1e-15; r3_1=rth_1.*(1-cm); r3_2=rth_2.*(1-cm); r3_3=rth_3.*(1-cm); b=abs((- j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3)+(j.*2.*pi.*w).^3.*r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3 _3)./(1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3 _3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3.*r3_1.*r3_2. *r3_3.*c3_1.*c3_2.*c3_3)); m=20.*log10(c); k=20.*log10(b); RdeCde=abs(m-k); plot(w,RdeCde,'b -*') c3_3=cth_3.*1e-15; c3_2=cth_2.*1e-15; c3_1=cth_1.*1e-15; r3_1=rth_1; r3_2=rth_2; r3_3=rth_3; c=abs((1+(2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2))./ (1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3 _3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3.*r3_1.*r3_2. *r3_3.*c3_1.*c3_2.*c3_3));

192

Appendix 3 Source Code of PPFANA

c3_3=cth_3.*(1-cm).*1e-15; c3_2=cth_2.*(1-cm).*1e-15; c3_1=cth_1.*(1-cm).*1e-15; r3_1=rth_1.*(1+cm); r3_2=rth_2.*(1+cm); r3_3=rth_3.*(1+cm); b=abs((- j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3)+(j.*2.*pi.*w).^3.*r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3 _3)./(1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3 _3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3.*r3_1.*r3_2. *r3_3.*c3_1.*c3_2.*c3_3)); m=20.*log10(c); k=20.*log10(b); RinCde=abs(m-k); plot(w,RinCde,'r -^') c3_3=cth_3.*1e-15; c3_2=cth_2.*1e-15; c3_1=cth_1.*1e-15; r3_1=rth_1; r3_2=rth_2; r3_3=rth_3; c=abs((1+(2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2))./ (1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3 _3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3.*r3_1.*r3_2. *r3_3.*c3_1.*c3_2.*c3_3)); c3_3=cth_3.*(1+cm).*1e-15; c3_2=cth_2.*(1+cm).*1e-15; c3_1=cth_1.*(1+cm).*1e-15; r3_1=rth_1.*(1-cm); r3_2=rth_2.*(1-cm); r3_3=rth_3.*(1-cm); b=abs((- j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3)+(j.*2.*pi.*w).^3.*r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3 _3)./(1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3 _3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3.*r3_1.*r3_2. *r3_3.*c3_1.*c3_2.*c3_3)); m=20.*log10(c); k=20.*log10(b); RdeCin=abs(m-k); plot(w,RdeCin,'k -d') legend('RinCin','RdeCde','RinCde','RdeCin') w=f_1.*(1-0.2):f_1./1e3:f_2.*(1+0.2); c3_3=cth_3.*1e-15; c3_2=cth_2.*1e-15; c3_1=cth_1.*1e-15; r3_1=rth_1; r3_2=rth_2; r3_3=rth_3; c=abs((1+(2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2))./ (1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); c3_3=cth_3.*(1+cm).*1e-15; c3_2=cth_2.*(1+cm).*1e-15; c3_1=cth_1.*(1+cm).*1e-15; r3_1=rth_1.*(1+cm); r3_2=rth_2.*(1+cm); r3_3=rth_3.*(1+cm); b=abs((- j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3)+(j.*2.*pi.*w).^3.*r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3 _3)./(1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3)

193

Appendix 3 Source Code of PPFANA

+2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); m=20.*log10(c); k=20.*log10(b); RinCin=abs(m-k); plot(w,RinCin,'g -') c3_3=cth_3.*1e-15; c3_2=cth_2.*1e-15; c3_1=cth_1.*1e-15; r3_1=rth_1; r3_2=rth_2; r3_3=rth_3; c=abs((1+(2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2))./ (1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); c3_3=cth_3.*(1-cm).*1e-15; c3_2=cth_2.*(1-cm).*1e-15; c3_1=cth_1.*(1-cm).*1e-15; r3_1=rth_1.*(1-cm); r3_2=rth_2.*(1-cm); r3_3=rth_3.*(1-cm); b=abs((- j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3)+(j.*2.*pi.*w).^3.*r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3 _3)./(1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); m=20.*log10(c); k=20.*log10(b); RdeCde=abs(m-k); plot(w,RdeCde,'b -.') % c3_3=cth_3.*1e-15; c3_2=cth_2.*1e-15; c3_1=cth_1.*1e-15; r3_1=rth_1; r3_2=rth_2; r3_3=rth_3; c=abs((1+(2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2))./ (1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); c3_3=cth_3.*(1-cm).*1e-15; c3_2=cth_2.*(1-cm).*1e-15; c3_1=cth_1.*(1-cm).*1e-15; r3_1=rth_1.*(1+cm); r3_2=rth_2.*(1+cm); r3_3=rth_3.*(1+cm); b=abs((- j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3)+(j.*2.*pi.*w).^3.*r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3 _3)./(1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); m=20.*log10(c); k=20.*log10(b); RinCde=abs(m-k); plot(w,RinCde,'r --') % c3_3=cth_3.*1e-15; c3_2=cth_2.*1e-15; c3_1=cth_1.*1e-15; r3_1=rth_1; r3_2=rth_2; r3_3=rth_3;

194

Appendix 3 Source Code of PPFANA

c=abs((1+(2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2))./ (1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); c3_3=cth_3.*(1+cm).*1e-15; c3_2=cth_2.*(1+cm).*1e-15; c3_1=cth_1.*(1+cm).*1e-15; r3_1=rth_1.*(1-cm); r3_2=rth_2.*(1-cm); r3_3=rth_3.*(1-cm); b=abs((- j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3)+(j.*2.*pi.*w).^3.*r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3 _3)./(1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); m=20.*log10(c); k=20.*log10(b); RdeCin=abs(m-k); plot(w,RdeCin,'k :') % xlabel('{\itf} / GHz','FontSize', 14) ylabel('{\itm}-{\itgain} / dB','FontSize', 14) title('Gain mismatch influenced by component mismatch','FontSize', 14)

A.3.3.3 Source Code for Analysis of Gain Mismatch Influenced by Component Mismatch in 4-stage RF CMOS PPFs global f_1; global f_4; global rf_1; global rf_2; global rf_3; global rf_4; global cf_1; global cf_2; global cf_3; global cf_4; global cm; f_1=findobj(gcf,'Tag','f_1'); f_1=str2double(get(f_1,'string')); %get the value from GUI input f_4=findobj(gcf,'Tag','f_4'); f_4=str2double(get(f_4,'string')); rf_1=findobj(gcf,'Tag','rf_1'); rf_1=str2double(get(rf_1,'string')); rf_2=findobj(gcf,'Tag','rf_2'); rf_2=str2double(get(rf_2,'string')); rf_3=findobj(gcf,'Tag','rf_3'); rf_3=str2double(get(rf_3,'string')); rf_4=findobj(gcf,'Tag','rf_4'); rf_4=str2double(get(rf_4,'string')); cf_1=findobj(gcf,'Tag','cf_1'); cf_1=str2double(get(cf_1,'string')); cf_2=findobj(gcf,'Tag','cf_2'); cf_2=str2double(get(cf_2,'string')); cf_3=findobj(gcf,'Tag','cf_3'); cf_3=str2double(get(cf_3,'string')); cf_4=findobj(gcf,'Tag','cf_4'); cf_4=str2double(get(cf_4,'string')); cm=findobj(gcf,'Tag','cm'); cm=str2double(get(cm,'string')); if isempty(cm), cm=0.01; else cm=cm; end if isempty(f_1), f_1=1.44e9; else f_1=f_1; end if isempty(f_4), f_4=3.47e9; else f_4=f_4; end if isempty(rf_1), rf_1=289.9; else rf_1=rf_1; end if isempty(rf_2), rf_2=329; else rf_2=rf_2; end if isempty(rf_3), rf_3=377.4; else rf_3=rf_3; end

195

Appendix 3 Source Code of PPFANA

if isempty(rf_4), rf_4=390; else rf_4=rf_4; end if isempty(cf_1), cf_1=158.2; else cf_1=cf_1; end if isempty(cf_2), cf_2=186.9; else cf_2=cf_2; end if isempty(cf_3), cf_3=218.5; else cf_3=cf_3; end if isempty(cf_4), cf_4=283.4; else cf_4=cf_4; end figure hold on w=f_4.*(1+0.1):f_4./20:f_4.*(1+0.2); c4=cf_4.*1e-15; c3=cf_3.*1e-15; c2=cf_2.*1e-15; c1=cf_1.*1e-15; r1=rf_1; r2=rf_2; r3=rf_3; r4=rf_4; a=abs((1+(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3+r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4 *c3) +(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4+2*r1 *r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4) +(j*(2.*pi.*w)).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c4) - (j*(2.*pi.*w)).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4+2* r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); c4=cf_4.*(1+cm).*1e-15; c3=cf_3.*(1+cm).*1e-15; c2=cf_2.*(1+cm).*1e-15; c1=cf_1.*(1+cm).*1e-15; r1=rf_1.*(1+cm); r2=rf_2.*(1+cm); r3=rf_3.*(1+cm); r4=rf_4.*(1+cm); d=abs(((2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4)+(2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c 4 +r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4+2*r1 *r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4). +(j.*2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c4) - (j.*2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4+2*r 1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); l=20.*log10(a); m=20.*log10(d); RinCin=abs(l-m); plot(w,RinCin,'g -s') c4=cf_4.*1e-15; c3=cf_3.*1e-15; c2=cf_2.*1e-15; c1=cf_1.*1e-15; r1=rf_1; r2=rf_2; r3=rf_3; r4=rf_4; a=abs((1+(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3+r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4 *c3) +(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4+2*r1 *r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4) +(j*(2.*pi.*w)).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c4) - (j*(2.*pi.*w)).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4+2* r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); c4=cf_4.*(1-cm).*1e-15; c3=cf_3.*(1-cm).*1e-15; c2=cf_2.*(1-cm).*1e-15; c1=cf_1.*(1-cm).*1e-15;

196

Appendix 3 Source Code of PPFANA

r1=rf_1.*(1-cm); r2=rf_2.*(1-cm); r3=rf_3.*(1-cm); r4=rf_4.*(1-cm); d=abs(((2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4)+(2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c 4 +r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4. +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4 +2*r1*r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c 3*c4)+(j.*2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c 4) -(j.*2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4 +2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); l=20.*log10(a); m=20.*log10(d); RdeCde=abs(l-m); plot(w,RdeCde,'b -*') % % c4=cf_4.*1e-15; c3=cf_3.*1e-15; c2=cf_2.*1e-15; c1=cf_1.*1e-15; r1=rf_1; r2=rf_2; r3=rf_3; r4=rf_4; a=abs((1+(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3+r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4 *c3) +(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4+2*r1 *r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4) +(j*(2.*pi.*w)).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c4)- (j*(2.*pi.*w)).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4+2* r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); c4=cf_4.*(1-cm).*1e-15; c3=cf_3.*(1-cm).*1e-15; c2=cf_2.*(1-cm).*1e-15; c1=cf_1.*(1-cm).*1e-15; r1=rf_1.*(1+cm); r2=rf_2.*(1+cm); r3=rf_3.*(1+cm); r4=rf_4.*(1+cm); d=abs(((2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4)+(2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c 4 +r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4))./(1- (2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3+r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1* r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4+2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2* c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4+2*r1*r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2 .*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4)+(j.*2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+ 2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c4)- (j.*2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4+2*r 1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); l=20.*log10(a); m=20.*log10(d); RinCde=abs(l-m); plot(w,RinCde,'r -^') % % c4=cf_4.*1e-15; c3=cf_3.*1e-15; c2=cf_2.*1e-15; c1=cf_1.*1e-15; r1=rf_1; r2=rf_2; r3=rf_3; r4=rf_4; a=abs((1+(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3+r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4 *c3) +(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4. +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4 +2*r1*r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c 3*c4)+(j*(2.*pi.*w)).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1*

197

Appendix 3 Source Code of PPFANA

c4)(j*(2.*pi.*w)).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4 +2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); c4=cf_4.*(1+cm).*1e-15; c3=cf_3.*(1+cm).*1e-15; c2=cf_2.*(1+cm).*1e-15; c1=cf_1.*(1+cm).*1e-15; r1=rf_1.*(1-cm); r2=rf_2.*(1-cm); r3=rf_3.*(1-cm); r4=rf_4.*(1-cm); d=abs(((2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4)+(2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c 4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4+2*r1 *r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4) +(j.*2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c4)- (j.*2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4+2*r 1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); l=20.*log10(a); m=20.*log10(d); RdeCin=abs(l-m); plot(w,RdeCin,'k -d') legend('RinCin','RdeCde','RinCde','RdeCin') w=f_1.*(1-0.4):f_1./1e3:f_4.*(1+0.4); c4=cf_4.*1e-15; c3=cf_3.*1e-15; c2=cf_2.*1e-15; c1=cf_1.*1e-15; r1=rf_1; r2=rf_2; r3=rf_3; r4=rf_4; a=abs((1+(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3+r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4 *c3) +(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4+2*r1 *r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4). +(j*(2.*pi.*w)).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c4)- (j*(2.*pi.*w)).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4+2* r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); c4=cf_4.*(1+cm).*1e-15; c3=cf_3.*(1+cm).*1e-15; c2=cf_2.*(1+cm).*1e-15; c1=cf_1.*(1+cm).*1e-15; r1=rf_1.*(1+cm); r2=rf_2.*(1+cm); r3=rf_3.*(1+cm); r4=rf_4.*(1+cm); d=abs(((2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4)+(2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c 4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4))./(1- (2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3+r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1* r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4+2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2* c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4+2*r1*r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2 .*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4)+(j.*2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+ 2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c4)(j.*2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r 4*c1*c3*c4+r3*r2*r4*c3*c2*c4+2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2 *r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); l=20.*log10(a); m=20.*log10(d); RinCin=abs(l-m); plot(w,RinCin,'g -') c4=cf_4.*1e-15; c3=cf_3.*1e-15; c2=cf_2.*1e-15; c1=cf_1.*1e-15; r1=rf_1; r2=rf_2; r3=rf_3; r4=rf_4;

198

Appendix 3 Source Code of PPFANA

a=abs((1+(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3+r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4 *c3) +(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4. +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4 +2*r1*r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c 3*c4)+(j*(2.*pi.*w)).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1* c4)(j*(2.*pi.*w)).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4. +2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); c4=cf_4.*(1-cm).*1e-15; c3=cf_3.*(1-cm).*1e-15; c2=cf_2.*(1-cm).*1e-15; c1=cf_1.*(1-cm).*1e-15; r1=rf_1.*(1-cm); r2=rf_2.*(1-cm); r3=rf_3.*(1-cm); r4=rf_4.*(1-cm); d=abs(((2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4)+(2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c 4 +r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4+2*r1 *r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4) +(j.*2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c4) - (j.*2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4 +2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); l=20.*log10(a); m=20.*log10(d); RdeCde=abs(l-m); plot(w,RdeCde,'b -.') % % c4=cf_4.*1e-15; c3=cf_3.*1e-15; c2=cf_2.*1e-15; c1=cf_1.*1e-15; r1=rf_1; r2=rf_2; r3=rf_3; r4=rf_4; a=abs((1+(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3+r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4 *c3) +(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4. +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4+2*r1 *r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4) +(j*(2.*pi.*w)).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c4) -(j*(2.*pi.*w)).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4 +2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); c4=cf_4.*(1-cm).*1e-15; c3=cf_3.*(1-cm).*1e-15; c2=cf_2.*(1-cm).*1e-15; c1=cf_1.*(1-cm).*1e-15; r1=rf_1.*(1+cm); r2=rf_2.*(1+cm); r3=rf_3.*(1+cm); r4=rf_4.*(1+cm); d=abs(((2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4)+(2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c 4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4 +2*r1*r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c 3*c4)+(j.*2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c 4)-(j.*2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4 +2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4

199

Appendix 3 Source Code of PPFANA

+2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); l=20.*log10(a); m=20.*log10(d); RinCde=abs(l-m); plot(w,RinCde,'r --') % % c4=cf_4.*1e-15; c3=cf_3.*1e-15; c2=cf_2.*1e-15; c1=cf_1.*1e-15; r1=rf_1; r2=rf_2; r3=rf_3; r4=rf_4; a=abs((1+(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3+r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4 *c3) +(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4 +2*r1*r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c 3*c4)+(j*(2.*pi.*w)).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1* c4)j*(2.*pi.*w)).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4 +2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); c4=cf_4.*(1+cm).*1e-15; c3=cf_3.*(1+cm).*1e-15;c2=cf_2.*(1+cm).*1e-15; c1=cf_1.*(1+cm).*1e-15; r1=rf_1.*(1-cm); r2=rf_2.*(1-cm); r3=rf_3.*(1-cm); r4=rf_4.*(1-cm); d=abs(((2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4)+(2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c 4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4))/(1- (2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3+r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1* r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4+2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2* c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4+2*r1*r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2 .*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4)+(j.*2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+ 2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c4)- j.*2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4+2*r 1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); l=20.*log10(a); m=20.*log10(d); RdeCin=abs(l-m); plot(w,RdeCin,'k :')% xlabel('{\itf} / GHz','FontSize', 14) ylabel('{\itm}-{\itgain} / dB','FontSize', 14) title('Gain mismatch influenced by component mismatch','FontSize', 14)

A3.4 Source Code for Analysis of Phase Mismatch Influenced by Component Mismatch

A.3.4.1 Source Code for Analysis of Phase Mismatch Influenced by Component Mismatch in 2-stage RF CMOS PPFs global f_1; global f_2; global rt_1; global rt_2; global ct_1; global ct_2; global cm; global pt; f_1=findobj(gcf,'Tag','f_1'); f_1=str2double(get(f_1,'string'));%get the value from GUI input f_2=findobj(gcf,'Tag','f_2'); f_2=str2double(get(f_2,'string')); rt_1=findobj(gcf,'Tag','rt_1'); rt_1=str2double(get(rt_1,'string')); rt_2=findobj(gcf,'Tag','rt_2'); rt_2=str2double(get(rt_2,'string')); ct_1=findobj(gcf,'Tag','ct_1'); ct_1=str2double(get(ct_1,'string'));

200

Appendix 3 Source Code of PPFANA

ct_2=findobj(gcf,'Tag','ct_2'); ct_2=str2double(get(ct_2,'string')); cm=findobj(gcf,'Tag','cm'); cm=str2double(get(cm,'string')); if isempty(cm), cm=0.01;else cm=cm; end if isempty(f_1), f_1=1.44e9; else f_1=f_1; end if isempty(f_2), f_2=3.47e9; else f_2=f_2; end if isempty(rt_1), rt_1=223.5; else rt_1=rt_1; end if isempty(rt_2), rt_2=265.6; else rt_2=rt_2; end if isempty(ct_1), ct_1=205.2; else ct_1=ct_1; end if isempty(ct_2), ct_2=416.7; else ct_2=ct_2; end figure hold on w=f_2.*(1+0.1):f_2./20:f_2.*(1+0.2); c2_2=ct_2.*1e-15; c2_1=ct_1.*1e-15; r2_1=rt_1;r2_2=rt_2; b=abs(((1+(2.*pi.*w).^2.*r2_1*r2_2*c2_1*c2_2)./(1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi. *w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1*c2_2))); c2_2=ct_2.*(1+cm).*1e-15; c2_1=ct_1.*(1+cm).*1e-15; r2_1=rt_1.*(1+cm); r2_2=rt_2.*(1+cm); c=abs(((j*(2.*pi.*w).*(r2_1*c2_1+r2_2*c2_2))./ (1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.*w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1 *c2_2))); m=atan(b); k=atan(c); RinCin=(m-k).*180./pi+90; plot(w,RinCin,'g -s') c2_2=ct_2.*1e-15; c2_1=ct_1.*1e-15; r2_1=rt_1; r2_2=rt_2; b=abs(((1+(2.*pi.*w).^2.*r2_1*r2_2*c2_1*c2_2)./ (1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.*w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1 *c2_2))); c2_2=ct_2.*(1-cm).*1e-15; c2_1=ct_1.*(1-cm).*1e-15; r2_1=rt_1.*(1-cm); r2_2=rt_2.*(1-cm); c=abs(((j*(2.*pi.*w).*(r2_1*c2_1+r2_2*c2_2))./ (1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.*w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1 *c2_2))); m=atan(b); k=atan(c); RdeCde=(m-k).*180./pi+90; plot(w,RdeCde,'b -*') c2_2=ct_2.*1e-15; c2_1=ct_1.*1e-15; r2_1=rt_1; r2_2=rt_2; b=abs(((1+(2.*pi.*w).^2.*r2_1*r2_2*c2_1*c2_2)./ (1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.*w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1 *c2_2))); c2_2=ct_2.*(1-cm).*1e-15; c2_1=ct_1.*(1-cm).*1e-15; r2_1=rt_1.*(1+cm); r2_2=rt_2.*(1+cm); c=abs(((j*(2.*pi.*w).*(r2_1*c2_1+r2_2*c2_2))./ (1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.*w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1 *c2_2))); m=atan(b); k=atan(c); RinCde=(m-k).*180./pi+90; plot(w,RinCde,'r -^') c2_2=ct_2.*1e-15; c2_1=ct_1.*1e-15; r2_1=rt_1; r2_2=rt_2; b=abs(((1+(2.*pi.*w).^2.*r2_1*r2_2*c2_1*c2_2)./ (1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.*w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1 *c2_2)));

201

Appendix 3 Source Code of PPFANA

c2_2=ct_2.*(1+cm).*1e-15; c2_1=ct_1.*(1+cm).*1e-15; r2_1=rt_1.*(1-cm); r2_2=rt_2.*(1-cm); c=abs(((j*(2.*pi.*w).*(r2_1*c2_1+r2_2*c2_2))./ (1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.*w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1 *c2_2))); m=atan(b); k=atan(c); RdeCin=(m-k).*180./pi+90; plot(w,RdeCin,'k -d') legend('RinCin','RdeCde','RinCde','RdeCin') w=f_1.*(1-0.2):f_1./1e3:f_2.*(1+0.2); c2_2=ct_2.*1e-15; c2_1=ct_1.*1e-15; r2_1=rt_1; r2_2=rt_2; b=abs(((1+(2.*pi.*w).^2.*r2_1*r2_2*c2_1*c2_2)./ (1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.*w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1 *c2_2))); c2_2=ct_2.*(1+cm).*1e-15; c2_1=ct_1.*(1+cm).*1e-15; r2_1=rt_1.*(1+cm); r2_2=rt_2.*(1+cm); c=abs(((j*(2.*pi.*w).*(r2_1*c2_1+r2_2*c2_2))./ (1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.*w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1 *c2_2))); m=atan(b); k=atan(c); RinCin=(m-k).*180./pi+90; plot(w,RinCin,'g -') c2_2=ct_2.*1e-15; c2_1=ct_1.*1e-15; r2_1=rt_1; r2_2=rt_2; b=abs(((1+(2.*pi.*w).^2.*r2_1*r2_2*c2_1*c2_2)./ (1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.*w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1 *c2_2))); c2_2=ct_2.*(1-cm).*1e-15; c2_1=ct_1.*(1-cm).*1e-15; r2_1=rt_1.*(1-cm); r2_2=rt_2.*(1-cm); c=abs(((j*(2.*pi.*w).*(r2_1*c2_1+r2_2*c2_2))./ (1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.*w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1 *c2_2))); m=atan(b); k=atan(c); RdeCde=(m-k).*180./pi+90; plot(w,RdeCde,'b -.') % % c2_2=ct_2.*1e-15; c2_1=ct_1.*1e-15; r2_1=rt_1; r2_2=rt_2; b=abs(((1+(2.*pi.*w).^2.*r2_1*r2_2*c2_1*c2_2)./ (1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.*w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1 *c2_2))); c2_2=ct_2.*(1-cm).*1e-15; c2_1=ct_1.*(1-cm).*1e-15; r2_1=rt_1.*(1+cm); r2_2=rt_2.*(1+cm); c=abs(((j*(2.*pi.*w).*(r2_1*c2_1+r2_2*c2_2))./ (1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.*w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1 *c2_2))); m=atan(b); k=atan(c); RinCde=(m-k).*180./pi+90; plot(w,RinCde,'r --') % % c2_2=ct_2.*1e-15; c2_1=ct_1.*1e-15; r2_1=rt_1; r2_2=rt_2; b=abs(((1+(2.*pi.*w).^2.*r2_1*r2_2*c2_1*c2_2)./ (1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.*w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1 *c2_2))); c2_2=ct_2.*(1+cm).*1e-15;c2_1=ct_1.*(1+cm).*1e-15;r2_1=rt_1.*(1-cm); r2_2=rt_2.*(1-cm); c=abs(((j*(2.*pi.*w).*(r2_1*c2_1+r2_2*c2_2))./

202

Appendix 3 Source Code of PPFANA

(1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.*w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1 *c2_2))); m=atan(b); k=atan(c); RdeCin=(m-k).*180./pi+90; plot(w,RdeCin,'k :') xlabel('{\itf} / GHz','FontSize', 14) ylabel('{\itd}-{\rmphase} / degrees','FontSize', 14) title('Phase difference influenced by component mismatch','FontSize', 14)

A.3.4.2 Source Code for Analysis of Phase Mismatch Influenced by Component Mismatch in 3-stage RF CMOS PPFs global f_1; global f_2; global rth_1; global rth_2; global rth_3; global cth_1; global cth_2; global cth_3; global cm; f_1=findobj(gcf,'Tag','f_1'); f_1=str2double(get(f_1,'string')); %get the value from GUI input f_2=findobj(gcf,'Tag','f_2'); f_2=str2double(get(f_2,'string')); rth_1=findobj(gcf,'Tag','rth_1'); rth_1=str2double(get(rth_1,'string')); rth_2=findobj(gcf,'Tag','rth_2'); rth_2=str2double(get(rth_2,'string')); rth_3=findobj(gcf,'Tag','rth_3'); rth_3=str2double(get(rth_3,'string')); cth_1=findobj(gcf,'Tag','cth_1'); cth_1=str2double(get(cth_1,'string')); cth_2=findobj(gcf,'Tag','cth_2'); cth_2=str2double(get(cth_2,'string')); cth_3=findobj(gcf,'Tag','cth_3'); cth_3=str2double(get(cth_3,'string')); cm=findobj(gcf,'Tag','cm'); cm=str2double(get(cm,'string')); if isempty(cm), cm=0.01; else cm=cm; end if isempty(f_1), f_1=1.44e9; else f_1=f_1; end if isempty(f_2), f_2=3.47e9; else f_2=f_2; end if isempty(rth_1), rth_1=263.9; else rth_1=rth_1; end if isempty(rth_2), rth_2=293.7; else rth_2=rth_2; end if isempty(rth_3), rth_3=315.2; else rth_3=rth_3; end if isempty(cth_1), cth_1=173.8; else cth_1=cth_1; end if isempty(cth_2), cth_2=221.2; else cth_2=cth_2; end if isempty(cth_3), cth_3=350.7; else cth_3=cth_3; end figure hold on w=f_2.*(1+0.1):f_2./20:f_2.*(1+0.2); c3_3=cth_3.*1e-15; c3_2=cth_2.*1e-15; c3_1=cth_1.*1e-15; r3_1=rth_1; r3_2=rth_2; r3_3=rth_3; h=abs((1+(2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2))./ (1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); c3_3=cth_3.*(1+cm).*1e-15; c3_2=cth_2.*(1+cm).*1e-15; c3_1=cth_1.*(1+cm).*1e-15; r3_1=rth_1.*(1+cm); r3_2=rth_2.*(1+cm); r3_3=rth_3.*(1+cm);

203

Appendix 3 Source Code of PPFANA

t=abs((- j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3)+(j.*2.*pi.*w).^3.*r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3 _3)./(1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); l=atan(h); n=atan(t); RinCin=(l-n).*180./pi+90; plot(w,RinCin,'g -s') c3_3=cth_3.*1e-15; c3_2=cth_2.*1e-15; c3_1=cth_1.*1e-15; r3_1=rth_1; r3_2=rth_2; r3_3=rth_3; h=abs((1+(2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2))./ (1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); c3_3=cth_3.*(1-cm).*1e-15; c3_2=cth_2.*(1-cm).*1e-15; c3_1=cth_1.*(1-cm).*1e-15; r3_1=rth_1.*(1-cm); r3_2=rth_2.*(1-cm); r3_3=rth_3.*(1-cm); t=abs((- j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3)+(j.*2.*pi.*w).^3.*r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3 _3)./(1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); l=atan(h); n=atan(t); RdeCde=(l-n).*180./pi+90; plot(w,RdeCde,'b -*') c3_3=cth_3.*1e-15; c3_2=cth_2.*1e-15; c3_1=cth_1.*1e-15; r3_1=rth_1; r3_2=rth_2; r3_3=rth_3; h=abs((1+(2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2))./ (1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); c3_3=cth_3.*(1-cm).*1e-15; c3_2=cth_2.*(1-cm).*1e-15; c3_1=cth_1.*(1-cm).*1e-15; r3_1=rth_1.*(1+cm); r3_2=rth_2.*(1+cm); r3_3=rth_3.*(1+cm); t=abs((- j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3)+(j.*2.*pi.*w).^3.*r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3 _3)./(1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3

204

Appendix 3 Source Code of PPFANA

_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3.*r3_1.*r3_2. *r3_3.*c3_1.*c3_2.*c3_3)); l=atan(h); n=atan(t); RinCde=(l-n).*180./pi+90; plot(w,RinCde,'r -^') c3_3=cth_3.*1e-15; c3_2=cth_2.*1e-15; c3_1=cth_1.*1e-15; r3_1=rth_1; r3_2=rth_2; r3_3=rth_3; h=abs((1+(2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2))./ (1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); c3_3=cth_3.*(1+cm).*1e-15; c3_2=cth_2.*(1+cm).*1e-15; c3_1=cth_1.*(1+cm).*1e-15; r3_1=rth_1.*(1-cm); r3_2=rth_2.*(1-cm); r3_3=rth_3.*(1-cm); t=abs((- j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3)+(j.*2.*pi.*w).^3.*r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3 _3)./(1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); l=atan(h); n=atan(t); RdeCin=(l-n).*180./pi+90; plot(w,RdeCin,'k -d') legend('RinCin','RdeCde','RinCde','RdeCin') w=f_1.*(1-0.2):f_1./1e3:f_2.*(1+0.2); c3_3=cth_3.*1e-15; c3_2=cth_2.*1e-15; c3_1=cth_1.*1e-15; r3_1=rth_1; r3_2=rth_2; r3_3=rth_3; h=abs((1+(2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2))./ (1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); c3_3=cth_3.*(1+cm).*1e-15; c3_2=cth_2.*(1+cm).*1e-15; c3_1=cth_1.*(1+cm).*1e-15; r3_1=rth_1.*(1+cm); r3_2=rth_2.*(1+cm); r3_3=rth_3.*(1+cm); t=abs((- j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3)+(j.*2.*pi.*w).^3.*r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3 _3)./(1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); l=atan(h); n=atan(t); RinCin=(l-n).*180./pi+90; plot(w,RinCin,'g -') c3_3=cth_3.*1e-15; c3_2=cth_2.*1e-15; c3_1=cth_1.*1e-15; r3_1=rth_1; r3_2=rth_2; r3_3=rth_3;

205

Appendix 3 Source Code of PPFANA

h=abs((1+(2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2))./ (1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3 _3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3.*r3_1.*r3_2. *r3_3.*c3_1.*c3_2.*c3_3)); c3_3=cth_3.*(1-cm).*1e-15; c3_2=cth_2.*(1-cm).*1e-15; c3_1=cth_1.*(1-cm).*1e-15; r3_1=rth_1.*(1-cm); r3_2=rth_2.*(1-cm); r3_3=rth_3.*(1-cm); t=abs((- j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3)+(j.*2.*pi.*w).^3.*r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3 _3)./(1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); l=atan(h); n=atan(t); RdeCde=(l-n).*180./pi+90; plot(w,RdeCde,'b -.') % c3_3=cth_3.*1e-15;c3_2=cth_2.*1e-15; c3_1=cth_1.*1e-15; r3_1=rth_1; r3_2=rth_2; r3_3=rth_3; h=abs((1+(2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2))./ (1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); c3_3=cth_3.*(1-cm).*1e-15; c3_2=cth_2.*(1-cm).*1e-15; c3_1=cth_1.*(1-cm).*1e-15; r3_1=rth_1.*(1+cm); r3_2=rth_2.*(1+cm); r3_3=rth_3.*(1+cm); t=abs((- j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3)+(j.*2.*pi.*w).^3.*r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3 _3)./(1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); l=atan(h); n=atan(t); RinCde=(l-n).*180./pi+90; plot(w,RinCde,'r --') % c3_3=cth_3.*1e-15; c3_2=cth_2.*1e-15; c3_1=cth_1.*1e-15; r3_1=rth_1; r3_2=rth_2; r3_3=rth_3; h=abs((1+(2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2))./ (1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3));

206

Appendix 3 Source Code of PPFANA

c3_3=cth_3.*(1+cm).*1e-15; c3_2=cth_2.*(1+cm).*1e-15; c3_1=cth_1.*(1+cm).*1e-15; r3_1=rth_1.*(1-cm); r3_2=rth_2.*(1-cm); r3_3=rth_3.*(1-cm); t=abs((- j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3)+(j.*2.*pi.*w).^3.*r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3 _3)./(1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); l=atan(h); n=atan(t); RdeCin=(l-n).*180./pi+90; plot(w,RdeCin,'k :') % xlabel('{\itf} / GHz','FontSize', 14) ylabel('{\itd}-{\rmphase} / degrees','FontSize', 14) title('Phase difference influenced by component mismatch','FontSize', 14)

A.3.4.3 Source Code for Analysis of Phase Mismatch Influenced by Component Mismatch in 4-stage RF CMOS PPFs global f_1;global f_4;global rf_1;global rf_2;global rf_3;global rf_4; global cf_1;global cf_2; global cf_3;global cf_4;global cm; f_1=findobj(gcf,'Tag','f_1'); f_1=str2double(get(f_1,'string')); %get the value from GUI input f_4=findobj(gcf,'Tag','f_4'); f_4=str2double(get(f_4,'string')); rf_1=findobj(gcf,'Tag','rf_1'); rf_1=str2double(get(rf_1,'string')); rf_2=findobj(gcf,'Tag','rf_2'); rf_2=str2double(get(rf_2,'string')); rf_3=findobj(gcf,'Tag','rf_3'); rf_3=str2double(get(rf_3,'string')); rf_4=findobj(gcf,'Tag','rf_4'); rf_4=str2double(get(rf_4,'string')); cf_1=findobj(gcf,'Tag','cf_1'); cf_1=str2double(get(cf_1,'string')); cf_2=findobj(gcf,'Tag','cf_2'); cf_2=str2double(get(cf_2,'string')); cf_3=findobj(gcf,'Tag','cf_3'); cf_3=str2double(get(cf_3,'string')); cf_4=findobj(gcf,'Tag','cf_4'); cf_4=str2double(get(cf_4,'string')); cm=findobj(gcf,'Tag','cm'); cm=str2double(get(cm,'string')); if isempty(cm), cm=0.01; else cm=cm; end if isempty(f_1), f_1=1.44e9; else f_1=f_1; end if isempty(f_4), f_4=3.47e9; else f_4=f_4; end if isempty(rf_1), rf_1=289.9; else rf_1=rf_1; end if isempty(rf_2), rf_2=329; else rf_2=rf_2; end if isempty(rf_3), rf_3=377.4; else rf_3=rf_3; end if isempty(rf_4), rf_4=390; else rf_4=rf_4; end if isempty(cf_1), cf_1=158.2; else cf_1=cf_1; end if isempty(cf_2), cf_2=186.9; else cf_2=cf_2; end if isempty(cf_3), cf_3=218.5; else cf_3=cf_3; end if isempty(cf_4), cf_4=283.4; else cf_4=cf_4; end figure hold on

207

Appendix 3 Source Code of PPFANA

w=f_4.*(1+0.1):f_4./20:f_4.*(1+0.2); c4=cf_4.*1e-15; c3=cf_3.*1e-15; c2=cf_2.*1e-15; c1=cf_1.*1e-15; r1=rf_1; r2=rf_2; r3=rf_3; r4=rf_4; c=abs((1+(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3+r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4 *c3) +(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4+2*r1 *r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4) +(j*(2.*pi.*w)).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c4) -(j*(2.*pi.*w)).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4 +2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); c4=cf_4.*(1+cm).*1e-15; c3=cf_3.*(1+cm).*1e-15; c2=cf_2.*(1+cm).*1e-15; c1=cf_1.*(1+cm).*1e-15; r1=rf_1.*(1+cm); r2=rf_2.*(1+cm); r3=rf_3.*(1+cm); r4=rf_4.*(1+cm); b=abs(((2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4)+(2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c 4 +r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4 +2*r1*r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c 3*c4)+(j.*2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c 4)-(j.*2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4 +2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); h=atan(c); n=atan(b); RinCin=(n-h).*180./pi+90; plot(w,RinCin,'g -s') c4=cf_4.*1e-15; c3=cf_3.*1e-15; c2=cf_2.*1e-15; c1=cf_1.*1e-15; r1=rf_1; r2=rf_2; r3=rf_3; r4=rf_4; c=abs((1+(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3+r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4 *c3) +(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4 +2*r1*r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c 3*c4)+(j*(2.*pi.*w)).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1* c4)- (j*(2.*pi.*w)).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4 +2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); c4=cf_4.*(1-cm).*1e-15;c3=cf_3.*(1-cm).*1e-15;c2=cf_2.*(1-cm).*1e-15;c1=cf_1.*(1-cm).*1e-15; r1=rf_1.*(1-cm);r2=rf_2.*(1-cm);r3=rf_3.*(1-cm);r4=rf_4.*(1-cm); b=abs(((2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4)+(2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c 4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4

208

Appendix 3 Source Code of PPFANA

+2*r1*r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c 3*c4)+(j.*2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c 4)-(j.*2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4 +2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); h=atan(c); n=atan(b); RdeCde=(n-h).*180./pi+90; plot(w,RdeCde,'b -*') % % c4=cf_4.*1e-15; c3=cf_3.*1e-15; c2=cf_2.*1e-15; c1=cf_1.*1e-15; r1=rf_1; r2=rf_2; r3=rf_3; r4=rf_4; c=abs((1+(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3+r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4 *c3) +(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4+2*r1 *r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4) +(j*(2.*pi.*w)).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c4) - (j*(2.*pi.*w)).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4+2* r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); c4=cf_4.*(1-cm).*1e-15;c3=cf_3.*(1-cm).*1e-15;c2=cf_2.*(1-cm).*1e-15; c1=cf_1.*(1-cm).*1e-15;r1=rf_1.*(1+cm);r2=rf_2.*(1+cm);r3=rf_3.*(1+cm);r4=rf_4.*(1+cm); b=abs(((2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4)+(2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c 4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4+2*r1 *r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4) +(j.*2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c4) - (j.*2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4+2*r 1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); h=atan(c);n=atan(b);RinCde=(n-h).*180./pi+90;plot(w,RinCde,'r -^')% % c4=cf_4.*1e-15;c3=cf_3.*1e-15;c2=cf_2.*1e-15;c1=cf_1.*1e-15;r1=rf_1;r2=rf_2; r3=rf_3;r4=rf_4; c=abs((1+(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3+r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4 *c3) +(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4+2*r1 *r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4) +(j*(2.*pi.*w)).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c4)- (j*(2.*pi.*w)).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4+2* r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); c4=cf_4.*(1+cm).*1e-15;c3=cf_3.*(1+cm).*1e-15;c2=cf_2.*(1+cm).*1e-15;c1=cf_1.*(1+cm).*1e-15; r1=rf_1.*(1-cm);r2=rf_2.*(1-cm);r3=rf_3.*(1-cm);r4=rf_4.*(1-cm);

209

Appendix 3 Source Code of PPFANA

b=abs(((2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4)+(2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c 4 +r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4 +2*r1*r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c 3*c4)+(j.*2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c 4)-(j.*2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4 +2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); h=atan(c);n=atan(b);RdeCin=(n-h).*180./pi+90;plot(w,RdeCin,'k -d') legend('RinCin','RdeCde','RinCde','RdeCin') w=f_1.*(1-0.4):f_1./1e3:f_4.*(1+0.4); c4=cf_4.*1e-15;c3=cf_3.*1e-15;c2=cf_2.*1e-15;c1=cf_1.*1e-15; r1=rf_1;r2=rf_2;r3=rf_3;r4=rf_4; c=abs((1+(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3+r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4 *c3) +(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4 +2*r1*r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c 3*c4)+(j*(2.*pi.*w)).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1* c4)(j*(2.*pi.*w)).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4. +2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); c4=cf_4.*(1+cm).*1e-15;c3=cf_3.*(1+cm).*1e-15;c2=cf_2.*(1+cm).*1e-15;c1=cf_1.*(1+cm).*1e-15; r1=rf_1.*(1+cm);r2=rf_2.*(1+cm);r3=rf_3.*(1+cm);r4=rf_4.*(1+cm); b=abs(((2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4)+(2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c 4 +r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4))./(1- (2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3+r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1* r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4+2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2* c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4+2*r1*r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2 .*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4)+(j.*2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+ 2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c4)(j.*2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r 4*c1*c3*c4+r3*r2*r4*c3*c2*c4+2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2 *r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); h=atan(c);n=atan(b);RinCin=(n-h).*180./pi+90;plot(w,RinCin,'g -') c4=cf_4.*1e-15;c3=cf_3.*1e-15;c2=cf_2.*1e-15;c1=cf_1.*1e-15; r1=rf_1;r2=rf_2;r3=rf_3;r4=rf_4; c=abs((1+(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3+r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4 *c3) +(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4

210

Appendix 3 Source Code of PPFANA

+2*r1*r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c 3*c4)+(j*(2.*pi.*w)).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1* c4)(j*(2.*pi.*w)).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4 +2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); c4=cf_4.*(1-cm).*1e-15;c3=cf_3.*(1-cm).*1e-15;c2=cf_2.*(1-cm).*1e-15; c1=cf_1.*(1-cm).*1e-15;r1=rf_1.*(1-cm);r2=rf_2.*(1-cm);r3=rf_3.*(1-cm);r4=rf_4.*(1-cm); b=abs(((2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4)+(2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c 4 +r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4 +2*r1*r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c 3*c4)+(j.*2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c 4)-(j.*2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4 +2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); h=atan(c);n=atan(b);RdeCde=(n-h).*180./pi+90;plot(w,RdeCde,'b -.') % % c4=cf_4.*1e-15;c3=cf_3.*1e-15;c2=cf_2.*1e-15;c1=cf_1.*1e-15;r1=rf_1;r2=rf_2;r3=rf_3;r4=rf_4; c=abs((1+(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3+r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4 *c3) +(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4 +2*r1*r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c 3*c4)+(j*(2.*pi.*w)).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1* c4)(j*(2.*pi.*w)).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4. +2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); c4=cf_4.*(1-cm).*1e-15;c3=cf_3.*(1-cm).*1e-15;c2=cf_2.*(1-cm).*1e-15;c1=cf_1.*(1-cm).*1e-15; r1=rf_1.*(1+cm);r2=rf_2.*(1+cm);r3=rf_3.*(1+cm);r4=rf_4.*(1+cm); b=abs(((2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4)+(2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c 4 +r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4 +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4 +2*r1*r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c 3*c4)+(j.*2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c 4)-(j.*2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4 +2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); h=atan(c); n=atan(b); RinCde=(n-h).*180./pi+90; plot(w,RinCde,'r --') % % c4=cf_4.*1e-15;c3=cf_3.*1e-15;c2=cf_2.*1e-15;c1=cf_1.*1e-15;r1=rf_1;r2=rf_2;r3=rf_3;r4=rf_4;

211

Appendix 3 Source Code of PPFANA

c=abs((1+(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3+r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4 *c3) +(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4))./(1-(2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3 +r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1*r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c.. +2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2*c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4 +2*r1*r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2.*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c 3*c4)+(j*(2.*pi.*w)).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+2*r1*c3+2*r2*c3+2*r2*c4+2*r1* c4)(j*(2.*pi.*w)).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4. +2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2*r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); c4=cf_4.*(1+cm).*1e-15;c3=cf_3.*(1+cm).*1e-15;c2=cf_2.*(1+cm).*1e-15; c1=cf_1.*(1+cm).*1e-15; r1=rf_1.*(1-cm);r2=rf_2.*(1-cm);r3=rf_3.*(1-cm);r4=rf_4.*(1-cm); b=abs(((2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4)+(2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c 4 +r1*r3*r4*c1*c3*c4+r3*r2*r4*c3*c2*c4))./(1- (2.*pi.*w).^2.*(r1*r2*c1*c2+r1*r3*c1*c3+r2*r3*c2*c3+r1*r4*c1*c4+r2*r4*c2*c4+r4*r3*c4*c3+2*r1* r3*c1*c4+2*r2*r3*c2*c4+2*r1*r2*c2*c4+2*r1*r2*c1*c4+2*r1*r3*c3*c4+2*r2*r3*c3*c4+2*r1*r3*c2* c3+2*r1*r2*c2*c3+2*r1*r4*c2*c4+2*r1*r4*c3*c4+2*r2*r4*c3*c4+2*r1*r2*c1*c3+4*r1*r3*c2*c4)+(2 .*pi.*w).^4.*(r1*r2*r3*r4*c1*c2*c3*c4)+(j.*2.*pi.*w).*(r1*c1+r2*c2+r3*c3+r4*c4+2*r3*c4+2*r1*c2+ 2*r1*c3+2*r2*c3+2*r2*c4+2*r1*c4)(j.*2.*pi.*w).^3.*(r1*r2*r3*c1*c2*c3+r1*r2*r4*c1*c2*c4+r1*r3*r 4*c1*c3*c4+r3*r2*r4*c3*c2*c4+2*r1*r2*r3*c1*c2*c4+2*r1*r2*r3*c3*c2*c4+2*r1*r2*r3*c1*c3*c4+2 *r1*r4*r3*c3*c2*c4 +2*r1*r2*r4*c3*c2*c4+2*r1*r2*r4*c1*c3*c4))); h=atan(c);n=atan(b);RdeCin=(n-h).*180./pi+90;plot(w,RdeCin,'k :')% xlabel('{\itf} / GHz','FontSize', 14) ylabel('{\itd}-{\rmphase} / degrees','FontSize', 14) title('Phase difference influenced by component mismatch','FontSize', 14)

A3.5 Source Code for Analysis of Gain Mismatch in the Worst-Case Simulation

A.3.5.1 Source Code for Analysis of Gain Mismatch in the Worst-Case Simulation of 2-stage RF CMOS PPFs global f_1;global f_2;global rt_1;global rt_2;global ct_1;global ct_2;global cm; global pt; f_1=findobj(gcf,'Tag','f_1'); f_1=str2double(get(f_1,'string'));%get the value from GUI input f_2=findobj(gcf,'Tag','f_2'); f_2=str2double(get(f_2,'string')); rt_1=findobj(gcf,'Tag','rt_1'); rt_1=str2double(get(rt_1,'string')); rt_2=findobj(gcf,'Tag','rt_2'); rt_2=str2double(get(rt_2,'string')); ct_1=findobj(gcf,'Tag','ct_1'); ct_1=str2double(get(ct_1,'string')); ct_2=findobj(gcf,'Tag','ct_2'); ct_2=str2double(get(ct_2,'string')); cm=findobj(gcf,'Tag','cm'); cm=str2double(get(cm,'string')); if isempty(cm), cm=0.01;else cm=cm; end if isempty(f_1), f_1=1.44e9; else f_1=f_1; end if isempty(f_2), f_2=3.47e9; else f_2=f_2; end

212

Appendix 3 Source Code of PPFANA

if isempty(rt_1), rt_1=223.5; else rt_1=rt_1; end if isempty(rt_2), rt_2=265.6; else rt_2=rt_2; end if isempty(ct_1), ct_1=205.2; else ct_1=ct_1; end if isempty(ct_2), ct_2=416.7; else ct_2=ct_2; end h = waitbar(0,'Simulation is processing, please wait'); for x=1:100, waitbar(x/100,h), end close(h) rand('seed',0); % Crossover Operators xFns = 'simpleXover'; xOpts = [.4]; % Mutation Operators mFns = 'binaryMutation'; mOpts = [0.005]; % Termination Operators termFns = 'maxGenTerm'; termOps = [100]; % 200 Generations % Selection Function electFn = 'roulette'; selectOps = []; % Evaluation Function evalFn = 'ppfana2stage'; evalOps = []; %type gaMichEval3stage; % Bounds on the variables b_1=f_1; b_2=f_2; bounds = [b_1 b_2]; % GA Options [epsilon float/binar display] gaOpts=[1e-6 0 1]; % Generate an intialize population of size 20 startPop = initializega(20,bounds,'ppfana2stage',[],[1e-6 0]); % Lets run the GA [x endPop bestPop trace]=ga(bounds,evalFn,evalOps,startPop,gaOpts, termFns,termOps,selectFn,selectOps,xFns,xOpts,mFns,mOpts); % x is the best solution found %x; % endPop is the ending population %endPop; % trace is a trace of the best value and average value of generations %trace; % Lets increase the population size by running the defaults rand('seed',0); termOps=[100]; [x endPop bestPop trace]=ga(bounds,evalFn,evalOps,[],gaOpts,termFns,termOps, selectFn,selectOps); % x is the best solution found x; fmax=x; f=f_1+(f_2-f_1)./2; ptt=fmax./f; pt_two=1-sqrt(1./ptt); figure w=f_1.*(1-0.3):f_1./1e3:f_2.*(1+0.3); c2_2=ct_2.*1e-15+ct_2.*1e-5.*pt_two; c2_1=ct_1.*1e-15+ct_1.*1e-15.*pt_two; r2_1=rt_1+rt_1.*pt_two; r2_2=rt_2+rt_2.*pt_two; b=abs(((1+(2.*pi.*w).^2.*r2_1*r2_2*c2_1*c2_2)./ (1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.*w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1 *c2_2))); c2_2=ct_2.*1e-15+ct_2.*1e-15.*(1+cm).*pt_two; c2_1=ct_1.*1e-15+ct_1.*1e-15.*(1+cm).*pt_two; r2_1=rt_1+rt_1.*(1+cm).*pt_two; r2_2=rt_2+rt_2.*(1+cm).*pt_two; c=abs(((j*(2.*pi.*w).*(r2_1*c2_1+r2_2*c2_2))./ (1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.*w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1 *c2_2))); m=20.*log10(b); k=20.*log10(c); wcga=abs(m-k); plot(w,wcga,'b -') xlabel('{\itf} / GHz','FontSize', 14) ylabel('{\itm}-{\itgain} / dB','FontSize', 14) title(' Worst case gain mismatch of 2-stage RF CMOS PPFs','FontSize', 14)

A.3.5.2 Source Code for Analysis of Gain Mismatch in the Worst-Case Simulation of 3-stage RF CMOS PPFs global f_1; global f_2; global rth_1; global rth_2; global rth_3; global cth_1; global cth_2; global cth_3; global cm;

213

Appendix 3 Source Code of PPFANA

f_1=findobj(gcf,'Tag','f_1'); f_1=str2double(get(f_1,'string')); %get the value from GUI input f_2=findobj(gcf,'Tag','f_2'); f_2=str2double(get(f_2,'string')); rth_1=findobj(gcf,'Tag','rth_1'); rth_1=str2double(get(rth_1,'string')); rth_2=findobj(gcf,'Tag','rth_2'); rth_2=str2double(get(rth_2,'string')); rth_3=findobj(gcf,'Tag','rth_3'); rth_3=str2double(get(rth_3,'string')); cth_1=findobj(gcf,'Tag','cth_1'); cth_1=str2double(get(cth_1,'string')); cth_2=findobj(gcf,'Tag','cth_2'); cth_2=str2double(get(cth_2,'string')); cth_3=findobj(gcf,'Tag','cth_3'); cth_3=str2double(get(cth_3,'string')); cm=findobj(gcf,'Tag','cm'); cm=str2double(get(cm,'string')); if isempty(cm), cm=0.01; else cm=cm; end if isempty(f_1), f_1=1.44e9; else f_1=f_1; end if isempty(f_2), f_2=3.47e9; else f_2=f_2; end if isempty(rth_1), rth_1=263.9; else rth_1=rth_1; end if isempty(rth_2), rth_2=293.7; else rth_2=rth_2; end if isempty(rth_3), rth_3=315.2; else rth_3=rth_3; end if isempty(cth_1), cth_1=173.8; else cth_1=cth_1; end if isempty(cth_2), cth_2=221.2; else cth_2=cth_2; end if isempty(cth_3), cth_3=350.7; else cth_3=cth_3; end h = waitbar(0,'Simulation is processing, please wait'); for x=1:100, waitbar(x/100,h), end close(h) rand('seed',0); % Crossover Operators xFns = 'simpleXover'; xOpts = [.4]; % Mutation Operators mFns = 'binaryMutation'; mOpts = [0.005]; % Termination Operators termFns = 'maxGenTerm'; termOps = [100]; % 200 Generations % Selection Function selectFn = 'roulette'; selectOps = []; % Evaluation Function evalFn = 'ppfana3stage'; evalOps = []; %type gaMichEval3stage; % Bounds on the variables % b_1=f_1./(1-2.*pt); % b_2=f_2./(1+2.*pt); b_1=f_1; b_2=f_2; bounds = [b_1 b_2]; % GA Options [epsilon float/binar display] gaOpts=[1e-6 0 1]; % Generate an intialize population of size 20 startPop = initializega(20,bounds,'ppfana3stage',[],[1e-6 0]); % Lets run the GA [x endPop bestPop trace]=ga(bounds,evalFn,evalOps,startPop,gaOpts, termFns,termOps,selectFn,selectOps,xFns,xOpts,mFns,mOpts); % x is the best solution found x;% endPop is the ending population%endPop; % trace is a trace of the best value and average value of generations trace; % Lets increase the population size by running the defaults rand('seed',0); ermOps=[100]; x endPop bestPop trace]=ga(bounds,evalFn,evalOps,[],gaOpts,termFns,termOps, selectFn,selectOps); % x is the best solution found x; max=x; f=f_1+(f_2-f_1)./2;ptt=fmax./f; pt_three=1-sqrt(1./ptt);figure w=f_1.*(1-0.3):f_1./1e3:f_2.*(1+0.3);c3_3=cth_3.*(1+pt_three).*1e-15; c3_2=cth_2.*(1+pt_three).*1e-15;c3_1=cth_1.*(1+pt_three).*1e-15;

214

Appendix 3 Source Code of PPFANA

r3_1=rth_1.*(1+pt_three);r3_2=rth_2.*(1+pt_three);r3_3=rth_3.*(1+pt_three); c=abs((1+(2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2))./ (1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); c3_3=cth_3.*(1+pt_three).*(1+cm).*1e-15;c3_2=cth_2.*(1+pt_three).*(1+cm).*1e-15; c3_1=cth_1.*(1+pt_three).*(1+cm).*1e-15;r3_1=rth_1.*(1+pt_three).*(1+cm); r3_2=rth_2.*(1+pt_three).*(1+cm);r3_3=rth_3.*(1+pt_three).*(1+cm); b=abs((- j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3)+(j.*2.*pi.*w).^3.*r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3 _3)./(1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); m=20.*log10(c); k=20.*log10(b); wcga3=abs(m-k); plot(w,wcga3,'r-') xlabel('{\itf} / GHz','FontSize', 14) ylabel('{\itm}-{\itgain} / dB','FontSize', 14) title(' Worst case gain mismatch of 3-stage RF CMOS PPFs','FontSize', 14)

A.3.5.3 Source Code for Analysis of Gain Mismatch in the Worst-Case Simulation of 4-stage RF CMOS PPFs global f_1;global f_4;global rf_1;global rf_2;global rf_3;global rf_4; global cf_1;global cf_2;global cf_3;global cf_4;global cm; f_1=findobj(gcf,'Tag','f_1'); f_1=str2double(get(f_1,'string')); %get the value from GUI input f_4=findobj(gcf,'Tag','f_4'); f_4=str2double(get(f_4,'string')); rf_1=findobj(gcf,'Tag','rf_1'); rf_1=str2double(get(rf_1,'string')); rf_2=findobj(gcf,'Tag','rf_2'); rf_2=str2double(get(rf_2,'string')); rf_3=findobj(gcf,'Tag','rf_3'); rf_3=str2double(get(rf_3,'string')); rf_4=findobj(gcf,'Tag','rf_4'); rf_4=str2double(get(rf_4,'string')); cf_1=findobj(gcf,'Tag','cf_1'); cf_1=str2double(get(cf_1,'string')); cf_2=findobj(gcf,'Tag','cf_2'); cf_2=str2double(get(cf_2,'string')); cf_3=findobj(gcf,'Tag','cf_3'); cf_3=str2double(get(cf_3,'string')); cf_4=findobj(gcf,'Tag','cf_4'); cf_4=str2double(get(cf_4,'string')); cm=findobj(gcf,'Tag','cm'); cm=str2double(get(cm,'string')); if isempty(cm), cm=0.01; else cm=cm; end if isempty(f_1), f_1=1.44e9; else f_1=f_1; end if isempty(f_4), f_4=3.47e9; else f_4=f_4; end if isempty(rf_1), rf_1=289.9; else rf_1=rf_1; end

215

Appendix 3 Source Code of PPFANA

if isempty(rf_2), rf_2=329; else rf_2=rf_2; end if isempty(rf_3), rf_3=377.4; else rf_3=rf_3; end if isempty(rf_4), rf_4=390; else rf_4=rf_4; end if isempty(cf_1), cf_1=158.2; else cf_1=cf_1; end if isempty(cf_2), cf_2=186.9; else cf_2=cf_2; end if isempty(cf_3), cf_3=218.5; else cf_3=cf_3; end if isempty(cf_4), cf_4=283.4; else cf_4=cf_4; end h = waitbar(0,'Simulation is processing, please wait'); for x=1:100, waitbar(x/100,h), end close(h) rand('seed',0); % Crossover Operators xFns = 'simpleXover'; xOpts = [.4]; % Mutation Operators mFns = 'binaryMutation'; mOpts = [0.005]; % Termination Operators termFns = 'maxGenTerm'; termOps = [100]; % 200 Generations % Selection Function selectFn = 'roulette'; selectOps = []; % Evaluation Function evalFn = 'ppfana4stage'; evalOps = []; %type gaMichEval3stage; % Bounds on the variables % b_1=f_1./(1-2.*pt); % b_2=f_2./(1+2.*pt); b_1=f_1; b_2=f_4; bounds = [b_1 b_2]; % GA Options [epsilon float/binar display] gaOpts=[1e-6 0 1]; % Generate an intialize population of size 20 startPop = initializega(20,bounds,'ppfana4stage',[],[1e-6 0]); % Lets run the GA [x endPop bestPop trace]=ga(bounds,evalFn,evalOps,startPop,gaOpts, termFns,termOps,selectFn,selectOps,xFns,xOpts,mFns,mOpts); % x is the best solution found %x; % endPop is the ending population %endPop; % trace is a trace of the best value and average value of generations %trace; % Lets increase the population size by running the defaults rand('seed',0); termOps=[100]; [x endPop bestPop trace]=ga(bounds,evalFn,evalOps,[],gaOpts,termFns,termOps, selectFn,selectOps); % x is the best solution found x; fmax=x; f=f_1+(f_4-f_1)./2; ptt=fmax./f; pt_four=1-sqrt(1./ptt); w=f_1.*(1-0.3):f_1./1e3:f_4.*(1+0.3); c1=cf_1.*1e-15; c2=cf_2.*1e-15; c3=cf_3.*1e-15; c4=cf_4.*1e-15; dr_1=pt_four.*rf_1; dr_2=pt_four.*rf_2; dr_3=pt_four.*rf_3; dr_4=pt_four.*rf_4; dc_1=pt_four.*c1; dc_2=pt_four.*c2; dc_3=pt_four.*c3; dc_4=pt_four.*c4; dr_11=cm*rf_1; dr_22=cm*rf_2; dr_33=cm*rf_3; dr_44=cm*rf_4; dc_11=cm*c1; dc_22=cm*c2; dc_33=cm*c3; dc_44=cm*c4; r1=rf_1+dr_1+dr_11; r2=rf_2+dr_2+dr_22; r3=rf_3+dr_3+dr_33; r4=rf_4+dr_4+dr_44; c41=c1+dc_1+dc_11; c42=c2+dc_2+dc_22; c43=c3+dc_3+dc_33; c44=c4+dc_4+dc_44; d=F_amplitudew_in(w,r1,c41,r2,c42,r3,c43,r4,c44); n=20*log10(d); r1=rf_1+dr_1+dr_11; r2=rf_2+dr_2+dr_22; r3=rf_3+dr_3+dr_33; r4=rf_4+dr_4+dr_44; c41=c1+dc_1+dc_11; c42=c2+dc_2+dc_22; c43=c3+dc_3+dc_33; c44=c4+dc_4+dc_44; b=F_amplitudew_qu(w,r1,c41,r2,c42,r3,c43,r4,c44); m=20*log10(b); gmis=abs(m-n); figure plot(w,gmis,'m-') xlabel('{\itf} / GHz','FontSize', 14) ylabel('{\itm}-{\itgain} / dB','FontSize', 14) title(' Worst case gain mismatch of 4-stage RF CMOS PPFs','FontSize', 14)

216

Appendix 3 Source Code of PPFANA

A3.6 Source Code for Analysis of Phase Mismatch in the Worst-Case Simulation

A.3.6.1 Source Code for Analysis of Phase Mismatch in the Worst-Case simulation of 2-stage RF CMOS PPFs global f_1; global f_2; global rt_1; global rt_2; global ct_1; global ct_2;global cm; global pt; f_1=findobj(gcf,'Tag','f_1'); f_1=str2double(get(f_1,'string')); %get the value from GUI input f_2=findobj(gcf,'Tag','f_2'); f_2=str2double(get(f_2,'string')); rt_1=findobj(gcf,'Tag','rt_1'); rt_1=str2double(get(rt_1,'string')); rt_2=findobj(gcf,'Tag','rt_2'); rt_2=str2double(get(rt_2,'string')); ct_1=findobj(gcf,'Tag','ct_1'); ct_1=str2double(get(ct_1,'string')); ct_2=findobj(gcf,'Tag','ct_2'); ct_2=str2double(get(ct_2,'string')); cm=findobj(gcf,'Tag','cm'); cm=str2double(get(cm,'string')); if isempty(cm), cm=0.01; else cm=cm; end if isempty(f_1), f_1=1.44e9; else f_1=f_1; end if isempty(f_2), f_2=3.47e9; else f_2=f_2; end if isempty(rt_1), rt_1=223.5; else rt_1=rt_1; end if isempty(rt_2), rt_2=265.6; else rt_2=rt_2; end if isempty(ct_1), ct_1=205.2; else ct_1=ct_1; end if isempty(ct_2), ct_2=416.7; else ct_2=ct_2; end h = waitbar(0,'Simulation is processing, please wait'); for x=1:100, waitbar(x/100,h), end close(h) rand('seed',0); % Crossover Operators xFns = 'simpleXover'; xOpts = [.4]; % Mutation Operators mFns = 'binaryMutation'; mOpts = [0.005]; % Termination Operators termFns = 'maxGenTerm'; termOps = [100]; % 200 Generations % Selection Function selectFn = 'roulette'; selectOps = []; % Evaluation Function evalFn = 'ppfana2stage'; evalOps = []; %type gaMichEval3stage; % Bounds on the variables b_1=f_1; b_2=f_2; bounds = [b_1 b_2]; % GA Options [epsilon float/binar display] gaOpts=[1e-6 0 1]; % Generate an intialize population of size 20 startPop = initializega(20,bounds,'ppfana2stage',[],[1e-6 0]); % Lets run the GA [x endPop bestPop trace]=ga(bounds,evalFn,evalOps,startPop,gaOpts, termFns,termOps,selectFn,selectOps,xFns,xOpts,mFns,mOpts); % x is the best solution found %x; % endPop is the ending population %endPop; % trace is a trace of the best value and average value of generations %trace; % Lets increase the population size by running the defaults

217

Appendix 3 Source Code of PPFANA

rand('seed',0); termOps=[100]; [x endPop bestPop trace]=ga(bounds,evalFn,evalOps,[],gaOpts,termFns,termOps, selectFn,selectOps); % x is the best solution found x; fmax=x; f=f_1+(f_2-f_1)./2; ptt=fmax./f; pt_two=1-sqrt(1./ptt); figure w=f_1.*(1-0.3):f_1./1e3:f_2.*(1+0.3); c2_2=ct_2.*1e-15+ct_2.*1e-15.*pt_two;c2_1=ct_1.*1e-15+ct_1.*1e-15.*pt_two; r2_1=rt_1+rt_1.*pt_two;r2_2=rt_2+rt_2.*pt_two; b=abs(((1+(2.*pi.*w).^2.*r2_1*r2_2*c2_1*c2_2)./ (1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.*w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1 *c2_2))); c2_2=ct_2.*1e-15+ct_2.*1e-15.*(1+cm).*pt_two; c2_1=ct_1.*1e-15+ct_1.*1e-15.*(1+cm).*pt_two; r2_1=rt_1+rt_1.*(1+cm).*pt_two; r2_2=rt_2+rt_2.*(1+cm).*pt_two; c=abs(((j*(2.*pi.*w).*(r2_1*c2_1+r2_2*c2_2))./ (1+j*(2.*pi.*w)*(r2_1*c2_1+r2_2*c2_2)+2*j*(2.*pi.*w)*r2_1*c2_2+(j*(2.*pi.*w)).^2*r2_1*r2_2*c2_1 *c2_2))); m=atan(b); k=atan(c); wcga=(m-k).*180./pi+90; plot(w,wcga,'r -') xlabel('{\itf} / GHz','FontSize', 14) ylabel('{\itm}-{\itgain} / dB','FontSize', 14) title(' Worst case phase mismatch of 2-stage RF CMOS PPFs','FontSize', 14)

A.3.6.2 Source Code for Analysis of Phase Mismatch in the Worst- Case simulation of 2-stage RF CMOS PPFs global f_1;global f_2;global rth_1;global rth_2;global rth_3; global cth_1;global cth_2;global cth_3;global cm; f_1=findobj(gcf,'Tag','f_1'); f_1=str2double(get(f_1,'string'));%get the value from GUI input f_2=findobj(gcf,'Tag','f_2'); f_2=str2double(get(f_2,'string')); rth_1=findobj(gcf,'Tag','rth_1'); rth_1=str2double(get(rth_1,'string')); rth_2=findobj(gcf,'Tag','rth_2'); rth_2=str2double(get(rth_2,'string')); rth_3=findobj(gcf,'Tag','rth_3'); rth_3=str2double(get(rth_3,'string')); cth_1=findobj(gcf,'Tag','cth_1'); cth_1=str2double(get(cth_1,'string')); cth_2=findobj(gcf,'Tag','cth_2'); cth_2=str2double(get(cth_2,'string')); cth_3=findobj(gcf,'Tag','cth_3'); cth_3=str2double(get(cth_3,'string')); cm=findobj(gcf,'Tag','cm'); cm=str2double(get(cm,'string')); if isempty(cm), cm=0.01;else cm=cm;end if isempty(f_1), f_1=1.44e9;else f_1=f_1;end if isempty(f_2), f_2=3.47e9;else f_2=f_2;end if isempty(rth_1), rth_1=263.9;else rth_1=rth_1;end if isempty(rth_2), rth_2=293.7;else rth_2=rth_2;end if isempty(rth_3), rth_3=315.2;else rth_3=rth_3;end if isempty(cth_1), cth_1=173.8;else cth_1=cth_1;end

218

Appendix 3 Source Code of PPFANA

if isempty(cth_2), cth_2=221.2;else cth_2=cth_2;end if isempty(cth_3), cth_3=350.7;else cth_3=cth_3;end h = waitbar(0,'Simulation is processing, please wait'); for x=1:100, waitbar(x/100,h), end close(h) rand('seed',0); % Crossover Operators xFns = 'simpleXover'; xOpts = [.4]; % Mutation Operators mFns = 'binaryMutation'; mOpts = [0.005]; % Termination Operators termFns = 'maxGenTerm'; termOps = [100]; % 200 Generations % Selection Function selectFn = 'roulette'; selectOps = []; % Evaluation Function evalFn = 'ppfana3stage'; evalOps = []; %type gaMichEval3stage; % Bounds on the variables % b_1=f_1./(1-2.*pt); % b_2=f_2./(1+2.*pt); b_1=f_1; b_2=f_2; bounds = [b_1 b_2]; % GA Options [epsilon float/binar display] gaOpts=[1e-6 0 1]; % Generate an intialize population of size 20 startPop = initializega(20,bounds,'ppfana3stage',[],[1e-6 0]); % Lets run the GA [x endPop bestPop trace]=ga(bounds,evalFn,evalOps,startPop,gaOpts, termFns,termOps,selectFn,selectOps,xFns,xOpts,mFns,mOpts); % x is the best solution found%x; % endPop is the ending population %endPop; % trace is a trace of the best value and average value of generations %trace; % Lets increase the population size by running the defaults rand('seed',0); termOps=[100]; [x endPop bestPop trace]=ga(bounds,evalFn,evalOps,[],gaOpts,termFns,termOps, selectFn,selectOps); % x is the best solution found x; fmax=x; f=f_1+(f_2-f_1)./2; ptt=fmax./f; pt_three=1-sqrt(1./ptt); figure w=f_1.*(1-0.3):f_1./1e3:f_2.*(1+0.3); c3_3=cth_3.*(1+pt_three).*1e-15; c3_2=cth_2.*(1+pt_three).*1e-15; c3_1=cth_1.*(1+pt_three).*1e-15; r3_1=rth_1.*(1+pt_three); r3_2=rth_2.*(1+pt_three); r3_3=rth_3.*(1+pt_three); c=abs((1+(2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2))./ (1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3) +2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); c3_3=cth_3.*(1+pt_three).*(1+cm).*1e-15; c3_2=cth_2.*(1+pt_three).*(1+cm).*1e-15; c3_1=cth_1.*(1+pt_three).*(1+cm).*1e-15;r3_1=rth_1.*(1+pt_three).*(1+cm); r3_2=rth_2.*(1+pt_three).*(1+cm);r3_3=rth_3.*(1+pt_three).*(1+cm); b=abs((- j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3)+(j.*2.*pi.*w).^3.*r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3 _3)./(1+j.*2.*pi.*w.*(r3_1.*c3_1+r3_2.*c3_2+r3_3.*c3_3)

219

Appendix 3 Source Code of PPFANA

+2.*j.*2.*pi.*w.*(r3_1.*c3_2+r3_1.*c3_3+r3_2.*c3_3)- (2.*pi.*w).^2.*(r3_1.*r3_2.*c3_1.*c3_2+r3_1.*r3_3.*c3_1.*c3_3+r3_3.*r3_2.*c3_3.*c3_2 +2.*r3_1.*r3_3.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_3.*c3_2+2.*r3_1.*r3_2.*c3_1.*c3_3)+(j.*2.*pi.*w).^3. *r3_1.*r3_2.*r3_3.*c3_1.*c3_2.*c3_3)); m=atan(c); k=atan(b); wcph3=(m-k).*180./pi+90; plot(w,wcph3,'b-') xlabel('{\itf} / GHz','FontSize', 14) ylabel('{\itm}-{\itgain} / dB','FontSize', 14) title(' Worst case phase mismatch of 3-stage RF CMOS PPFs','FontSize', 14)

A.3.6.3 Source Code for Analysis of Phase Mismatch in the Worst-Case simulation of 4-stage RF CMOS PPFs global f_1;global f_4;global rf_1;global rf_2;global rf_3; global rf_4; global cf_1;global cf_2;global cf_3;global cf_4;global cm; f_1=findobj(gcf,'Tag','f_1'); f_1=str2double(get(f_1,'string')); %get the value from GUI input f_4=findobj(gcf,'Tag','f_4'); f_4=str2double(get(f_4,'string')); rf_1=findobj(gcf,'Tag','rf_1'); rf_1=str2double(get(rf_1,'string')); rf_2=findobj(gcf,'Tag','rf_2'); rf_2=str2double(get(rf_2,'string')); rf_3=findobj(gcf,'Tag','rf_3'); rf_3=str2double(get(rf_3,'string')); rf_4=findobj(gcf,'Tag','rf_4'); rf_4=str2double(get(rf_4,'string')); cf_1=findobj(gcf,'Tag','cf_1'); cf_1=str2double(get(cf_1,'string')); cf_2=findobj(gcf,'Tag','cf_2'); cf_2=str2double(get(cf_2,'string')); cf_3=findobj(gcf,'Tag','cf_3'); cf_3=str2double(get(cf_3,'string')); cf_4=findobj(gcf,'Tag','cf_4'); cf_4=str2double(get(cf_4,'string')); cm=findobj(gcf,'Tag','cm'); cm=str2double(get(cm,'string')); if isempty(cm), cm=0.01; else cm=cm; end if isempty(f_1), f_1=1.44e9;else f_1=f_1;end if isempty(f_4), f_4=3.47e9;else f_4=f_4;end if isempty(rf_1), rf_1=289.9;else rf_1=rf_1;end if isempty(rf_2), rf_2=329;else rf_2=rf_2;end if isempty(rf_3), rf_3=377.4;else rf_3=rf_3;end if isempty(rf_4), rf_4=390; rf_4=rf_4;end if isempty(cf_1), cf_1=158.2;else cf_1=cf_1;end if isempty(cf_2), cf_2=186.9;else cf_2=cf_2;end if isempty(cf_3), cf_3=218.5;else cf_3=cf_3;end if isempty(cf_4), cf_4=283.4;else cf_4=cf_4;end h = waitbar(0,'Simulation is processing, please wait'); for x=1:100, waitbar(x/100,h), end close(h) rand('seed',0); % Crossover Operators xFns = 'simpleXover';xOpts = [.4]; % Mutation Operators mFns = 'binaryMutation'; mOpts = [0.005]; % Termination Operators termFns = 'maxGenTerm'; termOps = [100]; % 200 Generations

220

Appendix 3 Source Code of PPFANA

% Selection Function selectFn = 'roulette'; selectOps = []; % Evaluation Function evalFn = 'ppfana4stage'; evalOps = []; %type gaMichEval3stage; % Bounds on the variables % b_1=f_1./(1-2.*pt); % b_2=f_2./(1+2.*pt); b_1=f_1; b_2=f_4; bounds = [b_1 b_2]; % GA Options [epsilon float/binar display] gaOpts=[1e-6 0 1]; % Generate an intialize population of size 20 startPop = initializega(20,bounds,'ppfana4stage',[],[1e-6 0]); % Lets run the GA [x endPop bestPop trace]=ga(bounds,evalFn,evalOps,startPop,gaOpts, termFns,termOps,selectFn,selectOps,xFns,xOpts,mFns,mOpts); % x is the best solution found %x; % endPop is the ending population %endPop; % trace is a trace of the best value and average value of generations %trace; % Lets increase the population size by running the defaults rand('seed',0); termOps=[100]; [x endPop bestPop trace]=ga(bounds,evalFn,evalOps,[],gaOpts,termFns,termOps, selectFn,selectOps); % x is the best solution found x; fmax=x; f=f_1+(f_4-f_1)./2; ptt=fmax./f; pt_four=1-sqrt(1./ptt); figure w=f_1.*(1-0.3):f_1./1e3:f_4.*(1+0.3); c1=cf_1.*1e-15; c2=cf_2.*1e-15; c3=cf_3.*1e-15; c4=cf_4.*1e-15; dr_1=pt_four.*rf_1; dr_2=pt_four.*rf_2; dr_3=pt_four.*rf_3; dr_4=pt_four.*rf_4; dc_1=pt_four.*c1; dc_2=pt_four.*c2; dc_3=pt_four.*c3; dc_4=pt_four.*c4; dr_11=cm*rf_1; dr_22=cm*rf_2; dr_33=cm*rf_3; dr_44=cm*rf_4; dc_11=cm*c1; dc_22=cm*c2; dc_33=cm*c3; dc_44=cm*c4; r1=rf_1+dr_1+dr_11; r2=rf_2+dr_2+dr_22; r3=rf_3+dr_3+dr_33; r4=rf_4+dr_4+dr_44; c41=c1+dc_1+dc_11; c42=c2+dc_2+dc_22; c43=c3+dc_3+dc_33; c44=c4+dc_4+dc_44; a=F_phasew_in(w,r1,c41,r2,c42,r3,c43,r4,c44); r1=rf_1+dr_1+dr_11; r2=rf_2+dr_2+dr_22; r3=rf_3+dr_3+dr_33; r4=rf_4+dr_4+dr_44; c41=c1+dc_1+dc_11; c42=c2+dc_2+dc_22; c43=c3+dc_3+dc_33; c44=c4+dc_4+dc_44; d=F_phasew_qu(w,r1,c41,r2,c42,r3,c43,r4,c44); wcph4=d-a+90; plot(w,wcph4,'r-') xlabel('{\itf} / GHz','FontSize', 14) ylabel('{\itm}-{\itgain} / dB','FontSize', 14) title(' Worst case phase mismatch of 4-stage RF CMOS PPFs','FontSize', 14)

221

Appendix 4 Source Code of PPFOPTIMA

Appendix 4

Source Code of PPFOPTIMA

A4.1 Source Code for an Implementation of Genetic Algorithm function [x,endPop,bPop,traceInfo] = ga(bounds,evalFN,evalOps,startPop,opts,... termFN, termOps,selectFN,selectOps,xOverFNs,xOverOps,mutFNs,mutOps) % GA runs a genetic algorithm % Output Arguments: % x - the best solution found during the course of the run % endPop - the final population % Input Arguments: % bounds - a matrix of upper and lower ounds on the variables % evalFN - the fitness function % evalOps - options to pass to the evaluation function ([NULL]) % startPop - a matrix of solutions that can be initialized % from initialize.m % termFN - name of the .m termination function (['maxGenTerm']) % termOps - options string to be passed to the termination function % selectFN - name of the .m selection function % selectOpts - roulette selection % xOverFNS – simpleXover % xOverOps - A matrix of options to pass to Xover.m files with the % first column being the number of that xOver to perform % similiarly for mutation % mutFNs – binaryMutation % mutOps - A matrix of options to pass to Xover.m files with the % first column being the number of that xOver to perform % similiarly for mutation n=nargin; if n<2 n==6 n==10 n==12 disp('Insufficient arguements') end if n<3 %Default evalation opts. evalOps=[]; end if n<5 opts = [1e-6 1 0]; end if isempty(opts) opts = [1e-6 1 0]; end if any(evalFN<48) %Not using a .m file e1str=['x=b2f(endPop(j,:),bounds,bits); endPop(j,xZomeLength)=',... evalFN ';']; else %Are using a .m file e1str=['x=b2f(endPop(j,:),bounds,bits);[x v]=' evalFN ... '(x,[gen evalOps]); ndPop(j,:)=[f2b(x,bounds,bits) v];']; end if n<6 %Default termination information termOps=[100]; termFN='maxGenTerm'; end if n<12 %Default muatation information mutFNs=['binaryMutation']; mutOps=[0.05]; end if n<10 %Default crossover information xOverFNs=['simpleXover']; xOverOps=[0.6]; end if n<9 %Default select opts only i.e. roullete wheel. selectFN=['roulette']; selectOps=[]; end if n<6 %Default termination information termOps=[100]; termFN='maxGenTerm'; end if n<4 %No starting population passed given startPop=[]; end if isempty(startPop) %Generate a population at random %startPop=zeros(80,size(bounds,1)+1); startPop=initializega(80,bounds,evalFN,evalOps,opts(1:2)); end if opts(2)==0 %binary bits=calcbits(bounds,opts(1)); end xOverFNs=parse(xOverFNs); mutFNs=parse(mutFNs); xZomeLength = size(startPop,2); %Length of the xzome=numVars+fitness numVar = xZomeLength-1; %Number of variables popSize = size(startPop,1); %Number of individuals in the pop endPop = zeros(popSize,xZomeLength); %A secondary population atrix c1 = zeros(1,xZomeLength); %An individual c2 = zeros(1,xZomeLength); %An individual numXOvers = size(xOverFNs,1); %Number of Crossover operators numMuts = size(mutFNs,1); %Number of Mutation operators epsilon = opts(1); %Threshold for two fittness to differ oval =

222

Appendix 4 Source Code of PPFOPTIMA

max(startPop(:,xZomeLength)); %Best value in start pop FoundIn = 1; %Number of times best has changed done = 0; %Done with simulated evolution gen = 1; %Current Generation Number collectTrace = (nargout>3); %Should we collect info every gen floatGA = opts(2)==1; %Probabilistic application of ops display = opts(3); %Display progress while(~done) %Elitist Model [bval,bindx] = max(startPop(:,xZomeLength)); %Best of current pop best = startPop(bindx,:); if ( (abs(bval - oval)>epsilon) (gen==1)) %If we have a new best sol if display fprintf(1,'\n%d %f\n',gen,bval); %Update the display end bPop(bFoundIn,:)=[gen b2f(startPop(bindx,1:numVar),bounds,bits)... startPop(bindx,xZomeLength)]; bFoundIn=bFoundIn+1; %Update number of changes oval=bval; %Update the best val else if display fprintf(1,'%d ',gen); %Otherwise just update num gen end end endPop = feval(selectFN,startPop,[gen selectOps]); %Select for i=1:numMuts, for j=1:mutOps(i,1), a = round(rand*(popSize-1)+1); c1 = feval(deblank(mutFNs(i,:)),endPop(a,:),bounds,[gen mutOps(i,:)]); if c1(1:numVar)==endPop(a,(1:numVar)) c1(xZomeLength)=endPop(a,xZomeLength); else %[c1(xZomeLength) c1] = feval(evalFN,c1,[gen evalOps]); eval(e1str); end endPop(a,:)=c1; end end else %We are running a probabilistic model of genetic operators for i=1:numXOvers, xN=deblank(xOverFNs(i,:)); %Get the name of crossover function cp=find(rand(popSize,1)

A4.2 Source Code of Monte Carlo Simulation

A4.2.1 Source Code for Monte Carlo Simulation of 2-stage RF CMOS PPFs

% load optimization results load twostageppfopt.mat r_1 r_2 c_1 c_2; global f; w=f; global r_1; global r_2; global c_1; global c_2; global pt_r; global pt_c; global cm; global m2_mu; % visiable waitbar h = waitbar(0,'Simulation is processing, please ait...'); for x=1:100, % computation here % waitbar(x/100,h) end close(h) % get the value of resistor process tolerance from input pt_r=findobj(gcf,'Tag','pt_r'); pt_r=str2double(get(pt_r,'string')); if isempty(pt_r), pt_r=0.16; else pt_r= pt_r; end

223

Appendix 4 Source Code of PPFOPTIMA

% get the value of capacitor process tolerance from input pt_c=findobj(gcf,'Tag','pt_c'); pt_c=str2double(get(pt_c,'string')); if isempty(pt_c), pt_c=0.21; else pt_c=pt_c; end % get the value of maximum component mismatch from input cm=findobj(gcf,'Tag','cm'); cm=str2double(get(cm,'string')); if isempty(cm), cm=0.01; else cm=cm; end % get the number of runs of MC from input m2_mu=findobj(gcf,'Tag','m2_mu'); m2_mu=str2double(get(m2_mu,'string')); if isempty(m2_mu), m2_mu=200; else m2_mu=m2_mu; end % caculate maximum R & C variant dc_1=c_1.*pt_c.*1e-15; dc_2=c_2.*pt_c.*1e-15; dr_1=r_1.*pt_r; dr_2=r_2.*pt_r; % generate random numbers with truncated Gaussian distribution amm_2=0; pmm_2=0; for i=1:m2_mu; i=i+1; N=2000; % size of random numbers M=1; mu=0; % mean value sig=0.3; % standard deviation xlo=-1; % low truncation point xhi=1; % high truncation point s=truncnormrnd(N,M,mu,sig,xlo,xhi); N=2000; M=1; mu=0; sig=0.3; xlo=-1; xhi=1; t=truncnormrnd(N,M,mu,sig,xlo,xhi); % MC simulations of gain mismatch and phase difference r2_1=r_1+dr_1.*s; r2_2=r_2+dr_2.*s; c2_1=c_1.*1e-15+dc_1.*s; c2_2=c_2.*1e-15+dc_2.*s; d=T_amplitudept_in(w,r2_1,c2_1,r2_2,c2_2); m=T_phasept_in(w,r2_1,c2_1,r2_2,c2_2); r2_1=(r_1+dr_1.*s).*(1+cm.*t); r2_2=(r_2+dr_2.*s).*(1+cm.*t); c2_1=(c_1.*1e-15+dc_1.*s).*(1+cm.*t); c2_2=(c_2.*1e-15+dc_2.*s).*(1+cm.*t); b=T_amplitudept_qu(w,r2_1,c2_1,r2_2,c2_2); n=T_phasept_qu(w,r2_1,c2_1,r2_2,c2_2); amm_1=abs(20.*log10(b)-20.*log10(d)); t1=sort(amm_1); amm_2=amm_2+t1; pmm_1=n-m+90; t2=sort(pmm_1); pmm_2=pmm_2+t2; end amm=amm_2./m2_mu; pmm=pmm_2./m2_mu; % caculate standard deviation kerse_1=std(amm) kerse_1=round(kerse_1.*1000)./1000; st1=findobj(gcf,'Tag','kerse_1'); set(st1,'String',[num2str(kerse_1)]) kerse_2=std(pmm-90) kerse_2=round(kerse_2.*1000)./1000; stm=findobj(gcf,'Tag','kerse_2'); set(stm,'String',[num2str(kerse_2)]) figure subplot(2,1,1); % plot gain mismatch histogram of gain mismatch hist(amm) xlabel('{\itm}-{\rmgain} / dB','FontSize', 14) title('Monte Carlo Simulation for 2-stage RF CMOS PPF','FontSize', 14) ylabel('Number of Samples','FontSize', 14) subplot(2,1,2); % plot phase difference histogram of gain mismatch hist(pmm) xlabel('{\itd}-{\rmphase} / degree','FontSize', 14) ylabel('Number of Samples','FontSize', 14)

A4.2.2 Source Code for Monte Carlo Simulation of 3-stage RF CMOS PPFs load threestageppfopt.mat r1 r2 r3 c1 c2 c3; global f; w=f; global r1; global r2; global r3; global c1;global c2; global c3; global pt_r; global pt_c; global cm; global m3_mu; h = waitbar(0,'Simulation is processing, please wait...'); for x=1:100, % computation here % waitbar(x/100,h) end close(h) pt_r=findobj(gcf,'Tag','pt_r'); pt_r=str2double(get(pt_r,'string')); if isempty(pt_r), pt_r=0.16; else pt_r= pt_r; end dr_1=r1.*pt_r; dr_2=r2.*pt_r; dr_3=r3.*pt_r; pt_c=findobj(gcf,'Tag','pt_c');

224

Appendix 4 Source Code of PPFOPTIMA

pt_c=str2double(get(pt_c,'string')); if isempty(pt_c), pt_c=0.21; else pt_c=pt_c; end dc_1=c1.*pt_c.*1e-15;dc_2=c2.*pt_c.*1e-15; dc_3=c3.*pt_c.*1e-15 cm=findobj(gcf,'Tag','cm'); cm=str2double(get(cm,'string')); if isempty(cm), cm=0.01; else cm=cm; end; m3_mu=findobj(gcf,'Tag','m3_mu'); m3_mu=str2double(get(m3_mu,'string')); if isempty(m3_mu), m3_mu=200; else m3_mu=m3_mu; end amm_2=0; pmm_2=0; for i=1:m3_mu; i=i+1; N=2000; M=1; mu=0; sig=0.3; xlo=-1; xhi=1; s=truncnormrnd(N,M,mu,sig,xlo,xhi); N=2000; M=1; mu=0; sig=0.3; xlo=-1; xhi=1; t=truncnormrnd(N,M,mu,sig,xlo,xhi); r3_1=r1+dr_1.*s; r3_2=r2+dr_2.*s; r3_3=r3+dr_3.*s; c3_1=(c1.*1e-15)+dc_1.*s; c3_2=(c2.*1e-15)+dc_2.*s; c3_3=(c3.*1e-15)+dc_3.*s; d=Th_amplitudept_in(w,r3_1,c3_1,r3_2,c3_2,r3_3,c3_3); m=Th_phasept_in(w,r3_1,c3_1,r3_2,c3_2,r3_3,c3_3); r3_1=(r1+dr_1.*s).*(1+cm.*t); r3_2=(r2+dr_2.*s).*(1+cm.*t); r3_3=(r3+dr_3.*s).*(1+cm.*t); c3_1=((c1.*1e-15)+dc_1.*s).*(1+cm.*t); c3_2=((c2.*1e-15)+dc_2.*s).*(1+cm.*t); c3_3=((c3.*1e-15)+dc_3.*s).*(1+cm.*t); b=Th_amplitudept_qu(w,r3_1,c3_1,r3_2,c3_2,r3_3,c3_3); n=Th_phasept_qu(w,r3_1,c3_1,r3_2,c3_2,r3_3,c3_3); amm_1=abs(20.*log10(d)-20.*log10(b)); t1=sort(amm_1); amm_2=amm_2+t1; pmm_1=(m-n)+90; t2=sort(pmm_1); pmm_2=pmm_2+t2; end amm=amm_2./m3_mu; pmm=pmm_2./m3_mu; figure subplot(2,1,1); hist(amm) xlabel('{\itm}-{\rmgain} / dB','FontSize', 14) title('Monte Carlo Simulation of 3-stage RF CMOS PPF','FontSize', 14) ylabel('Number of Samples','FontSize', 14) subplot(2,1,2); hist(pmm) xlabel('{\itd}-{\rmphase} / degrees','FontSize', 14) ylabel('Number of Samples','FontSize', 14)

A4.2.3 Source Code for Monte Carlo Simulation of 4-stage RF CMOS PPFs load fourstageoptrc.mat; global f; w=f; global r4_1; global r4_2; global r4_3; global r4_4; global c4_1; global c4_2; global c4_3; global c4_4; global pt_r; global pt_c; global cm; global m4_mu; r_1=r4_1; r_2=r4_2; r_3=r4_3; r_4=r4_4; c_1=c4_1*1e-15; c_2=c4_2*1e-15; c_3=c4_3*1e-15; c_4=c4_4*1e-15; h = waitbar(0,'Simulation is processing, please wait...'); for x=1:100, % computation here % waitbar(x/100,h) end close(h) pt_r=findobj(gcf,'Tag','pt_r'); pt_r=str2double(get(pt_r,'string')); if isempty(pt_r), pt_r=0.16; else pt_r= pt_r; end

225

Appendix 4 Source Code of PPFOPTIMA

pt_c=findobj(gcf,'Tag','pt_c'); pt_c=str2double(get(pt_c,'string')); if isempty(pt_c), pt_c=0.21; else pt_c=pt_c; end cm=findobj(gcf,'Tag','cm'); cm=str2double(get(cm,'string')); if isempty(cm), cm=0.01; else cm=cm; end m4_mu=findobj(gcf,'Tag','m4_mu'); m4_mu=str2double(get(m4_mu,'string')); if isempty(m4_mu), m4_mu=200; else m4_mu=m4_mu; end amm_2=0; pmm_2=0; for i=1:m4_mu; i=i+1; N=2000; M=1;mu=0; sig=0.3; xlo=-1; xhi=1; t=truncnormrnd(N,M,mu,sig,xlo,xhi); N=2000; M=1; mu=0; sig=0.3; xlo=-1; xhi=1; s=truncnormrnd(N,M,mu,sig,xlo,xhi); dr4_1=r_1.*pt_r; dr4_2=r_2.*pt_r; dr4_3=r_3.*pt_r; dr4_4=r_4.*pt_r; dc_1=c_1.*pt_c; dc_2=c_2.*pt_c; dc_3=c_3.*pt_c; dc_4=c_4.*pt_c; c1=c_1+dc_1.*t; c2=c_2+dc_2.*t; c3=c_3+dc_3.*t; c4=c_4+dc_4.*t; r4_1=r_1+dr4_1.*t; r4_2=r_2+dr4_2.*t; r4_3=r_3+dr4_3.*t; r4_4=r_4+dr4_4.*t; d=F_amplitudept_in(w,r4_1,c1,r4_2,c2,r4_3,c3,r4_4,c4); m=F_phasept_in(w,r4_1,c1,r4_2,c2,r4_3,c3,r4_4,c4); c1=(c_1+dc_1.*t).*(1+cm.*s); c2=(c_2+dc_2.*t).*(1+cm.*s); c3=(c_3+dc_3.*t).*(1+cm.*s); c4=(c_4+dc_4.*t).*(1+cm.*s); r4_1=(r_1+dr4_1.*t).*(1+cm.*s); r4_2=(r_2+dr4_2.*t).*(1+cm.*s); r4_3=(r_3+dr4_3.*t).*(1+cm.*s); r4_4=(r_4+dr4_4.*t).*(1+cm.*s); b=F_amplitudept_qu(w,r4_1,c1,r4_2,c2,r4_3,c3,r4_4,c4); n=F_phasept_qu(w,r4_1,c1,r4_2,c2,r4_3,c3,r4_4,c4); amm_1=abs(20.*log10(d)-20.*log10(b)); t1=sort(amm_1); amm_2=amm_2+t1; pmm_1=(m-n)+90; t2=sort(pmm_1); pmm_2=pmm_2+t2; end amm=amm_2./m4_mu; pmm=pmm_2./m4_mu; figure subplot(2,1,1); hist(amm) xlabel('{\itm}-{\rmgain} / dB','FontSize', 14) title('Monte Carlo Simulation of 3-stage RF CMOS PPF','FontSize', 14) ylabel('Number of Samples','FontSize', 14) subplot(2,1,2); hist(pmm) xlabel('{\itd}-{\rmphase} / degrees','FontSize', 14) ylabel('Number of Samples','FontSize', 14)

A4.3 Source Code of the Worst-Case Simulation

A4.3.1 Source Code for the Worst-Case Simulation of 2-stage RF CMOS PPFs

% load optimization results load twostageppfopt.mat r_1 r_2 c_1 c_2; global f_1; global f_2;global f; global r_1; global r_2; global c_1; global c_2; global cm; global irrt; % get the value of maximum component mismatch from input cm=findobj(gcf,'Tag','cm'); cm=str2double(get(cm,'string')); if isempty(cm), cm=0.01; else cm=cm; end % visiable waitbar

226

Appendix 4 Source Code of PPFOPTIMA

h = waitbar(0,'Simulation is processing, please wait...'); for x=1:100, % computation here % waitbar(x/100,h), end close(h) % search worst IRR corresponding frequency point with R&C nominal values rand('seed',0); % Crossover Operators xFns = 'simpleXover'; xOpts = [.4]; % Mutation Operators mFns = 'binaryMutation'; mOpts = [0.005]; % Termination Operators termFns = 'maxGenTerm'; termOps = [100]; % 200 Generations % Selection Function selectFn = 'roulette'; selectOps = []; % Evaluation Function evalFn = 'gaMichEval2stage2'; evalOps = []; b_1=f_1; b_2=f_2; bounds = [b_1 b_2]; gaOpts=[1e-6 0 1]; % Generate an intialize population of size 20 startPop = initializega(20,bounds,'gaMichEval2stage2',[],[1e-6 0]); % lets run the GA [x endPop bestPop trace]=ga(bounds,evalFn,evalOps,startPop,gaOpts,... termFns,termOps,selectFn,selectOps,xFns,xOpts,mFns,mOpts); rand('seed',0); termOps=[100]; [x endPop bestPop trace]=ga(bounds,evalFn,evalOps,[],gaOpts,termFns,termOps,... selectFn,selectOps); % x is the best solution found x; fmax=x; w=fmax; % caculate worst case IRR r2_1=r_1; r2_2=r_2; c2_1=c_1*1e-15; c2_2=c_2*1e-15; d=T_amplitude_qu(w,r2_1,c2_1,r2_2,c2_2); k=T_phase_qu(w,r2_1,c2_1,r2_2,c2_2); n_1=(d); p1_1=(k); b=T_amplitude_in(w,r2_1,c2_1,r2_2,c2_2); h=T_phase_in(w,r2_1,c2_1,r2_2,c2_2); p2_1=(h); m_1=(b); a_delta_1=abs(m_1-n_1); p_delta_1=abs((p2_1-p1_1).*pi./180); r2_1=r_1; r2_2=r_2; c2_1=c_1*1e-15; c2_2=c_2*1e-15; d=T_amplitude_in(w,r2_1,c2_1,r2_2,c2_2); k=T_phase_in(w,r2_1,c2_1,r2_2,c2_2); n_2=(d); p1_2=(k); dr_11=cm*r_1; dr_22=cm*r_2; dc_11=cm*c_1*1e-15; dc_22=cm*c_2*1e-15; r2_1=r_1+dr_11; r2_2=r_2+dr_22; c2_1=c_1*1e- 15+dc_11; c2_2=c_2*1e-15+dc_22; b=T_amplitude_in(w,r2_1,c2_1,r2_2,c2_2); h=T_phase_in(w,r2_1,c2_1,r2_2,c2_2); p2_2=(h); m_2=(b); a_delta_2=abs(m_2-n_2); a=sqrt(m_2.^2+n_2.^2); p_delta_2=abs((p2_2-p1_2).*pi./180); a_delta=(a_delta_1+a_delta_2); p_delta=(p_delta_1+p_delta_2); irrt=ImageRR(a_delta,a,p_delta); irrw=round(irrt.*10)./10; hh=findobj(gcf,'Tag','irrw'); set(hh,'String',[num2str(irrw)]) % load IRR of design specification load designspeci.mat irrspec; % compare with worst case IRR if irrw

227

Appendix 4 Source Code of PPFOPTIMA

plot(w,pmis,'m-') xlabel('{\itf} / Hz','FontSize', 14) ylabel('{\itd}-{\rmphase} / degrees','FontSize', 14) title('Phase Difference in 2-Stage RF CMOS PPF','FontSize', 14)

A4.3.2 Source Code for the Worst-Case simulation of 3-stage RF CMOS PPFs load threestageppfopt.mat r1 r2 r3 c1 c2 c3 we; global f_1; global f_2; global f; global r1; global r2; global r3; global c1; global c2; global c3; global cm; global irrth; cm=findobj(gcf,'Tag','cm'); cm=str2double(get(cm,'string')); if isempty(cm), cm=0.01; else cm=cm; end h = waitbar(0,'Simulation is processing, please wait...'); for x=1:100, % computation here % waitbar(x/100,h) end close(h) rand('seed',0); % Crossover Operators xFns = 'simpleXover'; xOpts = [.4]; % Mutation Operators mFns = 'binaryMutation'; mOpts = [0.005]; % Termination Operators termFns = 'maxGenTerm'; termOps = [100]; % 200 Generations % Selection Function selectFn = 'roulette'; selectOps = []; % Evaluation Function evalFn = 'gaMichEval3stage2'; evalOps = []; bounds = [f_1 f_2]; % GA Options [epsilon float/binar display] gaOpts=[1e-6 0 1]; % Generate an intialize population of size 20 startPop = initializega(20,bounds,'gaMichEval3stage2',[],[1e-6 0]); % Lets run the GA [x endPop bestPop trace]=ga(bounds,evalFn,evalOps,startPop,gaOpts,... termFns,termOps,selectFn,selectOps,xFns,xOpts,mFns,mOpts); % x is the best solution found %x; % endPop is the ending population %endPop; % trace is a trace of the best value and average value of generations %trace; % Lets increase the population size by running the defaults rand('seed',0); termOps=[100]; [x endPop bestPop trace]=ga(bounds,evalFn,evalOps,[],gaOpts,termFns,termOps,... selectFn,selectOps); % x is the best solution found x; fmax=x; w=fmax; r3_1=r1; r3_2=r2; r3_3=r3; c3_1=c1*1e-15; c3_2=c2*1e-15; c3_3=c3*1e-15; d=Th_amplitude_in(w,r3_1,c3_1,r3_2,c3_2,r3_3,c3_3); k=Th_phase_in(w,r3_1,c3_1,r3_2,c3_2,r3_3,c3_3); n=(d); p1=(k); b=Th_amplitude_qu(w,r3_1,c3_1,r3_2,c3_2,r3_3,c3_3); h=Th_phase_qu(w,r3_1,c3_1,r3_2,c3_2,r3_3,c3_3); p2=(h); m=(b); a_delta_1=abs(m-n); p_delta_1=abs((p2-p1).*pi./180); a=n; r3_1=r1; r3_2=r2; r3_3=r3; c3_1=c1*1e-15; c3_2=c2*1e-15; c3_3=c3*1e-15; d=Th_amplitude_qu(w,r3_1,c3_1,r3_2,c3_2,r3_3,c3_3); k=Th_phase_qu(w,r3_1,c3_1,r3_2,c3_2,r3_3,c3_3); n=(d); p1=(k); dr_11=cm*r1; dr_22=cm*r2; dr_33=cm*r3; dc_11=cm*c1*1e-15;

228

Appendix 4 Source Code of PPFOPTIMA

dc_22=cm*c2*1e-15; dc_33=cm*c3*1e-15; r3_1=r1+dr_11; r3_2=r2+dr_22; r3_3=r3+dr_33; c3_1=c1*1e-15+dc_11; c3_2=c2*1e-15+dc_22; c3_3=c3*1e-15+dc_33; b=Th_amplitude_qu(w,r3_1,c3_1,r3_2,c3_2,r3_3,c3_3); h=Th_phase_qu(w,r3_1,c3_1,r3_2,c3_2,r3_3,c3_3); p2=(h); m=(b); a_delta_2=abs(m-n); % a=sqrt(m.^2+n.^2); p_delta_2=abs((p2-p1).*pi./180); p_delta=p_delta_1+p_delta_2; a_delta=a_delta_1+a_delta_2; irrth=ImageRR(a_delta,a,p_delta); irrw=round(irrth.*10)./10; hh=findobj(gcf,'Tag','irrw'); set(hh,'String',[num2str(irrw)]) %save threestageppfirr.mat irrth; load designspeci.mat irrspec; if irrw

A4.3.3 Source Code for the Worst-Case simulation of 4-stage RF CMOS PPFs load fourstageoptrc.mat; global f_1; global f_4; global f; global r4_1; global r4_2; global r4_3; global r4_4; global c4_1; global c4_2; global c4_3; global c4_4; global cm; global irrf; h = waitbar(0,'Simulation is processing, please wait...'); for x=1:100, % computation here % waitbar(x/100,h) end close(h) cm=findobj(gcf,'Tag','cm'); cm=str2double(get(cm,'string')); if isempty(cm), cm=0.01; else cm=cm; end f_1=findobj(gcf,'Tag','f_1'); f_1=str2double(get(f_1,'string')); f_4=findobj(gcf,'Tag','f_4'); f_4=str2double(get(f_4,'string')); f=findobj(gcf,'Tag','f'); f=str2double(get(f,'string')); rand('seed',0);

229

Appendix 4 Source Code of PPFOPTIMA

% Crossover Operators xFns = 'simpleXover'; xOpts = [.4]; % Mutation Operators mFns = 'binaryMutation'; mOpts = [0.005]; % Termination Operators termFns = 'maxGenTerm'; termOps = [100]; % 200 Generations % Selection Function selectFn = 'roulette'; selectOps = []; % Evaluation Function evalFn = 'gaMichEval4stage2'; evalOps = []; bounds = [f_1 f_4]; % GA Options [epsilon float/binar display] gaOpts=[1e-6 0 1]; % Generate an intialize population of size 20 startPop = initializega(20,bounds,'gaMichEval4stage2',[],[1e-6 0]); % Lets run the GA [x endPop bestPop trace]=ga(bounds,evalFn,evalOps,startPop,gaOpts,... termFns,termOps,selectFn,selectOps,xFns,xOpts,mFns,mOpts); % x is the best solution found %x; % endPop is the ending population %endPop; % trace is a trace of the best value and average value of generations %trace; % Lets increase the population size by running the defaults rand('seed',0); termOps=[100]; [x endPop bestPop trace]=ga(bounds,evalFn,evalOps,[],gaOpts,termFns,termOps,... selectFn,selectOps); % x is the best solution found x; fmax=x; w=fmax; c1=c4_1*1e-15; c2=c4_2*1e-15; c3=c4_3*1e-15; c4=c4_4*1e-15; r4_1=r4_1; r4_2=r4_2; r4_3=r4_3; r4_4=r4_4; d=F_amplitude_in(w,r4_1,c1,r4_2,c2,r4_3,c3,r4_4,c4); k=F_phase_in(w,r4_1,c1,r4_2,c2,r4_3,c3,r4_4,4); n=(d); p1=(k); b=F_amplitude_qu(w,r4_1,c1,r4_2,c2,r4_3,c3,r4_4,c4); h=F_phase_qu(w,r4_1,c1,r4_2,c2,r4_3,c3,r4_4,c4); p2=(h); m=(b); a_delta_1=abs(m-n); p_delta_1=abs((p2-p1).*pi./180); c1=c4_1*1e-15;c2=c4_2*1e-15; c3=c4_3*1e-15; c4=c4_4*1e-15; r4_1=r4_1; r4_2=r4_2; r4_3=r4_3; r4_4=r4_4; d=F_amplitude_in(w,r4_1,c1,r4_2,c2,r4_3,c3,r4_4,c4); k=F_phase_in(w,r4_1,c1,r4_2,c2,r4_3,c3,r4_4,c4); n=(d); p1=(k); dr_11=cm*r4_1; dr_22=cm*r4_2; dr_33=cm*r4_3; dr_44=cm*r4_4; dc_11=cm*c1; dc_22=cm*c2; dc_33=cm*c3; dc_44=cm*c4; r4_1=r4_1+dr_11; r4_2=r4_2+dr_22; r4_3=r4_3+dr_33; r4_4=r4_4+dr_44; c1=c1+dc_11; c2=c2+dc_22; c3=c3+dc_33; c4=c4+dc_44; b=F_amplitude_qu(w,r4_1,c1,r4_2,c2,r4_3,c3,r4_4,c4); h=F_phase_qu(w,r4_1,c1,r4_2,c2,r4_3,c3,r4_4,c4); p2=(h); m=(b); a_delta_2=abs(m-n); p_delta_2=abs((p2-p1).*pi./180); a=sqrt(m.^2+n.^2); a_delta=a_delta_1+a_delta_2; p_delta=p_delta_1+p_delta_2; irrf=ImageRR(a_delta,a,p_delta); irrw=round(irrf.*10)./10; hh=findobj(gcf,'Tag','irrw'); set(hh,'String',[num2str(irrw)]) %save fourstageppfirr.mat irrf; load designspeci.mat irrspec; if irrw

230

Appendix 4 Source Code of PPFOPTIMA

c4=c4_4.*1e-15; dr_1=pt_four.*r4_1; dr_2=pt_four.*r4_2; dr_3=pt_four.*r4_3; dr_4=pt_four.*r4_4; dc_1=pt_four.*c1; dc_2=pt_four.*c2; dc_3=pt_four.*c3; dc_4=pt_four.*c4; dr_11=cm*r4_1; dr_22=cm*r4_2; dr_33=cm*r4_3; dr_44=cm*r4_4; dc_11=cm*c1; dc_22=cm*c2; dc_33=cm*c3; dc_44=cm*c4; r1=r4_1+dr_1; r2=r4_2+dr_2; r3=r4_3+dr_3; r4=r4_4+dr_4; c41=c1+dc_1; c42=c2+dc_2; c43=c3+dc_3; c44=c4+dc_4; d=F_amplitudew_in(w,r1,c41,r2,c42,r3,c43,r4,c44); k=F_phasew_in(w,r1,c41,r2,c42,r3,c43,r4,c44);n=20*log10(d); p1=(k); r1=r4_1+dr_1+dr_11; r2=r4_2+dr_2+dr_22; r3=r4_3+dr_3+dr_33; r4=r4_4+dr_4+dr_44; c41=c1+dc_1+dc_11; c42=c2+dc_2+dc_22; c43=c3+dc_3+dc_33; c44=c4+dc_4+dc_44; b=F_amplitudew_qu(w,r1,c41,r2,c42,r3,c43,r4,c44); h=F_phasew_qu(w,r1,c41,r2,c42,r3,c43,r4,c44); p2=(h); m=20*log10(b); gmis=abs(m-n); figure subplot(2,1,1); plot(w,gmis,'m-') xlabel('{\itf} / GHz','FontSize', 14) ylabel('{\itm}-{\rmgain} / dB','FontSize', 14) title('Gain Mismatch in 4-Stage RF CMOS PPF','FontSize', 14) subplot(2,1,2); pmis=-p1+p2+90; plot(w,pmis,'m-') xlabel('{\itf} / GHz','FontSize', 14) ylabel('{\itd}-{\rmphase} / degrees','FontSize', 14) title('Phase Mismatch in 4-Stage RF CMOS PPF','FontSize', 14)

231