This project implements a Line Coding Encoder and Scrambler with a digital data generator. The assignment involves generating a random data sequence, encoding it using various line coding schemes (NRZ-L, NRZ-I, Manchester, Differential Manchester, AMI), and optionally scrambling it using B8ZS or HDB3. The code also identifies the longest palindromic sequence in the generated data.
This Line Encoder GUI is implemented using PySimpleGUI, Matplotlib, and NumPy. It provides a user-friendly interface for encoding and decoding various line encoding schemes.
- Initialize random input data.
- Enter custom input data.
- Encode and decode data using various line encoding schemes.
- Display the encoded and decoded data.
- Plot graphs for input, encoded, and decoded data.
- Polar NRZ-L
- Polar NRZ-I
- Manchester
- Polar RZ
- AMI
- Scrambling AMI B8ZS (Bipolar with 8 zero substitution)
- Differential Manchester
- Scrambling AMI HBD3 (High-Density Bipolar 3 Zeros)
- PCM (Pulse Code Modulation)
- Delta Modulation
- Launch the GUI.
- Initialize random input or enter custom input.
- Encode the data using a selected encoding scheme.
- Optionally, decode the encoded data.
- Visualize the input, encoded, and decoded data using the "Show Graph" button.
-
Ensure you have Python installed on your machine.
-
Clone the repository:
git clone https://github.com/tusharv01/LINECODER.git
-
Navigate to the project directory:
cd LINECODER
-
Run the main program:
python LineEncoder.py
or using the LineEncoder.ipynb file:
jupyter notebook
Navigate to the .ipynb file and run the cells.
-
Follow the on-screen prompts to input preferences for data generation, encoding, and scrambling.
- All schemes are implemented using positive logic.
- Manchester encoding uses IEEE (802.3) convention.
- The format used is Manchester, and differential Manchester is G.E Thomas format
- It is assumed that the user will give binary data to the encoder.
- LinkedIn: Tushar Verma
- GitHub: tusharv01
© 2023 Tushar Verma. All rights reserved.