Simplest way to propagate a digital pulse?

Hi All,

I want to propagate a digital pulse down a line of maybe 100 modules, each separated by three inches or so. I want to apply a pulse to the first module which will turn on and do its thing, then as it turns off, pass the pulse to the next module, etc., etc.

Currently, each module has a D flip-flop with the propagating pulse on each module's D input (Q out from the previous module), and a separate, common clock line going to all the modules. As you can imagine, I'd really like to not have to drive a 25 foot clock line with a 100 device fan out.

Of course, I could buffer it on each module, but I'd much rather be rid of the clock line all together. Each module needs to stay on for the same amount of time, though I'd like to be able to adjust this, perhaps by varying the width of the applied pulse. Of course, without a separate clock, I don't see how to accomplish this.

This seems like the sort of thing that would have been solved already, but I'm not finding what solutions might exist. Can anyone enlighten me at all?

Thanks, Max

Reply to
Max Moor
Loading thread data ...

Throw away the clock. Call the FF in each module, MyTurn. Run a wire from that FF to the next module. On the falling edge of the input signal, clock a 1 into the local MyTurn. When that module has finished doing whatever it does, reset the FF. That falling edge will start the next module.

--
These are my opinions, not necessarily my employer\'s.  I hate spam.
Reply to
Hal Murray

I disagree with this method. All it takes is one edge getting "lost" somewhere and everything stops. What about changing your input from a pulse to a high. When a module sees a high in, it does its thing, and then propagates the high out. So: out = in and done, in and not done = start

Dan

Reply to
Dan Kuechle

Hi Dan,

The down side of this is that the operation time of each module isn't specified. There's no specific amount of time it takes to do anything. It comes on and stays on until I want it off. That's why I was thinking of using the pulse width to set the on time. Propagating the "on" isn't the tough part. It's propagating the amount of on time.

Regards, Max

Reply to
Max Moor

Hi Hal,

The problem is that each module doesn't really have a finite set of tasks it does before it can turn off. It is simply on or off. (I likely wasn't clear about that.)

I just want only one on at a time in the chain. Further, I want to be able to have the time on set by the pulse that starts the whole thing, and have that "time on" period propagate as well.

Regards, Max

Reply to
Max Moor

If you want it to propogate you'll need to store it somehow so that it can be passed on. Are the devices capable of that or will you have to add this feature? how much accuracy do you need?

Aach stage could take in a high pulse and operate while measuring the length of the pulse, and then when the pulse ends, emit a pulse of equal length to the input of the next device pulse based on its measurement of that.

you say 100 stages so I'm guessing that you'll want 1% or better precision in replicating the pulse-length.

this may be possible with an analogue circuit, but certainly is possible using a cheap microcontroller. and at 100 pieces a self contained microcontroller will probably win on price too.

Reply to
Jasen Betts

Drive your 25-foot clock line with a decent (i.e., fast) rail-to-rail opamp, and terminate it properly at the far end. Use CMOS inputs for all of the modules' clock inputs, and you should be home free.

Have Fun! Rich

Reply to
Rich Grise

100 modules,

irst

e

ting pulse on

ally

You presumably also have a 'reset' line somewhere, so that this bunch of modules will do the same thing all over again someday.

As far as long clock lines are concerned, a differential driver and receiver can do it fine (like AM26LS31 and AM26LS32). You can also daisy-chain (each module receives the clock, buffers it, and sends it to the next in ripple fashion).

If you really implement the 'wait till module N is done before module N+1 starts' functionality, every single module is a point-of-failure for all the rest. That can be made to work, but this is a kind of control counter, and its state has

100 elements, so the problem is one of one hundred state bits. If a central controller turns the modules on, the problem is log_2(100), which is a seven bit state; this is usually preferable because it is easier to troubleshoot.
Reply to
whit3rd

whit3rd wrote in news:48b94f59-7441-46bf-926d- snipped-for-privacy@q9g2000yqc.googlegroups.com:

I originally thought of using a 10-line ribbon (7 plus a few extra) cable to run down the line with a decoder at each module for the very reasons you say. I shied away from that, trading for fewer wires and parts. I'm still not sure what I should do for sure. I guess that's where prototyping comes in.

Reply to
Max Moor

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.