SpinCore Logo Home
Applications
Contact Us
Purchasing Info
About Us
Software Downloads

banner_left.jpg banner_right.jpg






Implementation of Pulse Amplitude Modulation on PulseBlasterDDS and RadioProcessor Boards

Introduction:
Pulse modulation methods are used to transfer a narrowband analog signal, such as a phone call, over a pulse stream. Some schemes use a digital signal for transmission, making them essentially an analog-to-digital conversion.

Three main variants of Pulse Modulation are:
1. Pulse-amplitude modulation (PAM).
2. Pulse-width modulation (PWM).
3. Pulse-position modulation (PPM).

Pulse Amplitude Modulation (PAM) is the simplest of all Pulse Modulation Techniques. In PAM, the amplitude of the message or modulating signal is mapped to a series of pulses, with two possible variant detailed below:

Flat Top PAM:

The amplitude of each pulse is directly proportional to the instantaneous modulating signal amplitude at the time of pulse occurrence and then keeps the same amplitude of the pulse for the rest of the half cycle.

Natural PAM:

The amplitude of each pulse is directly proportional to the instantaneous modulating signal amplitude at the time of pulse occurrence and then follows the amplitude of the modulating signal for the rest of the half cycle.

PAM has applications in ethernet communication and in LED drivers, among others. 

Natural PAM implementation on SpinCore PulseBlaster DDS Boards.

For generation of a PAM waveform on PBDDS Board,  the carrier waveform is generated using the NCO. The AWG is used to generate a waveform to modulate the carrier signal.

The generation of the modulating waveform in C code is shown below:

void shape_make_sin(float *shape_data)
{
    int i;
    for(i=0; i < 1024; i++)
    {
        shape_data[i] =(sin(2.0*pi*((float)i/1024.0)));
    }

}

The carrier waveform is a series of square pulses with amplitude of 1V.

It can be generated in the C code as follows:

void shape_make_carrier(float *dds_data)
{
     int i,j;

     for (i=0;i<samples;i++)
        {
            if (i<(samples/2))
            dds_data[i] = 1.0;
            else
            dds_data[i] =0.0;
        }

}


Both the above generated signals are loaded into the board by using the SpinAPI function as given below:

pb_dds_load (shape_data, DEVICE_SHAPE);
pb_dds_load (dds_data, DEVICE_DDS);

The complete C code demonstrating this implementation is available for direct download.

In the source code, the message signal defaults to being a sine wave. However, any waveform can be used for the message signal, as shown below.

Note: Tm=1/Fm can not be less than (9 * clock period) for the board to function properly (Tm = modulating signal time period).

Example of PAM output generated on a SpinCore PulseBlasterDDS board are shown in the figures below.


PAM1

Figure 1 shows a PAM waveform generated using the example source code on a PulseBlasterDDS board.

Channel 1 shows the output PAM wave for carrier frequency Fc = 1 MHz and modulating signal frequency Fm = 100 kHz. The modulating signal used is a sine wave.

Channel 2 shows the TTL output with frequency = Fm/2.

Each cycle of the TTL output corresponds to the time taken to execute the two SpinAPI functions given below:

pb_inst_radio_shape(0,0,0,0, TX_ENABLE, NO_PHASE_RESET, NO_TRIGGER, USE_SHAPE, 0, 0x0F,CONTINUE, 0, tm*us);

pb_inst_radio_shape(0,0,0,0, TX_ENABLE, NO_PHASE_RESET, NO_TRIGGER, USE_SHAPE, 0, 0x00,BRANCH, start, (tm)*us);

The execution of these instructions results in the generation of two full cycles of the PAM signal.

Also note that Channel 1 output is delayed by (9 * clock cycle) time period.




PAM2

Figure 2 shows output PAM waveform generated using the example source code but with different parameters.


In this example, the carrier frequency is set to Fc = 1 MHz and the modulating frequency is set to Fm = 200 kHz.



PAM3

Figure 3 shows output PAM waveform generated using the same example code but this time with modulating frequency of Fm = 10 kHz. The carrier frequency remains unchanged.



Pam4


Figure 4 shows the output PAM waveform generated using the example source code, but this time the modulating signal used is a ramp waveform instead of a sine signal.  The modulating frequency is set to Fm = 100 kHz and the carrier frequency remains Fc = 1 MHz.


These are only the basics of what can be done using SpinCore's PulseBlasterDDS and RadioProcessor boards. Please see the example code in SpinAPI and the product manuals for more details.

 


Home | Products | Applications | Contact Us | Purchasing Info | About Us | Software Downloads

© 2022 SpinCore Technologies, Inc.