Re: help! how do I formulate this sampling system and analyze it?



lucy wrote:

Hi all,

This system consists of an DAC, a processor, and a ADC. The flow graph
is like as follows:

input-digital-signal -> DAC -> filter(Continuous Time) -> ADC ->
output-digital-sigal

The problem is that the DAC is a zero order hold, and the ADC is more
strange:

the ADC samples the continuous time waveform by integrate the input
signal in a period T, then put that integral result as the sample at
that time index.

As an example, the ADC integrates the input signal from (n-0.5)T to
(n+0.5)T, and then use the integration result as the output sample
y[n], which is in discrete time.

Now I need to formulate this system in DSP, and analyze the result, to
see how much does it deviate from a second system(given the same input,
how much does the output deviate, can they be made to be exactly the
same output???), which is as follows:

input-digital-signal -> filter(Discrete Time) -> output-digital-sigal

----------------------------

My headache is that the presence of non-traditional ADC/DAC complicated
the matters...

Can anybody help me?

Thanks a lot!

You can derive an exact discrete-time model for this mixed-signal system in a fairly direct manner.

You have a continuous-time filter, call it h(t), with a Laplace transform, H(s). You want to represent it with a filter in the z domain, H'(z). All you have to do is break down the system response a bit.

Assuming that h(t) is a linear, time-invariant system then the whole system is a linear, shift-invariant system. This means that all you have to do is find the system impulse response from the DAC input to the ADC output and you're done. Even easier for our purposes, you just need to find the system step response and divide by z/(z-1).

The DAC is a zero-order hold, so for an input step x_n that is zero for n < 0 and 1 for x >= 0 the output signal is a step x(t) that is zero for t < 0, 1 for x > 0 and is undefined (and no one cares) for x = 0. It's Laplace transform is 1/s.

The output of the filter is simply Y(s) = H(s)/s.

If you split the ADC up into an integrating part and a sampling part, then the integrating part is a continuous-time function who's transfer function is

H_a(s) = (e^(Ts/2) - e^(-Ts/2))/s

(note that H_a(s) has a finite DC gain -- you can do the math). So the input to the sampler is just

Y_s(s) = (e^(Ts/2) - e^(-Ts/2))H(s)/s^2.

Assuming that you define y_n as appearing at t = nT this is a non-causal system. I don't believe that, so I'm going to assume that y_1 appears at time T/2, y_2 appears at 3T/2, etc. You can modify your math to be non-causal if you feel like it, but remember to be very careful with your notation.

With my change in definition

Y_s(s) = (e^(-Ts/2) - e^(-3Ts/2))H(s)/s^2.

At this point all you have to do is find the ramp response of the filter, probably by taking H(s)/s^2 and expanding it. Now break the pure-delay portions of Y_s into two parts:

Y_s(s) = e^(-Ts/2) (1 - e^(-Ts)) H(s)/s^2.

This has the Really Cool property that part of it translates straight into the z domain:

1 - e^(-Ts)  <==>  (z - 1) / z

So you find the time-domain response of

Y_s'(s) = e^(-Ts/2) H(s) / s^2  ==> y_s'(t).

Now sample it at nT to get y_s'[n], and take its z transform:

y_s'(nT) ==> Y_s'(z).

Now recall that this is a step function, so you need to divide it by z/(z-1). Remember also you need to multiply it by (z-1)/z to take the ADC action into account that we trimmed out when we went from Y_s to Y_s':

H'(z) = (z-1)^2/z^2 Y_s'(z).

Ta da!

This is actually easier to do if you have a state-space representation of H(s). I'm not going to work through it, I only refer you to problem 2.5-12 on page 174 of "Linear Systems" by Kailath, ISBN 0-13-536961, Library of Congress number QA402.K295. The method keeps it more in the time domain and is probably what Matlab uses. It can be easily modified for your screwy ADC (or any other screwy ADC, for that matter).

--

Tim Wescott
Wescott Design Services
http://www.wescottdesign.com
.



Relevant Pages

  • Re: Controller design
    ... of course the input and output are DAC and ADC counts (the former ... So to make a z domain transfer function you just need to write ... Need to learn how to apply control theory in your embedded system? ...
    (sci.electronics.design)
  • Re: DirectSound and full-duplex
    ... if the ADC and DAC operations begin at the same time, ... correspond to the Nth DAC sample, even if it takes a while to get ... But if it was a constant sample offset for any given card, ... started by Windows at the same time. ...
    (microsoft.public.win32.programmer.mmedia)
  • Re: Tube DACs??
    ... Figure 4.3 says that the total power usage was 500 watts. ... If enough accuracy and stability were possible, the SAR DAC technology would ... But what we need is a DAC, not a successive approximation ADC. ...
    (rec.audio.tubes)
  • Re: Roland DD6 effects pedal
    ... Are you still seeing the sine wave at a pin on the ADC? ... I ask because the symptoms you describe sound like something in the ADC ... input chain is losing the signal & supplying noise instead. ... the main chippery has a regulated 5V including the ADC and DAC. ...
    (sci.electronics.repair)
  • Re: Audio interface in Spartan 3E Starter kit
    ... I like to use the Spartan 3E Starter kit as audio capture/playback ... developping system as it has Linear Technology's DAC and ADC built in. ...
    (comp.arch.fpga)