Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

12
voti

SCRAMBLER AD INVERSIONE DI TEMPO

Indice

Introduzione

E’ passato un anno circa, da quando ho sottoposto alla vostra attenzione il pic 16f1705 con le sue straordinarie potenzialità. In particolare se vi è sfuggito, vi invito a visitare le seguenti due pagine, dove ho descritto con degli esempi pratici cosa è possibile ottenere da questo piccolo grande pic.

IL DAC del 16F1705

Encoder DTMF con pic 16F1705

Decoder DTMF con un solo PIC

Continuando ancora nella stessa scia, oggi vi propongo ancora lo stesso identico circuito della volta precedente, ma con un software diverso, in grado di implementare una nuova funzione che nel mondo delle telecomunicazioni è chiamata “scrambler”; ossia un circuito che in qualche modo rende la voce incomprensibile prima di essere trasmessa via radio o via filo.

Sugli scrambler esiste una vasta documentazione sul web, e se ne avete voglia anche su questo sito è presente un mio precedente articolo, dal titolo “Semplice scrambler d’altri tempi” che affronta tale argomento.

“Semplice scrambler ad inversione di banda”

Descrizione

Questo nuovo circuito opera sempre in bassa frequenza, ma la differenza sostanziale con lo scrambler dell’altra volta, sta nel fatto che l’elaborazione del segnale audio è completamente digitale. Infatti, chi si occupa di svolgere tutte le operazioni necessarie al corretto funzionamento del circuito è un microcontrollore, che nel caso specifico è un pic 16F1705 prodotto dalla Microchip.

Come avete letto nel titolo, forse non del tutto appropriato, lo scrambler in oggetto inverte l’audio nel tempo. Più semplicemente effettua una registrazione di due secondi circa, e successivamente la riproduce, però in reverse, cioè al contrario di come è stata registrata. Naturalmente, anche se la durata della registrazione è di soli due secondi, il funzionamento dello scrambler non è discontinuo ma continuo e senza interruzioni.

Ciò è possibile grazie all’adozione di una memoria esterna di 64 Kbyte di tipo SRAM, la 23LC512, di tipo statico ad accesso randomico. Tale memoria è gestita dal software del pic in modo particolare. Infatti, per poterla utilizzare in modo continuo, viene letta/scritta in entrambe le direzioni, cioè dalla locazione più bassa “zero” a quella più alta “65535”, e poi al contrario, dalla locazione più alta a quella più bassa.

Questo andare avanti indietro sulla memoria, avviene in continuazione fin tanto che il circuito è alimentato. In altre parole l’intera durata del messaggio da scramblerare viene suddiviso in tanti segmenti di due secondi ciascuno e poi invertito segmento dopo segmento. Naturalmente questo avviene locazione per locazione, leggendo prima il dato da inviare al DAC registrato nella passata precedente, e successivamente scrivendo il dato proveniente dall’ADC della passata attuale.

Sperando di essere più chiaro, a seguire vi riporto anche un grafico che rappresenta temporalmente le operazioni eseguite fin qui descritte.

SCRAMB_Graf.jpg

SCRAMB_Graf.jpg

Qualcuno starà già pensando di registrare il segnale scramblerato con uno dei tanti software per computer, per poi riprodurlo in reverse, ma l’operazione non darebbe i risultati sperati. Infatti, l’audio verrebbe si riprodotto in chiaro, ma dalla fine del discorso all’inizio del discorso e pure spezzettato, con pezzi di due secondi mischiati tra loro, che rendono comunque impossibile decifrare il senso del discorso. Provare per credere; e comunque non sarebbe una decodifica in tempo reale.

Grazie al clock di 32 MHz generato internamente dal pic, ogni operazione completa di lettura/scrittura, di ogni singola locazione di memoria, richiede un tempo fisso di circa 33 uS, che moltiplicato per le 65536 locazioni fa 2 secondi circa, che è appunto la durata di ogni segmento di registrazione. Di conseguenza la frequenza di campionamento equivale a circa 30 KHz, che, unitamente al DAC da 8 bit del pic, permette di ottenere una buona qualità audio di riproduzione.

Per effettuare delle prove e per darvi un’idea di cosa si ascolta, ai due link seguenti sono presenti due file WAV, dove potrete ascoltare nel primo il segnale scramblerato e nel secondo il segnale in chiaro.

Segnale audio Scramblerato

Segnale audio in chiaro

Il cortissimo bip che si ascolta ogni 4 secondi circa, dalla durata di 9 mS circa, è costituito da 16 impulsi stretti, che producono un segnale a 1777 Hz circa, ed è generato dal pic durante la codifica, ed esattamente tutte le volte che l’esplorazione della memoria SRAM passa per la locazione numero zero, vedi fig.1.

SCRAMB_onda1.jpg

SCRAMB_onda1.jpg

Questo accorgimento si rivela indispensabile durante la decodifica, perché permette di sincronizzare la SRAM col segnale scramblerato da decodificare e di riottenere una riproduzione comprensibile.

In pratica in fase di decodifica, tutte le volte che il pic rileva la presenza del bip, il software di lettura/scrittura punta alla locazione di memoria numero zero, e prosegue di pari passo andando ad occupare in perfetto sincronismo, le stesse locazioni di memoria occupate durante la codifica, permettendo una comoda e perfetta riproduzione del segnale audio in chiaro e con continuità.

Questo naturalmente, qualche anno fa, avrebbe richiesto l’impiego di un ADC e di un DAC esterno, ed il circuito sarebbe stato ben più complesso di quello che vi sto proponendo, ma grazie al pic utilizzato, dalle caratteristiche veramente sorprendenti, che ospita al suo interno sia L’ADC che il DAC , il circuito esternamente si presenta molto semplificato e ridotto a pochi componenti passivi.

SCRAMBLER_SCHE.jpg

SCRAMBLER_SCHE.jpg

Forse tra qualche anno, quando il pic disporrà anche di una sua memoria SRAM interna di adeguate capacità, non sarà più necessaria nemmeno la SRAM esterna; staremo a vedere.

ScraPcbComp1.jpg

ScraPcbComp1.jpg

ScraPcbRame1.jpg

ScraPcbRame1.jpg

Circuito Elettrico

Non l’ho ancora detto, ma il circuito in esame è perfettamente reversibile come il precedente ad inversione di banda. Quindi se iniettiamo all’ingresso del pic un segnale in chiaro, tenendo chiuso l’interruttore I1, otterremo all’uscita un segnale scramblerato. Se invece iniettiamo all’ingresso del pic un segnale scramblerato, tenendo aperto l’interruttore I1, otterremo all’uscita un segnale in chiaro.

Il partitore resistivo costituito dalle due resistenze da 15 Kohm ciascuna collegate al pin 12 del pic, fornisce la tensione di riferimento massima al convertitore analogico digitale interno, pari a ½ della tensione di alimentazione, in questo caso 2,5V che potrete verificare con un multimetro. Per completezza, la tensione di riferimento minima è pari a zero, cioè massa ed è impostata dal software del pic.

Il potenziometro da 100 Kohm collegato al pin 7 del pic, ossia all’ingresso di bassa frequenza per il segnale audio, fornisce una tensione di riferimento il cui valore può essere compreso tra 1 e 1,4V circa. Non preoccupatevi, piccole differenze di tale valore non compromettono il corretto funzionamento del circuito, ma se volete essere più precisi e ne avete la possibilità, vi consiglio di visualizzare sul vostro p.c. o su un oscilloscopio il segnale scramblerato, e se occorre intervenire sul potenziometro, fino ad ottenere un segnale quanto più possibile centrato tra gli impulsi di sincronismo, vedi fig.1.

Al pin 8 è presente il segnale audio in uscita dal DAC, che seguito da un semplice filtro passa basso del primo ordine, restituisce un segnale di bassa frequenza sufficientemente pulito, con un’ampiezza massima di 120 mVpp.

I pin 10-11-3 e 2 del pic, fanno capo ad una interfaccia hardware interna del pic chiamata SPI “Serial Peripheral Interface”, grazie alla quale in modo abbastanza semplice e veloce, avviene il trasferimento seriale dei dati in entrambe le direzioni, sia verso la SRAM che verso il pic.

Più dettagliatamente, il pin 11 svolge la funzione di “chip-select”, ossia abilita la SRAM al trasferimento dei dati, molto utile soprattutto quando le SRAM esterne dovessero essere più d’una. I pin 10 e 3, rispettivamente d’ingresso e d’uscita, veicolano appunto i dati da ricevere o da trasmettere dalla/alla SRAM. Il segnale sul pin 2 infine, scandisce il clock sia in fase di ricezione che di trasmissione, e lavora ad una frequenza di 2 MHz, ogni impulso dunque ha durata pari a 250 nS.

Collaudo

Nel circuito non vi sono punti di taratura, per cui dopo aver dato alimentazione il funzionamento deve essere immediato. Occorre soltanto fare in modo che il segnale di bassa frequenza all’ingresso del pic non superi i 2 Vpp, tale evento comunque non pregiudicherebbe il corretto funzionamento del circuito, ma solo l’insorgenza di piccole distorsioni dovute alla tosatura del segnale in eccesso.

Tale operazione si può portare a termine ad orecchio, basta dosare il livello del segnale in ingresso, fino a quando non si ascoltano più le distorsioni di cui prima. Se però si dispone di un oscilloscopio, bisogna fare in modo che il segnale scramblerato in uscita dal pic visualizzato sullo schermo, non superi il livello degli impulsi di sincronismo generati internamente dal pic, vedi fig.1.


Software

Il software per il pic l’ho scritto in assembler col programma “MPLAB V8.92” ed al link seguente potrete prenderne visione.

SCRAMBLER.ASM

SCRAMBLER.HEX

Per renderlo più leggibile e comprensibile, ho cercato di aggiungere quanti più commenti possibili, ma se occorrono ulteriori chiarimenti non esitate a contattarmi. Vi invito ad approfondire questo linguaggio di basso livello, che pur chiamandosi così, consente elevatissime prestazioni e grandi velocità di esecuzione, più ed anche meglio di tanti altri linguaggi definiti di alto livello.

Per concludere, vorrei precisare che l’impiego di tali dispositivi per usi radioamatoriali è illegale, potrete però modificare il progetto a fini sperimentali e per studio.

Spero di aver detto tutto il necessario ed auguro a tutti voi buon lavoro e soprattutto buon divertimento.

Per qualunque chiarimento non esitate a contattarmi.

Saluti e buon divertimento.

Francesco Mira. it9dpx #135

5

Commenti e note

Inserisci un commento

di ,

Grazie.. Conosco poco il C, credo comunque che si possa scrivere qualcosa di equivalente, ma credo bisogna crearsi delle macro o routin mirate. Saluti.

Rispondi

di ,

Complimenti! Quel micro è davvero spettacolare, il PIC16F1709 è il fratello da 20 pin. Scrivendo il codice in C ce la si farebbe con i tempi?

Rispondi

di ,

Grazie ad entrambi. Il sincronismo viene ricercato su tutti i fronti di salita e di discesa del segnale in arrivo, se andando a misurare il periodo tra una trentina di fronti consecutivi, mi ritrovo sempre lo stesso valore del periodo che ho specificato nell'articolo, allora posso dare per scontato che quello è un bip di sincronismo, in pratica una sorta di decodificatore di tono, e poi proseguo come descritto nell'articolo. Saluti...

Rispondi

di ,

Bello! Come riveli il segnale di sincronismo in fase di decodifica?

Rispondi

di ,

Bellissimo, mi ha riportato con la memoria a tanti, tanti anni fa. Complimenti!

Rispondi

Inserisci un commento

Per inserire commenti è necessario iscriversi ad ElectroYou. Se sei già iscritto, effettua il login.