Presentation Layer: TXT to binary and viceversa
Link Layer: CRC + Interleaving and viceversa
Physical layer: IQ modulation. Coherent demodulation. Carrier recovery using square loop.
On base band it is also implement a phase sinchronism system in order to project bit energy only on one carrier (I). This system is useful only on IQ demodulators, but this is not the case, so this module is not integrated on the system. You can test it with some test signals, that are include.
Some GUI validation are not fine, you can depure those things if you consider this system useful. Many features should be updated.
1.- Some parameters require a complete readjusment of the system (fs, fi, Rb) in order to work.
2.- Code strutured on modules, each one with an specific goal (structured programming style).
3.- Block processing: take one signal block (a set of samples from a file), process it, generate output files, then clean enviroment and get next block from file until EOF is reached.
4.- Each block is processed sample by sample, simulating DSP processing style, but is pretty slow. So, each sample walks through all filters, updating memories on his way, and ends on a position inside the output vector. Then the next sample do the same, etc., until the block is empty.
5.- Systemic coding style (as Simulink, instead of boxes, functions). This is great for didactical purposes, but makes redundant calculation on many points, and functions on the same module are highly coupled.
6.- Drilling points are placed on files: the system has some observation points. Signals of those points are placed on different temporary file. On this version this files are kept on the system. On final version are deleted using an OS call.
7.- Memory of all blocks of a module are collected on a matrix in order to symplifing function interfaces.
8.- Only is extracted from files the observation window required: so, if you are seeing 200 bits of one especific drilling point, only this samples are extracted from the related file. This keep the environment with small variables -related to GUI-, avoiding large vectors or matrixes.