PAGE 1
DISCRETELY VARIABLE DIGITAL DELAY ELEMENT by I I I II I I I. ,, Marcel Wolf 1 B.S., University of Rhode Island, 1985 A thesis submitted to the Faculty of the Graduate School of the University of Colorado at Denver in partial fulfillment of the requirements for the degree of Master of Science Electrical Engineering 1992
PAGE 2
' I ' This thesis for the Master of Science degree by Marcel Wolf has been approved for the Department of Electrical Engineering by MiiOjeRadenkovic Date 2 7 A e \ L l 1.. ) > i i
PAGE 3
Wolf, Marcel (M.S., Electrical Engineering) Discretely Var!able Digital Delay Element Thesis by \Associate Professor Douglas A. Ross ABSTRACT I This describes a Variable Digital Delay (VDD) algorithm used I to synchronize' asypchronous clocks. The VDD consists of a FIR filter whose coefficients varY in; time and are dependent upon the clock drift rate. There 'I j are several of: coefficients, each set representing a particular delay. The .I number of coefficie'nt sets depends on the application and the resolution required. This technique can be used in several applications. : The one discussed ,in this paper is the transfer of data in an asynchronous D4 channel bank u\sed \n the Central Office of the telephone network. The VDD is I' I I. I implemented in, with a Tl TMS320C15 DSP chip on a D4 channel card. This approac,h is a practical way to synchronize the communications I I between two banks and reduces the hardware requirements of the D4 I channel card. I This accurately represents the content of the candidate's thesis. I recommerld its publication. I iii
PAGE 4
DEDICATION To Maureen for au; her help and Dan Udovic for all of the technical advice. I I I iv
PAGE 5
' I, I I CHAPTER I : I I. INTRODUCTION ........................................................................... 1 I Problem Description ........................................................... 1 i I Thesis 'Organization ................................................................ 2 I II. BACKGROUND ................................................................................ 4 I. i ' Pulse Coded Modulation (PCM) ............................................ ..4 I I The D4; Channel Bank .............................................................. 7 : I Digital Synchronization Hierarchy ........................................ 9 I The Double CODEC Solution .................................................... 1 2 : I Ill. VARIABLE 81GITAL DELAY ELEMENT ............................................ 1 4 I I The' Continuously Variable Digital Delay ............................... 1 9 I Variable Digital Delay ................................... 2 2 IV. SIMULATION .................................................... 2 5 Perform1ance Measurement .................................................... 2 8 I RuMning the Simulation Program .......................................... 3 0 i I V. NEW FILTER COEFFICIENT DESIGN .............................................. 3 6 I FarfowJ CVDD Polynomial Approximation Design I I Approac.h ................................................................................. 3 8 I I Classic Polynomial Approximation Design Approach ... 3 9 l. i Windowing Design .................................................................. 4 3 I I I. v I' I I
PAGE 6
VI. VII. A. B. c. D. E F. I' Window Design ....................................................... 4 4 I I I Kaiser Window Design ............................................................ 5 0 I D4' Requirements .................................................................... 6 1 I I Performance ........................................................................... 6 3 I I FIXEDPOINT PROTOTYPE IMPLEMENTATION ............................. 7 2 I I '! CONCWSIClN ................................................................................. 7 4 I Simulation bf the CVDD coefficients, di_sim ............................... 7 6 I I A Sample from the di_sim.c program ....................... 1 0 3 A Sample Bank ........................ ; .......................................... 11 0 1. ham_si1m.c1 ................................................................................... 1 62 I I nsimple .. c .. ................................................................................... 1 87 :. i kai_Sim,.C .... : ............................................................................... 1 9 4 I nsimple.c ............................................................................. 2 21 H. Filter B.anki from kai_sim.c ......................................................... 224 I ..... .................................................................................. 2 6 7 I' i: vi
PAGE 7
FIGURE I I 1 : I, I FIGURES 2. 1 J..LLaw I Curve ............................................................ 5 [: I 2. 2 An enlargement of companding curve ........................................... 6 I I 2. 3 The PCM format ............................................................................ 7 I I I 2. 4 Phase [hit on a 1 KHz test tone ...................................................... 1 2 I I 3.1 Variable Digital Delay Element .................................................... 1 4 I I 3.2 The architecture of the DVDD .......... ; ............................................ 1 6 3.3 3.4 4.1 4.2 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 I I Elastic. Store ................................................................................. 1 7 I' I The F(B filter ............................................................................... 2 0 I Simulat. ion 1 Software Architecture ............................................... 2 6 I I The FIR filtering action viewed as a vector product .................... 3 3 ,. Magnitu,de ftesponse of an Ideal Fractional Delay Filter .............. 3 7 Phase of an Ideal Fractional Delay Filter ..................... 3 7 I Error oyer t1he voiceband as a function of a (delay) .................... 4 2 I The Window for M=12 ................................................ .4 5 The impulse response for a lowpass filter M= 12 ....... 4 6 ' The response for the Hamming window filter M=12 ... l ...... l ................................................................................. 4 7 The Ph*se fesponse of the Hamming window filter M=12 ......... .4 8 ,. The for beta = 2 ................................................... 5 0 The Jindow as a function of beta ...................................... 5 2 i I I vii I, I, I
PAGE 8
5. 1 0 The magnitude response of a 12th order Kaiser lowpass design, shows the effects of varying beta ................................................. 5 4 The response as a function of order M ........................ 5 5 5.11 I 5. 1 4 The magnitude response of the Kaiser window filter computed at o=O i and: with M= 12 .................................................................. 5 7 5. 1 3 The phase response of the Kaiser window filter. M= 12 ............. 5 8 5. 1 2 The ripple 'of a Kaiser window filter ........................................... 59 5. 1 3 The magnitude requirements for a D4 channel bank ................... 6 2 \' I viii
PAGE 9
TABLES TABLE 3.1 dn,m 8 tap, 3rd order CVDD polynomial coefficients .................. 2 1 4. 1 CVDD simulation results. Sampling rate = 9600 Hz. Double precision .......................................................................... 3 5 5. 1 .results from kai_sim.c Description of the SID I I performanc:e for a small number of taps ..................................... 5 6 5.2 simulations from nslmple.c Table size= 64. Taps= 12. 2.0. Cutoff frequency = 3900 .................................. 6 0 I 5.3 Sample simulations from nsimple.c Table size= 64. Taps= I I 30. Blta 12.0. Cutoff frequency = 3900 .................................. 6 1 5.4 Simulation 1results from kai_sim;c. With varying cutoff frequencies ................................................................................... 6 7 5.5 Simulation 'tesults from kai_sim.c Anaylsis of the shape I factor B and its effect on the VDD performance ........................... 6 8 5. 6 Simulation results from kai_sim.c Anaylsis of the number of I I filters and its effect on the VDD performance ............................. 6 9 5. 7 Simulation results from kai_sim.c Anaylsis of the filter order I and its on the VDD performance ......................................... 7 o I I 5. 8 Simulation fesults from kai_sim.c Anaylsis of the ripple from the Kaiser window and its effect on the VDD I perform1ance ................................................................................. 71 I ix
PAGE 10
G.1 G.2 nsimpie.e output. Bank size = 128, Taps= 12, Beta= 1.0, Fe = 390P Hz .................................................................................... 2 2 1 I I nsimple.e output. Bank size = 128, Taps= 20, Beta= 1.0, Fe = 3900 Hz .................................................................................... 2 21 I G.3 nsimple.e output. Bank size = 128, Taps = 12, Beta = 2.0, Fe = 3400 Hz .................................................................................... 2 2 3 I' I I X
PAGE 11
CHAPTER I i 0 I INTRODUCTION Problem Desc'ription I The of the clocks used in digital communication I systems is important to the integrity of the data stream being I transferred, arid Interpolation provides an efficient method of Even in applications where the clocks are within a few hundred parts per million, the slight frequency difference will cause the clocks to drift when compared to other. This drift will cause the delay between the two I clocks to increase I!Jntil the point where there will be no sample when one is I required or there will be too many. This will cause a phase shift of 125 J.lS : .I (phase hit). This phase hit is predictable assuming the drift rate between the two clocks is (the drift rate between the two is constant or I nearly so). In the telephone network these phase hits will not be discernible to the listener since lthe human ear cannot distinguish phase (O'Shaughnessy I 1987). On the other hand voice band MODEMs are affected by phase. I
PAGE 12
; I A !to this problem is the Discretely Variable Digital Delay : Element (DVQD). i The DVDD filter bank is a Finite Impulse Response (FIR) filter with adaptive: coefficients that provides different amounts of delay to a I signal. An decides how much delay is needed and initializes the FIR filter with one set of Impulse Response coefficients out of a whole group of I coefficient sets. where each set provides a filter with a different delay. The I DVDD periodiC1fi!IIY ppdates the delay value and chooses a new rate at which to update the This creates very small phase shifts which do not affect performance. I I I Thesis Orgrnl:li,ation I I Chapter II discusses the synchronization problem, it's causes, and the I ,. effect it has on, the' telephone network, along with the impacts the "phase hits" have on voice vs. data circuits. 1: ' Chapter Ill describes the DVDD filter. It gives insight into the I mechanics of the DVDD filter and expected error responses. I In 1y a floating point simulation that implements the DVDD concept will be explored. Different polynomial coefficient sets will be i I presented and 'heiriperformance results compared. The inadequacies of ; Farrow's Variable Digital Delay coefficient set for a channel I unit will be shown. I ; [ .[ I I. 2
PAGE 13
In new coefficients are developed to cover the entire voice channel. Several design methods are described including windowing and I integrated errpr I VII will describe the fixedpoint implementation in a DSP device. This prototype was designed for the 04 channel bank. Finally! VII is a summary of the results and the conclusions. I I' 1. I I, 3
PAGE 14
CHAPTER II : BACKGROll'JD ,I Pulse Coded Modulation (PCM) I :Today PCM is the transmission standard that is used in the telephone netvJork throughout the United States. After sampling the analog I I voice or data signal, the PCM scheme is used to format the digital signal for transmission. :It implemented as follows. I I The analog signal is sampled at 8 KHz on the channel card using a I I companding CODEC (acronym is a combination of coding, decoding). Companding is 1a nonlinear coding method, that is used to keep the signal large I in comparsion to the step size and to provide a higher dynamic range. In I I North America MULAW companding is used. It provides 256 levels that are unevenly distributed across the band of interest. The levels are mostly II concentrated around zero (see figure 2.1 and 2.2), so that the soft signals (which occur mpre 9tten) have more resolution, and the loud signals are distorted. I I I I 4
PAGE 15
I I' \' I 1201 I 100 I I eo ! 60. e 40 I 20 I I' Figure2.1 1 1 8 4 1 2 Input Signal 1 J.LLaw Companding Curve. The signal level has been coded and companded. 5
PAGE 16
I I I I I, I 1 1 1 1 I 64 32 16 I Input Signal I Figure2.2 An enlargement of companding curve at the lower signal levels. I I I Coding of the ?56 levels requires 8 bits, giving the data channel a data rate of 64000 8 bit channel is called a Digital Signal Level Zero (DSO). I I I. i The PCM scheme multiplexes 24 individual channels onto a twisted I I pair of wires. 'The 24 channels together with a framing bit make up a frame. A frame of 93 bits and is repeated every 125 us. This gives a data rate of 1.544 Mbits/sec, and is referred to as a Digital Signal Level One (DS1). I, 6 'i i
PAGE 17
' A PCM DS1 ;frame : I I I I ............................. I ; II= DS01 I IDS02 ................................................................. 8 bits I I I \, Figure2.3 The PCM format, 193 bits over 125 us. Each OSO corresponds to a channel. The 04 ChanneiiBank I 1 The 04 tharlnel bank has been a mainstay for the Bell System for many years. 1( has' evolved from its earlier predecessors the 01 ,02,03 1' : DS024 channel banks. The Bell System Technical Journal introduces the bank with the following p,aragmph. I : I "The 04' chatmel bank is partitioned into common equipment and I' I channel units. The pommon equipment provides digital line interface, pulse code coding, and multiplexing, alarms, trunk processing power, I I i l I I I 7
PAGE 18
!, : I I. power fusing,\ 'and distribution. Individual channel units provide the circuits I that interface I to external circuits". i In simpler terms the bank interfaces an analog (metallic) line to a I : digital (carrier) The metallic line is a copper twisted pair found I I throughout local plant (last stage of the telephone network). It can be either 2 or 4 J/ire knd loaded or nonloaded (load coils flatten the frequency response out to the passband edge) depending on the length of the loop (loop is the entire ana(og communications path from the Central Office to the I customer's home). The metallic line is terminated in a channel unit. There are many typel of Jhannel units available. The type used depends on the characteristics\ of the path, 2wire or 4wire length of cable, signaling type, etc. The :channel units are supported in the 04 bank by a set of boards : called the "Common Equipment". This equipment provides the power, 1 I alarming, digital line interface, and most important to this paper the timing. Each bank haJ a Jtratum 4 clock (described later) which provides timing for the bank. Thei oscillator will be overridden if the bank is in what is called "looped timing" mode. In this mode the bank will derive a clock from I I the incoming digital' signal. The hardware to derive the clock is on a board 1 called the Officb Interface Unit (OIU), which is part of the Common I Equipment. the bank will run in the "Looped Timing" mode but there are many possi!bilities for failure. This is an analog card and it suffers from component drif.t and! degradation over the years that can lead to a partial or : I I total failure. Also the OIU board may be configured incorrectly when it is I I I 8
PAGE 19
installed. In any of these cases, the VDD algorithm is used to synchronize the I clocks. 1: I' Digital Hierarchy I Today transmission is becoming more and more important in the ! telephone netWork.1 In some areas voice is no longer the dominant information i type. To compete vendors who offer equipment to bypass the telephone I network, the phone, company must offer high quality data transmission. To do I' ; this a network, both in frequency and in phase, is needed. The I architecture of !the ;pnited States synchronization plan is described by the AT+ T technical reference Digital Synchronization Network Plan (AT&T I 1983). The Bell System has a hierarchical clock structure. The reference I' I clock has a mo:re ptecise frequency at each "higher" level. Each level is i 1 I known as a and there are a total of four levels. The most precise level is1strarum level 1 and the least precise is stratum level 4. highest reference clock, stratum level 1 is known as the Bell System I I The Reference Frequency (BSRF). It is defined with cesium beam technology to I, 'I . have an accuracy of 1 o5 parts per million (PPM) and is used to derive all I. other clocks in the telephone network. The digital interpolator described in this paper was designed to work ',. I in a D4 channel bank which uses a stratum 4 clock. This clock has an 9
PAGE 20
. I accuracy 1.544 M,Hz 50 Hz, or Parts Per Million (PPM), the bottom of the clock hierarchy. This definition of accuracy applies to the clock when 1 it is free running, or in other words, when there is no reference clock to I synchronize It: a channel bank loses its reference, it will switch its timing reference to the stratum 4 clock in the bank. This reference will drift 'i : with time. To: illustrate how clock drift can be measured a theoretical "perfect" 1.544 MHz clock is compared to a stratum 4 clock. A counter is used to count edges (positive or negative). A perfect 1.544 MHz clock I I I I has a period of 0.647668393782 J.LS. In taking a count of clock edges for a I i period of 0.647668393782 seconds, a count of a million would result. In I doing the sam+ with a stratum 4 clock, while free running, the count I I would range from 999,968 to 1 ,000,032. For the counter to reach I I 1 ,000,032, an extra 32 clock edges would have occurred in the count interval. This r'neatis that the receiving communications device would receive I two samples in !the .period it should receive one. For the counter to be 999,968, thirty two !ess clock edges then expected would have occurred. Therefore occasionally when the receiver requests a sample it would not receive a valid 1instead the last sample will be repeated. In either case there is a rate fl.ow problem. One device is supplying samples at one rate and ; the other is using at another. At some point there would be two samples or no samples would occur. The "slip" will appear has a "phase 1 I I hit" on a sinusoid test tone in the channel. \: i I 1 0 I'
PAGE 21
, 'I i' I' I A test1 to determine if a channel is suffering from phase hits I is to apply a kHz test tone to the channel. The other end of the channel ' is fed to a PQM test unit (such as the HP4523) that monitors for phase hits. The above test in the industry literature is often referred to as a 1 kHz holding tone. is a misnomer. A 1000 Hz tone is never used to test circuits because it is a multiple of the 8 kHz sampling rate, which leads to a i "beating th* can give a false reading to test equipment. If a 1 004 HZ test tone is us!ed qn the line, the phase shift that occurs is 360 degreesx0.125 1J.SX1.004 kHz:= degrees. The test tone sine wave will appear as if it has been advanced or delayed by 125 1J.S (see figure 2.4). This will have f I I little effect on [the .jhuman ear, which Is relatively insensitive to phase variations in in90ming sound wave, as long as the group delay variations ' are less then a few milliseconds (O'Shaughnessy 1987). !. I ., I I 1 1
PAGE 22
I : I i 1\ I 1 I Figure2.4 /Repetition Slip Phase hit on a 1 KHz test tone. I i The Double COD.EC Solution I I I I One soh,Jtion' to the phase hit problem involves a tandem arrangement of CODEC's. inhoming bit stream is converted to an analog signal by the first CODEC usihg bit clock extracted from the incoming data. The analog signal is then by a second CODEC using the local clock. I I This method; has several drawbacks. First the extra hardware imparts additional cost to the product and in markets that run on small margins, that : I could be enough' to make the product unfeasible. Second, the quantization I 12
PAGE 23
I I noise is I by the added conversion. A test report by (Neely 1989a) I explores the n6iselquestion. I I I The VDD a,lgorithm bypasses the problems associated with the double .I CODEC solutidn. 11t does not require any additional analog/digital (or vicei i versa) thereby eliminating the noise problem and the 1: I requirement for the extra hardware. It can be added to any DSP chip or gate I' I array, the limiting factor being the amount of resources i.e. gates, lines of l I code, etc. i I I. 1 3
PAGE 24
j CHAPTER Ill I I: VARIABLE DIGITAL DELAY ELEMENT I The Digital Delay (VDD) element is a timevarying FIR filter that provides ldifferent amounts of phase delay and can interpolate a I sample when to regulate the rate of flow of the voice stream (Farrow 1988). This algorithm is ideally suited for a Digital Signal Processor. I' y[rl] Interpolator Delay Elastic xfnl ..... Line Buffer ..... I I L I L I' fsoclk fsiclk \Figure 3.1 Variable Digital Delay Element I The VDD is driven by a, a normalized measure of delay I, between the tWo clocks, fsoclk (local or output clock) and fsiclk (remote or input clock). 1: I 14 I 1:
PAGE 25
I a = delay ( 3 1 ) sampling rate Ts This metric is to the range, .:. I I I 112 gos1t2 (3.2) I This correspon.ds t? an absolute delay of 62.5 to 62.5 J.LS for an 8 kHz sampling rate. i Ea,h coefficient of the FIR filter is computed as a polynomial in delay. The FIR coefficients and a are updated periodically. The data is sampled by indut clock (fsiclk) into an elastic buffer. The data is sampled out of the: interpolator upon the output clock (fsoclk). Every shift operation on the delay line is mathematically equivalent to an increment in I time of 125 J.LS or Ts. If fsoclk is greater then fsiclk then the samples will be required in ti\me each sample period. This corresponds to decreasing values of the delay a. If fsoclk is less then fsiclk then the samples i will be required prqgressively later in time. This corresponds to increasing values of delay a. i The VDQ cah be implemented in either the receive or the transmit I' I path of the communications device. The 04 channel unit implementation described in uses the VDD in the receive path (sample received off I the digital T1 and output to the CODEC). 15 I
PAGE 26
CCDEC Inter face (analog ) : ....... ...... I I l I I ,_L i I I :T i i XMT Path Echo Canceller nvnn RCV Path ... ... c In T1 arrier terface ( digital) Figure 3.2 ; architecture of the DVDD in the receive path. This is the functionality ;contained in the DSP. Other elements of the line card aren't shown. I : Buffering is on the incoming data stream to handle jitter. The elastic buffer (fiFO) used is a simple storage device that first outputs the I bottom most or the oldest in time, then shifts each of the samples down one location, and then reads a sample from the input. I' 1 6
PAGE 27
Input Output Figure 3.3 Elastic Store. I The buffer in a PSP! device would consume scarce RAM resources and therefore it is to minimize its size. Using the cable data from I I I Bellcore TBTSY000171 on 22 gauge cable an estimate of three storage I I locations is adequate (Neely 1989b). The buffer is allowed to fill halfway on I I power up VDD operations commence. The output samples before this I point are and should be ignored. Certain rate .:regulating operations must occur in the two clock cases described (Udovic 1989). I Case 1 :; fsoclk > fsiclk ! updn every fsoclk edge, a sample is generated by the FIR filter. The delay. line is shifted and a new sample from the elastic buffer is 1 7
PAGE 28
I. I I input. Periodi'cally, the filter will generate a sample but the shift operation is omitted. 1,Since the period of the output clock is shorter then the input I clock period, the points required will be progressively earlier each .1. : clock edge. This c!:orresponds to less and less delay required by the FIR filter. Therefore, delay a will decrease. jlUpon initialization a = 0. When a reaches 1/2, the normal filtering opera,ion occurs and a sample is output, but the delay line is not ! shifted. a sample is not removed from the elastic buffer. a is then I initialized to :This is mathematically equivalent to a shift of T s or 125 J.l.S in our case.: This operation keeps the buffer from underflowing and I constrains the! of a in the range, R[1/2,1/2], for which we can easily I compute a FIR filter that approximates a. I [. Case 2: : fsoclk < fsjclk I i every fsoclk edge, a sample is generated by the FIR filter. The is shifted and a new sample from the elastic buffer is input. Periodifallyi. the filter will generate two samples. 1 Since the period of the output clock is longer then the input I .' clock period, the sample points required will be progressively later each clock edge. This cOrresponds to more and more delay required by the FIR filter. measured delay a will increase. Ll initialization a = 0. When a reaches 1/2, the normal I filtering operation occurs and a sample is output, then the delay line is 1 8
PAGE 29
I I shifted. The value of a is then set to 1/2. This operation is equivalent to ; subtracting T s units of delay from the interpolation of the next sample. This is compensated for by performing another shift operation. Therefore two I I samples are removed from the elastic buffer. This operation keeps the buffer I from overflowing and constrains the value of a to the range, R[1/2, 1/2], I' I for which we can easily compute a FIR filter that approximates a. i Therefore, the VDD has three basic modes of operation. I I Consume no sample. I I :Consume one sample. Consume two samples. Correctly tracking a and performing these operations at the appropriate time, regulates the .flow of the sample stream, and manages the elastic buffer, I I never letting it or underflow. I I The Continuously Variable Digital Delay I II I The Variable Digital Delay (CVDD) filter bank was first described by (Farrow 1988). His implementation used a Digital Signal Processor (DSP) to implement the software algorithm and filters. In this new coefficients for the FIR are computed on I I each clock edge. The delay estimate is provided by an additional piece of I. hardware and passe.d to the DSP. Each coefficient uses this measure of delay I I to calculate the FIR coefficient as a polynomial (see figure 3.4). I I !' 1 9
PAGE 30
x[n' I I y[n] Figure 3.4 ;The, FIR filter. The coefficients (Cx) are variables in delay. A one sample delay is represented by Z. I Equation 3.3 is used to calculate the filter coefficients, ! I i I M' Cn(d) = (3 .3) 'mo! where the fv1 is the order of the polynomial, a is the measure of delay, n is the order of the FIR filter, and dn,m is a coefficient from table 3.1 below. The FIR coefficients (C) for an entire bank have been computed and ' appear in appendix I I I I 20
PAGE 31
I Table a.1 shows the polynomial coefficients calculated by Farrow for i an 8Tap, 3rd CVDD element (N = 8, M=3), to be used in a channel with a 3150 Hz bandwidth. Table 3.1 N/M 0 1 2 3 4 5 6 7 l I dn,tn 8 tap, 3rd order CVDD polynomial coefficients. ,, I 0 I .. 013824 .054062 I .. 157959 .616394 \157959 .054062 1 2 .003143 .055298 .019287 .216248 .1 008 .631836 1.226364 .465576 1.226364 .465576 .1008 .631836 .019287 .216248 .003143 .055298 This approach is very computationally intensive and requires ,. 3 .012573 .077148 .403198 .905457 .905457 .403198 .077148 .012573 external hardware, but the CVDD element is a very good solution for the I stated problem1 if the resources are available. ,, !' i. 21 \:
PAGE 32
I I The Discretely 1 Variable Digital Delay The :algorithm is an attempt to reduce the computational task of the DSP and the need for extra hardware. It follows the same general concept as the CVDD algotithm, except the delay is estimated in software, the filters are generated 1 offline for a number of points in the delay space and a I different filter is used. : 1 By interrupts over a known time interval, the drift rate between the clc;>cksjcan be estimated. This rate can then be used as a period for the FIR coefficients refresh. Every time the rate counter has expired the FIR are moved from data memory into the FIR taps. This new FIR l filter has a small amount of extra delay. This procedure introduces small I' phase hits, similar to the slip that occurs when a sample is missed, but much I l smaller (less tren 12 degrees). Therefore, with enough filters precalculated I in data memory, phase distortion is tolerable. The design of these coefficients can: be !developed following the method outlined by (Farrow i I 1988). In an attelllpt to reduce the complexity of the design several alternative are explored in chapter V. \ I A typical example of a DVDD would have 128 filters to generate delays I I between: I 112 sbs112 I I I, 22
PAGE 33
' I Each individual fTIR filter would be an approximation of the ideal delay; I : (3.4) I The variable i.s the filter delay and is unique for each filter. If the delay space is divided 128 quantum levels. Each providing a delay resolution: Delay Resolution = 125 !!S/128 ( 3. 5) = 0.97656; !!S I I I Each incremehtal filter will generate 0.97656!lS of delay more then the I preceding filter if q is moving in the positive direction. If a is decreasing each filter will' provide 0.97656!lS of delay less then the preceding filter. At I a=O, there wilr be 1no delay. The Discretely Variable Digital Delay element will make "quarituri;l" jumps of approximately 1 llS each time it takes a step I I (moves from o1ne of filter coefficients to the next). These "jumps" in I delay will intropuce a small phase hit, I I Phase ,Hit = (1 004 Hz)(360 degrees)(0.97656 !lS) I' I I = degrees I I. I ,' i I 23
PAGE 34
This is well I the phase jitter specification for a 04 line card. The effects these hits have on the overall algorithm performance will be explored during i I I I \ 24
PAGE 35
CHAPTER IV FLOATINGPOINT SIMULATION I I To explore' the feasibility of the DVDD element and test its capabilities a test bed The program di_sim.c, in appendix C is a floating point simulation of a digital interpolator. It allows different sets of coefficients anCI sampling rates to be tested. The user specifies the number of I I FIR filters, FIR taps, clock drift rate, testtone frequency, and the number of I samples to be The simulation generates a bank of filters at run1 time, with each set of impulse response coefficients corresponding to a value I of delay. Figure 4.1 below illustrates the architecture of the di_sim.c I. I simulation for 'an tap FIR filter example. I i' I' I \' 25 I
PAGE 36
'. I INPUT R V Clock I' I Generator I 'I Digital Interpolator FIR Filter Distortion Energy Figure4.1 Simulation Software Architecture. The RCV clock is the :. I clock. The XMT clock is the local clock. The main of this simulation is the timevarying FIR filter that I provides the In the simulation the delay estimate is fixed. The I 26
PAGE 37
user inputs a rate bt change for delay at the beginning of the simulation. The I I rest of the componlents in the architecture are for generating sine waves and measuring perform'ance of the digital interpolation. The DVDD interpolates ; I the incoming data so that it appears that the stream was sampled with I I the local clock (XMT clock in the picture). The RCV clock represents the I clock used to sample the incoming data stream. This clock is generated I I remotely by the unit on the sending end of the communications link, which is I I not synchronized the clock on this local unit. The sine wave is user specified at ruhtime. The clocks are both nominally 1.544 MHz but a small I delta is added to the RCV clock. This delta is user specified at runtime. The I i Z's in figure 4.1 represent delays of 125 J.LS. The coefficients CO through C7 I are the impulse res'ponse coefficients that are switched in and out to give I I different amounts of delay. The 3rd order polynomial coefficients from the ' CVDD example (see table 3.1) have been stored in global memory. They are used at start up to the impulse response coefficients for the eight I tap FIR filters (see: appendix C). This bank of filters, with variable amounts of delay, is stored in memory. At the same time the 012 scaled version of the coefficient for 16 1bit fixed point DSP is stored in a file. These coefficients I I can be used the actual prototype in the next stage. The term 012 is a type of scaling used' in fixed point math. It is commonly used to represent floating I point coefficients in; an integer form. A 012 number is in 2's complement I form. The radi:X point is assumed after the first four binary digits that ' consists of a sig.n bit followed by three integer bits. This format can I !' 27 .I. I
PAGE 38
' I represent a number in the range 4 < x < 4. There are other I commonly use'd types of scaling such as 015. The 015 format has a higher !: precision but !s limited in the size of numbers that it can represent (1 < x < I , I 1 ) : The CV'DD lbank of filters can be used to test the simulation and ,I demonstrate the digital interpolation concept. These coefficients were I I I I designed for from 0 to 3150Hz and sampling rate of 9600Hz, I' I the parameters 'for a MODEM. Since the DVDD was designed for a D4 channel I bank which ha's a sampling rate of 8 kHz, it is desirable to change the i I sampling rate to 8 'kHz for the simulation. Appendix B shows the results I I when executinb di_sim.c simulation using Farrow's CVDD coefficients and an 8 kHz samlpling rate. For strictly simulation purposes, the di_sim.c I I I program could 'also be used to check the performance of the original CVDD over the using the 9600Hz sampling rate. In essence when the CVDD coefficiJnts used in a Discretely Variable Digital Delay element a I small delay di,torticim will be added due to the switching in and out of the different coefficient! sets, but as in the DVDD case this delay distortion is negligible. I I I I I I I I I I IV!easurement .I How is !the of the simulation measured? The task of the I I DVDD or CVDD is to interpolate an incoming data stream so that it would I. I I 28
PAGE 39
I i. I I I appear to have been sampled by the local clock. How well the simulation does this can be tested by inputting a sine wave to the FIR filter which has been I sampled on the RCV clock. This is the clock used by the communications I device at the fkr to sample the signal. The output of the filter will be compared to asine:wave generated by the XMT clock or local clock. The difference betJeen1 the energy of the two signals will be called the distortion. I A metric "Sibnal to Distortion" or SID will be defined as the ratio: I SID =JSIQNAL ENER3Y I DISTORTION ENS=GY (4.1) I. Energy in a sequence x[n) is defined by the equation (Oppenheim 1989). J! i: N 2 Energy = 2, jx[n]j 1: ii=O (4.2) I This formula is [used to measure the energy in the distortion and signal sequence. The: .S/0 ratio is usually computed as a logrithm. lo I dB_S fD :b 1 0LOG(S /D) II I In the network a SID rating of 40 dB is adequate. Another ,measure of performance is the Upper Useful Frequency I i (UUF). This is another name for cutoff frequency. The passband of the FIR I I' :' 29
PAGE 40
I. 1 : i filter has a cutoff frequency after which the ripple or loss becomes :. I intolerable. is an important measure to determine if the desired I : frequency response specification for the 04 channel bank has been met. This I 1 is a measure well the amplitude error is bounded as a function of frequency and This parameter will be decided by the number of taps in I I the FIR filter a:"d the order of the polynomial used to determine the impulse I, response coefficients. The UUF can be estimated with the di_sim.c program I I by using diffefent testtone frequencies( see table 4.1 ). : I i I. Running the Simulation Program I I For the, 1 Interpolator simulation the following parameters must be i entered: clock difference, test tone frequency, size of filter bank, and the number of be processed. The order of the coefficient polynomial is jl I a fixed value in ,the program and cannot be changed. A good for the target environment is to choose a test tone of I I 1020Hz. altypical tone used in the network today. It is not a multiple of the sampling frequency, so it avoids the beating effect that can I give a false of the sinusoid level. A filter bank of 128 which is a I : power of two will make handling on a fixed point OSP easier. The number of [: ; samples and difference between the two clocks are interrelated. In the target environment, I a 04 channel bank, the maximum difference allowable is I. I I I' 30
PAGE 41
parts pert million (ppm). This is the specification of a Stratum 4 clock. I I The simulation would have to run for at least, 1. I I 1 ooo:oo6/64 = 15625 samples I i I to have a phase hit occur during the simulation run. Therefore ideally the i I difference would be chosen as PPM (each clock has the maximum I I allowable variation 1 in the opposite direction) and the sample count would be I set to 15625 samples. Yet when this simulation is run, the S/ D is I I 12.21537742 dB. These results are unacceptable. I believe this is due to a ! I numerical accumulates during the simulation. A simple test to show this is to. the difference between the clock rates to a very large I, 1 number, such 110000 PPM. This number is unrealistic in the real telephone network but it reduces the number of samples that must be processed in order to observe a slip. A hundred samples are needed: 1000000/10000 = 100 I .I. When this test 1was1 run the SID jumps to 48.00353 dB. A substantial change I Since: only 1 00 samples were used, the error that accumulated over i. time was much, less significant than in the earlier case with 15625 samples. ',. I ' Another run a 'sample count of 200 gives an SID = 48.00086 dB. I 31
PAGE 42
I I I This first p!iototype was done with the Greenhills compiler. In this i environment float and doubles are two distinct formats. The first step to ,I correcting the probiem was to use double precision and repeat the simulation I 1 above. As this resulted in much better results SID = 48.52433238 dB. This is a good SID for a D4 channel unit. The technique described in I' I the paragraph can still be used to reduce the simulation time. The I double version of the program is included at the end of this paper in appendix A. 1, 1. I The program was later ported to the Think C compiler on the Apple I SEI30 T:his compiler uses the Standard Apple Numeric I Environment One feature is that it defaults float and double to double format. I If using Jdouble precision doesn't fix the problem there are other techniques to There are several new compiler's that implement the new : I I (to the market place) Kulisch and Miranker arithmetic. These compilers can I I calculate the product with maximal accuracy. This guarantees that there is no floating point number between the answer given and the real I answer. has a built in SCLP(} routine that provides this I function. The FIR filter function can be implemented as a vector product(see figure 4.2). AlsQ the standard functions can be generated with PASCALSC I functions that are maximally accurate. I I i' I I 32
PAGE 43
c(o) X[n: .Delay Line Y[n: The FIR filtering action viewed as a vector product. I There is a lot of research currently going on in enclosure methods in Numerical Analysis. This involves a new space of interval numbers. The basic idea is number no longer represents an infinitely small point in space but a of reals on the number line (this concept can be I extended to more dimensions). It is a new language of inequalities. I I Unfortunately, the "naive" use of intervals leads to very large enclosures ,, I (area on the line where the answer is guaranteed). This is an inherent problem of the Interval arithmetic. There are certain "forms" into I I which an equation can be transformed into that will lead to much better : I enclosures. A!efeld and Herzberger (1983) describes several "forms" for certain classes !of tJnctions. An equation is converted to one of these forms I and then 1using Interval arithmetic. This process leads to much tighter bounds on the solution, but this process is tedious and time I I I I. I I I 33
PAGE 44
I i I \ consuming. There are currently compilers that implement "naive" interval arithmetic, such as: PASCALSC, PASCALXSC, etc. There are currently no I I I compilers that I cant automatically get around this problem. An Interval I analysis of the sim,ulation would give a mathematically guaranteed solution including the of rounding error, under/over flow, coefficient I I truncation, etc. This process is expensive in terms of computation time and i I configuring the proplem for an Interval analysis. It is also not a technique I for the It is essential to have a thorough knowledge of Intervals to I : avoid the pitfalls would lead to unreasonable enclosures. What good is it to the designer if the coefficient value returned from the compiler is I' I 0.998765 1.0. The following table gives some trial runs with the simulator. This program di_si"1;c appears in appendix A. I 'I i I .I II i I \ I l 34
PAGE 45
Table 4.1 Sarhple CVDD simulation results. Sampling rate = 9600 Hz. I I Double precision. '! Trial PPM Samples Freq Banks S/D(dB} I I 1 164 I 15625 1020 128 48.52433 2 64 31250 1020 128 48.51559 3 ,64 i 15625 1020 64 43.85484 4 '64 15625 1020 65 44.01757 5 64 15625 1020 129 48.59057 6 64 15625 3100 128 38.09345 I 7 164 15625 3500 128 24.18633 8 64 500000 1020 128 48.45936 I In the ?hapter several new methods of filter development shall be discussed and of these will have simulations that are variations of di_sim.c. I 35
PAGE 46
'I I I II I I I. I II: CHAPTERV I '. I I NEW FILTER COEFFICIENT DESIGN 11' i i The Variable Digital Delay algorithm centers on a timevarying FIR I ,I filter. The of this filter can be viewed differently. In the frequency domain the bJhaves as a fractional delay system with a flat magnitude I response over band of interest. Viewed in the time domain the filter resamples the :incoring data stream and provides a new interpolated stream when needed VDD algorithm. This chapter discusses different methods I of developing .filter I banks for the VDD algorithm. . 1'. I The filter needed for the VDD is described by (5.1), I I I l. .I H(w) ( 5.1) I I where is and w Is the angular frequency. Figures 5.1 5.21 show the magnftude and phase response of an ideal fractional dela;Y filter. 1:. I I. li I I 1;. I ,, : 36 1: I
PAGE 47
I Hagnitude Response 1 111 I I AMpl1."tud1e (voltage) 0.5 I' I. I Figure5.1; I I 0._ ______________ 0 Pi Pi 2 Frequency in Radians I Magnitude Response of an Ideal Fractional Delay Filter. I I i Pbase Response 0.5 I 1 Pbase in Radians 1.5 I 2 I 2.5 .i i. I I Figure5.2 I II i I i. 3._ ______ 0 Pi Pi 2 Frequency in Radians Phase response of an Ideal Fractional Delay Filter. 37
PAGE 48
I [I : I This filter can be approximated, because an FIR filter. cannot implement an allpass response and an IIR cannot achieve linear phase. I Therefere an approximation to the ideal response in (5.1) is needed. I I An FIR filter was phosen to simplify the design. These filters have better .: I phase are always stable, and use a simplified design methodology. i Farrow's cyoo: Polynomial Approximation Design Approach I I I II; I Farrow, with the CVDD, used a polynomial approximation to the design I' I problem. Thei 'frequency response of the filter was approximated by (5.2), I I I I T I Jnw H( co) d: L G (a) e s ( 5 2) n I" I i 1 where the Cn(a) are the impulse response coefficients from the time domain, tls is the sampling rate. This shows that the frequency I I I I response will l:)e a function not only of frequency w but also delay a. In fact I I each impulse coefficient Cn(a) will be computed from an nth order I I polynomial in The following formula gives the same frequency response but shdws the impulse response coefficients as polynomials in I I delay. i I I I I I I II I ,,, 38 'I: I!
PAGE 49
; I jnwT H( co) ::;: I. I. om d e s ( 5 3) ''nm n,m I I To find the delay P,olynomial coefficients dn,m we must minimize the following relation, .I I I 2 lerrbr = J J L L o" dn,m. eJnwT I dodw : I wa n m (5.4) i I ,, I' I where N is the, order of the delay polynomial and M is the order of the filter. I I Here Farrow is using an Integral Squared .Error Approximation Criterion. I I This metric is to find a suitable approximation to the VDD filter. I I From Farrow's 1 we see that this filter method provides excellent I results. Yet, m'ethod requires considerable computation and does not provide a fdrm solution for the coefficients. I. I ,'I Liu's Classic Polynomial Approximation Design Approach I I I 1 I Another1 that attempts to circumvent some of the problems I with Farrow's rri'eth6d uses a technique from classic polynomial I l I approximation (Liu and Wei 1992). A polynomial described by I i (5.5) 1 I I. I I .l It I I : 39 \:
PAGE 50
I (5.5) Ni .I 1( = 2, .. a 1 c ,' 1C 1C=0 1 passes through the point (tn,xn). This polynomial has N+1 undetermined .I coefficients. The Method of Undetermined Coefficients from (Hamming1973) I I can be used td. calhulate a polynomial that fits the data. Given N+ 1 points I : (tn,xn), we have a system of equations which can be used to find a solution I I i for the unknown coefficient vector. The determinant of the coefficients of the I unknowns is the Vandermode matrix. It is known that the coefficient I, i I vector can be !solved for with Cramer's rule: I a I v 1( ' I I (5.6) l I Where k = 0.1.12 .... JN, Vis the Vandermode matrix and V" is a new I determinant by replacing the kth column of the Vandermode determinant by\ the! column vector (X0,x1 ......... ,XN)T. Based on this interpolation mbtho6 a set of simple closed form coefficient formulas are I '! developed. Fdr a fourth order polynomial interpolation where a is the delay, I i the coefficient$. are!: i I I I I I 40 I i
PAGE 51
.I' I I I C_2 = .
PAGE 52
I' I I iError vs. Frequency vs. Delay 1 0.:4 Erro:9.3 01..1 I 0 I, I I I I Error over the voiceband as a function of a: (delay). I Liu's methqd will not meet the requirements for a line card frequency I response. Theref6re, the feasibility of using a nonoptimal but: simple method such Js wihdowing is explored. This approach is much simpler .[ L conceptually and cbmputationally. It provides a closed form for the I' I impulse response coefficients. i I I 1. \. 'I I I I I 1 i I i I: I I I. 42
PAGE 53
; I Windowing I. I I ; II In the Windowing method we are trying to approximate ah ideal !: I frequency The response is represented by an infinite. Fourier I Series, I I ; 1'. R lr ] JwnT d = L d n e I' I "i'I (5.10) I I I and the impulse response coefficients can be calculated from, I ; I I' n hd[n] + :JHd(eJw)eJw"Tdw I 2tr n (5.11) The desired ideal frequency response is described by (5.1) and figure 5.1. i This equation can be substituted into equation (5.11) to find the !ideal impulse i I response. This that the integral of the ideal response can be I calculated. In case the impulse response coefficients take form, !! I I I h[n] Sitl[Wc(nr)] . n(nr) (5.12) I I where tau is a delay that is equal to half the order of the filter to make the I' I filter causal. needed for the VDD algorithm can also bJ Incorporated into this the ideal response has an infinitely sharp lcutoff 'I I I I I 43 1 :
PAGE 54
I I frequency, thJ: impulse exists for all time. This filter is not re'alizable. Therefore the choice is to truncate the ideal response to; a more I I manageable size. 1 The truncation of the response symmetrically; around its center point Jith modification to the coefficients is the same !as multiplying by' a I W {1, R 0, I otherwise I I I (5.13) Th. th f I: "I' I R t I d Th' d ff fi 1s 1s e am11ar ec angu ar w1n ow. 1s w1n ow su ers rom a non' I uniform convergence called Gibb's phenomenon. This effect can be I I I compensated fpr by the use of a tapered window. The Hamming is an example of su6h a .rindow. I I I Hamming Window Design I 'I I, I I W {6.S40.46cos(2nn/M), HamI i ID, otherw1se I i 44 I I
PAGE 55
I I I' 0.6: I 0.4' I. I I 0.2 1 Hamming Window H=12 1 : 2 4 6 8 10 ,I F .. I ; gure5.4 : i I I I r The Hamming Window for M= 12. 1 I i I The window is1 :multiplied by the ideal impulse response in the time domain, in this case (5.12) and (5.14). The result is shown Jelow in i I I figure 5.5. i I, J: I 1 : I I, 11: I I' I' I Jr 45
PAGE 56
I Figure5.5 The truncated impulse response for a lowpass filter M=12. i : I I I i A 12th order fi'lter Is chosen .for the example because this is the maximum 'II :! size that the DVDID realtime implementation could handle in terms of filter I I taps. In the qhip RAM resources are extremely limited on the lower end I 'I DSP's. The freque,ncy response of a filter with a cutoff frequency of 3400 Hz : I and a delay ofi M/21 is described in figures 5.6 and 5.7. i. : .J: 1: I I. I' I: II '!! ,, !I ,. I I I I I I 46
PAGE 57
,, [, j' 3 I ..... "' I> I I I 1: I 30 f Figure5.6 Magnitude response for the Hamming window filter M=12. , I I 47 1\. \ 1\ \ \ I
PAGE 58
I i! I' arg(B()1 ) I 1,. I 1,' L.4 ... .I .I I I I I I i I 1\ \ \ \ 1\ \ 1\ r\ r\ \ 1\. \ \ \ \ \. \ \ I\ \ :. '"7o... f '"4ooo ... I I i Figure5.7 "fihe Phase response of the Hamming wihdow filter M=12. i i ' Unfortunately response rolls off too rapidly. Its 3 dB point is around I I 3150 Hz and at 3400 Hz it is down 6.0 dB. This will not meet the I I II I requirements in Bell Publication 43801 for Line cards (see figure 1: .I . 5.13). If the cutoff.lfrequency 1s moved up to 4000 Hz (th1s doesn't create a I, 'I I problem with aliasin'g because the channel is bandlimited by the CODEC) and the delay is kept the same, then the rolloff at 3400 Hz is 2 dB. This is still unacceptable. [The 1effects of the Hamming filters on the VDD algorithms can [ I be further expired\ using the ham_sim.c routine provided in appendix D. This program user enter different tap values, bank sizes, and cutoff i ,1 48
PAGE 59
j; I' frequencies. "tile bank is then computed and loaded into a file on the ' harddisk. The VDD algorithm is then simulated the same as in di_sim.c i I discussed in chapter IV. I To the results from the Hamming window and still maintain the simplicity of design a Kaiser window will be used. I I !:' I i' '. I, I: I 49
PAGE 60
I' Kaiser Window Design I' I Amplitude Kaiser Window (Beta=2) 1 0.9 0.6 0.4 0.2 ........ _......._..._..._......__ ___ ....... _____ ..........._ Time ( nT) r 4 6 9 10 12 0.2 I I Figure5.8 The Kaiser window for beta = 2. I The Kaiser win'doW closely approximates the Prolate Spheroidal wave li .I functions. These functions are optimum in the sense that they are highly I I concentrated both in the frequency and the time domain. Since they are very hard to an approximation called the zerothorder modified Bessel function 10[x] i1s us:ed. The Kaiser window described by (5.15) is computed I using 10[x] : ; I. I I ' 50
PAGE 61
I' I 'l ,1, .rJ !: ,I I i I 1: ., . .i' I : j {l0[,8(1[(na.) I a]2ts]/10(,8), 0 S n S M, :: .0, otherw1se I (5.15) ' I I I I where beta is ihe Jhape factor and alpha is the order divided by two. These I two the tradeoff between mainlobe width and sidelobe ripple. A algorithm for the modified Bessel function can be found 1 : .! in "Numerical Recipes inC". Figure 5.9 shows how the window becomes li I more concentrated I in time as the value of beta is increased. : I I' I I, I l I I I I I I !. I' I I I , I I I I l I I ,! i: l : ' j ; .,, I I '' li' I J [ : j I I I .. I ,. 1:. I ; II I .. 51
PAGE 62
0. Amplitude 0 ,. 0.25 l I :i I Figure5.9 I I Beta Ti.me (nT) The Kaiser window as a function of beta. The values for beta and M can be predicted with a set of empirically derived designi equ:ations from Kaiser (Oppenheim and Schafer 1989). The : ' ripple, and transist!on bandwidth parameters are specified. Then the formulas order M and the B needed to achieve these design goals. The problem using these equations for the VDD is that the desired filter li: is not a lowpass but an approximation to an allpass filter. Therefore the I J: I 52
PAGE 63
'. I I and ripple are not pertinent and Kaisefs prediction formulas are of limited use. The filters used for the VDD were designed ' I empirically. The frequency responses of several different filter designs can : I be explored whh fi.1athematica and the 'C' design programs in the appendices. I 1 ' In kai_sim.c F) the effects of the Kaiser window filter on the VDD ' algorithm can txplored. This program parallels di_sim.c except the FIR filter coefficients are developed using a Kaiser window rather then the CVDD polynomial The program allows the user to vary the VDD's P arameters and performance in terms of the SID. The kai sim.c i I program does 'not the magnitude or the phase response of any of the I i individual FIR Instead Mathematics can be used to explore these I' I aspects of thel.filters. Below are several examples. !' I I I ' I I I I I I I. I I' 53
PAGE 64
4000 Figure5.1 o ,The magnitude response of a 12th order Kaiser lowpass design, shows the effects of varying beta. I .: I The figure s1hows an FIR filter response with a delay o=O from a VDD filter bank. figure it is easy to see that the best performance will occur when B is approximately 3.5. In figure 5.11 the performance of an FIR computed at a= 0 is plotted I over a M.i This range was picked by the results generated from the kai_sim.c prodiam! which predicts that performance of the VDD drops off I I I I I I' .I .]' '. 54
PAGE 65
significantly the order is less then 12 (see the kai_sim.c output in table 5.1 and111 .. output in table 5.2) and the possibility for I oscillations I I ' j I II 1 75 0.5 i I I J Order (t1) The magnitude response as a function of order M. i' , I! i : I ,, I 55
PAGE 66
i i l i I i Table 5.1 results from kal_sim.c Descflption of the SID performance .for a small number of taps. II Trial I 1 2 3 4 I Error (PPM} : 10000 10000 10000 10000 Samples 100 100 100 100 Banks 64 64 64 64 Taps 8 8 8 8 Beta li I 3.5 3.5 3.5 3.5 Fe (Hz} 3900 3900 3900 3900 Frequency I 300 1020 3000 3400 I SID (dB} I 48.9194 41.3367 24.5002 12.7476 i I I I The following pair of plots display the magnitude and phase responses I' J for d=O, M=12land fc=3900. The passband is sufficient for a line card application th, ripple becomes more significant as the cutoff frequency is approachedji 1 I I i I 56
PAGE 67
I I, IH(f) I 1 0.8 0.6 0.4 0.2 . I' i' ., .. 'I I I I t1a.grd tude Response 0 1000 2000 3000 4000 Figure5.14 The magnitude response of the Kaiser window filter computed at a=o and with M=12. I I I I I' I I 57 ., I I 1: ,. ,, !.
PAGE 68
,I !. :I ;I '' Phase :; I Phase P.esponse 1: I 3 ,', I ,, 2 I, ,, II II 1 :I : 1r f 1 2 3 i I I 4000 Figure5.113 The phase response of the Kaiser window filter. M=12 . i I I. .I The ripple1 characteristic for the FIR filter is shown in figure 5.12. ,, I The ripple over the passband is the limiting factor for the VDD filter design. the filter is meant to be an approximation of an allpass I I filter the ripple' shduld be kept as small as possible. The effect of ripple on 1:. I the VDD algorithm1 can be measured with the nsimple.c simulation program i :! (see appendix! 'E). 'i The nsimple.c program evaluates the maximum ripple i' I ,I ., across the entire tilank of filters at a certain frequency. Using this program, I' I different values of cutoff frequency and the beta factor can be explored. I Then if the is satisfactory the same parameters (order, filter number, beta, and can be inserted into the kai_sim.c program and I' the performance of the VDD algorithm can be evaluated. I II :i I I 'I, I; : 58 1 i :
PAGE 69
r. 1: F.. igure5.12 The ripple of a Kaiser window filter. I I I : I Table 5.2 ,ntains a sample of the nsimple.c output. The first column is the normaliz ed frequency In 21t units. The next two columns are the ,, I I maximum and: mirtimum ripple in dB across the entire bank of filters at that I 1 I frequency. Tre frequency points used are 400, 1000, 3000, 3100, 3200, I I 3300, 3400, and 4000 Hz. .I I I. I I I I I' 59
PAGE 70
I ,. ,. I :1 I Table 5.2 i:sarrple simulations from nsimple.c Table size= 64. Taps= .. 'I 12. Beta = Cutoff frequency = 3900. 'I Frequency I' (21t) Maximum ripple (dB) Minimum ripple 'I 0.05 I 0.0619 0.0092 I I :. 0.125 0.0212 0.0375 ; : I: 0.375 I 0.2598 0.2047 'I II 0.3875 ' 0.4327 0.1452 I !: I 0.4 0.4956 0.0044 0.4125 0.3756 0.2373 0.425 0.0059 0.5476 0.4375 0.7429 0.9176 1: 0.5 ,. 2.3345 127.0124 II l i !I I II I I :I I :1 The at 400 Hz is well within specification, but at 3000 Hz the ripple is of range. Another problem is the maximum difference !I :; in ripple 'filters in a bank. If the ripple is abnormally large a test I I I tone will appear to fluctuate as the filters in the VDD are traversed. The 1: .: maximum at:l3400 Hz In table 5.1 is approximately 0.5 dB. This could !1 (dB) I' lead to for a test tone in this region .. To alleviate this problem the I I I filter order was inqreased. The increase in performance is shown in table I 'I :I" ., :' I 1: ' !. ' 60 II : I I [, ,j
PAGE 71
I . I :! I , 5.3 below. the maximum difference between the filters is very small, '' I' : about a hundredth of a dB at 3400 Hz. I, II I I Table 5.3 ::sarrple simulations from nsimple.c Table size= 64. Taps= 30. Beta = 2J0. Cutoff frequency = 3900. I I, Frequency (21t) I' I' 0.05 I 0.125 0.375 0.3875 0.4 0.4125 0.425 0.4375 0.5 ': I I I I :l I' ,I I 'I: I I II I I ;II 04 I l, l :1 Maximum ripple (dB) 0.0121 0.0252 0.1554 0.1622 0.0767 0.0344 0.1186 0.2956 7.1443 Minimum ripple (dB) 0.0010 0.0168 0.0234 0.0683 0.0679 0.2756 0.1255 0.0137 120.4692 A line a specification of 0.15 dB to the measurement at 1;, 1 000 Hz over t,he f;requency range 300 to 3000 Hz. Outside of this band the I I' 'I 'I II 61
PAGE 72
specifications loosened. The figure below describes the magnitude requirements a, voice channel in the Bell system. The channel is l' ,, relatively flat 300 to 3000 Hz. This is where most of the voice energy I exists. Between 3oo and 200 Hz the transmit channel can drop to 2.0 dB or ' rise to +0.15 relative to 1 000 Hz. The receive channel may only drop to I 1.0 dB. The attenuation at 60 Hz must be greater then 14 dB in the transmit I: : channel. Betw:een: 3000 and 3400 Hz both channels may drop 1 .5 dB relative I; .I to 1000 Hz. \he 9hannel is bandlimited by the CO DEC filters, therefore the I spectrum will be limited to 4000 Hz. Magnitude (dB) I +0.15 0. I 0.15 ,. 1 .. I Receive 2. \Channel 1.5 dB Transmit Channel I I 1: I 60 340 Frequency (Hz) I; j Figure5t3 The magnitude requirements for a 04 channel bank. I I 62 I J
PAGE 73
Performance I. i Is the Kaiser window design adequate for a 04 channel bank? Does the I resulting filter bank meet the ideal frequency and time domain requirements I described at the beginning of the chapter? These questions cannot be I I : answered with a set of equations that will predict the performance of a filter bank. The overall characteristics of the bank as a whole must be measured I and weighed against the requirements of the telephone network. The tools in I the proyide a method for empircally collecting performance data I 1 for various choices :of B, M, and fc. From this data the feasibility of the Kaiser window design can be measured. I To meet the Bell specifications the phase hits must be stopped or i I reduced. The '{DD aoes this at the expense of a small amount of phase jitter I I each time the fi:lter is switched (see chapter IV). If an adequate bank of I filters such as 28 lis provided, the phase jitter is about 0.3529 degrees. This is well belpw the 2 degree limit stated in the Bell specification 43801 I and leaves rootn in; the jitter "budget" for the rest of the circuitry. I The VOl;) is to remove the periodic phase hits that occur, but it I I must not disturil the1 magnitude characteristics of the channel. The effect of I' the VDD on the! magnitude response is governed by the ripple in the voice: I band. This ripple is a characteristic of an FIR filter designed with the Kaiser II I I I I i il 63 I I' I
PAGE 74
., I window. The amount of ripple depends on the order of the filter and the beta I factor used in kaiser window. The ripple at a certain frequency across I I the entire be measured with the nsimple.c routine (see table 5.1 and 5.2). If the variance of the ripple is abnormally large across the bank an : ; oscillating ettebt can occur. Another measure of the ripple and its effect can be seen with the program. Here the performance of the VDD is ' measured with! the1s10 metric (see equation 4.1). This parameter is specified in Bell pJblication 43801 (AT&T 1982) to be at least 35 dBm. A I typical measurement on a line card is 38 dBm. This test is performed with a I I 1 kHz test at (!) dBm. The unit dBm is decibels in reference to 1 I milliWatt (mW). Therefore, I I li S /D :+.1 O!log(1 mW /Nunlt) = 38 dBm ( 5.1 6) 0 I and I Nunit = mW/1 03 8 = 1.5848 X 107 ( 5 .17) I I This is the level at the output of the 0/A converter in the receive path. How will this level be affected by the introduction of the distortion from the i' : VDD? The vop a 0.707106 Voltrms (one volt peak) sine wave as a I test tone. The contained in this sequence is given by equation (5.18) ]i assuming a 60Q n !termination: I 64 ,,
PAGE 75
I I I I I I I I P= Vjtropn I I (5.18) 1 I which is equal! to the signal power. I = 'f'!IW I 1,. This power is lused to compute the noise level for the VDD. Using an I example S/0 of 43, .43 dB from table 5.4, the noise level is calculated. I I i S /D q.Jog(0.8333 mW/Nvo0 ) (5.19) I I Nvoo 10.8333 mW I 1 04.343 (5.20) I i The noise fromi!the IVDD process is, I I Nvoo = : 3. x 1 0 Assuming that lhe noise generated by the VOD is uncorrelated to the noise in I ' I the quantizatiol,l prqcess, then the noise levels will add. I i I Ntotal + Nunlt ( 5 21 ) . I : I I I 65
PAGE 76
The resulting Jotal, noise level is, [, I Ntotal =:=' 1. 9163 1 X 1 0"7 I' and the new SlD fqr the entire receive channel is, dB I i : This analysis predicts that the SID will suffer approximately a 1 dB loss In SID due to thel lintrbduction of the VDD using the filters generated in the I' '! example from 5.5 (trial 1 ). This SID is above the Bell specification I, for SID. The specification states that a minimum SID level of 35 dB must be met across thJ: of 3003000 Hz. The kai_sim.c program allows the FIR filter to be varied and the VDD simulated to see if the Bell requirements Table 5.4 below shows the effect the cutoff 1 i frequency fc on the SID of the channel. The first trial is given as a I reference to show the flatness of the response in the middle of the band. At I' I the band edge of 3400 Hz the SID has degraded well below an acceptable level. I This can be improved by increasing the cutoff frequency towards 1: the Nyquist rate. The VDD filter doesn't provide any bandlimiting function, i' therefore the rolloff of the filter is of little importance. The last two I examples show'l that. the SID at the band edge has been significantly increased I I 0 I I! ,. 66
PAGE 77
' by increasing the butoff frequency but is still well below the 35 dB I I I required. I Table 5.4 I Siniulation results from kai_sim.c. With varying cutoff I frequencies. Trial 1 2 3 4 Error (PPM) I 10000 10000 10000 10000 Samples 100 100 100 100 ,. I Banks 64 64 64 64 Taps 12 12 12 12 Beta 3.5 3.5 3.5 3.5 Fe (Hz) I 3400 3400 3900 4000 Frequency (Hz) 1020 3400 3400 3400 SID (dB) 42.8242 5.9862 19.7161 21.7995 I I I I To enhance the SID performance at the voiceband edge three other parameters anaylzed: the shape factor, the order, and the number of I I filters in the VDD qank. I From figure : 5.1 0 a B of approximately 3.0 seems to be appropriate I for the flattest over the voiceband. Table 5.5 shows the results of I i, I' 67 I I
PAGE 78
several trials with .rarious values of beta. It focuses in on the value that will give the best bver the voiceband. Table 5.5 1 Sirri1ulation results from kai sim.c Anaylsis of the shape I' I factor B and its effect on the VDD performance. I Trial 1 2 3 4 Error (PPM); 10000 10000 10000 10000 Samples I 100 100 1 00 100 I Banks 128 128 128 128 Taps 1 2 1 2 12 1 2 Beta 2.0 3.0 4.0 3.5 Fe (Hz) 3900 3900 3900 3900 Frequency (Hz) 1020 1020 1020 1020 I SID (dB) 43.4356 47.4389 47.5151 47.6937 From the resulls in i table 5.5 the beta needed is approximately 3.5. I The pa1rameter is the number of FIR filters needed for the VDD. I Earlier it was shown that the phase jitter introduced by the VDD into the channel was ab.out'1o.3529 degrees when using 128 filters. This is well ,. below the 2.0 degree maximum. If the VDD size were cut to 64 filters the I I I phase jitter t;>e doubled, but it would still be well within specification. I I I' I 68
PAGE 79
I. I I I What effect does the number of filters have on the SID? Table 5.6 shows that I I there is considerable improvement in the middle of the voiceband but the performance gains :are not so pronouced at the band edge. I' I I I Table 5.6 Simulation results from kai_sim.c Anaylsis of the number of filters and its on the VDD performance. i I Trial 1 2 3 4 Error (PPM)' I 10000 10000 10000 10000 Samples 100 100 100 100 Banks 64 64 128 128 Taps 12 12 12 12 Beta 3.5 3.5 3.5 3.5 Fe (Hz) 3900 3900 3900 3900 I 1: Frequency (Hz) 1020 3400 1020 3400 SID (dB) 42.8242 19.7161 47.6937 19.9032 I I i I The last order (number of taps) can provide considerable improvement thel band edge. Table 5.6 shows approximately a 12 dB increase in Sid at tpe band edge at the price of a slight degradation in the middle of the voicelband. I' I 69
PAGE 80
I I I Table 5.7 Sim.ulation results from kai_sim.c Anaylsis of the filter order and its effect on the VDD performance. I Trial 1 2 3 4 I Error (PPM)' 10000 10000 10000 10000 Samples 100 100 100 100 Banks 64 64 64 64 Taps I 1 2 1 2 20 20 ,, Beta 3.5 3.5 3.5 3.5 Fe (Hz) 3900 3900 3900 3900 I Frequency (Hz) 1020 3400 1020 3400 I SID (dB) 42.8242 19.7161 41.2004 32.4810 ,, I i One other characteristic of the Kaiser window design is the I : degradation of :the over the voiceband. This is to be expected since the ., ripple of the Kaiser window increases as the cutoff frequency I, is approached.' I 1: I i I I I ,, ,. I I' : I I l 70 I'
PAGE 81
1 : I Table 5.8 results from kal_slm.c Anaylsis of the ripple from the Kaiser and its effect on the VDD performance. li II Trial I 1 2 3 4 I Error 10000 10000 10000 10000 I Samples I! 1 00 100 100 100 Banks 128 128 128 128 Taps 12 1 2 12 1 2 Beta I 3.5 1: 3.5 3.5 3.5 Fe (Hz) I 3900 3900 3900 3900 Frequency (Hi) 300 I 1020 3000 3400 SID (dB) 52.0755 47.6937 37.5844 19.9032 t: I! From tables and the fact that oscillations may be possible when the filter is then 30 taps (see table 5.1 above), a VDD filler with the followlfg Jarameters would seem to be adequate: B = 3.5 [: M = 30' Ji Filters[:= !28 I i fc = 4000 i I 71
PAGE 82
CHAPTER VI FIXEDPOINT PROTOTYPE IMPLEMENTATION I A version of the VDD was implemented on a D4 channel card using a 5 Digital Signal Processor (DSP). The computational 1: power of the was limited by its internal clock. The TMS320C15 processor hJd a 20 MHz internal clock and a 200 ns instructional cycle time. The rate on the 04 card Is 8 kHz. Thus, every 125 liS a new sample was This only allowed for 625 instruction cycles, not I' I enough to new coefficients in realtime during each sample period before the sample arrived. : I I To this problem XEL DVDD prototype stored a bank of precalculated FIR icoJfficients in program memory and transferred them to RAM I I I when needed, fhus\ trading program memory space for processing time. The DVDD prototype used a bank of 128 FIR filters each with 12 taps. These I' I FIR's were caldulated with a Kaiser window. The drift rate between the two clocks was with test hardware and stored into the DSP RAM, then the prototype las A Hewlett Packard phase hit measuring set was I' .1 I' used to measur,e th;e performance of the output. The phase hits on the output I .. signal were from approximately one every 2 seconds with no DVDD filter to one hours when implementing the DVDD filter. Since the 72
PAGE 83
,, .I I drift rate was only estimated there was a gradual build up of error until the I elastic buffer either overflowed or underflowed. This caused a phase hit of ' several microseconds. If the drift rate were measured and updated periodically thi,s would not have occurred. However the techniques for measuring the. rate are out of the scope of this paper. The residual phase distortion caused by the filter coefficient swapping was observed to be well below the 2 peak to peak allowed for a line card. The prototype I demonstrates the fbasibility of the DVDD concept. I I, ,I, , I I I I 73
PAGE 84
CHAPTER VII CONCUJSIO\l The C
PAGE 85
I The DVDD I needs further development before it would be suitable for a I realtime implemerhation. A way of measuring the drift rate is needed either .I in hardware sottware. It may be possible to estimate the drift rate by counting over a fixed period of time. This estimate would be I i ,, updated periodicaii,Y for the DVDD. During the integration period the drift I rate estimate would remain fixed. Incorporating this adaptive drift rate 1 I ; algorithm with the DVDD discussed in this paper would provide a variable I digital delay that synchronizes an unsynchronized communication system. I I I I I I \I I I I II I '!' I 75
PAGE 86
APPENDIX A Simulation of the CVDD coefficients, di_sim /********************************************* lnclude's,equates and global memory allocation I I * * * ** . * * * * * * * * * * * * *******I I #include l I I #include ' I' I I #define NUM_G>F _COEF 8 #define N il NUM_OF _COEF #define NUM 0F BANKS 1, 1 ,i I 300 /"' Possible # of banks. "'/ double fi; !1"' Input sampling frequency (samples/sec). "'/ double Ti; double To; double I r lryput sampling period. "'/ I Output sampling period. "'/ I pi = 3.14159; I ,, \: I. I 1 I' 76
PAGE 87
I. [ : I j: I double h[NUNLOF _BANKS][NUM_OF _COEF]; /* The coefficient storage. *I i! I /*double _BANKS][NUM_OF _COEF];*/ /* The scaled coefficient */ double double I double int int int double double double int It i; /* Time index. *I II 1 dpow1 ,dpow2,dpow3; /* Different powers of the delay. I li 1 s[NUM_OF _COEF]; /* The delay line. */ I \:index; /* Filter bank index. */ I ide I; 1 /* l:he i/o rate difference. */ I I I tabsize.: I* :rhe number of filter banks. */ = 0; /* The max distortion in a sample. */ I ,fsum,frac_shift,to,w,ppmstep; I y ,step ,dstep, freq,del, *cptr, *sptr, *dptr; ,j ,j:d; I long int ppm....,shift; double input_sample = 0; int I I I' loopcnt,ocnt; I double sig_enel rgy I I /********************************************** The coefficients were given in Bill Farrow's paper for a I I 77
PAGE 88
I .1 8Tap filter. I I i double c[8][4] = 1 { 0.013824, 0.003143, 0.055298, 0.0125731 0.054062, .019287 1 0.216248, 0.077148, 0.157959, 0.1008, 0.631836, 0.403198, 0.616394, .2263641 .4655761 0.905457, 0.616394, 1.226364, 0.4655761 0.9055457, 0.157959, 0.1008, 0.631836, 0.403198, 0.0540621 0.019287, 0.2162481 0.0771481 0.013824, 0.003143, 6.055298, 0.012573}; i I I * * * * * * * .. * * * * * * * * * * * * * I File : dtsirrh.c ,. I I 78
PAGE 89
By: Udovic, modified by Marcel Wolf for the DVDD Date :1:4/2,7/91 I. : modified 1n 8/92 Changed the dist.dat file format. element. I, I DescriJiion 1 : This is a simulation of the DVDD element. I I #include #include ,,. I #define ORDER 3 1: I #define NUM OF COEF I8 I #define N 1 : NUM_OF _COEF I #define NUM_QF _SANKS 3 0 0 #define 1 1 extern double input_sample; extern double I* Possible # of banks. */ fi,Ti,To,pi,h[NUM_QF _BANKS][NUM_OF _COEF],tl,dpow1,dpow2,dpow3,s[N 1: UM_OF _COEF];:. extern double fsurn,frac_shift,to,w,ppmstep,x,dx,y; ' extern double. 1 step.dstep,freq,del, *cptr, *sptr, *dptr; extern i nt index,idel,tabsize,i,j,jd,loopcnt,ocnt; extern long int: extern double rnaxjemp; d bl '1. I d. extern ou e 1st_energy; I, I ' , II j I 79
PAGE 90
' I I' I I ' extern doublei, FILE *fp, *err._fp:;:in_fp, *out_fp; I I* * * * * *' * * * * * * * * * * * * * * * Routine : m1ain This program simulates the Digital I : I Interpolator. I i It is An ideal sine wave sample is generated on the inpl.jt clqck. This sample is resampled with an Fl R filter : and theioutput is used to calculate the error from a sine wave I generated at the local clock. The error in this simulation is a I I I constant There is no "wander" or "jitter" induced. The only I error is :a slight frequency difference in the frequency I of the two clocks used. I I I Input : U.seriinput to queries. Output ::The I 012 coefficients are stored in the file "coef.dat". These the coefficients needed for the fixed point i I ,, I implementation. I * * * * * i * * * * * * * * * * * * * * I main() 80
PAGE 91
{ I err_fp ,= f9pen ("dist.dat","w"); in_fp = ("input.dat","wn); I out_fp = fqpen ("output.dat", "w"); I I r Request # of samp es to mput. */ get_loopcnH); I r Request the clock rate difference in I parts (ppm). */ .I get_clock_r:ates(); I r Initialize sw program variables. */ I soft_i nit(); 1 r Request frequency of the sine wave. */ specify r Generate array of interpolation filters. */ 81
PAGE 92
., :I gen_tmerfo; ' r Input the first sample at t = ti. */ I ., I I = I %d\n",ORDER,NUM_OF _COEF); ' : I %d fpri errlfp, "to ;! distortion I I do { #ifdef DISPLAY J I : j printf ("The LOOPCpUNT""' %d\n",loopcnt); #end if I I 'I >= sooooo) { '' i Taps= delay # I* This event wi!l ocpur when the frequency of the output sample ciock .lis greater than the frequency of the input sample lock. It involves sample time drift in the delay and the production I .! 82 input
PAGE 93
I ,j I 1 I i of two output sample values In conjunction with the collection of one sample value to equalize the skmple rates without buffer . I .I' I underflow. I I #ifdef DISPLAY I printf("The first. of l2 output samples in a row.\n"); l #endif 1 I /* produce an output sample. ; I fir_filter(); I :i :1 ppm_ shift = ppm_shift 1 000000; frac_shift = ppm_shlft/1 000000.0; gen_sample(); #ifdef DISPLAY printf("The 2nd of 2 output samples in a row.\n"); I #endif 1 i . i I * ** * * * * * * * * * * * * . I Produce another output sample r I , 83
PAGE 94
I by performing another interpolation operation with a frac_shift value incremented by one sample unit time :1 increment. : I ,. I ; * * * * *I I I I i I I I 1 fir_filter(); 1 1 sample_shift(); ppm_shift = ppm_shift + idel; frac_shift = ppm_shift/1000000.0; gen_sample(); #ifdef DISPLAY i I I printf("Another .pass through loop 1.\n"); I I ' #endif } I else 'lf(ppm_shift <= 500000) { :. :! I 1 J I I I 84 I :I
PAGE 95
I I I :1 I :\ /* This will occur when the frequency of the output I I sample clock is less than the frequency of the :\ input sample It involves sample time drift in the prediction dJection, and the production of : I one output sample ::Value in conjunction with the I I I collection of two sample values to equalize '. I the input/outpat' sa1mple rates without buffer I I overflow. I ., I #ifdef DISPLAY i .. I printf("No output samples produced this time.\n"); I I #endif I .\ /* Skip production of an output sample this iteration but realign interpoiJtion operation to unit shifted input sample stream. */ I I I I sample_shift(); ppm_shift = ppm_shift + 1000000 + idel; frac_shift = ppm_shift/1 000000.0; #ifdef DISPLAY printf("Another pass:\ through loop 2.\n"); :1. I I I ,I .. I 85
PAGE 96
#endif ,. :J ,} j { I I }' #ifdef DISPLAY printf("ppm_shift 1 I #end if 'I fir_filter(); sample_shift(); gen_sample(); ppm_shift = ppm_shift + idel; frac_shift = ppm_shift/1 oooooo.o; %1d\n" ,ppm_shift); } while {loopcnt); I i ratio = %14 .8f\n", . 86
PAGE 97
i fprintf.(errJfp,"\nSignaltodistortion ratio = sig_energy/dlst_Jnergy); I %14.8f\n", ratio (dB) = % 14.8f\n", I l 1 O*!og1 O(sig_energy/dist_energy)); I I I j fprintf( err _fp, "\nSignaltodistortion ratio (dB) = % 14.81\n" ,1 O"logf O(sig_energy/dlst_energy)): printf("\nMaxlmum error energy In any one sample = I %14.8f\n", 1 O*log11 O(max_temp)); I fprintf(e'rr_J,"InMaxlmum error energy In any one sample . I %14.8f\n",1 O*logr O(max_Jemp)); } fclose '(fp); l : I fclose (errlfp); I fclose fclose (outltp); i I I I /*************t*******************************/ j I I I I ., I 1 a1 I I
PAGE 98
Routine : Initializes program variables. I Input : : Output :None. I I i soft_init() { I I ppm_shift =i= 0; I frac_shift L ppm_shift/1 000000.0; r I ti = 0; I I I to = ti(N1 )*Ti/2.0; I I /* Clear sample delay line. */ I I i for (sptr = ls,iO;i
PAGE 99
I : 1 I I I sig_en 'ergyi = dist_energy = 0.0; I* Initialize energy I I measures. */ i :I I I } I. /************i********************************/ Routine : Queries the user for the number of samples to ./ . I I process. Input :None. Output :None. I I /*********************************************/ I get_loopcnt() { I* Input sampling rate (samples/sec) */ I I I printf("&peclfy # of input samples to process (integer): "); I scanf("%d" j&loopcnt); I I / 89
PAGE 100
I I printf("\nNJmber of input samples to process = o/od\n\n",loopcnt); I I I fprintf(err_fp,"\nNumber of input samples to process = o/od\n\n" ,loopcnt) ;! I } I /*********************************************/ I Routine : clock rates Queries the user for the difference I n 1the clock rates in parts per million(ppm). Input :None. Output :None. i ...... I I I I get_clock_rates() 1 { fi I = 9600.0; I r Input sampling rate I (samples/sec). *I I Ti = 1.9/fi; \ 90
PAGE 101
printf{" Enter inpuVoutput sampling rate difference (integer ppm): I II) ; I I I scanf("%d 1 ,&idel); I I prlnti(.;.,JnJutloutput sampling rate difference (ppm) I %d\n\n",idel); I I i fprintf(err_fp,"\nlnpuVoutput sampling rate difference (ppm) %d\n\n",idel); J I I To = 000000.0)); I I } I ............ Routine : s1cJfy_toneQuery the user for the test I I Input :None. i :None. Output I I tone freq. I specify_tone() I I I 91
PAGE 102
q. { ; I printW:Enter tone frequency {real): "); I scanf{"%1f" &freq) I . : 1 i frequency = %8.31f\n\n" ,freq); fprintf{err_fp,"\nTone frequency = %8.3Jf\n\n",freq); : I I w = 2.0*p,i*freq; } I * * * * * 4 * * * * * * * * * .* * * * * * I : tiLtilter Runs the Interpolator filter to generate a I sample. Input :None. Output :None. * * * * * * * * * * * * *******I fir_filter{) 92 I
PAGE 103
{ I I I: ,. I' i' ;: .l i /* which interpolation filter to use, then use. */ I ;, I index ;J. tabsize/2 + (ppm_shift/ppmstep); I* compute index of h i: I filter. */ #ifdef DEBUG" I I ,1 prlntf("Filter = %d\n" ,index); #end if 'I I ;j++) { #ifdef DEBUG printf("coefficient ' printf("Delay line #end if I I I %d = %8.3f,sample = %8.3f\n",j, *cptr,*sptr); :I 'I pointer value is %1d\n" ,sptr) ;*I I ; i fsum! = fsum + (*cptr++) (*sptr++); I I. } #ifdef DISPLAY .. 93
PAGE 104
} output sample = o/o8.4f\n",fsum); #endif I } 1 I L ................................ I gl._sampleGets a sample of the input sine wave. I : I I Input : None. Output : I : A sample from the Input sine wave. 'I :I I I double get_sa!'11pl,(} I { r Sine wave. gejerator. *I float .1 I .. I input_sampre = sin(w*ti); I I ti ... ti + Tiqr Increment the clock. *I I I return i I I l : 1 I********** ********************************* I 94
PAGE 105
!I : .:. Shifts the delay line and gets a sample from the input. 1 I I Input No.ne. I :J : None ............................................ I I i il 1 ., sample_shlft .() { I : , I* Shift thel delay line. */ i : J &s[N1 ];j<(N1) ;j++) { l i *d t p : r= sp r; #ifdef DEBUG I printf("shlft sptr o/old, dptr = o/old\n",sptr,dptr); , #end if } I ' I l i I* Insert a generated from the RCV clock into the delay line . I I .. I 95 I
PAGE 106
: I s[O] =I get_sample(); } I. I I*********.* .I.******************************** I i i Routine: Generates an ideal output sample and uses it I along with the interpolated output to calculate the distortion. I Input i: Nohe. Output I :None /*********************************************/ i I gen_sample() { I double g,temp; I g = sin(w*to); #ifdef DISPLAY 96
PAGE 107
'I i i printf("radian! vat1ue = %14.Bf\n",w*to); printf("outputi'.timl = %14.8f\n",to); printf("ideal output value = %8.4f\n\n",g); I #end if ;I, I I I ', to= to'+ To; !. I ' ocnt++ ;If /* Increment output sample count. */ if(ocnt { /* Wait till delay line fills. */ I [ I :sig_Fnergy = sig_energy + (g*g); I. I = g fsum; I I cimpare the present distortion energy for this sampleto I the other samples. \ The max is stored.*/ I if' > max"temp) .. 1 max_temp = temp*temp; i I 97
PAGE 108
interest.*/ } } .:[ 'I 1r 9ompute the sum of the distorticm for the period of I distlenergy = dist_energy + (temp*temp); :1. i :, I : fprintf (err_fp,"%f %f %f %d % f % f\n", ,, I ' I ,to, p*te mp, (float) ppm_sh ift/1 000000.0 ,ocnt, I i ,lnpyt_sample,fsum); "%f\n" ,lnput_sample); "%f\n", fsum); I I .I ' l I I. .I i Routine. : ge:n_filters Generates an entire bank of filters to span the delay space of The coefficient table in the global area is used to I generate each Coefficient as a 3rd order polynomial. The coefficients are stored in the ditnensional array hDU and each entry is quantized or 1. .I scaled into a 012 format. This coefficient is stored in the array fc[][]. 98
PAGE 109
I' ,,, 1'. :I Input : The coefficient table from the global area. I. :1 I Output :.:: two coefficient arrays hUO and fcflU. Also a file coef.dat is filled the scaled coefficients. I : ;, I I I I * * * * * * * * * * * * * * * * * * * * * * I gen_filters().l. { int i,j,terrip; I /*********************************************/ l ' I I* Open a file :to the D.l. filter coefficients. */ / J ' . I fp = fopen ("coef.dat","w"); I I I* Get the number of filter banks needed. */ I** * * * * * * * * * * * * * * * * * *I : I :; printf("Enter number of table entries (integer): "); 'I 99
PAGE 110
I i .I i I : J scanf("%d" ,& tabsize); I I lf filter banks %d\n\n",tabsize); of filter banks %d\n\n",tabslze); I fprintf(fp,"\nNumber of filter banks = %d\n\n",tabsize); I i i I step = I i ppmstep '"' 1"000000.0/tabsize; 'l i I I ....................................... r Now calculate elch D .l. coefficient. I : 1 for (j = tabsize/2; j< (tabsize/2 +1 );J++} { i dpow1 = j*step; :I dpo+2 = dpow1 *dpow1 ; I dpow3 = dpow1*dpow2; Bank = %d\n",j); 100
PAGE 111
:1' II I I .I :I for j (i=O;i
PAGE 112
I ; o =:. fprintf(fp,"D.I. coefficient h[%d] %9. 7f\n" ,i, } } 1} I ,. I 1 i ,: I ,, I 102
PAGE 113
.I 'I APPENDIXB ,. A Sfmple Simulation from the di_sim.c program i .. I This file is djst.dat and is output by the di_sim.c program everytime a I simulation is run. iThe data describing the parameters used in the simulation I are layed out here. Usually the number of samples to is kept small ,' ,I and the drift rate is :boost up to decrease the simulation time and avoid ,, I I numerical erro11 from building up. The tone frequency is the testtone used I I to test the VDD alg6rithm as described in chapter 4. The number of banks is I the resolution ophe\ delay space. Both the order and the number of taps are fixed quanties for th'e CVDD simulation. The first column of the table is the I I I time index used, to generate the local sine wave. The next column is the 1. distortion or the difference between the sample output by the VDD and a sine :: .! wave generated by to. The third column is the delay between the two clocks. : The fourth entry is t!'le number of the sample that is being processed. It I doesn't start to r'ine .\because output is suppressed until the delay line of the FIR is filled. Colum'n number 5 is the sample that was input to the VDD and I cloumn 6 is the samble that is output. At the end of the table are the final performance for slganl to distortion. dist.dat I' I '. I 103
PAGE 114
' ., I ,'' :' Number of inpQt samples to process = 1 00 j I I Input/output rate difference (ppm) = 10000 I I I Tone = 020.000 I I I. :I Number of filter. banks = 128 :! Order= 3 to 0.000564 0.000667 0.000770 0.000873 0.000976 0.001079 0.001182 \ 1 l ,: :apsl= 8 : I I, I I 1 distortion I' I 0.000000 :1 0.000011 I 0.000018 I 0.090008 I 0.000001 i 'i 0.000007 I I '0.000025 I I' ' delay # input 0.080000 9 0.271445 0.090000 1 0 0.382678 0.100000 1 1 0.872493 0.110000 12 0.987689 0.120000 1 3 0.678806 0.130000 14 0.078467 0.140000 15 0.555563 104 output 0.188874 0.45682 0.90929 0.97831 0.63579 0.02438 0.597308
PAGE 115
, I 0.001286 I o.boooo7 0.150000 1 6 0.951054 0.964923 I I 0.001389 0.000004 0.160000 1 7 0.938195 0.928634 i 0.001492 : o.poooo2 0.170000 1 8 0.522507 0.499597 .I I 0.001595 0.000000 0.180000 1 9 0.117527 0.13553 I 0.001698 I 0.000006 0.190000 20 0. 7070990.71781 0.001801 0.000008 0.200000 21 0.993067 0.99646 I I 0.001904 O.CilOOOOO 0.210000 22 0.85264 7 0.85367 .I 'I 0.002008 0.000001 0.220000 23 0.346129 0.354 72 I I 0.002111 0.000003 0.230000 24 0.309004 0.296907 :I 0.002214 0.000012 0.240000 25 0.831462 0.822914 I 0.002317 0.000006 0.250000 26 0.996918 1.001080 ,I o.00242P 0.000003 0.260000 27 0.734333 0.758883 .[ I 0.002523 O.Q00001 0.270000 28 0.156.450 0.195765 '!' 0.002626 : 0.900013 0.280000 29 0.488607 0.45009 I 0.002729 0.000002 0.290000 30 0.923873 0.90323 ;1. I 0.002833 0.000003 0.300000 31 0.962460 0.97904 I I 0.002936 o.opoooo 0.310000 32 0.587800 0.64079 I 0.003039 0.000010 0.320000 33 0.039241 0.03159 : I 0.003142 0.000000 I 0.330000 34 0.649433 0.003245 0.000004 0.340000 35 0.980781 0.961927 I 0.003348 0.0?0001 0.350000 36 0.891016 0.930371 0.003451 0.000005 0.360000 37 0.418679 0.509844 'I I 0.003555 0.000000 0.370000 38 0.233425 0.12809 I I I 105
PAGE 116
' l I . I I ,. I 0.003658 I 0.000003 I 0.380000 39 0.785303 0.71178 0.003761 0.000003 0.390000 40 1 .000000 0.99437 :I I I 0.003864 0.000003 I 0.400000 41 0.785331 0..85905 0.003967 0.000000 0.410000 42 0.233468 0.36118 0.004070 I 0.420000 43 0.418638 0.289348 0.004173 : 0.000001 0.430000 44 0.890995 0.814310 I 0.004277 : 0.(1)00001 0.440000 45 0.980790 0.999875 ., I I 0.649468 0.004380 0.000000 0.450000 46 0.762592 0.004483 0.000002 0.460000 47 0.039286 0.202879 I 0.004586 '0.000003 0.470000 48 0.587763 0.437771 0.004689 0.000000 0.480000 49 0.962448 0.89829 I 0.004792 1 .o.dooooo 0.490000 50 0.923890 0.97887 I .! .I 0.004895 '. 0.000006 0.500000 51 0.923890 0.64946 I 0.004998 0.000011 0.490000 52 0.488646 0.03929 I I 0.005102 0.000015 0.490000 53 0.156406 0.583568 I 0.005205 1 0,000004 '!' 'I 0.480000 54 0.734302 0.959746 I 0.005308 :, 0.0100006 0.470000 55 0.996915 0.930088 0.005411 'I o.opooo8 0.460000 56 0.831487 0.511616 0.005514 0.0,00024 0.450000 57 0.309047 0.12532 I 0.005617 o.opoo24 0.440000 58 0.346087 0.70937 I i 0.005720 0.000003 0.430000 59 0.852623 0.99350 I 0.005824 0.000001 0.420000 60 0.993072 0.86025 I' I 106
PAGE 117
I l I 0.005927 I o.pooo2o 0.410000 61 0.707131 0.36369 I 0.006030 0.000043 0.400000 62 0.117572 0.286764 0.006133 ,I 0.000007 0.390000 63 0.522469 0.813061 I 0.006236 0.000001 0.380000 64 0.938179 1.000555 I I ., 0.006339 0.900006 0.370000 65 0.951068 0. 764893 I I 0.006442 0.000041 0.360000 66 0.555601 0.205687 ., I 0.006545 o.e00012 0.350000 67 0.078422 0.43591 I I 0.006649 0.000012 0.340000 68 0.678773 0.89836 I I 0.006752 0.000000 0.330000 69 0.987682 0.98091 !I j 0.006855 O.QOOOOO 0.320000 70 0.872515 0.65260 0.006958 '0.000010 0.310000 71 0.382720 0.04712 I 0.007061 '0.000025 0.300000 72 0.271402 0.578348 I: I i 0.007164 0.000014 0.290000 73 0.808993 0.959280 I .I I 0.007267 :. 0.000001 0.280000 74 0.999231 0.936443 0.007371 0.000004 0.270000 75 0.760433 0.519005 0.007474 o.dooo2a 'I 0.260000 76 0.195132 0.11799 o.oo75n 0.250000 77 0.453952 0.70145 0.007680 0.000007 0.240000 78 0.908125 0.99346 I 0.007783 o.o_poooo 0.230000 79 0.972380 0.86531 .I 0.007886 o.opoo1a 0.220000 80 0.619129 0.37116 0.007989 I 0,000005 0.210000 81 0.000045 0.275006 I 0.008093 0.000015 0.200000 82 0.619058 0.809766 :i 0.008196 0.0(!)0006 0.190000 83 0.972359 1.002069 I 107
PAGE 118
.1. '. 0.008299 0;000003 0.180000 84 0.908163 0.770555 I 0.008402 o:boooo2 0.170000 85 0.454033 0.218219 0.008505 I :I 0.160000 86 0.195043 0.42979 Of00019 0.008608 0.150000 87 0.760374 0.89606 'i 0.000022 :: I 0.008711 l 0.140000 88 0.999227 0.98439 I!. I .0.008814 0.000000 0.130000 89 0.809046 0.65870 I ,, 0.05439 0.008918 :: 0.000014 0.120000 90 0.271489 : I 0.009021 ii' 0.000036 0.110000 91 0.382637 0.572944 I 0.009124 0.000010 0.100000 92 0.8724 71 0.956441 I 0.009227 0.000003 0.090000 93 0.987696 0.939700 :I 0.080000 0.009330 0.000005 94 0.678839 0.525510 I 0.009433 0.000001 0;07()000 95 0.078512 0.10577 I I 0.009536 0J)00012 0.060000 96 0.555526 0.69677 I 0.009640 0.000012 0.050000 97 0.951040 0.99309 I 0.009743 0.(!)00000 0.040000 98 0.938210 0.86938 .I 0.009846 0.000000 0.030000 I 99 0.522546 0.38278 0.009949 :: 0.000010 0.020000 100 0.117482 0.268302 1: I ; 0.010052 :.I 0.000022 0.010000 1 01 0.707067 0.805921 I : I 0.010155 I : 1 o.qoooo9 0.000000 102 0.993062 1.002794 :1' ,. ,, Signaltodistohion ratio = 63033.98212195 'I I I :! I ratio (dB) = 47.99574744 ,, ::'. I i 108
PAGE 119
., ., Maximum error energy in any one sample = 43.64585170 109
PAGE 120
APPENOIXC I 'I. A Sample Filter Bank This bank df coefficients corresponds to the simulation in appendix B. : I This appendix shows the structure of the coefficients and how they vary over the delay space. These FIR filters were computed using Farrow's coefficient ., set. I Number of filter banks = 128 'i Filter Bank = I 0.1. coefficient hLOJ = 0.0000006 '! 0.1. coefficient h[:1] = 0.0000000 0.1. coefficient h[2] = 0.0000003 0.1. :! I coefficient h[3] = 0.9999999 D.l. coefficient h[4] = 0.0000112 ,, 0.1. coefficie'lt = 0.0000003 0.1. coefficient h[6] = o.ooooooo 0.1. coefficient h[7] = 0.0000004 ' Filter Bank = i 'i 110
PAGE 121
I !I. D.l. coefficient h[O] = 0.0004760 D.l. 0.1. D.l. D.l. D.l. coefficient t[1] = 0.0019706 coefficient h[2] = 0.0064362 : I coefficient = 0.9992507 coefficient tl[4] = 0.0079776 I I coefficient h[5] = 0.0033591 D.l. h[6] = 0.0013819 I D.l. coefficie_nt h[7] = 0.0003803 Filter Bank 62 D.l. coefficient h[O] = 0.0009436 D.l. h[1] = 0.0039008 D.l. coefficient h[2] = 0.0127223 I D.l. coefficient h[3] = 0.9982816 D.l. coefficient h[4] = 0.0160504 D.l. coefficient = 0.0067141 i D.l. coefficient Jl[6] = 0.0027513 D.l. coefficient h[7] = 0.0007565 , I Filter Bank ,; 61' D.l. coefficient n[O] = 0.0014022 : : D.l. coefficient h[1] = 0.0057910 D.l. = 0.0188598 D.l. coefficient hJ3] = 0.9970950 I D.l. coefficient h[4] = 0.0242270 I I ,I 1 1 1
PAGE 122
I 0.1. coefficient = 0.0100634 0.1. coefficient h[6] = 0.0041080 i l I 0.1. coefficient = 0.0011281 Filter Bank = 60 0.1. = 0.0018519 0.1. coefficient = 0.0076414 0.1. coefficient = 0.0248497 I 0.1. coefficient = 0.9956935 0.1. coefficient ht41 = 0.0325048 ; 0.1. coefficient n[5] = 0.0134060 0 .1. coefficient h[6] = 0.0054518 0.1. coefficient h[7] = 0.0014953 I I Filter Bank =! 59! I 0.1. coefficient h[O] = 0.0022926 0.1. coefficient h[1] = 0.0094520 0.1. coefficient h,[2} = 0.0306934 0.1. coefficient h[3] = 0.9940798 ,. I 0.1. coefficie nt h(4] = 0.0408812 0.1. coefficient h[5] = 0.0167406 0;1. hl6J = 0.0067824 I I 0.1. coefficieflt h[7] = 0.0018578 Filter Bank = 58 0.1. coefficie ht hlOI = 0.0027245 112
PAGE 123
D.l. coefficient h,[1] = 0.0112233 I I D.l. h,l2] = 0.0363918 D.l. coefficient h[3] = 0.9922564 D.l. coefficient 11,[4] = 0.0493536 ; D.l. coefficient h[S] = 0.0200662 D.l. coefficient h'[6] = 0.0080996 D.l. coefficient h[7] = 0.0022157 'I I I Filter Bank = 57 D.l. coefficient h[O] = 0.0031476 D. I. coefficier'!t h[1] = 0.0129554 I D.l. coefficie:nt h(2] = 0.0419462 D.l. coefficient h[3] = 0.9902259 D.l. coefficient = 0.0579195 D.l. coefficient h](S] = 0.0233816 D.l. coefficient hf6] = 0.0094033 I I I' I D.l. coefficient h[7] = 0.0025689 Filter Bank = 56 D.l. coefficient h'[o] = 0.0035618 I 0.1. coefficient h[t1] = 0.0146485 ,[ D.l. coefficient h[2] = 0.0473577 D.l. coefficient h[S] = 0.9879909 D.l. coefficient h[4] = 0.0665762 I : D.l. coefficient h[S] = 0.0266855 113
PAGE 124
I 0.1. coefficient h[6] = 0.0106931 I I 0.1. coefficient h[7] = 0.0029174 ; : I I Filter Bank = 55 ,J' 0.1. coeffici ent h[O] = 0.0039673 0.1. coefficient h[1] = 0.0163028 I I : 1 J 0.1. coefficient h[2] = 0.0526275 0.1. h[3] = 0.9855540 0.1. coefficient h[4] = 0.0753212 0.1. coeftici'ent h[5] = 0.0299770 0.1. coefficient h[6] = 0.0119689 I I 0.1. coefficient h[7) = 0.0032612 Filter Bank = 54 0.1. coefficient = 0.0043641 I 0.1. coefficient tl(1) = 0.0179186 0.1. coefficient h[2] = 0.0577568 0.1. coefficient = 0.9829178 0.1. coefficient h[4] = 0.0841518 l 0.1. coefficient h[5] = 0.0332548 0.1. coefficie nt hl6J = 0.0132304 0.1. coefficient h[7] == 0.0036002 Filter Bank ..;; 53 0.1. coefficient h[O] == 0.0047521 l 0.1. coefficient h[1] == 0.0194960 I 11 4
PAGE 125
I 0.1. coefficient f1[2] = 0.0627466 0.1. coefficient h[3] = 0.9800849 I 0.1. coefficient tl[4] = 0.0930655 0.1. = 0.0365177 D.l. coefficient h[6] = 0.0144775 ; 0.1. coefficient hf7J = 0.0039344 Filter Bank = 52 0.1. coefficient h[O] = 0.0051315 0.1. coefficient h[1 I = 0.0210354 0.1. coefficient h[2J = 0.0675981 1 J I 0.1. coefficient h[3] = 0.9770579 D.l. coefficief1t h[4] = 0.1020596 0.1. coefficient h[S] = 0.0397646 I I 0.1. coefficient h[6] = 0.0157098 ., D.l. coefficient hl71 = 0.0042638 Filter Bank = 511 I 0.1. coefficient h[O] = 0.0055023 : 1 : 1 0.1. coefficie nt h[1] = 0.0225369 0.1. coefficient hJ2] = 0.0723125 I 0.1. coefficient h[3] = 0.9738393 0.1. hf4) = 0.1111317 0.1. coefficient h[S] = 0.0429944 0.1. coefficient = 0.0169273 .. 115
PAGE 126
' I I 0.1. coefficient = 0.0045883 Filter Bank = 50 I 0.1. coefficient = 0.0058645 I 0.1. coefficie'nt h '[1] = 0.0240008 0.1. coefficient = 0.0768910 .I I 0.1. coefficient h[3) = 0.9704317 0.1. coefficient h[4] = 0.1202790 0.1. coefficient h[5] = 0.0462060 0.1. coefficient hl61 = 0.0181296 0.1. coefficient h[7] = 0.0049079 I I' I Filter Bank = 491 0.1. coefficient h .[O] = 0.0062182 0.1. h[1] = 0.0254272 0.1. coefficient h:[2] = 0.0813347 0.1. coefficient h[3] = 0.9668378 0.1. I coefficient h[4] = 0.1294991 0.1. coefficient h[S] = 0.0493980 ., I 0.1. coefficient h(6] = 0.0193165 0.1. coefficient h.[7] = 0.0052225 Filter Bank = 48 0.1. coefficient h[O] = 0.0065633 0.1. coefficient h[1] = 0.0268164 0.1. coefficient = 0.0856447 11 6
PAGE 127
0.1. coefficient = 0.9630602 D.l. coefficient h[4] = 0.1387893 ; I I D.l. coefficient h[5] = 0.0525695 D.l. = 0.0204879 D.l. coefficient 1:1(7] = 0.0055321 Filter Bank = 41 D.l. 1:1[0] = 0.0069000 D.l. coefficient = 0.0281686 D.l. coefficiJnt = 0.0898222 D.l. coefficient H[3] = 0.9591013 D.l. coefficient = 0.1481470 D.l. coefficient h[5] = 0.0557192 I I 0.1. coefficient h[6] = 0.0216434 D.l. coefficient h[7] = 0.0058367 I Filter Bank = 46 I D.l. :1 i coefficient h[O] = 0.0072282 D.l. coefficient hb] = 0.0294840 ; : I 0.1. coefficient h[2] = 0.0938683 D.l. coefficient h :[3] = 0.9549639 D.l. coefficient h[4] = 0.1575696 0.1. coefficient = 0.0588459 D.l. coefficient h[6] = 0.0227829 I I I D.l. coefficie nt h[7] = 0.0061363 117
PAGE 128
Filter Bank = 45! I I 0.1. coefficient = 0.0075480 I 0.1. coefficient h[1] "" 0.0307629 0.1. coefficient = 0.0977843 0.1. 0.1. 0.1. i = 0.9506504 I I coefficient h[4] = 0.1670546 coefficient = 0.0619487 0.1. coefficient h[6] = 0.0239062 I 0.1. coefficient h[7] = 0.0064307 I Filter Bank = 44: 0.1. coefficie 'nt h1[0] = 0.0078595 I 0.1. coefficient h[1] = 0.0320055 I 0.1. coefficient h[2] = 0.1015712 I 0.1. coefficient h[3] = 0.9461636 I 0.1. coefficient h[4] = 0.1765993 0.1. coefficient h[5] = 0.0650261 i 0.1. coefficient h[;61 .. 0.0250130 0.1. coefficient h[7] = 0.0067201 I Filter Bank = 43 I I 0.1. coefficient h[O] = 0.0081626 0.1. coefficient .. 0.0332119 0.1. coefficient h[2] = 0.1052303 I 0.1. coefficient h[3] = 0.9415060 118
PAGE 129
I I 0.1. coefficient h[4] = 0.1862012 0.1. coefficient = 0.0680773 I 0.1. coefficient h[6] = 0.0261031 0.1. rl[7] = 0.0070042 Filter Bank = 42 I 0.1. coefficie : nt = 0.0084574 0.1. hp] = 0.0343825 I 0.1. coefficient h[2) = 0.1087626 0.1. coefficint = 0.9366801 0.1. coefficient hl41 = 0.1958576 0.1. coefficieht h l[5] = 0.0711009 0.1. coefficient h[6] ... 0.0271764 0.1. coefficient h[7] = 0.0072832 I Filter Bank = 41 ; I 0.1. coefficient = 0.0087440 0.1. coefficient h[1] = 0.0355174 D.l. coefficient h[2] = 0.1121693 :1 I ;, 0.1. coefficient h[3J = 0.9316886 i 0.1. coefficie nt = 0.2055661 ; 0.1. coefficient h[5] = 0.0740958 I 0.1. coefficient h[6] = 0.0282325 0.1. coefficient h[7] = 0.0075569 Filter Bank = 40 119
PAGE 130
I I 0.1. coefficient h[O] = 0.0090223 I 0.1. coefficient Hf1] = 0.0366168 0.1. coefficient = 0.1154516 0.1. I I coefficient t![3] = 0.9265340 0.1. coefficie nt h.[4] = 0.2153239 I 0.1. coefficient h[5] = 0.0770609 0.1. coefficie nt h ;[6] = 0.0292712 0.1. coefficient h[7] = 0.0078253 Filter Bank =: 39 I D.l. coefficient h[O] = 0.0092924 :.. I 0.1. coefficient h[1] = 0.0376811 0.1. coefficient = 0.1186107 D.l. coefficien t h[3) = 0.9212190 I I D.l. coefficient h[4] = 0.2251285 :1 D.l. coefficient h[5] = 0.0799950 I 0.1. coefficient h[6] = 0.0302924 I D.l. coefficient h;l?] = 0.0080884 '! Filter Bank = 38. 0.1. h![O] = 0.0095544 D.l. coefficie nt h[1] = 0.0387103 0.1. coefficient hl21 = 0.1216476 D.l. h(31 = 0.9157461 ' 0.1. coefficient h[4] = 0.2349774 120
PAGE 131
0.1. h[5] = 0.0828970 0.1. coefficie nt hl61 = 0.0312958 0.1. = 0.0083462 Filter Bank = 37: . : I 0.1. coefficient h[O] = 0.0098083 0.1. coefficient h[1] = 0.0397047 I 0.1. Ml2] = 0.1245636 I 0.1. coefficient h[3] = 0.9101179 0.1. coefficient h[4] = 0.2448678 0.1. coefficiet'nt h,[5] = 0.0857656 0.1. coefficient h[6] = 0.0322812 0.1. coefficie : nt h[7] = 0.0085986 .. Filter Bank = :36 0.1. coefficient h1[0] = 0.0100541 I I I 1 0.1. coefficient hp] = 0.0406646 0.1. coefficient h'[2] = 0.1273597 0.1. coefficient h[3] = 0.9043371 I I 0.1. coefficient h[4] = 0.2547973 D.l. coefficient h[S] = 0.0885999 I 0.1. coefficient h[6] = 0.0332483 I I 0.1. coefficient h[7] = 0.0088456 Filter Bank = 35 ; I I 0.1. coefficient h[O] = 0.0102918 I I ' 121
PAGE 132
i D.l. coefficient tl[1) = 0.0415901 I I D.l. coefficient = 0.1300372 I D.l. coefficient h[3] = 0.8984062 D.l. coefficient ... 0.2647632 I D.l. coefficient = 0.0913985 I D.l. coefficient h[6] = 0.0341970 D.l. coefficient = 0.0090871 Filter Bank = 34: I D.l. coefficient h[O] = 0.0105216 I D.l. coefficient h[1] = 0.0424815 D.l. coefficient = 0.1325972 I D.l. coefficient h[3) = 0.8923277 D.l. coefficient h[4] = 0.2747630 I I 0.1. coefficient 11[5] = 0.0941604 I D.l. coefficient h[6) = 0.0351270 I D.l. coefficient h[7] = 0.0093231 I Filter Bank = 33 ; D.l. coefficient h,[O] = 0.0107433 0.1. coefficient h[1] = 0.0433390 0.1. coefficient hJ2] = 0.1350408 I D.l. coefficient h[3) = 0.8861044 0.1. coefficient h[4] = 0.2847940 I I 0.1. coefficient hJ5] = 0.0968843 122
PAGE 133
' .I .I 0.1. coefficient H[6] = 0.0360382 I I D.l. coefficient = 0.0095536 Filter Bank = 32 ., i 0.1. coefficient = 0.0109572 D.l. coefficient h[1] = 0.0441628 0.1. D.l. 0.1. 0.1. 0.1. coefficient h[2] = 0.1373693 = 0.8797387 coefficient = 0.2948537 I I coefficient ?[5] = 0.0995692 coefficient H[6] = 0.0369302 I D.l. coefficient = 0.0097786 Filter Bank = 311 : 0.1. coefficient = 0.0111631 I 0.1. coefficient = 0.0449532 I 0.1. coefficient tl[2] = 0.1395837 I 0.1. coefficie:nt h![3] = 0.8732333 D.l. I coefficient h[4] = 0.3049394 I 0.1. coefficient ti[5] = 0.1022139 I 0.1. coefficient h[6] = 0.0378029 OJ. coefficient = 0.0099979 Filter Bank =: 30[ I 0.1. coefficient h'[O] = 0.0113612 I 0.1. coefficient h[1] = 0.04571 03 I I I 123
PAGE 134
D.l. D.l. D.l. D.l. D.l. = 0.1416852 coefficient h[3] = 0.8665908 'i coefficient h[4] = 0.3150486 :1 coefficient ti[5] = 0.1048172 I coefficient h[6] = 0.0386560 I D.l. coefficient = 0.0102116 Filter Bank = 29! D.l. coefficient = 0.0115514 '! D.l. coefficient h[1] = 0.0464344 I D.l. coefficient H[2] = 0.1436750 I D.l. coefficient h[3] = 0.8598137 I D.l. coefficient h[4] = 0.3251787 I D.l. coefficient H[5] = 0.1073780 I D.l. coefficient h[6] = 0.0394894 D.l. coefficient fi[7] = 0.0104197 I Filter Bank = 281 '. I D.l. coefficient hlO] = 0.0117338 D.l. coefficient h[1] = 0.0471257 I I D.l. coefficient h'[2] = 0.1455542 I I D.l. coefficient h[3] = 0.8529047 i D.l. coefficient hr41 = 0.3353272 I D.l. coefficient h(5] = 0.1098951 I D.l. coefficler)t h[6] = 0.0403027 124
PAGE 135
0.1. coefficient = 0.0106220 I Filter Bank = 271 0.1. coefficient h[O] = 0.0119085 I I 0.1. coefficient = 0.0477844 0.1. coefficient = 0.1473239 0.1. coefficient = 0.8458663 I 0.1. coefficie,nt = 0.3454913 I, I I 0.1. coefficient h[5] = 0.1123674 0.1. coefficient h[6] = 0.0410959 I I 0.1. coefficient h[7] = 0.0108186 Filter Bank ..;. 26 0.1. coefficient li[O] = 0.0120755 I 0.1. coefficient h[1] = 0.04841 08 0.1. coefficient h[2] = 0.1489854 0.1. coefficient hJ3] = 0.8387011 I 0.1. coefficient h[4] = 0.3556685 0.1. coefficie.nt tl[5] = 0.1147938 I 0.1. coefficient h[6) = 0.0418686 D.l. coefficie1nt h .[7] = 0.0110094 Filter Bank = 25 I D.l. coefficient tl[O] = 0.0122347 0.1. coefficient h[1] = 0.0490050 D.l. h1[2] = 0.1505398 125
PAGE 136
0.1. coefficient = 0.8314117 I 0.1. coefficient = 0.3658563 0.1. coefficient h[5] = 0.1171729 0.1. coefficient b[6] = 0.0426206 0.1. N71 = 0.0111944 Filter Bank = 24 I I 0.1. coefficient h[O) = 0.0123864 0.1. coefficient = 0.0495673 I 0.1. coefficient = 0.1519882 0.1. coefficient = 0.8240008 I 0.1. coefficient h[4] = 0.3760520 I 0.1. coefficient h[5] = 0.1195038 0.1. coefficient = 0.0433518 0.1. coefficient h[7] = 0.0113735 I I Filter Bank = 23 0.1. = 0.0125304 I 0.1. coefficient h[1] = 0.0500979 0.1. coefficient = 0.1533318 0.1. coefficient h[3) = 0.8164708 0.1. coefficient = 0.3862531 I I 0.1. coefficient lil[5] = 0.1217853 0.1. coefficient = 0.0440618 1 0.1. coefficient = 0.0115467 126
PAGE 137
i Filter Bank = D.l. D.l. D.l. D.l. D.l. D.l. D.l. coefficient = 0.0126668 coefficient = 0.0505971 i = 0.1545717 I I coefficient h[3] = 0.8088244 I I coefficient h '[4] = 0.3964569 ' coefficient ri[5] = 0.1240161 I coefficient h[6] = 0.0447506 I D.l. coefficient h[7] = 0.0117141 j Filter Bank = ' D.l. coefficient h[O] = 0.0127957 I D.l. coefficient h[1] = 0.0510649 I D.l. coefficient h:l21 = 0.1557092 I 0.1. coefficient h[3] = 0.8010642 D.l. coefficient h[4] = 0.4066609 I I D.l. coefficient h[5] = 0.1261952 I D.l. coefficient = 0.0454178 D.l. coefficient h[7] = 0.0118754 I Filter Bank = 20 : , I D.l. coefficient h[O] = 0.0129171 D.l. = 0.0515018 I D.l. coefficient hl21 = 0.1567452 I I D.l. coefficient h[3] = 0. 7931927 127
PAGE 138
I i 0.1. coefficie'nt h[4] = 0.4168624 0.1. coefficient = 0.1283214 I 0.1. coefficient h[6] = 0.0460632 0.1. coefficient = 0.0120308 Filter Bank = 19 I 0.1. coefficient h[O] = 0.0130310 I 0.1. coefficient h,[1 1 = 0.0519079 i I 0.1. coefficient h[2] = 0.1576811 0.1. coefficient h[3] = o. 7852126 ., 0.1. coefficient h[4] = 0.4270589 0.1. coefficient tl[5] = 0.1303935 0.1. coefficient = 0.0466867 I D.l. coefficient h[7] = 0.0121802 Filter Bank =:I 18: 0.1. coefficient h.[O] = 0.0131375 ol I 0.1. coefficient h[1 1 = 0.0522833 0.1. coefficiert h[2] = 0.1585179 I 0.1. coefficient h[31 = 0. 7771265 0.1. coefficient h[4] = 0.4372479 I 0.1. coefficient hf5] = 0.13241 05 0.1. I I coefficient h[6] = 0.0472879 0.1. coefficient h[7] = 0.0123234 Filter Bank = 17 128
PAGE 139
0.1. coefficient h[O) = 0.0132366 I I 0.1. = 0.0526284 I I 0.1. coefficient h[2) = 0.1592569 0.1. coefficient h[3] = 0.7689369 0.1. coefficiant h[4) = 0.4474266 I I lll 0.1. coefficient h[5] = 0.1343710 0.1. coefficie'nt h[6] = 0.0478667 I 0.1. coefficient h[7] = 0.0124606 Filter Bank =: 16, 0.1. coefficie,nt li[O] = 0.0133283 0.1. coefficient h[1] = 0.0529433 I 0.1. coefficient h[2] = 0.1598991 I I I 0.1. coefficient h[3) = o. 7606464 0.1. coefficient h[4] = 0.4575925 0.1. coefficient hJ51 = 0.13627 41 I 0.1. coefficient h[6) = 0.0484229 0.1. coefficient h[7] = 0.0125917 ' i Filter Bank = 15 0.1. coefficient h[O] = 0.0134127 0.1. coefficient h[1] = 0.0532283 I 0.1. h[2] = 0.1604457 0.1. coefficie11t h[S] = 0.7522576 I 0.1. h[l:l] = 0.4677431 'I 129
PAGE 140
; D.l. coefficient N5J = 0.1381184 I D.l. coefficient li[6) = 0.0489562 . I D.l. coefficient = 0.0127165 I Filter Bank = 14 D.l. D.l. D.l. tl[O] = 0.0134898 coefficient I = 0.0534836 coefficient = 0.1608979 I D.l. coefficient h[3] = 0.7437732 I D.l. coefficient h[4] = 0.4778757 I 0.1. coefficient = 0.1399030 I D.l. coefficient h[6] = 0.0494665 I I D.l. coefficient li[7] = 0.0128352 I Filter Bank = 13 1 I 0.1. coefficient = 0.0135596 I D.l. 0.1. D.l. coefficient h[1] = 0.0537094 I coefficie l nt = 0.1612568 coefficient h[3) = 0.7351956 D.l. coefficient h[4] = 0.4879877 I I D.l. coefficient h .[5] = 0.1416265 I 0.1. coefficient = 0.0499534 I D.l. coefficient h[7] = 0.0129476 I Filter Bank = 12 I I 0.1. coefficient h[O] = 0.0136223 I 130
PAGE 141
' 0.1. = 0.0539060 0.1. = 0.1615235 I 0.1. coefficient h,[3] = 0.7265276 0.1. = 0.4980765 0.1. h[5] = 0.1432880 : 0.1. coefficient h[6] = 0.0504168 0.1. coefficient h[7] = 0.0130537 , ' Filter Bank = 11' 0.1. coefficient = 0.0136777 0.1. coefficient h,l1] = 0.0540735 I I I 0.1. coefficient h[2] = 0.1616993 0.1. coefficient h[3] = 0. 7177716 0.1. coefficient hl41 = 0.5081397 0.1. coefficient = 0.1448861 0.1. coefficient h[6] = 0.0508564 0.1. I coefficient h[7] = 0.0131535 Filter Bank = 1 0 : .,. 0.1. coefficient h[O] = 0.0137260 I D.l h(1] = 0.0542121 0.1. h[2] = 0.1617853 0.1. coefficient h[3J = 0.7089303 0.1. coefficient h[4] = 0.5181745 0.1. coefficient h[5] = 0.1464198 131
PAGE 142
0.1. coefficifi!nt = 0.0512721 I 0.1. coefficient h[7] = 0.0132469 I Filter Bank ..; 9 I 0.1. coefficient tl[O] = 0.0137672 I 0.1. = 0.0543222 I 0.1. coefficient h[2] = 0.1617826 I 0.1. coefficient h.[3] = 0.7000062 I I 0.1. coefficient h[4] = 0.5281783 0.1. coefficient h[S] = 0.1478880 0.1. coefficient h[6] = 0.0516636 0.1. I coefficient h[7) = 0.0133340 Filter Bank = 1:8 0.1. coefficient h[O] = 0.0138014 0.1. coefficient hJ11 = 0.0544039 0.1. coefficient ht2l = 0.1616925 I 0.1. coefficient h[3) = 0.6910020 0.1. coefficient h[4] = 0.5381487 I I 0.1. coefficient = 0.1492893 0.1. coefficient h[6] = 0.0520307 0.1. coefficient = 0.0134146 I Filter Bank = 17 1 ' 0.1. coefficient h[O] = 0.0138284 ' 0.1. coefficient h[1] = 0.0544574 I I 132 I
PAGE 143
0 I I D.l. coefficient h[2] = 0.1615159 0.1. coefficient h[3] = 0.6819203 D.l. coefficient h[4] = 0.5480829 D.l. coefficient h[5] = 0.1506228 D.l. 1[6] = 0.0523731 0.1. coefficient h[7J = 0.0134888 Filter Bank = 6 D.l. coefficient h[O] = 0.0138485 i D.l. coefficient h.[1] = 0.0544830 D.l. coefficient h[2] = 0.1612542 D.l. coefficient h'[3) = 0.6727636 : D.l. coefficient h[4) = 0.5579785 I D.l. coefficient h[5] = 0.1518872 D.l. coefficief1t h[6] = 0.0526907 D.l. coefficient ho[7] = 0.0135565 Filter Bank = 5 D.l. D.l. D.l. D.l. D.l. D.l. D.l. h[O] = 0.0138616 ""' l coefficient h(1] = 0.0544808 I coefficient h(2J = 0.1609084 coefficient h[3) = 0.6635345 I coefficient h[4] = 0.5678327 coefficient h [5] = 0.1530814 'I .J coefficiel"!t h[6] = 0.0529832 I 0 I 133
PAGE 144
0.1. 1[7] = 0.0136176 Filter Bank = 4 ; 0.1. = 0.0138678 I I 0.1. coefficient hp] = 0.0544512 0.1. coefficie nt h[2] = 0.1604797 I I 0.1. coefficient h[3] = 0.6542356 I 0.1. coefficient h(4] = 0.5776431 0 .1. coefficie.nt = 0.1542043 I 0.1. coefficient h[6] = 0.0532505 i 0.1. coefficient h[7] = 0.0136722 Filter Bank = 3 I 0.1. coefficient h[O] = 0.0138671 i 0 .1. coefficient h[1] = 0.0543943 0.1. 0.1. 0 .1. 0.1. I coefficient hl2l = 0.1599692 ; I coefficient h] = 0.6448695 I coefficient h[:4] = 0.5874070 I coefficient h(S] = 0.1552546 0.1. coefficient h[!3] = 0.0534922 I I 0.1. coefficient = 0.0137201 i Filter Bank = 2 \ 0.1. coefficient h[fl = 0.0138596 0.1. I coefficient h[]l = 0.0543103 coefficient h[2] = 0.1593782 : 0.1. 134
PAGE 145
0.1. coefficient tl[3] = 0.6354388 0.1. coefficient h[4] = 0.5971219 I 0.1. N51 = .1562313 0.1. h[6] = 0.0537081 0.1. coefficient = .0137614 1 1 ' j I Filter Bank =i, 0.1. coefficient h[O] = .0138452 D.l. coefficie : nt h[1) = 0.0541994 0.1. coefficient h[2] = .1587077 0.1. coefficient h[3] = 0.6259461 I I I 0.1. coefficient h[4] = 0.6067850 0.1. coefficient h,[5] = .1571331 0.1. coefficient h[6] = 0.0538982 I D.l. coefficient h1[7) = .0137961 Filter Bank = 0 0.1. coefficient h :[o] = .0138240 I 0.1. = 0.0540620 I 0.1. coefficient h[2] = .1579590 0.1. coefficient h[3] = 0.6163940 I 0.1. coefficient h[4] = 0.6163940 I l 0.1. coefficie,nt h(5J = .1579590 0.1. coefficient = 0.0540620 I I D.l. coefficient h[7] = .0138240 I J 135
PAGE 146
Filter Bank = 1 I 0.1. coefficient h[O] = 0.0137961 :! I 0.1. coefficient h[1] = 0.0538982 : 0.1. coefficient 1')[2] = 0.1571331 0.1. coefficie:nt h ,[3] = 0.6067850 0.1. coefficient h[4] = 0.6259461 I 0.1. ti[5] = 0.1587077 D.l. coefficient h[6] = 0.0541994 0.1. i coefficient h[7] = 0.0138452 I Filter Bank = 2 0.1. coefficient = 0.0137614 0.1. coefficie,l;lt hi11 = 0.0537081 D.l. coefficie!"lt h[2] = 0.1562313 , I I 0.1. coefficient h[3] = 0.5971219 0.1. coefficient h[4] = 0.6354388 0.1. coefficie.i;lt h[5] = 0.1593782 0.1. coefficient h[G] = 0.05431 03 I I 0.1. coefficient h[7] = 0.0138596 Filter Bank = 3 I D.l. coefficient hl01 = 0.0137201 0.1. coefficient h[1] = 0.0534922 I 0.1. coefficient h[2] = 0.1552546 ::. 0.1. coefficient h[3] = 0.5874070 I 136
PAGE 147
. .I 0.1. coefficient h[4] = 0.6448695 0.1. coefficient 1:1[5] = 0.1599692 0.1. coefficient = 0.0543943 ' I 0.1. coefficient h[7] = 0.0138671 Filter Bank = 4 0.1. coefficient = 0.0136722 0.1. = 0.0532505 0.1. coefficient h[2] = 0.1542043 0.1. coefficient n[3] = 0.5776431 I 0.1. coefficient h[4] = 0.6542356 0.1. coefficient h[5] = 0.1604797 I 0.1. h[6] = 0.0544512 0.1. coefficient = 0.0138678 Filter Bank = '5 0.1. coefficient = 0.0136176 D. I. coefficient h[1] = 0.0529832 0.1. coefficient h[2] = 0.1530814 I I 0.1. coefficient h[3] = 0.5678327 I 0.1. coefficient h[4] = 0.6635345 .I OJ. coefficient h[S] = 0.1609084 0.1. coefficient h[;6l = 0.0544808 0.1. coefficient h[7] = 0.0138616 : I Filter Bank = 6 137
PAGE 148
' i D.l. coefficient = 0.0135565 D.l. coefficient li[1] = 0.0526907 I D.l. coefficient h[2] = 0.1518872 D.l. = 0.5579785 I D.l. coefficient h[4] = 0.6727636 I I D.l. coefficient h[5] = 0.1612542 I D.l. coefficient h[6] = 0.0544830 0.1. coefficient h[7] = 0.0138485 I Filter Bank = 7 I I D.l. coefficient h[O] = 0.0134888 I D.l. coefficient h[1] = 0.0523731 I D.l. coefficient h1[2] = 0.1506228 I D.l. coefficient h[3] = 0.5480829 i D.l. coefficient h[4] = 0.6819203 I I D.l. coefficient h[5] = 0.1615159 ., D.l. coefficient h[6] = 0.0544574 'I D.l. coefficient h[7] = 0.0138284 Filter Bank = D.l. coefficient h[O] = 0.0134146 :I D.l. coefficient = 0.0520307 i I D.l. coefficient h[2] = 0.1492893 I I D.l. coefficient = 0.5381487 D.l. coefficient h[4] = 0.6910020 I I I I 138
PAGE 149
I D.l. = 0.1616925 D.l. coefficient h[6] = 0.0544039 D.l. coefficient h[7] = 0.0138014 : D.l. coefficient h[O] = 0.0133340 D.l. coefficient h[1] = 0.0516636 0.1. coefficient h[2] = 0.1478880 D.l. coefficient = 0.5281783 I D.l. coefficieht hl41 = 0.7000062 D.l. coefficient h[5] = 0.1617826 I D.J. coefficient h[6] = 0.0543222 0.1. coefficient hJ7] = 0.0137672 Filter Bank = 1 0 D.l. coefficient hJOJ = 0.0132469 D.J. coefficient = 0.0512721 I I D.J. coefficient h[2] = 0.1464198 D.l. coefficient = 0.5181744 ,, 1 D.l. coefficie11t h[4] = 0.7089302 D.l. coefficient h[S] = 0.1617853 D.J. coefficient h[G] = 0.0542121 : 1 1 D.l. coefficient hF71 = 0.0137260 Filter Bank = 11 : I D.l. coefficient h[O] = 0.0131535 139
PAGE 150
I I D.l. coefficient h(1] = 0.0508564 0.1. coefficient = 0.1448861 l D.l. coefficient h[3] = 0.5081396 0.1. coefficient ti[4] = 0.7177715 D.l. coefficient h[5] = 0.1616993 D.l. coefficient h(6] = 0.0540735 D.l. coefficient h[7] = 0.0136777 Filter Bank = 12 0.1. coefficient h[O] = 0.0130537 D.l. coefficient h[1) = 0.0504168 D.l. coefficie1nt = 0.1432880 D.l. coefficient h[3] = 0.4980765 I D.l. coefficient h[4] = 0.7265275 I D.l. coefficient h'[5] = 0.1615235 I D.l. coefficient h[6] = 0.0539060 D.l. coefficient h :[7] = 0.0136223 Filter Bank = 13 I D.l. coefficient h(O] = 0.0129476 I D.l. h[1] = 0.0499534 I D.l. coefficient h[2] = 0.1416265 D.l. = 0.4879876 I D.l. coefficient h[:4] = 0.7351955 D.l. coefficient h{51 = 0.1612568 140
PAGE 151
' 0.1. coefficient = 0.0537094 I 0.1. coefficient = 0.0135596 I Filter Bank = 14 i 0.1. coefficient = 0.0128352 0.1. 0.1. 0.1. 0.1. 0.1. 0.1. coefficient h[1] = 0.0494665 I coefficient = 0.1399030 I coefficient = 0.4778755 .I coefficient h;[4] = 0.7437731 coefficient = 0.1608979 : I coefficient h[6) = 0.0534836 0.1. coefficient = 0.0134898 I Filter Bank = :15 I 0.1. coefficient = .0127165 i 0.1. coefficient h[1) = 0.0489562 I 0.1. coefficient h'[2) = 0.1381184 I i 0.1. coefficient h[3] = 0.4677429 I I 0.1. coefficient h[4] = 0.7522575 0.1. coefficient h[5) = 0.1604457 0.1. coefficient h[6] = 0.0532283 I 0.1. coefficient h[7] = 0.0134127 Filter Bank = 16 j I 0.1. coefficient h[O] = 0.0125917 I 0.1. coefficient h[!1] = 0.0484229 141
PAGE 152
. I D .I. coefficient h [2] = 0.13627 41 I I D.l. = 0.4575923 ., D.l. coefficient h[4] = 0.7606462 I D.l. coefficient h[5] = 0.1598991 D.l. coefficient t\[6] = 0.0529433 I I ' I I D.l. coefficient h[7] = 0.0133283 I Filter Bank 17 1 D.l. D.l. I coefficient h[Ol = 0.0124606 I ' .I coefficient h[1l = 0.0478667 I D.l. coefficient h[2] = 0.1343710 ; i D.l. coefficient h[3] = 0.4474264 I D.l. coefficielnt tl[4] = 0.7689367 i I D.l. = 0.1592569 I D.l. coefficient h[6] = 0.0526284 I D.l. coefficient h[7] = 0.0132366 I Filter Bank = 18 : 1 I D.l. coefficient tl[O] = 0.0123234 ; I D.l. coefficient hpJ = 0.0472879 I D.l. coefficient h i[2] = 0.13241 05 I D.l. coefficie nt h[3] = 0.4372476 I D.l. h[4) = 0.7771262 D.l. coefficient h[S] = 0.1585179 '1 I I 0.1. coefficient h[6] = 0.0522833 I 142
PAGE 153
I I :j I D.l. coefficient h[7] = 0.0131375 I Filter Bank = : 19 I D.l. = 0.0121802 D.l. coefficie nt hbl = 0.0466867 ; 1 D.l. coefficisnt 0.1303935 I D.l. coefficient hl31 = 0.4270586 D.l. coefficient h[4] = 0.7852123 .I D.l. coefficient H[5] 0.1576811 . I D.l. coefficient h[6] = 0.0519079 D.l. coefficient h![7] 0.0130310 Filter Bank = : 20 i ; D.l. h1[0] = .;0.0120308 I : D.l. coefficient h[1] = 0.0460632 I D.l. coefficient h[2] ... 0.1283214 I D.l. coefficient h[3] = 0.4168621 I D.l. coefficient h[!4] ... o. 7931924 D.l. coefficient h[5] = 0.1567452 D.l. coefficient h[b] = 0.0515018 : [ D.l. coefficient h[7] = 0.0129171 Filter Bank = 21 :[ .' I D.l. h[.O] = 0.0118754 D.l. coefficien,t hl11 = 0.0454178 D .1. coefficient h[2] = 0.1261952 I 143
PAGE 154
. I 0.1. coefficient = 0.4066605 0.1. coefficient = 0.8010638 I 0.1. = 0.1557092 0.1. coefficient h[6] = 0.0510649 D.l. coefficient h[7] = 0.0127957 Filter Bank = 22 I D.l. 0.1. 0.1. D.l. 0.1. D.l. 0.1. 0.1. = 0.0117141 coefficient h[1] = 0.0447506 .I coefficient h[2] = 0.1240161 I coefficient hb] = 0.3964564 I coefficient h[4] = 0.8088239 coefficient = 0.1545717 .r, .. : coefficient h[6J = 0.0505971 I coefficient h[7] = 0.0126668 I Filter Bank = 23 i 0.1. coefficient h[O) = 0.0115467 i 0.1. coefficiel;lt h[1] = 0.0440618 I :I D.J. coefficient h .[2] = 0.1217853 I D.l. coefficient h[3] = 0.3862526 I I 0.1. coefficient = 0.8164703 I 0.1. coefficient h[5] = 0.1533318 I I D.l. coefficient = 0.0500979 I o , 0.1. coefficient h[7] = 0.0125304 : .1 I I 'I 144
PAGE 155
.. Filter Bank = 24 D.l. D.l. D.l. D.l. coefficient h[Ol = 0.0113735 I coefficient 1[1) = 0.0433518 coefficient h[2) = 0.1195038 = 0.3760514 .I D.l. coefficient h[4] = 0.8240002 0 .I. coefllcii>nt [5] = 0.1519882 D.l. coefficient h[6] = 0.0495673 I D.l. = 0.0123864 Filter Bank = 25 D.l. coefficient = 0.0111944 i D.l. coefficie.nt h'[1) = 0.0426206 D.l. coefficient J[2] = 0.1171729 D.l. coefficient hl[3] = 0.3658556 I D.l. coefficiem h[4] = 0.8314111 .I D.l. coefficient h[5] = 0.1505398 I D.l. coefficient h[6] = 0.0490050 I 0.1. coefficie nt 1[7) = 0.0122347 Filter Bank = 26 \ D.l. coefficient hto] = 0.0110094 I D.l. coefficient h[1] = 0.0418686 I D.l. coefficient h[2] = 0.1147938 I 0.1. coefficient h[3] = 0.3556678 145
PAGE 156
0.1. coefficient = 0.8387004 I D.l. coefficient h[5] = 0.1489854 I D.l. coefficient = 0.0484108 D.l. coefficient Iiiii [7] = 0.0120755 Filter Bank 27 I D.l. = 0.0108186 D.l. coefficient n1[1] = 0.0410959 D.l. coefficient = 0.1123674 I I D.l. coefficient h[3] = 0.3454905 D.l. coefficie,nt hl[4) = 0.8458654 D.l. J[5] = 0.1473239 i D.l. coefficient h'[6) = 0.0477844 D.l. coefficient = 0.0119085 I Filter Bank = 28 : I D.l. coefficient tl[O) = 0.0106220 I D.l. coefficient h[1] = 0.0403027 D.l. coefficie nt = 0.1098951 I I 0.1. coefficient h[3] = 0.3353262 I D.l. coefficient h[4) = 0.8529038 I I D.l. coefficient hl[5] = 0.1455542 D.l. coefficient h[6) = 0.0471257 I D.l. coefficient h[7) = 0.0117338 Filter Bank = 29 I 146
PAGE 157
0.1. 0.1. 0.1. 0.1. 0.1. 0.1. 0.1. 0.1. I I i coefficient h[O] = 0.0104197 .I coefficient h[1] = 0.0394894 I coefficient h[2] = 0.1073780 I coefficient h[3] = 0.3251777 : I coefficient = 0.8598127 I I coefficient h[5] = 0.1436750 coefficient +[6] = 0.0464344 I coefficient h[7] = 0.0115514 Filter Bank = 30 I 0.1. coefficient h[O] = 0.0102116 0.1. coefficient 1 = 0.0386560 0.1. 0.1. 0.1. 0.1. 0.1. 0.1. i I coefficient h[2] = 0.1048172 coefficient J[3) = 0.3150475 = 0.8665897 I coefficie:nt h [5] = 0.1416852 coefficient J[6) = 0.04571 03 I I coefficient h[7] = 0.0113612 I Filter Bank =, 31 : 1 I I D.l. coefficient = 0.0099979 0.1. coefficient li[1) = 0.0378029 D .I. coefficient t [2] 0.1 022139 0.1. coefficient ti[3] = 0.3049381 0.1. = 0.8732321 147
PAGE 158
I D.l. coefficient h[5] = 0.1395837 D.l. coefficient ... 0.0449532 I D.l. coefficient h[7] = 0.0111631 Filter Bank 32 I I I .I D.l. coefficient h[O] = 0.0097786 D.l. D.l. D.l. D.l. D.l. 0.1. 0.1. i coefficient h[1] = 0.0369302 coefficient = 0.0995692 coefficient li[3J = 0.2948523 I I coefficient ri = 0.8797373 f [5] 0.1373693 coefficient h[6J = 0.0441628 I = 0.0109572 Filter Bank = 33 I D.J. coefficient ij(OJ = 0.0095536 0.1. coefficient hi[1] = 0.0360382 D.l. = 0.0968843 'i D.l. coefficient h[3J ... 0.2847925 I D.l. coefficient hJ4] = 0.8861029 D.l. coefficient = 0.1350408 I I 0.1. coefficient h[6J = 0.0433390 D.J. coefficient = 0.0107433 I Filter Bank = 34 I D.l. coefficient h ![o] = 0.0093231 I I 148
PAGE 159
0.1. 0.1. 0.1. 0.1. 0.1. I I I :I coefficient t1[1] = 0.0351270 I coefficient = 0.0941604 I coefficient ri[3] = 0.2747613 coefficient J[4] = 0.8923261 coefficient = 0.1325972 I I 0.1. coefficient h[6) = 0.0424815 0.1. = 0.0105216 : 1 Filter Bank o:: 35 ; I 0.1. coefficient h[O) = 0.0090871 D.l. coefficient = 0.0341970 0.1. coefficient h[2] = 0.0913985 I I 0.1. coefficient = 0.2647614 0.1. coefficie:nt h![4] = 0.8984044 I 0.1. coefficient = 0.1300372 I I 0.1. coefficient h[6] = 0.0415901 I 0.1. coefficient tl[7) = 0.0102918 I Filter Bank = 36 I 0.1. coefficient = 0.0088456 I I 0.1. coefficient h[1] = 0.0332483 0.1. coefficient h1[2] = 0.0885999 I I 0.1. coefficient h[3] = 0.2547953 I 0.1. coefficient h[4] = 0.9043351 I I 0.1. coefficient h[SJ = 0.1273597 149
PAGE 160
I 0.1. coefficient r[6] = 0.0406646 0.1. coefficient h[7] = 0.0100541 I Filter Bank = 37 I 0.1. coefficient = 0.0085986 I D.l. coefficient lli[1] = 0.0322812 D.l. D.l. D.l. coefficient h[2) = 0.0857656 coefficient 1[3] = 0.2448657 coefficient h[4] = 0.9101158 D.l. coefficient = 0.1245636 D.l. coefficient = 0.0397047 I I D.l. coefficient h[7] = 0.0098083 I Filter Bank = 38 j 0.1. coefficient h[O] = 0.0083462 I 0.1. coefficient h[1] = 0.0312958 I D.l. coefficient r[2) = 0.0828970 0.1. coefficient h[3] = 0.2349750 I I 0.1. coefficient h[4] = 0.9157438 I D.l. coefficient h[5] = 0.1216476 I D.l. coefficient H[6] = 0.0387103 I I D.l. coefficient ti[7] = 0.0095544 Filter Bank = 39 0.1. D.l. coefficient h[O] = 0.0080884 I i coefficient h[1] = 0.0302924 I I I I 150
PAGE 161
I D.l. coefficient h[2) = 0.0799950 I i 0.1. t] = 0.2251260 D.l. coefficient = 0.9212165 ,I D.l. coefficient h[5] = 0.1186107 I D.l. coefficient = 0.0376811 I D.l. coefficient = 0.0092924 I Filter Bank = 40 1 D.l. r[O] = 0.0078253 D.l. coefficient H[1] = 0.0292712 I D.l. coefficient = 0.0770609 D.l. coefficient h[3] = 0.2153212 I l D.l. coefficient h[4] = 0.9265313 D I ff . hl [ 1 . coe 1c1ent 1 5 = 0.1154516 I D.l. coefficient h[6] = 0.0366168 0.1. coefficient 1(7] = 0.0090223 Filter Bank = 41 D.l. coefficient = 0.0075569 I D.l. coefficient hbJ = 0.0282325 0.1. coefficient 1[2] = 0.0740958 OJ. coefficient h[3) = 0.2055632 I D.l. coefficient h[4] = 0.9316856 I I D.l. coefficient 11[5] = 0.1121693 . 0.1. coefficient h[6) = 0.0355174 .I : I I 151
PAGE 162
i I I I I I D.l. coefficient j h[7] = 0.0087440 Filter Bank =: 42! I D.l. coefficient !h[O] = 0.0072832 D.l. D.l. D.l. D.l. D.l. D.l. D.l. .\ I coefficient h[1] = 0.0271764 coefficient \h[2] = 0.0711009 I coefficient h[3] = 0.1958545 i coefficient h(4] = 0.9366769 coefficient h[5] = 0.1 087626 coefficient h[6] = 0.0343825 I coefficient h[7] = 0.0084574 Filter Bank = 43 j I D.l. h[O] = 0.0070042 D.l. coefficient = 0.0261031 I D.l. coefficient h[2] = 0.0680773 I I D.l. coefficient ri[3] = 0.1861978 I D.l. coefficient h[4] = 0.9415026 D.l. coefficient = 0.1052303 D.l. coefficient h(6] = 0.0332119 I D.l. coefficient h[7] = 0.0081626 l Filter Bank = 44 1 D.l. D.l. D.l. coefficient h(O] = 0.0067201 I coefficient h[1] = 0.0250130 coefficient = 0.0650261 I I 152
PAGE 163
D.l. D.l. D.l. D.l. '11 .I I = 0.1765957 coefficie'nt h[4] = 0.9461600 ,r I coefficient 'h[5] = 0.1 015712 ;I : l h[6] = 0.0320055 I' I I D.l. coefficient h(7] = 0.0078595 Filter Bank =' 45 :\ I D.l. r(O] = 0.0064307 D.l. coefficient = 0.0239062 ;] D.l. r[2] = 0.0619487 D.l. l[31. = 0.1670507 D.l. coefficient h[4] = 0.9506466 : I D.l. coefficient h[5] = 0.0977843 t. I D.l. coefficient rl[6] = 0.0307629 o\ I i D.l. coefficient h[7] = 0.0075480 :' ,II ' Filter Bank ,; : ,46 j D.l. coefficient tit[O] = 0.0061363 0.1. = 0.0227829 '' :1 D.l. coefficient 1'1[2] = 0.0588459 D.l. h\[3] = 0.1575655 I D.l. coefficie.nt h[4] = 0.9549598 ,. I D.l. coefficient j[5] = 0.0938683 0.1. coefficieryt hJ6] = 0.0294840 0.1. coefficie'nt = 0.0072282 .I ,., I II I I I 153
PAGE 164
' Filter Bank = 471 I 0.1. coefficient h(O] = 0.0058367 D.l. coefficient = 0.0216434 I D.l. coefficient = 0.0557192 D.l. coefficient = 0.1481426 0.1. coefficient h[4] = 0.9590969 I D.l. coefficient ?lSI = 0.0898222 D.t. coefficient h[6] = 0.0281686 I D.l. coefficient b[7] = 0.0069000 Filter Bank = 481 0.1. coefficie.nt = 0.0055321 D.l. coefficient h[1] = 0.0204879 D.l. coefficient = 0.0525695 I I 0.1. coefficient h1[3] = 0.1387846 i 0.1. coefficient h[4] = 0.9630555 I D.l. coefficient h[S] = 0.0856447 I D.l. coefficient h[6] = 0.0268164 D.l. coefficient = 0.0065633 I Filter Bank = .49 I OJ. coefficient H.[O] = 0.0052225 i D.l. coefficient h[1] = 0.0193165 I D.l. coefficient h'[2] = 0.0493980 I I 0.1. coefficient h[3] = 0.1294941 I i 154
PAGE 165
'I 'I I I I I I I 0.1. coefficient h[4] = 0.9668329 I 0.1. coeffici.ent lh[SJ = 0.0813347 0.1. coefficient h[6] = 0.0254272 0.1. coefficient ih[7] = 0.0062182 I Filter Bank =: 50 I 0.1. coefficient h[O] = 0.0049079 I 0.1. coefficient = 0.0181296 I 0.1. coefficient h[2] = 0.0462060 I ,. I 0.1. coefficient h[3] = 0.1202737 ; :1 0.1. coefficient = 0.9704264 I 0.1. h[5] = 0.0768910 0.1. coefficient = 0.0240008 t 0.1. coefficient h[7] = 0.0058645 Filter Bank = 51 I I 0.1. coefficient h[O] = 0.0045883 0.1. coefficient = 0.0169273 I I 0.1. coefficient h[2] = 0.0429944 I I 0.1. coefficient 1[3] = 0.1111261 D.l. coefficient h[4] = 0.9738337 0.1. = 0.0723125 D.l. coefficient = 0.0225369 I 0.1. h[7] = 0.0055023 Filter Bank = 52 155
PAGE 166
I : I I 0.1. coefficient h(O] = 0.0042638 0.1. coefficient f(1J = 0.0157098 0.1. coefficient h[2] = 0.0397646 I 0.1. = 0.1020537 0.1. coefficient h[4] = 0.9770519 l 0.1. coefficient h(5] = 0.0675981 I 0.1. coefficient = 0.0210354 0.1. coefficient t[7] = 0.0051315 Filter Bank = 53 : i 0.1. coefficient = 0.0039344 0.1. coefficient ri111 = 0.0144775 0.1. t[2] = 0.0365177 0.1. coefficient = 0.0930592 D.l. coefficient H[4] = 0.9800786 0.1. 1[5] = .0627466 D.l. coefficient h1[6) = 0.0194960 D.l. coefficient = 0.0047521 I Filter Bank = .54 I D.l. coefficient h[O] = 0.0036002 : I D.l. coefficient h[1] = 0.0132304 I D.l. coefficient H[2] = 0.0332548 : D.l. coefficient h[3] = 0.0841451 1 D.l. coefficient h[4) = 0.9829112 1 I I I I 156
PAGE 167
0.1. coefficient .,h[S] = 0.0577568 I 0.1. coefficient h(6] = 0.0179186 0.1. coefficient \h[7] = 0.0043641 I Filter Bank = ssl D.J. coefficient h[O] = 0.0032612 I 0.1. coefficient N1] = 0.0119689 i 0.1. coefficient = 0.0299770 0.1. coefficient = 0.0753141 D.J. coefficient j[4] = 0.9855470 0.1. coefficient h[S] = 0.0526275 :. I 0.1. coefficient h[6] = 0.0163028 I I 0.1. coefficient h[7] = 0.0039673 . I Filter Bank = 56 I 0.1. coefficient h[O] = 0.0029174 I D.l. coefficient h[1] = 0.0106931 I 0.1. coefficient li1[2] = 0.0266855 0.1. coefficient = 0.0665688 I 0.1. coefficient = 0.9879835 I 0.1. h[S] = 0.0473577 0.1. coefficient = 0.0146485 I 0.1. h[7] = 0.0035618 I Filter Bank = 57 I 0.1. coefficient ti[O) = 0.0025689 I I 157
PAGE 168
D.l. coefficient N11 = 0.0094033 I D.l. coefficient h(2] = 0.0233816 I :J D.l. coefficient N3J = 0.0579117 .I D.l. coefficient N41 = 0.9902181 I D.l. coefficient h[S] = 0.0419462 D.l. coefficient = 0.0129554 'I D.l. coefficient h[7] = 0.0031476 I Filter Bank =;. 581 D.l. coefficient h(O) = 0.0022157 D.l. coefficient = 0.0080996 I I D.l. coefficient = 0.0200662 D.l. coefficient h[3] = 0.0493454 D.l. coefficient = 0.9922481 D.l. coefficient = 0.0363918 I D.l. coefficie.nt 1(6) = 0.0112233 D.l. coefficient = 0.0027245 :. I Filter Bank = 59 I I D.l. coefficient li[O] = 0.001 8578 :1 D.l. coefficient h[1] = 0.0067824 D.l. coefficient = 0.0167406 D.l. D.l. D.l. I I coefficieflt h[3] = 0.0408725 I coefficient h[4] = 0.9940711 I coefficie.nt = 0.0306934 I I I I I I I 158
PAGE 169
! 0.1. coefficient = 0.0094520 I 0.1. coefficient = 0.0022926 I Filter Bank = 60 1 I 0.1. coefficient = 0.0014953 I 0.1. coefficient h[1] = 0.0054518 0.1. coefficient = 0.0134060 0.1. hl[3] = 0.0324957 I I 0.1. coefficient 11[4] = 0.9956844 1 I 0.1. coefficient h[5] = 0.0248497 I 0.1. coefficient h[6] = 0.0076414 0.1. coefficient = 0.0018519 I Filter Bank = :61 :I 0.1. coefficient h(O] = 0.0011281 0.1. coetticieflt h[11 = 0.0041080 I 0.1. coefficient = 0.0100634 0.1. coefficient h(3] = 0.0242174 . I 0.1. h[4] = 0.9970854 I 0.1. coefficient h'[5] = 0.0188598 'I I 0.1. coefficient hf6) = 0 005791 o I 0.1. coefficient h[7] = 0.0014022 Filter Bank = 62 I I 0.1. coefficient h[O] = 0.0007565 I I 0.1. coefficient h(,1] = 0.0027513 i I I 1 I I I I I 159
PAGE 170
D.l. D.l. coefficient J[2] = 0.0067141 I coefficient h'[3] = 0.0160403 : 1 D.l. coefficient h[4] = 0.9982715 D.l. coefficient = 0.0127223 I D.l. coefficient = 0.0039008 D.l. coefficient 11[7] = 0.0009436 I Filter Bank = 63 I I D.l. coefficient h1[0] = 0.0003803 I I D.l. coefficient h[1] = 0.0013819 D.l. coefficient h![2] = 0.0033591 I D.l. coefficient h[3] = 0.0079670 I 0.1. coefficient h[4] = 0.9992402 I 0.1. coefficient h[5] = D.l. coefficient = 0.0019706 I D.l. coefficient h[7] = 0.0004760 Filter Bank = 64 I D.l. coefficient h[O] = 0.0000004 I I D.l. coefficient = 0.0000000 I D.l. coefficient h[2] = 0.0000003 I 0.1. coefficiellt = 0.0000001 D.l. coefficien't h[1J = 0.9999888 l D.l. coefficient h[5] = 0.0000003 .I D.l. coefficient h[GJ = 0.0000000 I I 160
PAGE 171
i I I I : i o.r. coefficient h 1[7J = o.oooooo6 I I I i I I I j I I I I j I I I 161
PAGE 172
I I I APPENDIXD ham_sim.c This program is very similar to di_sim.c but it uses a Hamming ' I window to the filter coefficients. I I I i ; I* * * .; ... * * * * * * * * * * * * * * * * I ' lncludes,eqLates and global memory allocation. I' I * * * * * . * * * * * * * * * * * * * * * * * * *. * I I I #include i I #include : #define N 12 I. ln1put sampling frequency (samples/sec). double fi; r *I I. I double Ti; /* lnput sampling period. */ I double To; l* sampling period. *I double pi i =1 3.14159; I ... 162 I .
PAGE 173
I I /*double :fc[JUM_OF _BANKS][NUM_OF _COEF];*I /*The scaled coefficient storage. *I I U; I I" Time Index. '.d,w1,dpow2,dpow3; I" Differen1 powers of the delay. double double I double : s[1 ,2]; I I* The delay line. *I 'Index; I* Filter bank index. *I I lnt int idel; I* lhe i/o rate difference. *I I l maf_temp = 0; r The max distortion in a sample. *I fsum,frac_shift,to,w,ppmstep; x .dt. y, step ,dstep, freq ,de I, cpt r, s ptr, d ptr; double double double I int i,jdl; long int I double = 0; in t loopcnt,ocnt; I I : * File : hamm sim.c 1By : Marcel Wolf for the DVDD element. 163
PAGE 174
* I Date : 2/23/92 'I I Description: : This is a simulation of the DVDD element. * * * * * * : * * * * * * * * * * * * * * * * * * * *I 'I I #include #include i #define DISPL.A Y 1 #define N 12 extern double extern double. fi,Ti,To,pi,ti,dpow1 ,dpow2,dpow3,s[12]; I extern extern double *cptr, *sptr, *dptr; I extern in t 1 index,idel,i,jd,loopcnt,ocnt; extern long int pp!m_shift; extern double I i double hh[150)[12]; I int tabsize; double sig_energy !dist_energy; FILE *in_fp,*out_fp, *sim_fp; I I I 164
PAGE 175
I * * * * * * * * * * * * * * * * * * * * * * * * * * * * Routin;e : This program simulates the Digital Interpolator. It is not adaptive. An ideal sine wave sample is generated on the inp'ut qlock. This sample is resampled with an FIR filter and the output is used to calculate the error from a sine wave 'I generated at the local clock. The error in this simulation is a constart. ifhere is no "wander" or "jitter" induced. The only I error is a slight frequency difference in the frequency of the I two clq.cks .: I Input :. User input to queries. Output:: 012 coefficients are stored In the file "coef.dat". I These are the coefficients needed for the fixed point implementation. * * * * * * * * * * * * * * * * * * * * * *I main() { ,I .I sim_fp = fopen ("sim_data.dat" ,"w"); err_fp = fopen ("ham_dist.dat","w"); 165
PAGE 176
* I i I in_fp = fo,pen ("ham_input.dat","w"); I I out_fp = f,open ("ham_output.dat","w"); : get_loopcnt(); /* Request the # of samples to input. */ get_clock_jates(); /* Request the clock rate difference in parts per million (ppm). */ soft_init(); /* Initialize sw program variables. */ specify_tone(); I gen filters(); : I ,' I' I sampl.e_stlift(); /* Request the frequency of the sine wave. */ /* Generate the array of interpolation filters. I* Input the first sample at t = ti. */ fprintf(:err_fp,"\nOrder = %d :J Taps = %d\n",0,12); II fprintf(err:_fp, "to distortion I delay # input output\n"); 166
PAGE 177
do { #ifdef DISPLAY ; I printf ("The LOOPGOUNT = %d\n",loopcnt); #end if I if(ppm_shift >= 500000) { ., #ifdef DISPLAY I* This event will occur when the frequency of the output sample clock is greater than the frequency of the input sample clock. It involves sample time drift in the delay direction, and the production of two output sample values in conjunction with the collection of one input sample value to equalize the input/output sample rates without buffer underflow. I printf("The first of;12 output samples in a row.\n"); #end if I I fir_filter(); /*produce an output sample. *I ppm_ shift = ppm_shift 1 000000; frac_shift = ppm_shiftl1 000000.0; gen_sample(); 167
PAGE 178
#ifdef DISPLAY printf("The 2nd of 2 output samples in a row .\n"); #end if I*******,******* * * * * * * * * * * * Produce another output sample by performing another interpolation operation with a frac_shift value incremented by one sample unit time increment. * * * *,* * * * * * * * * * * * *******I fir_filter(); sample_shift(); ., I ppm_shift = ppm_shift + idel; frac_shift = ppm_shift/1 oooooo.o; gen_sample(); #ifdef DISPLAY 168
PAGE 179
I printf("Another pass through loop 1.\n"); #end if } if(ppm_shift <= 500000) { #ifdef DISPLAY /* This will occur when the frequency of the output sample clock is less than the frequency of the Input sample clock. It involves sample time drift in the prediction direction, and the production of one output sample value in conjunction with the collection of two input sample values to equalize the inpuVoutput sample rates without buffer overflow. I printf("No output produced this time.\n"); I #endif sample_shift(); /* Skip production of an output sample this iteration but realign interpolation operation to unit shifted input sample stream. */ ppm_shift = ppm_shlft + 1000000 + idel; 169
PAGE 180
frac_shift == ppm_shift/1 000000.0; #ifdef DISPLAY I printf("Another through loop 2.\n"); #endif I I I I } I else { } #ifdef DISPLAY I fir _filter(); sample_shift(); gen_sample(); ppm_shift == ppm_shift + idel; frac_shift == ppm_shift/1 000000.0; printf("ppm_shift i == %1d\n" ,ppm_shift); #end if } whil ; e(lo1opcnt); I I 170
PAGE 181
printf("\nS,ig naltodistortion ratio = %14 .8f\n" I i 1 : siglenergy/dist_energy); I I fprintf(err_fpl"\nSignaltodistortion ratio = %14.8f\n" I sig_energy/dist_energy); 'I 1 _fp1"\nSignaltodistortion ratio = % 14.8f\n" I sig_energy/dist_energy); printf{l'\nS!gnaltodistortion ratio (dB) = % 14.8f\n" I I 1 olog1 O(sig_energy/dist_energy)); ratio (dB) = % 14.8f\n" I I i 1 Ojlog1 O(sig_energy/dist_energy)); ratio (dB) = % 1 O*.log1 O(sig_energy/dist_energy)); I printf("\nMaximum error energy in any one sample = % 14.8f\n"l I 1 O*log1 O(max_temp)); error energy in any one sample = %14.8f\n" I .: i 1 O*log1 O(max_temp)); fclose ; (fp).; fclose .(err_fp); fclose : (inJ..fp); ' fclose, (oui_fp); 171
PAGE 182
fclose (s m_fp); } I I : 1 soft_init Initializes program variables. *I I i Input : Npne. *I I Output I :None. I /***********1****************************************/ soft_init() { ppm_shift 1= 0; I frac_s.hift: = ppm_shift/1000000.0; ti = 0; I to = ti(1N1 )*Ti/2.0; i for (sptr :::J s,i=O;i
PAGE 183
delay line. */ cent=:: 0; I sig_energx = dist_energy = o.o; r Initialize energy measures. I } I I Routine : get_loopcntQueries the user for the number of */ I I I samples to process. *I I Input :None. *I I Output :None. *I /****************************************************/ get_loopcnt() { r I I Input sampling I rate (samples/sec) */ 173
PAGE 184
printf("Specify # of input samples to process (integer): "); scanf("%d" ,&loopcnt); printf("\nNI!.Imber of input samples to process = %d\n\n" ,loopcnt); fprintf(err_fp,"\nNumber of input samples to process = %d\n\n", loopcnt); } I*********** : * * * * * * * * * * * * * * * * *******I I Routine : get_clock_rates Queries the user for the difference ., I in the clock rates in parts per million(ppm). ., I Input :None. ., I Output :None. ., /****************************************************/ get_clock_rates() { fi = 8000.0; r Input sampling rate (samples/sec). */ 174
PAGE 185
II) ; Ti = 1.01fi; printf("Enter input/output sampling rate difference (integer ppm}: scanf(no/od" ,&idel); printf("\nlnput/output sampling rate difference (ppm) = o/od\n\n", idel); fprintf(err_fp,"\nlnput/output sampling rate difference (ppm) = o/od\n\n", idel); To = Ti1;(1.0+(idel11 000000.0)); } I Routine : specify_tone Query the user for the test tone freq. *I I I Input :None. Output : None. *I I 175
PAGE 186
specify_tone() { } printf("Enter tone frequency (real): "); scanf("%U",&freq); frequency = %8.31f\n\n",freq); fprintf(err_;_fp,"\nTone frequency = %8.31f\n\n",freq); w = 2.0*pi*freq; I Routine : fir_filter Runs the interpolator filter to generate *I I I I a sample. Input :None. Output *I :None. *I *I /****************************************************/ 176
PAGE 187
fir_filter() { int j; /* Determine which interpolation filter to use, then use. */ index = + (ppm_shift/ppmstep}; /* compute index of h filter. */ #ifdef DEBUUG printf("Filter index = %d\n",index}; #end if I for(j=O ,fsurri;=o,cptr=&hh[index](O] ,sptr=s ;j
PAGE 188
. I printf("lnterpolated sample = %8.4f\n",fsum); fpri nlf( sim_fp," I nterflated output sample %8.4 t\n", fs um); #endif I I 'I I } 1 I Routine : getlsampleGets a sample of the input sine wave. I i a sample. I I *I I Input : Nonel. I Output 1 : A sample from the input sine wave. I I I * * * * * * * * * * * * * * * * * * * * * * * * I I double I .I I I { /* Sine wave gene'rator. *I I double g; 1 1 = sin(w*ti); . I t1 = t1 + Ti; 'f Increment the clock. */ I return(inputlsample); I I } , 178
PAGE 189
I * * * * * * 1 * * * * * * * * * * * * * * * * * * * I I 1 Routine : sarr)ple_shift Shifts the delay line and gets a sample *I from the input. *I I I Input *I I Output :None *I I * * * * * * . * * * * * * * * * * * * * * * * * * * I sample_shift() { int j; /* Shift the d:elay line. *I for(j=O &s[N1 );j<(N1) ;j++) { = *sptr; #ifdef DEBUG printf("shift sptr #endif } I I 'I = %1d, dptr = %1d\n" ,sptr ,dptr); I I I* Insert a generated from the RCV clock into the delay line. I 179
PAGE 190
} s[O] = get_s1ample(); I /****************************************************/ I Routine : Generates an ideal output sample and uses *I I it along with the interpolated output to calculate the *I I I I I distortion. i Input Output :None *I *I *I I************* *l* * * * * * * * * * * * * * * * *******I gen_sample() { I I double g,temp; g = sin(w*to); #ifdef DISPLAY printf("radian value\= %14.8f\n",w*to); 180
PAGE 191
I I I printf("output time:= %14.8f\n",to); I printf("ideal output ivalue = %8.4f\n\n",g); fprintf(sim_fp, "radia:n value = o/o 14.8f\n" ,w*to); time = o/o 14.8f\n" ,to); fprintf(sim_fp,"ideal output value = %8.4f\n\n",g); #end if to= to+ To; ocnt++: /* Increment output sample count. */ if(ocnt > N) { /* Wait till delay line fills. */ sig_energy = sig_energy + (g*g); temp = g fsum; .. I I* Con:tpare the present distortion energy for this sample to the other samples. The max is stored. I I I if > max_temp) max_temp = temp*temp; 181
PAGE 192
} } I r the sum of the distortion for the period 'I I of int$rest. I dist_energy = dist_energy + (temp*temp); fprintfj(err_fp,"%f %f %f %d %f %f\n", oooooo.o,ocnt, input_.:_sample, fsum); fprintf(in_fp, "%f\n" ,input_sample); fprintf(out_fp, "%f\n" ,fsum); I*** * * *. * *I * * * * *. * * * * * * * * * * * *. * I * * Routine : gen.:__filters Generates an entire bank of filters to span the delay space of interest. The coefficient table in the global area is used to generate each coefficient as a 3rd order polynomial. The coefficients ar,e stored in the two dimensional array h[][] and each entry is quantized or scaled into a 012 format. This coefficient is 182
PAGE 193
stored in the array fcnn Input : The ;coefficient table from the global area. I Output : The two coefficient arrays h[][] and fc[][]. Also a file I coef.dat is fill:ed with the scaled coefficients. /****************************************************/ gen_filters() { int k,n,j,indexj,htabsize,cutoff; double xden,xnum,scale,a2pi,window,ratio,d,b; .I /***************************************************** I r Open a file to .dump the 0.1. filter coefficients. *I I I fp = fopen I * * * * * * * * * * * * * * * * * * * * I I r Get the number of, filter banks needed. *I 183
PAGE 194
., /*************;****************************/ printf("Enter number of table entries in table (integer): "); I scanf("%d" printf("\nNumber of filter banks = %d\n\n",tabsize); fprintf(err_fp,"\nNurriber of filter banks = %d\n\n",tabsize); fprintf(fp,"\nNumber. of filter banks = %d\n\n",tabsize); /* Get number of Taps. */ printf("Enter of taps (integer): "); scanf("%d" ,&n); printf("\nNumber of. filter taps = %d\n\n" ,n); d = (n1.0)/2.0; r Get the filter passband. */ printf("Enter filter passband (integer): "); scanf("%d" I printf("\nPassband frequency = %d\n\n" ,cutoff); a2pi = 1 i htabsize = tabsize/2; 184
PAGE 195
step = ppm step = 1 000000.0/tabsize; scale = 1/pi; I* Now calculate each D.l. coefficient. '*/ /****************************************/ ; for (j=tabsize/2 ;jJ(tabslze/2 + 1) ;j++) { for (k=O;k
PAGE 196
} I printf("filter #%d\n" ,j); fprintf(fp, "filter #%d\n" ,j); printf("D.I. coefficient h[%d] = % 14.6f\n" ,k,hh[indexj)[k]}; fprintf(fp,"D.I. coefficient h[%d] = % 14.6f\n" ,k,hh[indexj][k]); } } } 186
PAGE 197
APPENDIXE nsimple.c This routine provides a way of calculating the ripple across the entire filter bank. First the, user is queried for the parameters of the VDD. A bank I I of filters is created using the Kaiser window. The user is then queried for a I tone frequency. The frequency response of each of the FIR filters in the bank is evaluated at this and the ripple is returned to the user. #include #include I I r This program calculates a bank of filters for the DVDD project and l then measures the frequency response at a certain tone. I I I************* : * * * * * * * * * * * * . * * I ,. ,. Bessel fun'ctidn 187
PAGE 198
* r, double bessio(x) double x; { double ax,ans; I I double y; I if((ax=fabs(x)) < 3.75) { y = x/3.75; } else { y*=Y:: ans=l1 .O+y*(3.5156229+y*(3.0899424+y*(1.2067492 +y*(Q.2659732+y*(0.360768e1 +y*O .45813e2) )) ) ) ; y = I ans =! ( exp(ax)/sqrt(ax)) (0 .39894228+y*(O .1328592e1 I +y*(0.225319e2+y*(0.157565e2+y*(0.916281 e2 +'y* ( lo .2057706e1 +y* (0 .2635537e1 +y* (0.1647633e1 + y o: 3 9 23 7 7 e2)))))))); 188
PAGE 199
} return ans; } /****************************************************/ double ,a,a2pi,b; double w,step,d,rati6,Betaa,bscale,ftemp; 'I int k,n; int i,j,htabsize; FILE *fp; double void specify_tone() { double mag2,max,min,dbmax,dbmin,hrw ,h iw; int m,kk,freq; printf("\nEnter tone 1 frequency (2*pi units): "); scanf("%d" ,&freq); 189
PAGE 200
' ': w = 2.0'"pi'"(doubr'e)freq/8000; if(wmax)max =mag2; if(mag2
PAGE 201
printf("max=%8.5f '(%8.4f dB),min =%8.5f(%8.4f dB) I \n",max,dbmax,min,.dbmin); } main() { two pi = 2.0*pi; printf("Number of interpolator taps :"); scanf("%d" ,&n); d = (n1.0)/2.0; /*printf("Filter passband (2piT units) :"); I scanf("%f",&a) ;*I a=3400; 'I a2pi = twopi*a/8000; scale = 1.0/pi; printf("Numberof filters in half table : "); I scanf("%d" ,&htabsize); 191
PAGE 202
I I printf("Beta factor for the modified Bessel function : "); I scanf("%f" ,&Betaa); I Betaa = 3; I bscale = 1.01bessio(Betaa); /* generate a half bank of filters. *I step = O.SI(htabsize1 ); for (j=O ;j
PAGE 203
} } h[j][kr = scale*ratio*window; if (k r= o> I printf("filter #o/od\n" ,j); I I printf("filter tap #o/od = %f\n" ,k,hU][k]); I while(W>=O) specify_tone (); } /* End of main*/ 193
PAGE 204
APPENDIXF kai_sim.c This is a copy of the di_sim.c program using a Kaiser window to develop the filter bank instead of the CVDD coefficient set. This program I 'I outputs several I * * * * * * * * * * * * * * * * * * * * * * * * * * lncludes,equates and global memory allocation. ****************************************************** I #include #include #define N 12 double fi; double Ti; double To; /* Input sampling frequency (samples/sec). */ /* Input sampling period. */ I /* Output sampling period. */ 194
PAGE 205
' double pi = 3.14159; fc[NUM_OF _BANKS][NUM_OF _COEF];*/ r The scaled coefficient storage. *I double t i; : /* Time index. */ double dpow1 ,dpow2,dpow3; r Different powers of the delay. I I double s[12J,; r The delay line. */ I int index; r Filter bank index. */ int idel; r i/o rate difference. */ double = 0; r The max distortion in a sample. */ I double fsum,frac_shift,to,w,ppmstep; double ,step ,dstep, freq,del, *cptr, *sptr, *dptr; int i ,jd; : long int ppm_shift; double input_sample: = 0; int loopcnt,ocnt; File : kai_sim.c 195
PAGE 206
I By : Marcel Wolf for the DVDD element. I Date : 3/1/912 modified :I Descriptio.n is a simulation of the DVDD element. Using the I Kaiser window to the filter bank. :i #include #include #define DISPLAY 1 #define N 12 extern double input..1.sample; I extern double fi,Ti,;To,pi,ti,dpow1 ,dpow2,dpow3,s[12]; I extern double fsum, frac_sh ift, to, w ,ppmstep,x,dx,y; I double step,dstep,freq,del, *cptr, *sptr, *dptr; int i index,idel,i,jd,loopcnt,ocnt; extern extern extern long int extern double I I i double hh[150][12); I int tabsize; double sig_energy ,d,st_energy; ,I 196
PAGE 207
FILE *fp, *err_fp, *out_fp, *sim_fp; /***************************************************** * ,I ,I Bessel funct1on I * * * * * *. * * * * * * * * * * * * * * * * * * * I double bessio(x) double x; { double ax,ans; double y; I if((ax=fabs(x)) < 3.75) { } else { I I y = x/3.75; y*=y; I ans=1.0+y*(3.5156229+y*(3.0899424+y*(1.2067492 +y*(0.2659732+y*(0.360768e1 +y*0.45813e2)})}); y 3,.75/ax; 197
PAGE 208
ans =: I (exp(ax)/sqrt(axH (0 .39894228+y*(O .1328592e1 II +y*(0.225319e2+y*(0.157565e2+y*(0.916281 e2 +y* ( .2057706e1 +y* (0 .263553 7e1 +y*(I 0.164 7633e1 I +y*O .392377e2)))))))); } return ans; } I I * * * * * 1 * * * * * * * * * * * * * * * * I * * * * * * Routine : main This program simulates the Digital It is not adaptive. An ideal sine wave sample is generated on the input clock. This sample is resampled with an FIR filter and the is used to calculate the error from a sine wave I generated at local clock. The error in this simulation is a constant. There is no "wander" or "jitter" induced. The only 'i error is a slight frequency difference in the frequency of the I two clocks. used. Input : User input to queries. Output : The 012 coefficients are stored in the file "coef.dat". i These are the: coefficients needed for the fixed point implementation. 198
PAGE 209
* l I * * * * * * i * * * * * * * * * * * * * * * * * * I main() { I sim_fp = fop,en ("sim_data.dat","w"); i err_fp = ("ham_dist.dat","w"); I in_fp = fopen ("ham_input.dat","w"); out_fp = fopE:m ("ham_output.dat","w"); get_loopcnt(); /* Request the # of samples to input. */ get_clock_rates(); I* Request the clock rate difference in parts per million (ppm). */ soft_init(); /* Initialize sw program variables. */ specify_tone(); /* Request the frequency of the sine wave. */ gen_filters(); /* Generate the array of interpolation filters. 199
PAGE 210
sample_shif1t(); r Input the first sample at t = ti. */ = %d Taps = %d\n",0,12); fprintf(err_f:p, "to distortion delay # input output\n"); I do { #ifdef DISPLAY I printf ("The LOOPCOUNT = %d\n",loopcnt); #end if I if(ppmLshift >= 500000) { r This event will occur when the frequency of the : output sample clock is greater than the frequency I ; of the input sample clock. It involves sample time drift in the delay direction, and the production i of two output sample values in conjunction with the collection of one input sample value to equalize 1 the input/output sample rates without buffer underflow. I 200
PAGE 211
#ifdef DISPLAY printf("The first of 2 output samples in a row.\n"); I #end if fir_filter(); I* produce an output sample. */ ppm_shift = ppm_shift 1 000000; frac_shift = ppm_sh ift/1 000000.0; gen_sample(); #ifdef DISPLAY printf("The 2nd of 2 output samples in a row .\n"); #end if Produce another output sample by performing another interpolation : operation with a frac_shift value I incremented by one sample unit time increment. * * * * * * * * * * * * * * * * * * * I 201
PAGE 212
fir_filter(); sample_shift{); ppm_shift = ppm_shift + idel; frac_shift = ppm_shift/1 000000.0; gen_sample(); #ifdef DISPLAY printf("Another pass through loop 1.\n"); #end if } else i.f(ppm_shift <= 500000) { : I* This will occur when the frequency of the output : sample clock is less than the frequency of the I : input sample clock. It involves sample time drift in the prediction direction, and the production of i one output sample value in conjunction with the I collection of two input sample values to equalize the inpuVoutput sample rates without buffer overflow. I 202
PAGE 213
#ifdef DISPLAY printf("No output sah,ples produced this time.\n"); I #endif sample_shift(); /* Skip production of an output sample this iteration but realign interpolation operation to unit shifted input sample stream. */ ppm_shift = ppm_shift + 1000000 + ide I; frac_shift = ppm_shift/1 000000.0; #ifdef DISPLAY printf("Another pass through loop 2.\n"); #end if } else { : fir_filter(); sample_shift(); :gen_sample(); I 203
PAGE 214
ppm_shift = ppm_shift + idel; frac_shift = ppm_shift/1 000000.0; } #ifdef DISPLAY printf("ppm_shift r o/old\n",ppm_shift); #end if } while(loopcnt); printf("\nSignaltodistortion ratio = %14 .8f\n", fprintf( err _fp, "\nSignaltodistortion ratio = % 14.8f\n", I fprintf(sim_fp, "\nSignaltodistortion ratio = % 14.8f\n", sig_energy/dist_energy); I ratio (dB) = % 14.8f\n", I 1 O*log 1 o (sig_energy/dist_energy)); fprintf(err_fp,"\nSignaltodistortion ratio (dB) = o/o 14.8f\n", 1 O*lo,g1 O(sig_energy/dist_energy)); fprintf( sim_th, n\nSignaltodistortion ratio (dB) = o/o 14 .8f\n", 1 O*log1 O(sig_energy/dist_energy)); 204
PAGE 215
! ,, I I I I printf("\nMaximum error energy in any one sample = % 14.8f\n", 1 O*log1 i fprintf(err_fp,"\nMaximum error energy in any one sample = %14.8f\n", 1 O*log1 fclose (fp); fclose (err_fp); l fclose (in_1p); fclose (oudtp); fclose (sim_fp); } I I I Routine : sqft_init Initializes program variables. Input :None. Output :None. *I *I *I 1***********,*****************************************1 soft_init() { 205
PAGE 216
ppm_shift = 0; i I :I= frac_shift : ppm_shift/1 000000.0; ti = 0; to = ti(N1 )*Ti/2.0; I I for (sptr = 'S,i=O;i
PAGE 217
I I I I '* :I I I I I Routine.: get_loopcnt Queries the user for the number of sa"ples to process. I I Input :None. Output :None. I I *I *I '*I I I************.!*************************************** I get_loopcnt() { /* Input sampling rate (samples/sec) */ printf("Specity # of input samples to process (integer): "); I I I I prlntf("\nNur;nber of input samples to process = %d\n\n" ,loopcnt); fprintf(err_fp,"\nNumber of input samples to process = %d\n\n" ,loopcrit); _! 1 } I************ * * * * * * * * * * * * * * * *******I ,, I Routine: : gelt_clock_rates Queries the user for the difference in the clock rates in parts per million(ppm). */ i '*I I 207
PAGE 218
I Input :None. ., I Output :None. I i I * * * * * * * * * * * * * * * * * * * * * * * * I get_clock_rates() { fi = /* Input sampling rate (samples/sec). */ Ti = 1.01fi;, printf("Enter:\ input/output sampling rate difference (Integer ppm): It ) ; scanf("o/od" ,,&ide I); i printf("\nl,np4t/output sampling rate difference (ppm) = %d\n\n", I idel); fprintf(err_fp\"\nlnput/output sampling rate difference (ppm) = o/od\n\n", idel); 208
PAGE 219
To = Til(1.0+(idell1 000000.0)); } I* * * * * . * * * * * * * * * * * * * * * * * * * * I I I Routine : specify_tone Query the user for the test tone freq. *I I Input :Nor\e. *I I Output \ : None. I I specify _tone() { } I i I tone frequency (real): "); I scanf("%1f",&freq); I printf("\nTone frequency = %8.31f\n\n" ,freq); fprintf(err_fp,"\nTone frequency = %8.31f\n\n",freq); w = 209
PAGE 220
I I 1 Routine : fjr_filter Runs the interpolator filter to generate *I I a sample. I *I I Input:None. *I I Output 1 : None. I I I /************!***************************************/ I I I fir_filter() { int j; I I* which interpolation filter to use, then use. */ I index = + (ppm_shlft/ppmstep); r compute index of h filter. *I #ifdef DEBUUG 1 printf("Filter index1 = %d\n" ,index); #end if for(j=O,fsum=O,cptr=&hh [index][O],sptr=s ;j
PAGE 221
printf("coefficient :%d = %8.3f,sample = %8.3f\n" ,j, *cptr,*sptr); I printf("Delay line .\pointer value is %1d\n",sptr);*l I #end if fsum = fsum + (*cptr++) (*sptr++); } #ifdef DISPLAY : printf("lnterpolated: output sample = %8.4f\n",fsum); output sample = %8.4f\n",fsum); #end if } I * * * * * * * * * * * * * * * * * * * * * * * * * I I I Routine: geLsampleGets a sample of the input sine wave. *I I I a sample. *I I Input :None. *I I I I Output :l : A sample from the input sine wave. I 'I I double get_sample() I { r Sine wave generator. *I .1 double g1 ; 211
PAGE 222
input_samP,Ie = sin(w*ti); ti = ti + Ti; /* Increment the clock. *I } I /************+***************************************/ I Routine : sample_shift Shifts the delay line and gets a sample *I I fro!m the input. *I I Input :None. *I I Output :None *I /****************************************************/ sample_shift() { int j; I* Shift the !delay line. *I for(j=O ,sptr;=&s{N2].dptr= &s{N1 );j<(N1) ;j++) { 212
PAGE 223
'I = *sptr; #ifdef DEBUG printf("shift sptr 1 %1d, dptr = %1d\n" ,sptr ,dptr); #endif } I r Insert: a s1ample generated from the RCV clock into the delay line. I : I s[O) = getlsample(); } .I I * * * * * * * * * * * * * * * * * * * * * * * * I I I Routine : ge:n_sampleGenerates an ideal output sample and uses *I I it with the interpolated output to calculate the *I I distortion. *I I Input :J..jone. *I I Output i :None *I I ; gen_sample() { 213
PAGE 224
. I I double g,te""p; :; i g = #ifdef DISPLAY 'i printf("radian = % 14.8f\n" ,wto); I printf("output == % 14.8f\n" ,to); printf("ideal output value s: %8.4f\n\n",g); I value = %14.8f\n",w*to); ,I I time = %14.8f\n",to); I fprintf(sim_fp,"idea l output value = %8.4f\n\n",g); #end if to= to+ To; I cent++; r Increment output sample count. t if(ocnt > N) !{ r Wait till delay line fills. */ i = sig_energy + (g*g); I 214
PAGE 225
} temp = g fsum; \ I r cbmpare the present distortion energy for this sample I I to the other samples. The max is stored. I ,, if (temp*temp > max_temp) max_temp = temp*temp; I /* Compute the sum of the distortion for the period of irherest. I I disdenergy = dlst_energy + (temp*temp); I fprintf (err_fp, "%f %f %f %d o/of to, tE!mp*temp ,(float)ppm_sh iftl1 000000 .o ,ocnt, I input_sample,fsum); I t.prirltf(in_fp, "%f\n" ,input_sample); i "%f\n" ,fsum); 215 %t\n",
PAGE 226
} /************i**************************************** '* '* '* '* Routine : Generates an entire bank of filters to span the delay space of interest. The coefficient table in the global area is used to generate each coefficient as a 3rd order polynomial. The coefficients .are stored in the two dimensional array h[][) and each entry is quahtized or scaled into a 012 format. This coefficient is stored in array fc[][] Input :The coefficient table from the global area. Output \ : The two coefficient arrays hD[] and fc[]D. Also a file coef.dat is filled with the scaled coefficients. I /****************************************************/ gen_filters(} { I I int double xden ,xnum ,pscale,a2pi,window ,ratio ,d,b,beta, ftemp,scale; I 216
PAGE 227
I I /* Open a file to the D.l. filter coefficients. *I "! /************!**************************************** I fp = fopen ,"w"); I********* : l * * * * * * * * * * * *******I /* Get the number bf filter banks needed. *I I /******************************************/ printf("Enter of table entries in table (integer): "); scanf("%d",&tabsize); I I printf("\nNumber of filter banks = %d\n\n",tabsize); :1 fprintf(err_fp,"\nNumber of filter banks = %d\n\n",tabsize); I I fprintf(fp,"\nNutnber of filter banks = %d\n\n",tabsize); "I I I* Get number of *I I I printf("Enter number of taps (integer): "); I I scanf("%d" ,&n); :[ printf("\nNumber of filter taps = %d\n\n",n); d = (n1.0)12.0; I /* Get the filter *I 217
PAGE 228
printf("Enter filter passband (integer): "); 'i scanf("%d" ,&cutoff); I :i printf("\nPassband,! frequency %d\n\n" ,cutoff); I I i /* Get Beta factor.: */ printWEnter Beta ,actor for modified bessel function : "); scanf("%d" ,&Beta); I I printf("\nbeta factor = %d\n\n" ,Beta); beta = (double)Be*; bscale = 1.0/bessi,o(beta); /* Initialize variables. */ i a2pi = 2*pi*((do:uble)cutoff/8000); I I htabsize = tabsize/2; ,I step I = 1/((double)1tabsize); ppmstep = 1 000000.0/tabsize; 218
PAGE 229
scale = 1.0/pi; i /************\***************************/ I* Now calculate D.l. coefficient. */ '! for (j=tabsize/2;1j<(tabsize/2 +1 );j++) { I I for { b (double)(d+(double}j*step}; .: I xden=kb; ; ftem:p = 2.0*xden/n; I I I = bscale*besslo(beta*sqrt(1.0(ftemp*ftemp))); if (xben == 0.0) { i } else:;{ } ratio = a2pi; xnum = sin(a2pi*xden); ratio = xnum/xden; 219
PAGE 230
i =(int)( j+(tabsize/2)); hh[ihdexj](k] = scale*ratio*window; I I if (k==O){ } I I printf("filter #%d\n" ,j); fprintf(fp, "filter #%d\n" ,j); printf("D.I. coefficient h[%d] = I % 14.6f\n" ,k, hh[indexj][k]); I coefficient h[%d] = %14 6f\n II ,k, h h[i ndexj] [k]); I } } } ' 220
PAGE 231
APPENDIXG nsimple.c tests I Table G.1 output. Bank size = 128, Taps = 12, Beta = 1.0, Fe = 3900 Hz. Frequency (27t) Maximum ripple (dB) Minimum ripple (dB) 0.05 0.1 067 0.0238 0.125 0.0205 0.0673 0.375 0.3984 0.2531 0.3875 0.6278 0.3696 0.4 0.9017 0.2329 0.4125 0.9838 0.0214 0.425 0.7840 0.3902 0.4375 0.2021 0.8545 0.5 2.7928 125.7169 221
PAGE 232
Table G.2 = 3900 Hz. Frequency 0.05 0.125 0.375 0.3875 0.40 0.4125 0.425 0.4375 0.5 i :: I I I .I I J I I I nsinjple.c output. Bank size = 128, Taps = 20, Beta = 1.0, Fe .I (27t) Maximum ripple (dB) Minimum ripple (dB) 0.0853 0.0098 0.0358 0.0072 0.0950 0.2063 0.1029 0.2278 0.1 059 0.2168 0.3032 0.0283 0.3342 0.2348 0.3496 0.0623 4.2449 123.0367 222
PAGE 233
i J Table G.3 output. Bank size .. 128, Taps = 12, Beta = 2.0, Fe I = 3400 Hz. I Frequency 0.05 0.125 0.375 0.3875 0.4 0.4125 0.425 0.5 (2it) Maximum ripple (dB) Minimum ripple (dB) 0.0131 0.0681 0.0184 0.0144 0.7319 0.9422 1.4745 1.8345 2.5276 2.9949 3.9648 4.4455 5.8871 6.2117 36.5433 138.6828 223
PAGE 234
. / :1 J APPENDIXH Filter Bank from kai_sim.c This filter bank created with a cutoff frequency of 3400 Hz. Beta ==2 .I The Signal to Disto1rtion was 41 dB. I I :j Number of filter banks = 64 I I filter #32 i : 1 D.l. coefficient h[Q] = 0.026258 i D .l. coefficient h[1] = 0.054370 I D.l. coefficient h[2] = 0.087481 I D.l. coefficient h[3] = 0.119014 I ,. I D.l. coefficient h[4J = 0.141726 I D.l. coefficient h[S] = 0.850000 . 1 D.l. coefficient h[d] = 0.141726 I D.l. coefficient h[j] = 0.119014 0.1. coefficient h[8) = 0.087481 I 0.1. coefficient h[9] = 0.054370 I 0.1. coefficient h[t!OJ = 0.026258 I 0.1. coefficient h[11 J = 0.007191 I I / I 224
PAGE 235
filter #31 0.1. coefficient h[O] = .l 0.1. coefficient h[1] = I I i 0.1. coefficient = 0.1. coefficient h[3] = I I 0.1. coefficient = I 0.1. coefficient h[S] = 0.1. coefficient h[G] = I 0.1. coefficient h[7.J = 0.1. coefficient h[8] = I 0.1. coefficient h[9,] = I 0.1. coefficient h[tp] = 0.1. coefficient h[1;11 = filter #30 .! 0.1. coefficient 'h[OJ = i I 0.1. coefficient h[11 ] = 'i 0.1. coefficient h[2J = i 0.1. coefficient :h[3f = 'i D.l. coefficient h[4] = .! 0.1. coefficient. h[5j = I D.l. coefficient h[6] = I 0.1. coefficient h[7j = .! ' D.l. coefficient h[8] j = 0.027142 0.054694 0.086208 0.114267 0.127922 0.849749 0.155731 0.123636 0.088615 0.053945 0.025314 0.006311 0.027965 0.054916 0.084801 0.109403 0.114330 0.848998 0.169925 0.128121 0.089608 225
PAGE 236
' i I I 0.1. coefficient "" ,, .j 0.1. coefficiem h[1 O] = i 0.1. coefficien t 1] = filter #29 0.1. coefficient h[Q] = 0.1. coefficient h[1] = i 0.1. coefficient h[2] = I I 0.1. coefficient h[3] ... 0.053417 0.024311 0.005405 0.028727 0.055038 0.083265 0.104434 0.1. coefficient h[41 = 0.100960 I i 0.1. coefficient h[S] = 0.84n46 0.1. coefficient h[S] = 0.184296 '! 0.1. coefficient h[7] ... 0.132461 i 0.1. coefficient = 0.090454 I 0.1. coeff i cient ... 0.052786 I 0.1. coefficient .h[10] = 0.023251 0.1. coefficient h[1\1J = 0.004475 filter #28 0.1. coefficient h[O] = I 0.1. coefficient h(1] = 0.1. coefficient h[2l. = 0.1. coefficient ... .j 0.1. coefficient h[4J = 0.1. coefficient hiS) = 0.029428 0.055061 0.081603 0.099369 0.087825 0.845995 226
PAGE 237
I 0.1. coefficient h[S] = j 0.1. coefficient h&l = I .I 0.1. coefficient h[8,] = 0.1. coefficient h[S] = I '! 0.1. coefficient h[1 0] = .I 0.1. coefficient 1] :s filter #27 0.1. coefficient h[O] = I I i 0.1. coefficient h[1] = 0.1. coefficient h[2] = I I 0.1. = 0.1. 0.1. 0.1. 0.1. 0.1. 0.1. 0.1. I coefficient h[4] = I coefficient h[fi] = 1 coefficient h[6] = I coefficient hl?1 = i coefficient h[8] = I I coefficient = coefficient h[1!0] = I I 0.1. coefficient h[11] :s I filter #26 D.l. coefficient.' h[O] = I D.l. coefficient h[1,) = I D.l. coefficient h[2] = i 0.198831 0.136644 0.091151 0.052051 0.022133 0.003522 0.030066 0.054985 0.079821 0.094219 0.074934 0.843748 0.213519 0.140661 0.091695 0.051214 0.020960 0.002548 0.030642 0.054814 0.077923 227
PAGE 238
i I I 0.1. coefficient = J 0.1. h[41 = ,j 0.1. coefficient = I 0.1. = 'I 0.1. coefficient h[71 = 0.1. 0.1. 0.1. 0.1. i coefficient h[B] = 'I I coefficient h[9] = 'I I\ 'I coefficient h[1 0] = I coefficient 1] = filter #25 0.1. coefficient h[O] = I I I 0.1. coefficient = I 0.1. coefficient h[2] = I 0.1. coefficient h[3] = I I 0.1. coefficient = I 0.1. coefficient = .I 0.1. coefficient h[S] = 0.1. coefficient hiT] = 0.1. coefficient.' h[a] = 'I I 0.1. coefficient h[S] = 0.1. coefficient, h[1i01 = 0.1. coefficient h[11] = filter #24 0.088993 0.062297 0.841006 0.228345 0.144502 0.092083 0.050273 0.019733 0.001554 0.031155 0.054547 0.075914 0.083702 0.049924 0.83n72 0.243297 0.148157 0.092312 0.049229 0.018453 0.000542 228
PAGE 239
0.1. 0.1. 0.1. 0.1. 0.1. 0.1. 0.1. 0.1. 0.1. 0.1. 0.1. i coefficient h[O] = coefficient = coefficient = I coefficient h[3] = I coefficient h[4] = coefficient h[5] = :I coefficient h[91 = I coefficient = coefficient = .. I coefficient h[9) = I I coefficient h[tO] = 0.1. coefficient h[1i1J = I filter #23 i I i 0.1. coefficient h[O.] = 0.1. coefficient h[1l] = 0.1. coefficient = 0.1. coefficient = i 0.1. coefficient h[4] = I 0.1. coefficient h[S] = I 0.1. coefficient h[6) = I j 0.1. coefficient h[71] = I I 0.1. coefficient h[8) = 0.1. coefficient h[9) = 0.031605 0.054188 0.073800 0.078355 0.037824 0.834051 0.258361 0.151617 0.092379 0.048083 0.017123 0.000486 0.031992 0.053736 0.071585 0.072963 0.026005 0.829845 0.273524 0.154873 0.092281 0.046835 229
PAGE 240
l 0.1. coefficient h[1 O] = 0.015743 I D.l. coefficient h(11 1 = 0.001530 I filter #22 .I I D.l. coefficient h[01 = 0.032317 I I 0.1. coefficient h[1 1 = 0.053196 I 0.1. coefficient h[21 = 0.069274 I ] D.l. coefficient h[31 = 0.067534 I D.l. coefficient h[41 = 0.014476 D.l. coefficient h[5} = 0.825160 I 0.1. coefficient h[61 = 0.288772 'I I D.l. coefficient h[p = 0.157914 D.l. coefficient h[8] = 0.092018 I I D.l. coefficient h[9] = 0.045486 'I 0.1. coefficient h[1 0] = 0.014315 D.l. coefficient 1] = 0.002587 filter #21 0.1. coefficient h[d) = 0.032580 i 0.1. coefficient h[1] = 0.052569 0.1. I coefficient h[2] = 0.066873 0.1. I coefficient = 0.062080 I 0.1. coefficient h[41 = 0.003246 0.1. : 1 coefficient = 0.820001 I D.l. coefficiem h[6J = 0.304091 I 230
PAGE 241
I I D.l. coefficient h[Y] = I D.l. coefficient h[8] = I D.l. coefficient h[9] = I I D.l. coefficient h[1 0] = I D. I. coefficient 1] = filter #20 I ,, D.J. coefficient h[O] .. ., 0.1. coefficient h[1] = D.l. D.l. D.l. D.J. D.l. coefficient h[2] .. I coefficient = I coefficient = I coefficient hl11 = coefficient h[d] .. 0.1. coefficient hVJ = 0.1. D.l. D.l. I coefficient .. I coefficient h[9) = I coefficient h[1!o] = I D.J. coefficient h[1j11 = ., filter #19 D.l. coefficient h[O] = I D.l. coefficient h[1] = I D.J. coefficient h[2] ... I D.l. coefficient h[S) = : I I i I 0.160731 0.091585 0.044038 0.012842 0.003656 0.032780 0.051856 0.064388 0.056609 0.007679 0.814373 0.319466 0.163317 0.090983 0.042491 0.011326 0.004734 0.032920 0.051061 0.061824 0.051131 231
PAGE 242
. I 0.1. coefficient = i ., 0.1. coefficient h[5] = I I 0.1. coefficient = :I 0.1. coefficient h(7] = 0.1. coefficient = I I 0.1. coefficient h(S] = I 0.1. 0.1. I coefficient h[1 0] = I coefficient h[11] = j filter #18 I 0.1. coefficient h[qJ = 0 .1. coefficient = I j 0.1. coefficient h(2] = I 0.1. coefficient h[3] = I 0.1. coefficient hf1 = 0.1. coefficient h[5] = 0.1. coefficient h[S] = 0.1. coefficient hl?J = i 0.1. coefficient = I 0.1. coefficient h[S) = 0.1. coefficient h[1io] = I 0.1. coefficient h[1\ 1] = I filter #17 i 0.1. coefficient h = 0.018291 0.808282 0.334883 0.165661 0.090209 0.040847 0.009768 0.005820 0.032998 0.050186 0.059186 0.028584 0.801735 0.350327 0.167755 0.089262 0.039107 0.008171 0.006912 0.033017 232
PAGE 243
I D.l. coefficient h[11] = I D.l. coefficient h(f] = D.l. coefficient h[3] = 0.1. coefficient h[r] = D.l. coefficient h[5] = I D.l. coefficient h[6] = l D.l. coefficient h[7] = I D.l. coefficient h(j] = . D.l. coefficient h[9] = I D.l. coefficient h[1 0] = I D.l. coefficient h[11] = filter #16 :1 .I I D.l. coefficient h[O] = I D.l. coefficient h[1] = : I D.l. coefficient = I D.l. coefficient h[3] = I I 0.1. coef!Cient h(t] = D.l. coefficient h[5] = I D.l. coefficient hlqJ = I D.l. coefficient h[(] = I D.l. coefficient h[,] = D.l. coefficient h[9] ... I D.l. coefficient h[1l0) = 0.049233 0.056480 0.040191 0.038552 0.794738 0.365785 0.169590 0.088141 0.037274 0.006538 0.008008 0.032976 0.048206 0.053711 0.034747 0.048188 0.787300 0.381241 0.171160 0.086846 0.035349 0.004870 233
PAGE 244
0.1. coefficient h[11] = filter #15 0.1. coefficient h[O] = : I 0.1. coefficient h[1] = ;I I D.l. coefficient h[2] = I I D.l. coefficient h[3] = I D.l. coefficient h[4] = 'I D.l. coefficient h[5] = . I 0.1. coefficient h[j1 = 0.1. coefficient h[7] = I I D.l. coefficient = I 0.1. coefficient h[9) = 0.1. coefficient h[f OJ = D.l. coefficient 1] ... filter #14 f I j D.l. coefficient h[PJ = : 1 0.1. coefficient hi1J = i D.l. coefficient h[2] = I 0.1. coefficient h[3] = I I 0.1. coefficient = I D.l. coefficient h[5] = I 0.1. coefficient h[6] = I 0.1. coefficient h[i7] = I I I I 0.009106 0.032876 0.047107 0.050887 0.029332 0.057488 0.779429 0.396679 0.172454 0.085376 0.033334 0.003171 0.010203 0.032719 0.045939 0.048011 0.023955 0.066447 0.771132 0.412086 0.173467 234
PAGE 245
D.l. coefficient h[81 = 0.083732 D.l. coefficient h[91 = 0.031233 I D.l. coefficient h[1 01 = 0.001443 I : D.l. coefficient h[11 1 = 0.011299 filter #13 I D.l. coefficient h[01 = 0.032506 I I D.l. coefficient h[1 1 = 0.044704 I D.l. coefficient h[21 = 0.045090 : I 0.1. coefficient h[31 = 0.018624 I I D.l. coefficient h[41 = 0.075059 I D.l. i coefficient h[91 = 0.762419 D.l. coefficient = 0.427446 0.1. coefficient h[?l = 0.174190 D.l. coefficient h[B] = 0.081912 I I D.l. coefficient h[91 = 0.029047 D.l. coeffictent h[i O] = 0.000312 0.1. coefficient h[1j1] = 0.012391 i filter #12 D.l. coefficient h[d] = 0.032238 I : 0.1. coefficient' h[1] = 0.043407 '' I D.l. coefficient h[2] = 0.042129 D.l. coefficient h[3] = 0.013348 I i 0.1. coefficient h[4] = 0.083323 : 235
PAGE 246
0.1. coefficient h[$] = 0.753299 !1 0.1. coefficient h[r] = 0.442744 j 0.1. coefficient h[i7) = 0.174616 : 1 0.1. coefficient h[8] = 0.079919 I 0.1. coefficient = o.o25n9 0.1. coefficient h[1 OJ = I 0.002090 0.1. coefficient h[11] = 0.013476 I filter #11 0.1. coefficient = 0.031916 0.1. coefficient h['] = 0.042050 i 0.1. coefficient = 0.039135 0.1. coefficient h(3] = 0.008134 0.1. ff" h : I] 0.091233 coe 1c1ent [4 = 0.1. coefficient h[S] = 0.743782 I 0.1. coefficient h[S] = 0.457965 0.1. i coefficient h[?] = 0.174738 i 0.1. I coeff1c1ent = o.o7n52 I 0.1. I coefficient = 0.024433 I 0.1. coefficient h[i 0] = I 0.003888 0.1. coefficient h[1h] = 0.014554 filter #1 0 I 0.1. coefficient = 0.031541 I 0.1. coefficient h[1,) = 0.040636 236
PAGE 247
' I 0.1. coefficient = I 0.1. coefficient h[3] = I 0.1. coefficient h[4] = 0.036112 0.002990 0.098787 0.1. coefficient = 0.733877 :f 0.1. coefficient h[p] = 0.473094 I 0.1. coefficient h[7] = 0.174551 ; 0.1. coefficient = 0.075414 I 0.1. coefficient h[9] = 0.022011 I 0.1. coefficient h(10) .. 0.005704 0.1. coefficient = 0.015620 filter #9 0.1. coefficient h(O] = 0.031115 I I 0 .1. coefficient hl1] = 0.039169 ; 0.1. coefficient = 0.033067 0.1. coefficient h[3] = 0.002075 i 0.1. coefficient h[:4] = 0.105982 j 0.1. coefficient h[$] = 0.723596 0.1. coefficient h[9] = 0.488116 0.1. coefficient h[l7] = 0.174046 0.1. coefficient = 0.072905 0.1. coefficient h[9] = 0.019517 I I 0.1. coefficient 0] .. 0.007534 0.1. coefficient h[i1 1 = 0.016674 I 237
PAGE 248
filter #8 D.l. coefficient hf91 = 0.030639 D.l. coefficient h[;1] = 0.037652 D.l. coefficient h[*] = 0.030006 I D.l. coefficient h[3] = 0.007056 D.l. coefficient h[4] = 0.112817 I D.l. coefficient = 0. 712949 D.l. coefficient h[S] = 0.503015 I D.l. coefficient h[V] = 0.173220 ' D.l. coefficient h[B] = 0.070227 I D.l. coefficient h[9] = 0.016954 I I D.l. coefficient 0] = 0.009375 D.l. coefficient h[11] = o.o1n14 filter #7 D.l. coefficient h[O] = .I D.l. coefficient h['] = D.l. coefficient h[?l = D.l. coefficient h[3] = ,, , D.l. coefficient h[4] = I I D.l. coefficient h[S] = I I D.l. coefficient h[6] = D.l. coefficient h(7] = I D.l. coefficient h[Q] = 0.030115 0.036088 0.026933 0.011944 0.119290 0.701948 o.51n78 0.172066 0.067382 238
PAGE 249
D.l. D.l. D.l. I I coefficient = I coefficient h(11 0) = I coefficient h[11] = I I filter #6 1: D.l. coefficiel"!t h[Q] = I D.l. coefficient = D.l. coefficient h] = ) D.l. coefficient = I I D.l. coefficient = I D.l. coefficient h[5] = 'I :I D.J. coefficient = I D.l. coefficient h[(J = i 0.1. coefficient h[S] = . I 0.1. coefficient h[$] = D.l. OJ = I D.l. coefficient h: 1] = filter #5 i I .I D.l. coefficient h[Q) = I I D.l. coefficient h[1] = D.l. coefficient h[2) = I I D.l. coefficient = I 0.1. coefficient h[4] = I 0.1. coefficient h[SJ = I 0.014325 0.011225 0.018737 0.029545 0.034480 0.023854 0.016733 0.125399 0.690604 0.532388 0.170579 0.064373 0.011635 0.013079 0.019740 0.028930 0.032833 0.020775 0.021416 0.131145 0.678930 239
PAGE 250
0.1. coefficient h[S] = I 0.1. coefficient h(71 = I 0.1. coefficient h[8) = 'i 0.1. coefficient h[9] = I 0.1. coefficient h[1 0] = I 0.1. coefficient 1] = I filter #4 .I 0.1. coefficient h[O] = I 0.1. coefficient h[1] = I I 0.1. coefficient h[2] = I 0.1. coefficient h[3] = 0.1. 0.1. 0.1. 0.1. 0.1. 0.1. 0.1. 0.1. I coefficient h[4] = I coefficient h[5) = I I coefficient h[S] = I coefficient h[il] = I : coefficient = coefficient = I, I coefficient h[11 0) = I I coefficient hU 1] = I filter #3 0.1. coefficient = I 0.1. coefficient = : 0.1. coefficient h[2] = i 0.546831 0.168754 0.061202 0.008888 0.014935 0.020723 0.028272 0.031150 o.o1no1 0.025988 0.136526 0.666937 0.561093 0.166587 0.057873 0.006087 0.016790 0.021682 0.027572 0.029433 0.014638240
PAGE 251
I I I ; I : 1 0.1. coefficien t h[3) = 0.030442 : 1 0.1. coefficient h[4] = 0.141543 'i 0.1. coefficient h[5] = 0.654638 : j 0.1. coefficient h[6] = 0.575159 .. I 0.1. coefficient hW] = 0.164073 0.1. ] coefficient h[8] = : I 0.054388 I 0.1. coefficient h[9] = 0.003237 I 0.1. coefficient O] = 0.018639 0.1. coefficient = 0 022616 filter #2 0.1. I h[jl = 0.026833 0.1. coefficient h[11] = 0.027687 : I 0.1. coefficient h[jl = 0.011590 0.1. coefficient h[3] = 0.034772 I 0.1. coefficient h[r] = 0.146197 :, 0.1. coefficient h[S] = I 0.642046 0.1. coefficient h[6] = 0.589014 . I 0.1. coefficient hr] = 0.161210 0.1. coefficient h[J] = 0.050752 0.1. coefficient h[9] = 0.000343 0.1. coefficient O] = 0.020480 0.1. coefficient h[11] = 0.023523 I filter #1 241
PAGE 252
0.1. 0.1. 0.1. 0.1. 0.1. 0.1. .I .I ' coefficient h[O] = :1 coefficient h[1] = I coefficient h[2] = I i coefficient h[3] = .I coefficient h[4] = I coefficient h[S) = 0.1. coefficient h[S] = o, 'I I 0.1. coefficient h[i7] = ' I 0.1. coefficient = I 0.1. coefficient h[9] = I D.l. coefficien,t h[l 1 0] = :1 D.l. coefficient h[11] = I filter #0 D.l. D.l. 0.1. 0.1. 0.1. I I coefficient h[(!)] = i = I coefficient h[2] = :I coefficient h[31 = : I coefficient = 0.1. = 0.1. 0.1. 0.1. i coefficient h[6] = I :, I coefficien h[7l = i coefficient = I 0.1. coefficient h[9] = I 0.026057 0.025916 0.008563 0.038973 0.150489 0.629174 0.602644 0.157993 0.046967 0.002592 0.022308 0.024400 0.025245 0.024121 0.005562 0.043040 0.154420 0.616035 0.616035 0.154420 0.043040 0.005562 242
PAGE 253
0.1. coefficient h[1 OJ = 0.024121 0.1. coefficient 1 1 = 0.025245 filter #1 I : 1 0.1. coefficient h[O] = 0.024400 j D.l. coefficient = 0.022308 I D.l. coefficient h[f] = 0.002592 D.l. coefficient h[l] == 0.046967 D.l. coefficient = 0.157993 0.1. coefficient h[S] = 0.602644 : I D.l. coefficient h[6] = 0.629174 'I 0.1. coefficient h['!] = 0.150489 : I 0.1. coefficient h[j] = 0.038973 0.1. coefficient h[9] = 0.008563 D.l. coefficient h[r 0) = 0.025916 0.1. coefficient. h[i 1] = 'I 0.026057 filter #2 I D.l. coefficien't h[O] = 0.023523 i D.l. coefficient h[1] = 0.020480 I j D.l. h[f] = 0.000343 D.l. coefficient h(3] = 0.050752 D.l. ff" hi] 0.161210 coe acaent rr = 0.1. coefficient h[S] = 0.589014 :I 0.1. coefficient h[6] = I 0.642046 243
PAGE 254
:I 0.1. coefficient h[7] = I 0.1. coefficient h[8) = : I 0.1. coefficient h[9] = I 0.1. coefficient h[1 OJ = I 0.1. coefficient h[r 1] = filter #3 j 0.1. 0.1. 0.1. 0.1. 0.1. J coefficient h[O] = I I coefficieJJt h[1] = : i coefficient hi2J = :I coefficient h[3] = : I coefficient h[4] = ; :1 0.1. coefficient h[5] = I coefficient h[S] = j 0.1. 0.1. coefficient hr] = 0.1. coefficient h[8] = I I coefficient h[9] = . I 0.1. 0.1. 0] = ff. h[' l coe 1c1ent 11] .. I 0.1. filter #4 I 0.1. coefficient h[O] = coefficient [ h[f] = coefficient h[l] = 0.1. D.l. 0.1. I I 0.146197 0.034772 0.011590 0.027687 0.026833 0.022616 0.018639 0.003237 0.054388 0.164073 0.575159 0.654638 0.141543 0.030442 0.014638 0.029433 0.027572 0.021682 0.016790 0.006087 0.057873 244
PAGE 255
0.1. 0.1. 0.1. 0.1. D.l. D.l. : I I coefficient h[4] = I coefficient h[5] = i coefficient h[6] = I :1 coefficient h(7] = I I coefficient = I coefficient hlf1 = I D.l. coefficient 0] = D.l. coefficient 1] = I filter #5 : 1 I D.l. coefficient = I I D.l. coefficient hli1] = I D .1. coefficient = D.l. D.l. D.l. D.l. D.l. D.l. 0.1. 0.1. 0.1. I coefficient h[3] = coefficient coefficient h[S] = .I I coefficient h[6] = I coefficient h[7] = I I coeffiCient h[8] = I coefficient h[9] = coefficient OJ I coefficient hq 1] = filter #6 I I i 0.1. coefficient h[O] = 0.166587 0.561093 0.666937 0.136526 0.025988 o.o1no1 0.031150 0.028272 0.020723 0.014935 0.008888 0.061202 0.168754 0.546831 0.678930 0.131145 0.021416 0.020775 0.032833 0.028930 0.019740 245
PAGE 256
I l 0.1. coefficient hp] = 0.013079 I 0.1. coefficient h[2] = 0.011635 0.1. coefficient h[3) = 0.064373 I 0.1. coefficient h[4] = 0.170579 I 0.1. coefficient h[S) = 0.532388 0.1. coefficient h[6] = 0.690604 I 0.1. h[7] = 0.125399 I 0.1. coefficlef'!t h[8) = 0.016733 I 0.1. coefficient = 0.023854 i 0.1. coefficient hp 0) = 0.034480 0.1. coefficient hf11] = 0.029545 filter #7 0.1. coefficient = 0.018737 i 0.1. coefficient h[1] = 0.011225 0.1. coefficient h[2] = 0.014325 I 0.1. coefficient h[3] = 0.067382 I ., 0.1. coefficierit h[4] = 0.172066 I 0.1. coefficient h[pl = 0.517778 : 0.1. coefficient h[9] = 0.701948 I 0.1. coefficieriJ h(7] = 0.119290 0.1. coefficient h[B] = 0.011944 : I 0.1. coefficient h[Sl = 0.026933 0.1. coefficient h(:1 0] = 0.036088 246
PAGE 257
0.1. coefficient h[11] = 0.030115 I filter #8 ; 0.1. coefficient h(O] = o .o1n14 I 0.1. coefficient h[1] = i 0.009375 0.1. coefficient h :[2] = 0.016954 0.1. coefficient h[3) = 0.070227 I 0.1. coefficient h[4] = 0.173220 I 0.1. coefficient h[5) = 0.503015 I 0.1. coefficient h[6) = 0.712949 I 0.1. coefficient h[7] = 0.112817 I 0.1. coefficient h[8) = 0.007056 I I 0.1. I coefficient h[9) = 0.030006 0.1. coefficient h[1 0] = 0.037652 I 0.1. coefficient h[11] = 0.030639 ., filter #9 0.1. coefficient h[O] = 0.016674 I 0.1. coefficient 11[1) = 0.007534 0.1. coefficient = 0.019517 0.1. i coefficient h[3) = 0.072905 I 0.1. coefficient = 0.174046 I 0.1. coefficient h[5] = 0.488116 I 0.1. coefficient h{6J = 0.723596 0.1. coefficient h1[7) = 0.105982 I I 247
PAGE 258
i t 0.1. coefficient h[8] = 0.002075 I :I 0.1. coefficient = 0.033067 0.1. coefficient 0] = 0.039169 0.1. coefficient h[11] = 0.031115 i I filter #10 'I 0.1. coefficient h[O] = 0.015620 ! 0.1. coefficient = 0.005704 0.1. coefficient = 0.022011 I 0.1. coefficient h[3] = 0.075414 0.1. coefficient tl[4) = 0.174551 I 0.1. coefficient h[S] = 0.473094 I 0.1. coefficient h[6] = 0.733877 0.1. coefficient H[7] = 0.098787 I 0.1. coefficient h[8] = 0.002990 I 0.1. :I coefficient h[9] = 0.036112 i 0.1. coefficient 11[1 OJ = 0.040636 I 0.1. coefficient h[11] = 0.031541 filter #11 '! i D.l. coefficient hJO] = 0.014554 I 0.1. coefficient h[1) = 0.003888 0.1. coefficie.nt = 0.024433 I D.l. i coefficient h[3] = o.o7n52 0.1. coefficie.nt = 0.174738 248
PAGE 259
D.l. coefficient = 0.457965 I D.l. coefficient h(6] = 0.743782 D.l. coefficient = 0.091233 D.l. coefficient h[8] = 0.008134 I D.l. coefficient h(91 = 0.039135 D.l. coefficient h[1 0] = 0.042050 D.l. coefficier:'t h[11] = 0.031916 I filter #12 D.l. coefficient h[O] = 0.013476 D.l. coefficient = 0.002090 D.l. coefficient h'[2] = 0.026n9 D.l. coefficient h[3] = 0.079919 D.l. coefficient h[4] = 0.174616 D.l. coefficient h[5] = 0.442744 D.l. coefficient h[6] = 0.753299 D.l. coefficient h[7] = 0.083323 D.l. coefficient h[8] = 0.013348 I D.l. coefficient = 0.042129 D.l. coefficient h[1 OJ = 0.043407 D.l. coefficient h[11] = 0.032238 filter #13 I D.l. coefficient h[O] = 0.012391 I D.l. h(1] = 0 000312 249
PAGE 260
0.1. coefficient h[2] = 0.029047 ., 0.1. coefficient h[3] = 0.081912 ll 0.1. coefficient h[4] = 0.174190 0.1. coefficient h[5] = 0.427446 0.1. coefficient h[6] = 0.762419 0.1. coefficient h[7] = 0.075059 0.1. = 0.018624 0.1. coefficient = 0.045090 I 0.1. I coefficient O] = 0.044704 0.1. coefficient h[11] = 0.032506 filter #14 0.1. coefficient 1"![0] = 0.011299 I 0.1. coefficient h[1] = 0.001443 0.1. coefficient h[2] = 0.031233 0.1. coefficient h[3] = 0.083732 0.1. coefficient h[4] = 0.173467 0.1. coefficient h[5] = 0.412086 I 0.1. = 0.771132 D.l. coefficient h[7] = 0.066447 0.1. coefficient h[8] = 0.023955 D.l. coefficient h[9] = 0.048011 D.l. coeffici.ent h[1 0] = 0.045939 I 0.1. coefficient = 0.032719 250
PAGE 261
filter #15 i D.l. coefficient h[O] = 0.010203 D.l. coefficient h(1) = 0.003171 D.l. coefficient h[2] = 0.033334 I I D.l. coefficient h[3] = 0.085376 D.l. coefficient h[4] = 0.172454 D.l. h[5] = 0.396679 D.l. coefficient h'[S] = 0.779429 D.l. coefficient h[7] = 0.057488 I 0.1. coefficient 1[8] = 0.029332 D.l. coefficient h[9] = 0.050887 D.l. coefficient 0] = 0.047107 D.l. coefficient 11(11] = 0.032876 filter #16 D.l. coefficie nt = 0.009106 I D.l. coefficient h[1 1 = 0.004870 D.l. coefficient h[2] = 0.035349 I D.l. coefficient = 0.086846 D.l. coefficient h[4] = 0.171160 D.l. coefficient h[5] = 0.381241 D.l. coefficient h[S] = 0.787300 I D.l. coefficient = 0.048188 I D.l. coefficient h[8] = 0 034747 251
PAGE 262
0.1. h(9] = 0.053711 0.1. 0) = 0.048206 I 0.1. coefficient h[11 1 = 0.032976 I filter #17 0.1. coefficient h[O] = 0.008008 0.1. coefficient h[1] = 0.006538 I 0.1. coefficient h1(2) = 0.037274 I D.l. coefficient h(3] = 0.088141 D.l. coefficient h(4] = 0.169590 D.l. coefficient h[5] = 0.365785 D.l. coefficient h[6] = 0.794738 D.l. coefficient 11(7] = 0.038552 0.1. coefficient = 0.040191 .! I D.l. coefficient h(9] = 0.056480 0.1. coefficient 0] = 0.049233 0.1. coefficient h[11] = 0.033017 filter #18 D.l. coefficient h[O) = 0.006912 0.1. coefficient h[1] = 0.008171 0.1. coefficient h[2] = 0.039107 0.1. coefficient hf3] = 0.089262 D.l. coefficient h[4] = 0.167755 0.1. coefficient h(5] = 0.350327 252
PAGE 263
I I D.l. coefficient h[6] .. 0.801735 I I D.l. coefficient ... 0.028584 D.l. coefficient 1[8] = 0.045655 D.l. coefficient h[9] = 0.059186 I I D.l. coefficient h[1 O] = 0.050186 D.l. coefficient = 0.032998 I filter #19 D.l. coefficient h[O] = 0.005820 ; I D.l. coefficient h[1] = 0.009768 I D.l. coefficient 1')[2] = 0.040847 D.l. .I coefficient h[3] .. 0.090209 I D.l. coefficient .. 0.165661 D.l. coefficient h[5] = 0.334883 I 1 D.l. coefficient .. 0.808282 D.l. coefficient ... 0.018291 D.l. coefficient h[8] = 0.051131 I D.l. coefficient H[9] = 0.061824 D.l. coefficient O] = 0.051061 J D.l. coefficient tl[11) = 0.032920 I filter #20 I D.l. coefficient h[O] 0.004734 I D.l. coefficient = 0.011326 i D.l. coefficient = 0.042491 253
PAGE 264
. I 0.1. coefficient h(3) = 0.090983 I 0.1. coefficient h1[4) = 0.163317 1 0.1. coefficient h(5] = 0.319466 0.1. coefficient h(6] = 0.814373 I I 0.1. coefficient ti[7] = 0.007679 0.1. coefficient h[S) = 0.056609 I I 0.1. coefficient h[9) = 0.064388 I 0.1. coefficient h[1 0] = 0.051856 0.1. coefficient h[11] = 0.032780 I filter #21 0.1. coefficient h[O) = 0.003656 I i 0.1. coefficient h[1] = 0.012842 I 0.1. coefficient = 0.044038 I 0.1. coefficler:1t h,l3] = 0.091585 0.1. coefficient h[4) = 0.160731 D.l. I coefficient h[5] = 0.304091 D.l. coefficient h[6] = 0.820001 I 0.1. coefficient h[7] = 0.003246 D.l. coefficient tl[8] = 0.062080 : 1 0.1. coefficient h[9] = 0.066873 i D.l. coefficient h[1 0] = 0.052569 .I 0.1. I coefficient h[11] = 0.032580 filter #22 254
PAGE 265
I i I 0.1. coefficient h[O] = 0.002587 0.1. coefficient h[1] = 0.014315 I 0.1. coefficient h[2] = 0.045486 I 0.1. coefficient = 0.092018 0.1. coefficient h[4] = 0.157914 i D.l. coefficient h[5] = 0.288772 I 0.1. coefficient h(6l = 0.825160 0.1. coefficient h[7] = 0.014476 i 0.1. coefficient h[8] "" 0.067534 I 0.1. coefficient h[9] = 0.069274 0.1. coefficient h[1 0] = 0.053196 I 0.1. coefficient = 0.032317 filter #23 0.1. coefficient h[O] = 0.001530 I 0.1. I coefficient h[1] = 0.015743 0.1. coefficient h[2] = 0.046835 I 0.1. coefficient h[3] = 0.092281 l 0.1. coefficient ti[4) = 0.154873 0.1. coefficient h[5] = 0.273524 : ; 0.1. coefficient h[6) = 0.829845 I I 0.1: coefficient h(7J = 0.026005 0.1. coefficient h'[8] = 0.072963 I I 0.1. coefficient h[9] = 0.071585 I 'I I 255
PAGE 266
D.l. coefficient 0] = 0.053736 D.l. coefficient n1[11) = 0.031992 filter #24 D.l. h ,[O) = 0.000486 D.l. coefficient h[1] = 0.017123 0.1. coefficient h[2] = 0.048083 D.l. coefficient h[3] = 0.092379 I 0.1. coefficient = 0.151617 I 0.1. coefficient h(5] = 0.258361 I 0.1. coefficient h '[6] = 0.834051 D.l. coefficient hl[7] = 0.037824 D.l. coefficient = 0.078355 0.1. I coefficient h[9] = 0.073800 I 0.1. coefficient h[1 0] ,.. 0.054188 0.1. ff". I[ coe 1c1ent h 11] .., 0.031605 filter #25 D.l. coefficient = 0.000542 I D.l. coefficient h[1] = 0.018453 D.l. coefficient H,[2] = 0.049229 ; 0.1. coefficient h[3] = 0.092312 D.l. coefficient = 0.148157 i D.l. .i coefficient h[5] = 0.243297 I 0.1. coefficient h[6] = O.B3n72 256
PAGE 267
D.l. coefficient h[7] = 0.049924 D.l. coefficient h[81 = 0.083702 I D.l. coefficient = 0.075914 ,I I D.l. coefficient h[1 OJ = 0.054547 D.l. coefficient 1 = 0.031155 filter #26 i i D.l. coefficient h[01 = 0.001554 D.l. coefficient h[1 1 = 0.019733 I I D.l. coefficient ,(21 = 0.050273 D.l. coefficient h[31 = 0.092083 D.l. coefficient b[4] = 0.144502 I D.l. coefficient = 0.228345 D.l. coefficient h[6] = 0.841006 I D.l. coefficient = 0.062297 D.l. coefficient = 0.088993 D.l. coefficient h[9] = 0.077923 I i D.l. coefficient h[1 0] = I 0.054814 D.l. coefficient = 0.030642 filter #27 D.l. coefficient h[O] = I 0.002548 I D.l. coefficient ij[1] = 0.020960 D.l. coefficient h[2] = 0.051214 D.l. coefficient = 0.091695 .! I 257
PAGE 268
i I j D.l. coefficient H[4] = 0.140661 I D.l. coefficient ht51 = 0.213519 .I D.l. coefficient = 0.843748 D.l. coefficient h[7] ... 0.074934 I I D.l. coefficient h[8] = 0.094219 ; D.l. coefficient .. 0.079821 .I D.l. coefficient 0] = 0.054985 I D.l. coefficient h[11] = 0.030066 I filter #28 D.l. coefficient = 0.003522 D.l. coefficient h[1] = 0.022133 I I D.l. coefficient = 0.052051 D.l. coefficient ryl3] = 0.091151 D.l. coefficie nt h[4] = 0.136644 D.l. coefficient = 0.198831 D.l. = 0.845995 I D.l. coefficient ij[7] = 0.087825 I D.l. coefficient h[8] = 0.099369 D.l. coefficient = 0.081603 I I D.l. coefficient h[1 0) = 0.055061 i D.l. coefficient h[11) = 0.029428 I filter #29 I D.l. coefficient h[O) = 0.004475 I 258
PAGE 269
D.l. . I coefficient ti[1) = 0.023251 D.l. coefficient = 0.052786 I D.l. coefficient = 0.090454 I 0.132461 D.l. coefficient = D.l. coefficient = 0.184296 J D.l. coefficient = 0.847746 D.l. coefficient = 0.100960 I D.l. coefficient h[8] = 0.104434 0.1. coefficient H[9] = 0.083265 I 0.1. coefficient h[1 0] = 0.055038 D.l. coefficient J[11) = 0.028727 filter #30 I D.l. coefficient h[O] = 0.005405 D.l. coefficient = 0.024311 D.l. I coefficient = 0.053417 D.l. coefficient = 0.089608 D.l. coefficient h[4] = 0.128121 I D.l. I coefficient h[5] = 0.169925 D.l. coefficient = 0.848998 I D.l. coefficient h[7] = 0.114330 I D.l. coefficient h[8) = 0.109403 D.l. coeffici.ent = 0.084801 D.l. coefficient h[1 OJ = 0.054916 I 259
PAGE 270
I 0.1. coefficient = 0.027965 filter #31 I 0.1. coefficient troJ = 0.006311 0.1. coefficient ti[1] = 0.025314 i 0.1. coefficient = 0.053945 0.1. coefficient h[3] = 0.088615 0.1. coefficie nt h[4] = 0.123636 I 0.1. coefficient h[5] = 0.155731 I 0.1. coefficient = 0.849749 0.1. coefficient h[7] = 0.127922 I I 0.1. coefficient h[8] = 0.114267 I 0.1. 'I coefficient = 0.086208 0.1. coefficient h[1 0] = 0.054694 0.1. coefficient = 0.027142 I filter #32 .I 0.1. coefficient h[O) = 0.007191 I 0.1. coefficient = 0.026258 I 0.1. coefficient h[2] = 0.054370 0.1. coefficient t:l) = 0.087481 I 0.1. coefficient h[4] "" I 0.119014 0.1. :1 coefficient h[5] = 0.141726 i 0.1. coefficient h(6] = 0.850000 0.1. coefficient f[7) = 0.141726 I 260
PAGE 271
:I D.l. coefficient hl8] = 0.119014 D.l. coefficient = 0.087481 'i D.l. coefficient 0] = 0.054370 D.l. coefficient h[11] = 0.026258 This a log of; the simulation. I ., ., Number of input !samples to process = 100 I :i Input/output rate difference (ppm) = 1 0000 Tone frequency L 1020.000 Number of filter .ibanks = 64 Order= 0 I I I Taps= 12 to distortion delay 261 # input output
PAGE 272
I I 0.000921 0.000000 0.120000 1 3 0.835803 0.92072 I 'I 0.001045 0.130000 14 0.975919 0.36433 0.001169 0.000224 'I 0.140000 15 0.522507 0.418305 I 0.001293 (;).000053 0.150000 1 6 0.248679 0.942296 I 0.001416 0.000001 0.160000 1 7 0.868626 0.909418 i 0.001540 0.000147 0.170000 1 8 0.960297 0.327856 I 0.001664 0.000111 0.180000 1 9 0.467941 0.44213 'i I 0.001788 0.000026 0.190000 20 0.309004 0.95066 I 0.001912 0.000010 0.200000 21 0.898021 0.89208 0.002035 0.000064 .0.210000 22 0.940886 0.30257 :I 0.002159 p.000036 0.220000 23 0.411529 0.465430 I 0.002283 .0.000045 I 0.230000 24 0.368109 0.961948 0.002407 0.000003 0.240000 25 0.923873 0.879216 I 0.002530 0.000013 0.250000 26 0.917762 0.277257 I 0.002654 0.000147 0.260000 27 0.353492 0.49897 0.002778 ().000020 0.270000 I 28 0.425762 0.96843 .I 0.002902 0.000037 0.280000 29 0.946079 0.85972 .I 0.003025 'I 0.000117 0.290000 30 0.891016 0.24007 0.003149 p.oooo53 0.300000 31 0.294060 0.521040 0.003273 p.000029 0.310000 32 0.481735 0.977176 I 0.003397 0.000019 0.320000 33 0.964552 0.845518 0.003520 b.oooo35 0.330000 34 0.860754 0.214738 0.003644 0.000164 0.340000 35 0.233468 0.55302 I 262
PAGE 273
I :1 0.003768 0.000010 0.350000 36 0.535806 0.98186 .I 0.003892 (l).000005 0.360000 37 0.979218 0.83088 0.004015 6.000166 0.370000 38 0.827095 0.17733 I 0.004139 6.000059 0.380000 39 0.171955 0.573766 i I 0.004263 0.000013 0.390000 40 0.587763 0.988128 0.004387 0.000044 0.400000 41 0.990020 0.808770 I 0.004511 0.000055 0.410000 42 0.790172 0.152180 I I 0.004634 0.000159 0.420000 43 0.109763 0.60408 0.004758 0.000003 0.430000 44 0.637401 0.99114 'I 0.004882 0.000015 0.440000 45 0.996915 0.79315 0.005006 :I 0.000198 0.450000 46 0.750132 0.11475 I 0.005129 0.000052 0.460000 I 47 0.047138 0.623495 0.005253 0.000000 0.470000 I 48 0.684523 0.993549 0.005377 0.000072 0.480000 49 0.999876 0.769403 I 0.005501 I 0.000064 0.490000 50 0.707131 0.089930 0.005624 .:o.ooooo4 0.500000 51 0.707131 0.64232 'I 0.005748 :o.ooooo1 0.490000 52 0.015673 0.99542 .I 0.005872 :o.oooo14 0.490000 53 0.728945 0.75416 0.005996 .10.000000 0.480000 54 0.998892 0.06692 0.006119 r.000029 0.470000 55 0.661339 0.669420 0.006243 ,0.000000 0.460000 56 0.078422 0.998300 0.006367 lo.ooooo1 0.450000 57 0. 770489 0.738097 0.006491 0.000041 0.440000 58 0.993965 0.029493 263
PAGE 274
i I 0.006614 (>.000001 0.430000 59 0.612938 0.68810 0.006738 1;>.000000 0.420000 60 0.140862 0.99982 ' 0.006862 0.000012 0.410000 61 0.808993 0.71250 I 0.006986 0.000000 0.400000 62 0.985116 0.00441 'I I 0.007110 0.000007 0.390000 63 0.562118 0. 706622 0.007233 0.000000 0.380000 64 0.202746 1.000437 0.007357 0.000001 0.370000 65 0.844305 0.695016 I 0.007481 0.000051 0.360000 66 0.972380 0.03342 0.007605 0.000006 0.350000 67 0.509080 0.73328 i 0.007728 0.000002 0.340000 68 0.263829 1.00044 0.007852 0.000013 0.330000 69 0.876285 0.66751 0.007976 0.000003 0.320000 70 0.955807 0.059011 I 0.008100 0.000000 0.310000 71 0.454033 0.751040 I I 0.008223 0.000002 0.300000 72 0.323872 0.998665 0.008347 p.000001 0.290000 73 0.904806 0.648549 0.008471 0.000013 0.280000 74 0.935461 0.08484 0.008595 0.000019 0.270000 75 0.397194 0.77614 0.008718 0.000006 0.260000 76 0.382637 0.99698 0.008842 p.000027 0.250000 77 0.929758 0.62891 0.008966 0.000014 0.240000 78 0.911425 0.123057 I 0.009090 ().000003 0.230000 79 0.338788 0.792905 0.009213 0.000003 0.220000 80 0.439891 0.992691 0.009337 0.000000 0.210000 81 0.951040 0.598740 264
PAGE 275
0.009461 0.000001 0.200000 82 0.883791 0.14915 I .I 0.009585 9.000041 0.190000 83 0.279044 0.81622 I I 0.009709 0.000009 0.180000 84 0.495410 0.98918 :1 0.009832 0.000014 0.170000 85 0.968569 0.57767 I I 0.009956 0.000042 0.160000 86 0.852670 0.187304 I 0.010080 0.000016 0.150000 87 0.218200 0.831743 I I 0.010204 0.000018 0.140000 88 0.548974 0.984856 0.010327 0.000006 0.130000 89 0.982276 0.545755 I 0.010451 0.000004 0.120000 90 0.818184 0.21343 I 0.010575 0.000069 0.110000 91 0.156495 0.85304 I 0.010699 0.000008 0.100000 92 0.600371 0.97685 I 0.010822 0.000002 0.090000 93 0.992107 0.52336. I 0.010946 0.000093 0.080000 94 0.780470 0.251252 I 0.011070 b.oooo37 0.070000 95 0.094172 0.867093 0.011194 : p.000017 0.060000 96 0.649399 0.970576 I 0.011317 I 0.000028 0.050000 97 0.998023 0.489891 I 0.011441 0.000030 I 0.040000 98 0.739675 0.27713 0.011565 0.000016 0.030000 99 0.031477 0.88045 I I 0.011689 0.000004 0.020000 100 0.695865 0.95993 0.011812 0.000002 0.010000 1 01 1.000000 0.46637 i I 0.011936 0.000002 0.000000 102 0.695962 0.302836 i i I Signaltodistortion ratio I = 14 784.37261772 i 265
PAGE 276
I ratio (dB) = I 41 .69802900 dB 266
PAGE 277
BIBUOGRAPHY Alefeld,G., Herzberger, J. 1983. Introduction to Interval Computations. New York: Academic Press. American and Telegraph. 1983. Digital Synchronjzatjon Network Elan. Dec. 60110. American Telephc;me and Telegraph. 1982. Digital Channel Bank Regujrements and Objectives. Nov. 43801. Apple Computer, Inc. 1988. Apple Numerjcs Manual. 2nd ed. Bellcore. 1985. 96 Channel Digital pajredCable Transmjssjon System I Regujrements and Objectjyes. Technical Reference Issue 1, TRTSY000171, April. Candy, J.C., and O.J. Benjamin. 1983. "A Circuit that Changes the Word Rate of Pulse Code Modulated Signals." In The Bell System Technical Journal. vol 62 (April) : 11611168. 267
PAGE 278
Farrow, C.W. 1988. "A Continuously Variable Digital Delay Element," in Ib..e. IEEE International Symposjum on Cjrcujts and Systems Proceedings held in I Espoo, Finland, June 79. Hamming, R. W. 1972. Numerjcal Methods for Scientists and Engineers. New York: Hamming, R. W.! 1983. Digital Filters. New Jersey: Prentice Hall, INC. Ingle, James F. 1S88. "How to Detect Frame Slips in Voiceband PCM Channels," Data Communjcatjons. October. Lang, J.J. 1982. iThe D4 Digital Channel Bank." In The Bell System Technical Journal vo!. 61, No. 9, Part 3 (November). Liu, GingShing, and Wei, CheHo. 1992. "A New Variable Fractional Sample Delay Filter with Nonlinear Interpolation." IEEE Transactions on Circuits and Systems, vol.39, no. 2 (February) : 123126. Neely, John. "Quantization Distortion Experimentstwo passes through a CODEC." Aurora, Colorado : XEL Communications INC., Engineering Department. Memo. 268
PAGE 279
Neely, John. 1989b. "Elastic Buffer Depth Guess." Aurora, Colorado : XEL I Communications Engineering Department. Memo. O'Shaughnessy, 1987. Speech Communication Human and Machine. I AddisonWesley Publishing Company. Oppenheim, Alan 'V., and Ronald W. Schafer. 1989. PiscreteIime Signal Processing. Prentice Hall, INC. Press, W. H., Flannery, B. P., Teukolsky, S. A., and Vetterling, W. T. 1986. Numerical Recipes: The Art of Scientific Computing. Cambridge, England: Cambridge University Press. STAR Semiconductor Corp. 1991. SPROC Signal processor oatabook. I Udovic, Dan. 1989."Personnel Communications." Aurora, Colorado : XEL Communications INC., Engineering Department. Memo. 269
