OSC_RelaxOSC2O

OSC_RelaxOSC2O : A relaxation oscillator with dual outputs

A relaxation oscillator generates a periodic clock output by integrating a signal to a given threshold. When the integrated value reaches the threshold, the value is reset to zero and the integration starts again.

This relaxation oscillator model generates two complementary clock outputs out and outb by employing a pair of integrators that alternate between the integrate and reset operations. That is, when one is integrating, the other is resetting, and vice versa. The integ_rst primitive models the integrate and reset operation. The input freq sets the rate of the integration and hence the output clock frequency. Since the slice primitives and SR latch add extra delays, the output clock frequency can be slightly lower than the value of the input freq.

Input/Output Terminals

Name I/O Type Description
out output xbit clock output (pos)
outb output xbit clock output (neg)
freq input xreal frequency input

List of Children Cells

BLK_SRLatch : A set-reset (SR) latch

List of Testbenches

tb_check : A testbench for checking the basic operation of a relaxation oscillator
tb_meas_tfdc : A testbench for measuring the input-to-frequency characteristic of an oscillator

tb_check : A testbench for checking the basic operation of a relaxation oscillator

This testbench checks the basic functionality of a relaxation oscillator by supply a constant freq input and observing the internal signal waveforms alternating between the integration and reset operations.

`include "xmodel.h"

module tb_check ();

    xreal freq;
    xbit out, outb;
    
    dc_gen  #(.value(1e9)) I0 (freq);
    
    OSC_RelaxOSC2O DUT (.*);
    
    // waveform recording
    initial begin
        $xmodel_dumpfile();
        $xmodel_dumpvars();
    end

endmodule

Simulation Results

input and output waveforms

Figure. input and output waveforms.

tb_meas_tfdc : A testbench for measuring the input-to-frequency characteristic of an oscillator

This testbench measures the input-to-frequency characteristic of an oscillator by applying a gradually-varying input and measuring the frequency of the output clocks.

The measured frequency is expected to be equal to the input level.

`include "xmodel.h"

module tb_meas_tfdc();
    
    xreal freq;             // frequency input
    xbit out, outb;         // clock outputs
    
    // stimuli
    pwl_gen     #(.data('{0.0, 0.8e9, 100e-9, 1.2e9}))
                freq_gen(freq);

    // DUT (device-under-test)
    OSC_RelaxOSC2O  DUT(.*);

    // measurements
    probe_freq  probe_out(out);
    probe_freq  probe_outb(outb);

    initial begin
        $xmodel_dumpfile();
        $xmodel_dumpvars();
    end

endmodule

Simulation Results

the input-to-frequency characteristic of the oscillator

Figure. the input-to-frequency characteristic of the oscillator.