This question already has an answer here:

I have an idea I want to experiment with - doing boolean logic with analog (OFDM) signals. Each frequency component represents a different 'bit'. A key factor is performing the AND operation. I would like to be able to multiply the frequency domain of two signals (aka convolution), e.g.

$$A(ω)B(ω) = X(ω) \leftrightarrow a(t)∗b(t) = x(t)$$

Essentially, the frequency response of one signal is used to filter the other signal. If A is a superposition of 100, 200, and 400 Hz sines, and B is 200,300, and 400, the output would be 200 and 400 Hz.

Is there a circuit to perform this operation? I know I can multiply the time domain signals with something like a Gilbert cell. Digitizing and using DSP would completely defeat the purpose, I would like to do this solely with hardware (and ideally the simplest circuit possible).

Note: I read Convolution perfomed by an analog circuit before posting this. It does not really have any satisfactory answers (except delay lines, which I've been looking into). Also, I might be able to get by with just being able to very rapidly (~1Ghz) adjust the center frequency of a bandpass filter.

To give a bit of clarity, what I am kind of looking to do is send multiple (i.e. 64) bits down a single trace of copper, frequency multiplexed. It would pass through assorted gates to make up an ALU. A 64-bit AND gate would only need 2 input traces and do frequency-wise AND. Max frequency is less important than bandwith.

Anything to help me move in the right direction would be great. CCD-based delay lines seem promising, but specific implementations / use cases would be most excellent.



marked as duplicate by uint128_t, Andy aka, Daniel Grillo, Null, Bimpelrekkie Apr 28 '16 at 13:23

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.


It is certainly possible to perform this 64-bit operation without a DSP -- a Boolean NAND of 64-bit OFDM values A and B, where each bit-position is encoded as a different frequency traveling along the same wire.

Off the top of my head, perhaps A goes into a filter bank (analog wavelet transform) that splits A into its 64 component frequencies (using a few dozen op-amps), and low-pass filters each component (a simple RC filter for each component). (My understanding is that people have designed several chips that include single-chip filter banks designed to do low-power wavelet transforms a, b, c, d etc.). B goes into a similar filter bank. The filter banks feed 64 Schmitt-trigger NAND gates (16 chips of 74HC132).

The result could be re-encoded on an output signal C by connecting each NAND gate output to turn on or off a transistor connecting one end of a resistor to the appropriate oscillator. (Presumably to generate A and B, you already have 64 oscillators, each one tuned to one of the desired bit-position frequencies). All 64 resistors are connected together at the summing node of a single op-amp that transmits all 64 bits out a single copper trace.

(This answer is mainly posted to show it is possible without a DSP. I look forward to other answers that are much more clever than this one. Perhaps using bandwidth-division multiplexing and nonlinear optics; 64 tuned phase-locked loops or frequency-locked loops; or perhaps somehow adding some non-linear components to a superheterodyne frequency-shifting system).

  • \$\begingroup\$ I think this or using CCD delay lines is the closest I am going to come. Nonlinear optics was one of my first thoughts, and I was hoping to be able to come up with something without getting into that, but that might just be the best way to go. \$\endgroup\$ – DeusXMachina Apr 30 '16 at 14:54

EVERY circuit that has implements an LTI system is doing convolution in the time domain!! If you build a filter with transfer function B (i.e., impulse response b(t)) all you would have to do is use a(t) as an input to yield \$a \left( t \right) * b\left( t \right)\$


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