O programa experimental DIGSSTV de VK4AES

Por PY4ZBZ
 
 

( DIGSSTV Versão beta 04/DEC/02 )






    1 - Principio de funcionamento
 

    Mostrarei a seguir de forma bem resumida, o principio de funcionamento do programa DIGSSTV. Como está na fase experimental, não apresenta a funcionalidade de um programa depurado até uma versão final. O próprio Erik diz que o programa é apenas para  corajosos !...

    O coração do programa consiste basicamente de cinco programas criados por Barry KB9VAK para transmissão digital de arquivos em um canal de radio via ondas curtas.

    Um canal assim é sujeito a uma serie de distorções provocadas por desvanecimento seletivo, propagação multi caminhos, retardos de fase aleatórios, ruídos e interferências de todo tipo, e ainda outros efeitos. Para tanto foi preciso adaptar um tipo de modulação e de codificação adequados especificamente a este canal. Foi escolhido a modulação diferencial de fase (DPSK) com 9 variações de fase possíveis, em oito portadoras de audio separadas por 230 Hz, de 570 a 2180 Hz, para caber dentro da banda passante de um radio de SSB.

    A figura seguinte mostra o espectro ocupado por esta forma de modulação:

    Pode se observar perfeitamente a banda ocupada por cada uma das oito portadoras moduladas em DPSK. O sinal todo ocupa de 400 a 2300 Hz aproximadamente.
    O DIGSSTV tem um pequeno analisador de espectro, o Scope, onde o sinal aparece assim:

    A figura seguinte é o espectrograma (vermelho) e a forma de onda (envoltório verde) dos 13 segundos iniciais de uma transmissão digital:

    Da mesma forma que em protocolos de transmissão de dados com modem para canais telefônicos, a transmissão começa com uma serie de sinais para testar o canal, durante os 4 primeiros segundos. Dois tons que duram 2 segundos, com nível nominal, sofrem uma redução de nível de 3 dB (metade da potência ou 70,7% da tensão), do segundo 2 ao 3. Isto permite verificar a linearidade de amplitude do transmissor e do receptor, pois esta diferença deve aparecer no arquivo do som gravado na recepção. Se não existir, ou estiver com menos de 3 dB, é porque ou o nível de transmissão é muito alto (TX saturado), o o ajuste de gravação no RX está muito aberto. Para ajustar corretamente  o nível de audio injetado no transmissor. existe um teste especial, o "Send Tuning Tones (12s)", que veremos depois, no DIGSSTV.

    No segundo 3 e durante 1/3 de segundo, é feita uma varredura de freqüência (chirp), com três tons, para que o programa de recepção possa conhecer e corrigir a não linearidade da resposta amplitude versus freqüência do canal.

    Depois, de 3,333s ate o segundo 4, são enviadas 12 portadoras, sendo 8 maiores e 4 menores, como se vê no espectro seguinte, também como forma de verificar a linearidade de amplitude do conjunto placa de som TX, TX, RX e placa de som RX:

    Finalmente vem o cabeçalho com informações sobre o arquivo transmitido, seguido dos dados do próprio arquivo, tudo isto usando a modulação DPSK das oito portadoras, muito bem visíveis no espectrograma. No final da transmissão, (que não aparece no espectrograma) ha um "trailer", semelhante ao cabeçalho, para informar o fim do arquivo.

    A transmissão/recepção do arquivo digital é baseada em cinco programas, que rodam em "Win32 Console Application", ou seja, DOS 32 bits, (e de forma transparente) e que fazem de forma resumida as seguintes operações :

    Lado TX:

    - o Bin2sym.exe transforma o arquivo binário que queremos transmitir (no caso, o Temp.jpg) em símbolos (um símbolo contem vários bits), e efetua uma dupla e complicada codificação Reed-Solomon, que consiste em calcular informação redundante que somada a informação em si, permitirá corrigir na recepção, os erros introduzidos pelo canal.

    - o Modpm.exe pega o arquivo criado pelo bin2sym e gera as 8 portadoras, moduladas em fase.

    - o Flt2wav.exe pega o arquivo gerado pelo Modpm e o transforma em um arquivo de audio, o transmit.wav, que será transmitido pela placa de som ao TX, quando apertamos a tecla TX do DIGSSTV.

    Lado RX :

    Após o final da recepção de audio, apertamos novamente a tecla RX, o que causa o seguinte:

    - o Vssrc32.exe pega o arquivo Received.vaw gerado pela placa de som na recepção (num formato por ex. de 8 bits), transformando-o em outro arquivo de audio, o Receive.wav, no formato 16 bits e 11025 amostras por segundo.

    - o Wav2bin.exe pega o receive.wav e faz a complicada tarefa de demodular o sinal, corrigindo as distorções, gerando os símbolos correspondentes, para em seguida fazer a detecção e correção de erros, dentro do limite matemático possível, entregando em seguida, o arquivo binário exatamente igual ao que foi transmitido, no caso, o Temp.jpg, ou se a taxa de erros estiver acima do limite, um simples aviso de que não foi possível decodificar nada...
 
 
 
 
 

    2 - Uso do programa DIGSSTV
 

  Depois de fazer o download do arquivo zipado, é só criar uma nova pasta chamada por exemplo HDSSTV, e "unzipar" todos os arquivos nela. Depois é só rodar o DIGSSTV.exe. Aparecerá a tela seguinte (nesta já foi carregada uma imagem para TX):

    Agora, execute os passos seguintes:

    1 - No setup, escolha a porta Com para acionamento do PTT, e o sinal correto usado na sua interface:  RTS ou DTR. (na dúvida, marque os dois)

    2 - Depois (no setup) escolha o grau de redundância do código corretor de erros, de 10 até 70%: quanto maior o QRM, maior deve ser a redundância, mas o tempo de TX fica maior também....

    3 - Depois (no setup) escolha a qualidade da imagem : quanto melhor, mais vai demorar !... Isto porque o DIGSSTV transforma o formato da sua imagem para .jpg, para ficar com tamanho menor. Este arquivo será o Temp.jpg (disponível na pasta do DIGSSTV) e é o arquivo binário que vai ser transmitido.

    4 - Depois, é preciso (uma vez apenas) verificar a linearidade da transmissão, (nível do sinal de audio versus potência de saída) usando um bom wattimetro de RF. É só ligar o "Send Tuning Tones (12s)" no setup, e ajustar o nível de saída da placa de som (na tela controle de volume). Este sinal dura 12 segundos, com os 2 primeiros em potência máxima, os dois segundos seguintes com meia potência (-3dB) e mais dois segundos com um quarto de potência (-6dB). Depois, repete a mesma seqüência,  começando com um aumento de 6dB (potência máxima) e duas reduções, até completar os 12 segundos. Sugiro ajustar o nível de saída da placa de som par que a potência máxima seja de 50 W RF, a média de 25 W e a menor de 12,5 Watts, isto para transmissores de 100 Watts. Não tendo um wattimetro de RF confiável, use alguma indicação de potência do próprio TX, ou então o bom ouvido de um colega que, recebendo este sinal de teste, consegue ouvir nitidamente as mudanças da potência dos sinais de audio, que tambem deve ser visível no S-meter. A imagem seguinte mostra a forma de onda(na verdade, a sua envoltória) do sinal de teste:

    5 - Ligue o Scope no setup, para poder verificar a sintonia do receptor. (Show Scope)

    6 - Para transmitir uma imagem no DIGSSTV, clique em Files, Load picture, e escolha uma imagem. Cuidado com o tamanho!. Imediatamente, o programa vai fazer uma serie de contas relacionadas acima (os 3 programas lado TX), que podem demorar vários minutos (aparece a mensagem: making Wave File). Quando estiver pronto, aparece na tela embaixo da imagem TX, o tempo que o arquivo levará para ser transmitido. Pode se então apertar a tecla TX.

     7 - Na mesma hora, o correspondente, assim que ouvir os tons iniciais, aperta a tecla RX, e espera a transmissão terminar, quando então aperta novamente a tecla RX para que sejam feitas as operações já explicadas anteriormente para o lado RX, o que vai demorar até alguns minutos também.
    Se estiver tudo OK, aparecerá a imagem na tela RX (e o arquivo Temp.jpg, cópia fiel e sem erro do arquivo Temp.jpg transmitido, estará disponível na pasta onde esta o DIGSSTV). Se não foi possível corrigir todos os erros, aparecerá uma mensagem de erro. Em caso de erro, pode ser que o nível de RX deva ser ajustado (considerando que o TX já foi ajustado de acordo com o item 4 anterior), usando o cursor que fica ao lado do Scope, e observando o Scope durante uma transmissão digital, de tal forma a ficar parecido com a imagem seguinte, (sem as raias encostarem na parte superior da telinha do Scope) (o controle de gravação evidentemente também deve ser ajustado, normalmente line-in, na tela de controle de gravação):

Importante : agora não tem perdão para aqueles que não sintonizam corretamente o RX, e NÃO se pode retocar a sintonia durante a recepção. Os rádios devem ter alta estabilidade de freqüência . (portanto, esqueça o velho Deltão !... HI HI) O computador também deve ser de no mínimo 1GHz, porque senão os cálculos de decodificação na recepção serão bem demorados...

    Como fazer a correta sintonia do RX ?. Se a voz estiver OK em SSB, a sintonia está OK, mas tem gente que não tem um bom ouvido... Para estes, o Erik colocou o recurso de dupla finalidade: o "Send Tuning Tones (12s)" no setup. A primeira finalidade é verificar a linearidade de TX, já explicada, e a outra é fazer a correta sintonia do RX, com ajuda do "Scope". A imagem seguinte mostra uma correta sintonia. (alguém transmite o "tuning tone" e quem vai receber ajusta a sintonia do receptor para que os dois picos azuis coincidam com as marcas brancas) :

    Para terminar, veja na tabela seguinte a relação entre os diversos parametros, usando como imagem original um arquivo GIF de 25kB:
        R = redundância em %
        Q = qualidade da imagem (arquivo Temp.jpg)
        tc = tempo para os calculos do lado TX em segundos (para um Celeron 800MHz)
        ttx = tempo necessário para a transmissão em segundos (não depende da CPU)
        Ta = tamanho do arquivo binário, Temp.jpg
        Tw = tamanho do arquivo de audio transmitido, Transmit.wav
 

 R (%)  Q  tc (seg)  ttx (seg)  Ta (kB)  Tw (kB)
 10  Very low  13  22  2  480
 70  Very low  20  54  2  1200
 10  Medium  18  47  5  1000
 70  Medium  45  130  5  2800

    BUG no DIGSSTV : para receber imagens, o scope deve estar desligado ! Portanto, use-o apenas para a sintonia do receptor.

    Enquanto o Barry quebra a cabeça para tornar os seus programas mais eficientes e rápidos, e o Erik melhora o DIGSSTV, bom divertimento...

    Veja aqui o resultado de teste de tranferência digital de arquivo binário.

    73´s, Roland PY4ZBZ. Artigo criado em 06/12/2002, atualizado em 11/12/2002.