Primarily for academic interest (so please don't suggest ICs to do this, as they won't help me learn how to deal with this kind of problem) I'm attempting to design a buffer circuit to accept a digital differential signal with input voltage swings between 0.6V and 1.5V frequency up to 250MHz and reproduce the signal with the output voltage swing normalized to 1V. I'm working with a 3.3V supply, and am aiming to have the signal centred at approximately 2V (although this isn't a hard constraint, so don't mind if this varies by a fair amount). I'd also like to keep power consumption to a minimum.
What I've got so far is this schematic:
The voltage supply is split so I get 3.3V, 2V and 0V rails (the 2V rail is used as a reference for my inputs and for biasing a current source circuit). Q1 and Q2 are a differential amplifier, accepting the input signals 'inp' and 'inn'. Their common emitter is referenced to a current source calibrated to sink roughly 0.3mA. I originally didn't include L1 in this arrangement, but transients during transitions were rather high, and I was seeing quite a bit of overshoot beyond my target rails, and a small inductance seemed to solve these problems.
The outputs of the differential amplifier are then buffered through a pair of transistors that are allowed to draw higher current, and into a load (simulated by a pair of 1K resistors to ground in this schematic).
The 0V voltage sources are used for current measurement; apparently this is the standard way of doing this in ngspice, which I'm using for simulation.
The results of this aren't quite what I was expecting. The results of a transient simulation are shown below:
With each transition, my output signal hits approximately the 1V swing I was aiming for, but then it rapidly fades back towards the mean output level. It looks as though some stray capacitance is causing the issue, but I have no idea where it could be coming from. The transistors I'm using (2SC3356) are designed for high frequency applications (fT = 7GHz) so should be perfectly capable of operating correctly in this application. I'm at a loss as to what else could be wrong.