ASK modulation python code | ASK python script
This page covers ASK modulation python code. ASK python script plots ASK modulated waveform and binary data waveform as output.
Introduction: ASK stands for Amplitude Shift Keying. This is the digital modulation scheme in which binary 1 and binary 0 are represented by different amplitude levels. It is also called as ON-OFF keying when binary 1 is represented by presence of carrier signal and binary 0 is represented by absence of carrier. The figure-1 depicts the same and same is implemented in ASK python script. Random binary data is generated using Binarygen.py python script.
ASK modulation can be represented by following equation:
sig(t) = A* sin(2*π*fc*t) for Binary Logic-1
sig(t) = 0 for Binary Logic-0
Binary data generator Python script | Binarygen.py
Following python script can be used to generate random binary data. This is used as baseband data in ASK modulation.
import numpy as np
rand_n = np.random.rand(sym)
rand_n[np.where(rand_n >= 0.5)] = 1
rand_n[np.where(rand_n <= 0.5)] = 0
sig = np.zeros(int(sym*sym_len))
# generating symbols
id1 = np.where(rand_n == 1)
for i in id1[0]:
temp = int(i*sym_len)
sig[temp:temp+sym_len] = 1
return sig
ASK Python script
Following ASK python script can be used to generate ASK modulated waveform for random binary data given as input.
# Library files
import matplotlib.pyplot as plt
import numpy as np
from Binarygen import binary
from math import pi
plt.close('all')
# Carrier wave and binary waveform configuration parameters
Fs = 1000 # Samples per second
fc = 25 # Carrier frequency 100 Hz, 100 cycles/sec
T = 1 # Total simulation time in seconds
t = np.arange(0, T, 1/Fs)
x =np.sin(2*pi*fc*t)
Td = 0.1 # Bit duration
Nsamples = int(Td*Fs) # Samples in one bit duration
Nsym = int(np.floor(np.size(t)/Nsamples))
# Python code to generate binary stream of data
sig = binary(Nsym, Nsamples)
# ASK waveform generation
Xask = x * sig
# Binary waveform and ASK waveform Plots
figure, axis = plt.subplots(2)
axis[0].plot(t,sig)
axis[0].set_title("Binary digital data")
axis[1].plot(t, Xask)
axis[1].set_title("ASK modulated signal")
plt.tight_layout()
plt.show()
Output plots of ASK modulation python code
Following are the output plots (Binary input data and ASK modulated waveform) of above ASK modulation python script.