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.