Software : Image transmission with linearly modulated sequence of symbols

From Tools4SDR

Tools: Software to generate digital communication signals
Linear modulations: training sequences transmission
Linear modulations: Image transmission

This page is about a software available for downloading that transmit in a continuous way an image with a linearly modulated sequence of symbols. A setup script can be downloaded from SDR4All website, here.

Contents

Interface

The software has the following interface:

Three files are required to set up the communication:

  • The image to transmit: whatever image you loaded, this image will be shrink to size 256x256. Its color will also be changed to gray.
  • The training sequence symbols: These symbols are used to compensate the radios and channel distorsions. The size is free, but 100 symbols is recommended. An exemple of file can be downloaded here.
  • A permutation array: The data are transmitted by frame. In order to avoid to transmit correlated symbols, an interleaver is applyed to each frame. The data part of the frame containts 256 symbols which means that this file should describe a 256 permutation array. An exemple of file is available here.

The transmitted signal

Transmitted symbols

The transmitted symbols have the following structure:

The image is splitted into 1024 frames. Each frame containts a training sequence (the same for all frame), 5 symbols which indicate the frame number, and the image data which are interleaved.

All transmitted symbols are QPSK symbols.

A random length white space is inserted between two images. This is due to the fact that the software sends all the transmitted signal at once to the USRP, and the loading time may be not constant.

Transmitted signal

The transmitted signal is a linearly modulated sequence of these symbols. It is transmitted with an oversampling factor of 5, which means that the signal baudrate is 1/5 of the selected bandwidth. The bandwidth excess is equal to 0.22.

Advanced use

Generate you own training sequence

The following code has been used to generate the training sequence file (with Matlab):

u=0:3;
QPSK_Symb = [1+i 1-i -1+i -1-i];
Symb_Training = QPSK_Symb(floor(4*rand(100,1))+1);
fid = fopen('SeqQPSK.dat','w');
for (iSymb_QPSK=1:length(Symb_Training))
   fwrite(fid,real(Symb_Training(iSymb_QPSK)),'float'); 
   fwrite(fid,imag(Symb_Training(iSymb_QPSK)),'float'); 
end
fclose(fid);

Generate you own permutation file

The following code has been used to generate the permutation array file (with Matlab):

p = randperm(256);
p = p-1;

fid = fopen('SeqPerm.dat','w');
for (ip=1:length(p))
   fwrite(fid,p(ip),'short'); 
end
fclose(fid);