BLK_DiffToSingle : A differential-to-single-ended converter
A differential-to-single-ended converter converts a pair of differential inputs in_pos
and in_neg
into a set of singled-ended outputs out
and out_ref
, each bearing the differential-mode and common-mode components of the input, respectively.
In other words, the outputs out
and out_ref
are determined according to the following equations:
V(out) = V(in_pos) - V(in_neg) V(out_ref) = 0.5 * (V(in_pos) + V(in_neg))
This differential-to-single-ended 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 | output | xreal | single-ended output |
out_ref | output | xreal | reference output |
in_neg | input | xreal | differential input (neg) |
in_pos | input | xreal | differential input (pos) |
List of Testbenches
tb_check : A testbench for checking the basic operation of a differential-to-single-ended converter |
tb_check : A testbench for checking the basic operation of a differential-to-single-ended converter
This testbench checks the basic functionality of a differential-to-single-ended converter, by feeding a differential pair of sinusoidal signals to its inputs in_pos
and in_neg
and observing whether the converter produces their differential-mode component as its output out
and common-mode component as out_ref
.
`include "xmodel.h" module tb_check (); xreal in_pos, in_neg; xreal out, out_ref; sin_gen #(.freq(100e6), .amp(0.5), .offset(0.5)) IP (.out(in_pos)); sin_gen #(.freq(100e6), .amp(-0.5), .offset(0.5)) IN (.out(in_neg)); BLK_DiffToSingle DUT (.*); // waveform recording initial begin $xmodel_dumpfile(); $xmodel_dumpvars(); end endmodule
Simulation Results
Figure. input and output waveforms.