BLK_SingleToDiff : A singled-ended-to-differential converter
A single-ended-to-differential converter converts a single-ended input in into a pair of differential outputs out_pos and out_neg, of which differential-mode and common-mode components are equal to the inputs in and in_ref, respectively.
In other words, the outputs out_pos and out_neg are determined according to the following equations:
    V(out_pos) = 0.5*V(in) + V(in_ref)
    V(out_neg) = -0.5*V(in) + V(in_ref)
This single-ended-to-differential converter model is described with circuit primitives (vcvs) instead of function primitives (e.g. add) so that it can be enclosed within a feedback loop.
Input/Output Terminals
| Name | I/O | Type | Description | 
| out_neg | output | xreal | differential output (neg) | 
| out_pos | output | xreal | differential output (pos) | 
| in | input | xreal | single-ended input | 
| in_ref | input | xreal | reference input | 
List of Testbenches
| tb_check : A testbench for checking the basic operation of a single-ended-to-differential converter | 
tb_check : A testbench for checking the basic operation of a single-ended-to-differential converter
This testbench checks the basic functionality of a single-ended-to-differential converter, by feeding a single-ended sinusoidal signal to its input in and a DC reference signal to its input in_ref and observing whether the converter produces a differential pair of output signals out_pos and out_neg bearing the differential-mode component equal to in and common-mode component equal to in_ref.
`include "xmodel.h" module tb_check (); xreal in, in_ref; xreal out_pos, out_neg; sin_gen #(.freq(100e6), .amp(1.0), .offset(0.0)) IDM (.out(in)); dc_gen #(.value(0.5)) ICM (.out(in_ref)); BLK_SingleToDiff DUT (.*); // waveform recording initial begin $xmodel_dumpfile(); $xmodel_dumpvars(); end endmodule
Simulation Results
 
Figure. input and output waveforms.