So I have a small project where I need to delay multiple signals that come out from a microcontroller. The signals are around 40kHz, have the same attributes, except that they are delayed by a few milliseconds. Would I need a separate DAC for each channel, or can I use a single DAC to process this? Since the sample rate is at least 80kHz, I believe I would need a DAC which can support 96kHz.


1 Answer 1


You can certainly do this in principle, but you'll need a (bit/lot) more hardware. You can (in principle) use several sample-and-holds on the output of the DAC, triggering each S/H at the appropriate time to grab the DAC output for that particular output channel. Then a second S/H will transfer the output of the first to the channel output at the desired delay.

Given the current costs and size of DACs, I find it unlikely that this approach will have much to recommend it.

EDIT - In looking over the OP, I realize that I've underestimated the amount of extra hardware required. If the microcontroller is putting out samples at 40 kHz, and you have 4 channels, the overall throughput rate for each channel is 10 kHz, for a per-channel period of 100 usec. To delay this by several milliseconds will require a chain of S/H's consisting of 10 S/H per millisecond of delay, or on the order of 10 to 40 S/H's for 1 to 4 milliseconds. This would seem to be something of a burdensome (not to mention cumbersome) requirement. So I would not recommend using discrete S/H's.

Instead, you would want to use a bucket brigade delay. Well, you would if you could find BBDs of the desired length, and as far as I know you can't.

So my original conclusion holds - this isn't a very useful approach.

I would recommend doing the delay in software in your microcontroller.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.