2
\$\begingroup\$

Lets say I want to send the data 10110101 through a wire with standard timing using only discrete gates like and, or, not and transistors, resistors, crystals etc.

I would want the data to be sent with the press of a button or something.

How complicated would it get to create a digital stream of data with only discrete gates and components and how would it be done?

\$\endgroup\$
  • 5
    \$\begingroup\$ Don't have time to leave a proper answer, but something as simple as a shift register, a clock source and a couple of switches should easily handle this. Is the data arbitrary? How are you generating the data? \$\endgroup\$ – Shamtam Jan 8 '14 at 15:02
  • \$\begingroup\$ @Shamtam if you formulated that into a proper answer and provided a block diagram for him, I'd vote for it. \$\endgroup\$ – akohlsmith Jan 8 '14 at 15:09
  • \$\begingroup\$ Ask any old EE and they'll talk your ear off about 7400 series chips and the massive complex things they used to make with them. \$\endgroup\$ – Samuel Jan 8 '14 at 17:57
  • \$\begingroup\$ OTOH, keep in mind that something like a ATtiny4 is much more compact than a bunch of 74HC/LVC chips and supporting circuitry, more flexible, and not too much more costly. \$\endgroup\$ – Ignacio Vazquez-Abrams Jan 9 '14 at 5:46
8
\$\begingroup\$

The 74HC165 can perform parallel to serial data: -

enter image description here

Set your 8 bit word up on P0 to P7 and have a clock circuit output the serial stream. Feedback the output from Q7 to data in (Ds) for it to repeat.

\$\endgroup\$
1
\$\begingroup\$

Is the data string always the same? Or just a few strings to send, like 16 or 32 different strings?

Use a 1 bit wide fusible link ROM that you can program with some switches and a button to burn the fuses as needed - or program with something like an Arduino to set data lines. Make a binary counter with flip-flops (or use a counter chip) and a clock from anything that will oscillate. The counter outputs go to the ROM address pins. The output data line will change as the counter progresses through the ROM addresses. To get multiple data streams, on/off switches can set the upper data lines so the counter addresses different data streams. By the way, they can be as long as the size of your binary counter. 8 bit counter means up to 256 bit string, etc.

The ROM trick used to be a common way to get complicated arbitrary combinatorial logic functions. Map the input (address lines) to the desired truth table by burning or not burning fuses. And it is fast.

\$\endgroup\$
0
\$\begingroup\$

In the absence of external resistance or capacitance, one should generally assume that the propagation time of a gate could arbitrarily vary from zero to the rated value, with no guarantee of any sort of consistency. Any sort of circuit which is supposed to generate a sequence of events without an externally-supplied clock will thus need to make more detailed assumptions about the propagation time of at least some of the gates. This may be accomplished using Schmidt-trigger gates along with resistors and capacitors, or by using some chips which are designed to generate timing (like the venerable 555 and offshoots).

Once one has a periodic timing signal (or better yet, a pair of timing signals separated by a known phase gap), one may use gates to construct counters, shift registers, or other such constructs, and from there generate any kind of pulse sequence one wishes.

\$\endgroup\$
  • 1
    \$\begingroup\$ I don't think this addresses the main point of the question. Crystals are allowed, so I don't think s/he's asking how to get an accurate timing signal. \$\endgroup\$ – The Photon Jan 8 '14 at 18:13
  • \$\begingroup\$ @ThePhoton: Sorry, I misparsed the question as "gates, and not transistors, crystals, etc." [I like to capitalize AND/OR/NOT gates to make clear I'm not using words in the English sense] In any case, I would suggest that starting with a timing circuit to produce a regular series of pulses, and then using some sort of counter to sequence things, and using logic to determine which counts should yield a "0" and which ones a "1". \$\endgroup\$ – supercat Jan 8 '14 at 18:19

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.