I am attempting to drive a 640kHz piezo electric transducer with an FPGA. For some reason, I cannot get a matched signal, and do not know why. I've captured a scope readout where CH1 is IN, CH2 is A, and CH3 is B. Any ideas what might be going on?
I do not understand the inductor L3 or its value. It would only make sense if you were trying to create resonance at 640kHz in which case it is the wrong value.
You should not need to do this however because the transducer will be mechanically resonant at 640kHz. Take the inductor out.
It will be difficult to hit resonance with the output of a FPGA it might be better to use a switched self oscillating circuit as is described here How can i make a ceramic piezo operate at a specific frequency?
What appears to be going on is your Ch 2 middle trace is actually your output and the LC filter is a low impedance (150 ohm, BandPass filter with a small Q to remove the harmonics and this also shunts the fundamental .
There is also several ( series and parallel ) or resonant and anti-resonant points on Piezo that does not match the filter or input signal, that causes high impedance resonant gain on input waveform with the overshoot pulses. This harmonic nature with crystals is common.
Correction to your question . The "No Load sine wave" is the BPF output "C" on shown Channel 2, and not 3 as suggested.
You must do an FM Sweep with a sine wave to test your Piezo impedance and show input output with 50 Ohms Generator, then give Specs on transducer.
By estimating Bode plots or S11 s21 plots from schematic and simply looking at breakpoints of series , shunt impedance where reactance matches resistant the poles and zeros can be derived and the wave form explained by the Spectral Transformation of a square wave to the recorded waves.
If you wish to change your question with requirements, parts used, and ask how to correct the design, that deserves a different answer.
Piezo tranducers might require up to 5V and 1,5mA current. For a typical hobby Arduino (aka microcontroller ) that is not a problem. We could hook it up directly. For ARM processors there is a current limit its GPIO's can deliver so a driver is required.
I am not aware if an FPGA can deliver that specs but if I were you I would drive it throught a transistor.
edit: I meant a real transistor not from the FPGA.