I am teaching myself how to use a 74HC595 shift register, and am fairly new to proper digital circuit design. I ran into a question. I am using a simple circuit involving a few LEDs, a switch for data, and a couple of pushbuttons to pulse the register clock and the latch clock. Basically, I can clock in the data, but it won't update the output LEDs until I pulse the latch clock.

I would like to get rid of the latch pushbutton and have it automatically latch pulse after each clock pulse high trigger. I am wondering what the easiest way is to "echo" a pulse from one clock to the next using simple parts? I.e., when I send a Low-to-high on the clock pin, I want another low-to-high-to-low to immediately follow on the latch signal. The latch signal just needs to stay high long enough for the register to recognize it, not necessarily for the same duration as the original pulse. Half a microsecond should be sufficient for the delay and the duration of the following pulse.

It is not simple enough to tie the clock and latch to the same signal. This results in the display always being one pulse behind (as described in the data sheet).

___/-\_________/----\________ Leader clock
____/-\_________/-\__________ Follower latch
... or perhaps some sort of delay line...
___/-\_________/----\________ Leader clock
____/-\_________/----\_______ Follower latch

Could I clone the clock pin to the latch using some sort of MOSFET with a capacitor for delay?

  • \$\begingroup\$ Have you considered using a '164 instead? \$\endgroup\$ – Ignacio Vazquez-Abrams Aug 29 '15 at 6:27
  • \$\begingroup\$ Sorry, I'm new at this and have little practical experience with semiconductors, but a fair amount of basic "book knowledge." Do you mean an NTE164 NPN TV transistor? I didn't see any mention on its data sheet about a delay. As a matter of fact, it looks to be suited for high speed switching. I'm looking for a very basic way to delay the latch pulse by at least 0.5 msec and hold it for at least 0.5 ms. Would I need to add a capacitor to delay its attack time? \$\endgroup\$ – GuitarPicker Aug 29 '15 at 6:40
  • 1
    \$\begingroup\$ The 74HC164, which has only a single register and hence no latching. \$\endgroup\$ – Ignacio Vazquez-Abrams Aug 29 '15 at 6:42
  • 1
    \$\begingroup\$ Ah... that makes sense. Yes, that should do the trick in this particular case, but unfortunately, I got too interested in the academics of my original problem and was hoping to learn how to do something like this in case I run into this sort of problem in the future when I can't substitute a part. I guess I could also put some sort of independent oscillator on the latch pin to force refreshing, or using a delay line IC, but both of those seem like overkill. I was hoping a few discrete components could do something like this. \$\endgroup\$ – GuitarPicker Aug 29 '15 at 6:57
  • \$\begingroup\$ Unfortunately, the 123D Circuits simulator I am using has a small set of ICs and doesn't know about the 74HC164. \$\endgroup\$ – GuitarPicker Aug 29 '15 at 7:03

You did not supply a schematic, and that image thing is incomplete .. but anyway.. the maximum rise rate for the clock input is about 100ns/volt with a 5V supply, and setup time is only about 24ns, so a simple circuit can be used- something like this:


simulate this circuit – Schematic created using CircuitLab

If you don't properly debounce the pushbutton switches you will have issues.

  • \$\begingroup\$ This is exactly the kind of thing I was looking for. The circuit and schematic were in the link in the first circuit, albeit not in the native StackExchange method. Next time I can take a screenshot. I'll try replacing my latch button with your circuit to my simulation and see what happens. Thanks for the debouncer warning. It shouldn't be an issue in the simulation. I'm basically trying to learn how to do these things manually before attaching it to something like an Arduino. \$\endgroup\$ – GuitarPicker Aug 29 '15 at 16:08
  • 1
    \$\begingroup\$ Here is the modified circuit. I replaced the latch button with your suggestion, and it worked like a charm. \$\endgroup\$ – GuitarPicker Aug 29 '15 at 16:55

Far and away the simplest way is to feed the original pulse into a coaxial cable, and take the delayed pulse from the far end.

You need to get the cable drive right to get an accurate pulse shape : the simplest way is series termination - ensure the cable is driven from 75 ohms (or 50 ohms as appropriate) - use a series resistor at the input end, and feed the output into a high impedance load (most gates are OK).

Now cut the cable to length : about 2/3 foot per nanosecond delay...

This technique used to be used in TV broadcasting studios with huge coils of coax cable to align colour subcarrier signals to within about 0.5 ns - or 4 inches of cable - so that each path from each camera was correctly aligned at the vision mixer.

Simplest is not necessarily cheapest or best...

  • \$\begingroup\$ Ha! I like the way you think. I don't suppose my simulator will pretend to be 1000 ft of cable. \$\endgroup\$ – GuitarPicker Aug 29 '15 at 16:54

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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