1. RIASSUNTO
Quest’articolo presenta un modulatore SSB digitale con uscita a 9
MHz. Il cuore del modulatore, sviluppato attorno a una realizzazione
numerica del modulatore di Weaver, risiede interamente in una logica programmabile
Xilinx XC2S30. La qualità del segnale SSB generato, frutto dell’elevata
precisione di calcolo impiegata, è superiore a quella dei tradizionali
modulatori SSB analogici. La soppressione della portante e della banda laterale
indesiderata misurata all’uscita è elevatissima (~ 80 dBpep) e i prodotti
spuri sono migliori di -75dBpep nell’intervallo di frequenze compreso
tra 0 e 18 MHz. Il modulatore è inoltre equipaggiato di un generatore
interno a due toni, utile per la misura dell’intermodulazione nella catena
di amplificazione di potenza RF, di un ingresso per il tasto CW e di un’uscita
secondaria che fornisce un segnale sinusoidale a 8.995 MHz o a 9.0015 MHz
e che può essere usata come oscillatore di battimento per la demodulazione
di segnali SSB o CW.
2. INTRODUZIONE
Nell’approccio numerico tradizionale la sintesi di segnali modulati ad alta
frequenza è basata sull’impiego di un microprocessore DSP che genera
un segnale modulato di frequenza portante bassa (o nulla) e di un convertitore
di frequenza in salita che porta il segnale modulato alla frequenza desiderata.
Basandomi su questa architettura, nel 1991 realizzai il mio primo trasmettitore
numerico “all-mode” che utilizzava un microprocessore Motorola DSP56001 e
un sintetizzatore numerico Analog Device AD7008 [1].
Negli ultimi anni l’avvento dei circuiti logici riconfigurabili ha reso possibile
l’integrazione di dispositivi sempre più complessi in un singolo circuito
integrato, rendendo di fatto possibile e ed economica la realizzazione di
quelli che oggi vengono chiamati “system on chip” o semplicemente SOC. Seguendo
quest’ultimo approccio, ho sviluppato un modulatore SSB digitale molto compatto
che risiede in una piccola logica riconfigurabile (30,000 porte logiche) Xilinx
Spartan II XC2S30. Il cuore del modulatore include tutte funzioni necessarie
a trasformare il segnale audio analogico proveniente da un microfono in un
segnale SSB a 9 MHz numerico, successivamente convertito in analogico da
un convertitore D/A Analog Devices AD9754. La logica sviluppata integra un
convertitore A/D sigma delta da 10 bit per la conversione del segnale audio
di ingresso in forma numerica e una versione digitale del modulatore Weaver
con uscita a 14 bit. L’area occupata dal “core” del modulatore SSB è
stata contenuta in 400 celle e 3 blocchi RAM (cioè circa il 90% delle
celle e il 50% della RAM disponibili in un FPGA XC2S30) facendo uso di calcolo
aritmetico seriale e di algoritmi di conversione di frequenza e di
filtraggio efficienti.
3. SINTESI NUMERICA DI UN SEGNALE SSB
3.1. Il modulatore di Weaver
Nel modulatore di Weaver [2] il segnale audio modulante
viene traslato attorno all’origine delle frequenze per mezzo di un miscelatore
in quadratura e di un oscillatore a bassa frequenza, filtrato da un filtro
passa-basso che elimina la banda laterale indesiderata e infine convertito
alla frequenza portante desiderata per mezzo di un secondo miscelatore in
quadratura e di un oscillatore ad alta frequenza, come indicato in fig.1.
Fig.1 – Il modulatore di Weaver
Il funzionamento del modulatore può essere spiegato ricorrendo
al disegno di fig. 2 che evidenzia graficamente le elaborazioni compiute
dalle parti che costituiscono il modulatore sullo spettro del segnale d’ingresso.
Con la prima miscelazione in quadratura a bassa frequenza, lo spettro del
segnale audio in ingresso al modulatore viene traslato in modo che una delle
sue bande laterali costituenti sia centrata simmetricamente attorno all’origine
dell’asse delle frequenze. Nelle applicazioni radiofoniche si conviene che
lo spettro del segnale audio si estende nella banda compresa tra 300 e 2700
Hz e la frequenza dell’oscillatore in quadratura a bassa frequenza viene è
pari a 1500 Hz.
In fig. 2 il segno dei segnali in quadratura generati dall’oscillatore a
bassa frequenza è stato scelto in modo da traslare verso l’origine
la banda laterale superiore del segnale audio, ma è sufficiente invertire
di segno uno dei due segnali in quadratura per ottenere la traslazione verso
l’origine dell’altra banda laterale. Il filtraggio di tipo passa-basso delle
due componenti generate dal primo miscelatore in quadratura consente di eliminare
la banda laterale indesiderata. Infine, con la seconda miscelazione, lo spettro
del segnale a banda laterale unica viene traslato alla frequenza desiderata.
Anche in questo caso invertendo il segno di uno dei due segnali generati
dal secondo oscillatore in quadratura si ottiene il ribaltamento dello spettro
attorno ad f2, ovvero la generazione dell’altra banda laterale.
Fig. 2 - Generazione di un segnale SSB col metodo di Weaver
3.2. Realizzazione numerica del modulatore di Weaver
Il modulatore di Weaver è composto da una sezione audio che elabora
segnali a bassa frequenza, costituita dal primo convertitore di frequenza
con oscillatore in quadratura a 1500 Hz e dai due filtri passa basso, e da
una sezione ad alta frequenza, formata dal secondo convertitore di frequenza
con oscillatore in quadratura di frequenza pari a quella finale.
Una realizzazione numerica efficiente deve tener conto delle diverse esigenze
di calcolo delle due sezioni bf. e a.f. che costituiscono il modulatore.
Tale efficienza viene raggiunta elaborando i segnali in gioco alla minima
frequenza di campionamento possibile e compatibile con il criterio di Nyquist,
che asserisce che un segnale analogico può essere ricostruito esattamente
a partire dai suoi campioni temporali a patto che la frequenza di campionamento
sia pari ad almeno due volte la banda del segnale elaborato. Poiché
il segnale d’ingresso ha una banda di circa 3 KHz, nella sezione a bassa frequenza
è possibile utilizzare una frequenza di campionamento dell’ordine della
decina di chilohertz. Il segnale d’uscita elaborato dalla sezione ad alta
frequenza (che può essere sintonizzabile su un vasto intervallo di
frequenze) ha una banda molto più ampia e dev’essere campionato a
una frequenza sensibilmente più elevata. Tra le due sezioni del modulatore
viene quindi interposto un circuito interpolatore la cui funzione è
quella di aumentare il tasso di campionamento del segnale elaborato nella
sezione b.f. al valore richiesto nella sezione a.f., come indicato nello
schema a blocchi del modulatore numerico SSB di fig. 3.
Fig. 3 – Schema a blocchi di un modulatore (di Weaver) SSB digitale.
4. IMPLEMENTAZIONE SU FPGA
La qualità di un segnale SSB sintetizzato numericamente col metodo
di Weaver è quantificabile dagli stessi parametri che identificano
le prestazioni di un modulatore analogico: il rapporto S/N del segnale audio
d’ingresso, la soppressione della banda laterale e della portante, e la purezza
spettrale. Il rapporto S/N del segnale audio è legato alla precisione
del convertitore A/D, alla frequenza di campionamento del segnale di ingresso
e alla qualità del primo convertitore di frequenza. L’entità
della soppressione della portante e della banda laterale indesiderata dipendono
dall’offset del convertitore A/D e dalla risposta in frequenza dei filtri
passa basso. L’ampiezza dei prodotti spuri, infine, dipende dalla qualità
degli interpolatori, del secondo convertitore di frequenza e del convertitore
D/A e dalla frequenza di campionamento di uscita. Per motivi che risulteranno
chiari in seguito ho scelto di utilizzare una frequenza di campionamento di
12 KHz in tutta la sezione b.f. e una frequenza di campionamento di 36 MHz,
pari alla frequenza del clock fornito al modulatore, per la sezione a.f..
4.1. Architettura di un FPGA Xilinx Spartan II
Nei dispositivi Xilinx della famiglia Spartan II ogni cella (CLB, o Cell
Logic Block) è composta da due “slice”. Come evidenzia la Fig. 4, ogni
slice contiene due Flip-Flop, due tabelle di look-up a quattro ingressi per
mezzo delle quali è possibile sintetizzare una funzione combinatoriali
a quattro ingressi e logica “carry chain” dedicata alla implementazione di
funzioni aritmetiche.
Fig. 4 – Una “Slice” della famiglia FPGA Spartan II
Il dispositivo XC2S30 che ho utilizzato per sviluppare il modulatore contiene una matrice di 12 x 18 CLB (Fig. 5), per un totale di 432 “slices” e 864 Flip-Flop, ed è inoltre dotato di sei blocchi RAM sincrona dual-ported da 4096 bit. Tre di questi blocchi sono stati utilizzati per la memorizzazione dei campioni e dei coefficienti dei filtri FIR passa passo.
Fig. 5 – La matrice di 12 x 18 CLB di un dispositivo Spartan II XC2S30
4.2. Campionamento del segnale audio
Nell’implementazione del modulatore SSB che ho sviluppato il segnale audio
viene campionato a 12 KHz con un convertitore A/D sigma delta a 10 bit, realizzato
per mezzo di una sezione di un amplificatore operazionale e di un filtro decimatore,
con un rapporto S/N audio superiore ai 50 dB.
4.3. Conversione a bassa frequenza
Il convertitore a bassa frequenza con l’oscillatore in quadratura a 1500
Hz è stato realizzato per mezzo di un calcolatore CORDIC [3]. Il calcolatore CORDIC (Coordinate Rotation DIgital
Calculator), ideato da J. Volder nel 1956 per il controllo in tempo reale
di sistemi avionici [4][5], risolve
il problema della rotazione di coordinate con sole operazioni di addizione/sottrazione
e di scorrimento. Poiché una conversione di frequenza non è
nient’altro che una rotazione di un vettore, l’algoritmo CORDIC è
uno strumento molto efficiente per la realizzazione in hardware di convertitori
di frequenza. Il principio di funzionamento del calcolatore si basa sul
fatto che una rotazione arbitraria di un vettore può essere ottenuta
iterativamente componendo rotazioni elementari e semplici da calcolare. Le
formule generali di trasformazione delle coordinate di un vettore (x,y) ruotato
di un angolo phi :
x’ = cos(phi) x - sin(phi) y
= cos(phi) ( x – tan(phi) y),
y’ = cos(phi) y + sin(phi) x
= cos(phi) ( y + tan(phi) x)
possono infatti essere semplificate nel caso la rotazione sia limitata ad angoli per cui tan(phi) = ±2-i. In questo caso le formule di rotazione, trascurando il termine moltiplicativo cos(phi), che è costante e indipendente dal verso di rotazione, diventano:
x’ = ( x - ±2-i y),
y’ = ( y + ±2-i x)
e comportano sole operazioni di addizione/sottrazione e scorrimento. La
rotazione di un vettore per un angolo arbitrario è ottenuta decomponendo
l’angolo desiderato in una somma di angoli il cui valore soddisfa la regola
tan(phi) = ±2-i e applicando iterativamente le formule
semplificate.
La traslazione di 1500 Hz verso l’origine dello spettro del segnale audio
d’ingresso campionato alla frequenza di 12 KHz equivale a una rotazione sequenziale
e periodica del segnale audio di un angolo pari a 1500/12000 · 360º
= 45º.
Nella versione che ho realizzato, il convertitore di frequenza ruota il
segnale audio di un angolo fisso phi = -22.5º per mezzo di un convertitore
CORDIC seriale a 16 bit e sfrutta la simmetria della sequenza delle rotazioni
per produrre il segnale d’uscita desiderato (fig. 6).
Fig. 6 – Convertitore CORDIC a bassa frequenza (f/Fs = 1/8)
Nel calcolatore CORDIC la precisione della rotazione secondo un angolo costante dipende dal numero di stadi utilizzati. Poiché:
atan(2-1) - atan(2-4) - atan(2-7) - atan(2-10) + atan(2-12) = 24.499138º,
sono sufficienti cinque stadi per ottenere una rotazione del segnale d’ingresso di 22.5º con una precisione del millesimo di grado, una accuratezza del risultato vicina ai 16 bit (ottenuta in soli 80 cicli di clock) e una purezza spettrale del segnale convertito di qualità CD audio. Vale la pena notare che il convertitore implementato impiega una piccola frazione delle risorse logiche disponibili in una XC2S30 e che un classico convertitore di frequenza formato da due moltiplicatori 16x16 e da un oscillatore numerico a sintesi diretta a 16 bit avrebbe, da solo, richiesto l’utilizzo di un gate array significativamente più grande.
4.4 Filtraggio passa basso. Reiezione della banda laterale indesiderata.
Nei modulatori di Weaver, l’entità della soppressione della banda
laterale indesiderata è legata direttamente all’attenuazione fuori
banda dei due filtri passa basso. Per ottenere valori di reiezione di 50-60
dB in una banda che si estende per circa un quarto della frequenza di campionamento
mantenendo sufficientemente piatta la risposta in banda è necessario
usare filtri numerici traversi FIR con circa 50 prese. Dal momento che la
frequenza di campionamento nella sezione b.f. è una piccola frazione
della frequenza di clock è possibile utilizzare un elevato numero di
colpi di clock (36/0.012 = 3000) per calcolare la risposta di ogni filtro
e ridurre notevolmente l’area occupata ricorrendo a realizzazioni hardware
che sfruttano al massimo l’aritmetica seriale. Nei microprocessori per l’elaborazione
numerica dei segnali sono disponibili unità di calcolo MAC (Multiply
and Accumulate) che eseguono in un solo ciclo di clock e consentono di calcolare
la risposta di un filtro FIR in un numero di cicli di clock pari al numero
di prese, ma tutta questa potenza di calcolo è sovrabbondante per i
nostri scopi. Ogni filtro passa basso richiede una potenza di calcolo pari
a circa 50 prese x 12000 campioni/s = 600.000 MAC/s e a una frequenza di clock
pari a 36 MHz sono disponibili 36/0.6 = 60 cicli di clock per ogni operazione.
L’utilizzo di veloci moltiplicatori paralleli non è affatto indispensabile.
Nei filtri sviluppati sono stati utilizzati moltiplicatori seriali 16 x 16
che occupano un’area molto ridotta, eseguono ogni operazione in 16 cicli
di clock.
Alla frequenze di clock e di campionamento indicate, il limite superiore
alla lunghezza dei filtri passa basso realizzati con questa tecnica è
di 186 prese, quasi quattro volte superiore alle reali esigenze. Ho sfruttato
questa capacità di calcolo per realizzare filtri di Remez a 127 prese,
con fianchi molto più ripidi di quelli realmente richiesti, un ripple
totale nella banda [-1200 Hz , 1200 Hz] di 0.2 dB, un’attenuazione fuori banda
[1500 Hz , 6000 Hz] di 80 dB (al limite delle implementazioni a 16 bit) e
con un eccezionale fattore di forma di 1 : 1.25. La risposta in frequenza
dei filtri sviluppati è indicata in fig. 7.
Fig. 7 – Risposta in frequenza dei filtri FIR per la reiezione della
banda laterale indesiderata
4.5. Interpolazione a 36 MHz
Lo spettro di un segnale campionato è periodico e di periodo pari
alla frequenza di campionamento. Il segnale a banda laterale soppressa generato
dalla sezione b.f. del modulatore di Weaver è campionato a 12 KHz e
pertanto il suo spettro, oltre alla componente centrata nell’origine
delle frequenze, è formato da una serie periodica di immagini spaziate
di 12 KHz. Lo scopo dell’interpolatore è quello di generare un segnale
di uscita a frequenza di campionamento più elevata (36 MHz) attenuando
l’ampiezza delle immagini poste a frequenze multiple della frequenza di campionamento
di ingresso (12 KHz) a un valore accettabile. Questa azione viene ottenuta
ricampionando il segnale di ingresso alla frequenza di campionamento di uscita
e sottoponendo il segnale risultante a un filtraggio di tipo passa basso,
come mostrato nell’esempio di fig. 8.
Fig. 8 – Interpolazione di segnali campionati
Una classe di filtri passa basso che si presta a una efficiente realizzazione hardware dei filtri di interpolazione (o di decimazione, nel caso che il tasso di campionamento debba essere diminuito) è quella dei filtri CIC (Cascaded Integrator Comb) dovuta a E.B. Hogenauer [6]. I filtri CIC sono filtri FIR di tipo passa basso costituiti dalla cascata di filtri integratori e di filtri Comb (filtri a pettine). La fig. 9 mostra la struttura di un decimatore e di un interpolatore realizzati con la tecnica di filtraggio CIC.
Fig. 9 – Schema a blocchi di un decimatore e di un interpolatore di ordine
N
La risposta in frequenza di un filtro di interpolazione CIC di ordine N con tasso di interpolazione R è:
La risposta caratteristica del filtro ha zeri di trasmissione di ordine
N a frequenze multiple della frequenza di campionamento di ingresso Fsi
= Fso/R e centrati sulle frequenza delle immagini del segnale di ingresso
che risultano notevolmente attenuate all’uscita.
L’interpolatore del modulatore SSB che ho realizzato interpola il segnale
b.f. di un fattore R = 3000 e attenua le immagini del segnale di ingresso
di più di 70 dB. Per semplicità realizzativa esso è
costituito da una cascata di tre interpolatori. Il primo stadio è
costituito da un interpolatore x15 del 4º ordine (R=15, N=4) che eleva
la frequenza di campionamento a 12 x 15 = 180 KHz e, grazie alla frequenza
di campionamento d’uscita ancora relativamente bassa, è stato realizzato
in forma seriale. Il secondo stadio è costituito da un interpolatore
x25 del 4º ordine (R=25, N=2) che eleva la frequenza di campionamento
a 4.5 MHz ed è stato realizzato in forma parallela. Il terzo e ultimo
stadio è un interpolatore x8 del 1º ordine che eleva la frequenza
di campionamento al valore finale di 36 MHz (R=8, N=1).
4.6. Conversione a 9 MHz.
Un convertitore di frequenza in salita sintonizzabile e ad elevata frequenza
di campionamento richiede in generale risorse di calcolo notevoli. L’algoritmo
CORDIC semplifica notevolmente il processo di conversione di frequenza, ma
nella generazione di segnali ad alta frequenza deve essere necessariamente
implementato in forma parallela. Ogni stadio del calcolatore CORDIC richiede
due circuiti addizionatori/sottrattori per il calcolo delle nuove coordinate
(x’,y’) e un addizionatore/sottrattore per il calcolo dell’angolo residuo.
Per ottenere una purezza spettrale adeguata per gli scopi di trasmissione
in un up-converter numerico con architettura CORDIC sono richiesti almeno
16 stadi in cascata, con bus a 16 bit per ognuno dei tre segnali x,y,phi.
Una realizzazione con stadi in pipeline utilizzerebbe 48 addizionatori/sottrattori
con uscite registrate a 16 bit, per un totale di 768 Flip-Flop, cioè
quasi l’intero dispositivo XC2S30.
Tuttavia, se la frequenza di uscita viene scelta opportunamente, un convertitore
in salita a frequenza fissa può essere realizzato con una frazione
di risorse logiche molto inferiore. Questo è il motivo per cui è
stata scelta una frequenza di campionamento di 36 MHz. In un convertitore
con frequenza di uscita pari a Fs/4, infatti, il segnale di ingresso deve
essere ruotato sequenzialmente di angoli multipli di 90º. Questa operazione
si traduce nel cambiare tra loro le componenti del segnale di ingresso, prese
col segno opportuno secondo una sequenza periodica e prefissata di quattro
cicli, come mostrato in fig. 10.
Fig. 10 – Un convertitore di frequenza a Fs/4
Il converitore a Fs/4 può essere utilizzato anche in discesa semplicemente invertendo la rotazione in senso orario. Sul dispositivo XC2S30 un converitore up-down a Fs/4 da 16 bit occupa un’area di 9 slices e solo 18 Flip-Flop, senza introdurre alcun prodotto spurio e con una frequenza massima di clock di quasi 200 MHz.
5. DESCRIZIONE CIRCUITALE
Lo schema elettrico del modulatore SSB è
disegnato nell’allegato 1. La tensione di alimentazione del modulatore fornita
al piedino 10 del connettore JP3 è di +5Vdc. Il segnale audio proveniente
dal piedino 1 del connettore JP3 viene filtrato e amplificato dall’amplificatore
operazionale IC2A. Il livello del segnale di ingresso necessario a pilotare
il modulatore è di 100 mVpp. La coppia di diodi D4 serve a limitare
il guadagno dell’amplificatore e a evitare la saturazione degli stadi successivi
in caso di sovrapilotaggio. La sezione B dell’amplificatore operazionale OPA2340
(IC2B) funziona come integratore/comparatore del convertitore A/D sigma-delta
del segnale audio di ingresso. Gli ingressi PTT\, BFO\, SSB/CW\, USB/LSB\
e TWOTONE\ controllano il modo di funzionamento del modulatore SSB, abilitando
rispettivamente la trasmissione (PTT), la generazione del segnale di battimento
per la demodulazione (BFO), la selezione del modo operativo (SSB/CW), la
selezione della banda laterale (USB/LSB) e l’abilitazione del generatore
a due toni interno (TWOTONE\). Tutti i segnali di interfaccia presenti su
JP3 sono attivi bassi e devono essere pilotati da sorgenti open-collector
o da interruttori collegati a massa. All’ingresso KEY\ viene collegato il
tasto Morse.
Il cuore del modulatore è rappresentato dal circuito integrato IC3,
un FPGA Xilinx XC2S30, all’interno del quale il segnale audio viene elaborato
numericamente al fine di produrre il segnale SSB a 9 MHz desiderato. Il convertitore
D/A AD9754 (IC4) converte in forma analogica il segnale numerico sintetizzato
da IC3 con l’ausilio dei filtri di ricostruzione passa-banda centrati a 9
MHz e formati da L2-L6 e da C32-C38. In alternativa al DAC a 14 bit
AD9754 è possibile utilizzare un convertitore a 10 bit più economico,
l’AD9760, che è pin-to-pin compatibile all’AD9754. Il modulatore ha
due uscite TXOUT e BFOOUT presenti sul connettore JP4. Il livello delle uscite
è di circa –10 dBm p.e.p. (circa 100 mVpp su 50 Ohm) adeguato a pilotare
il mixer della sezione trasmittente e il demodulatore a prodotto degli apparati
autocostruiti.
Il circuito integrato IC1 è una EEPROM seriale da 512 Kbit che contiene
i dati di configurazione del gate array programmabile XC2S30 e che vengono
scaricati su quest’ultimo all’accensione del modulatore. La riprogrammazione
della EEPROM e l’aggiornamento del core del modulatore è accessibile
“in system” tramite il connettore JP1. Il connettore JP2 rende accessibili
i segnali della porta JTAG del circuito integrato IC2, tramite la quale è
possibile riprogrammare al volo il core per mezzo del toolkit di sviluppo
Xilinx.
L’oscillatore QG1 a 36 MHz fornisce la base dei tempi al modulatore.
Il regolatore di tensione IC5 e il transistor Q1 forniscono le tensioni
stabilizzate a 3.3V e a 2.5V necessarie al funzionamento del modulatore.
La corrente richiesta al piedino di alimentazione (Pin 10 di JP3) è
di circa 150 mA. E’ necessario che l’alimentatore del modulatore sia fornito
di un condensatore elettrolitico di grande capacità ( almeno 2200
uF) o che alternativamente sia in grado di erogare una corrente di spunto
di almeno 500 mA. Tale corrente è infatti richiesta dal circuito integrato
XC2S30 al momento dell’accensione per una corretta inizializzazione del dispositivo.
La rete formata da C18-R20 serve a ritardare l’abilitazione delle tensioni
di alimentazione del modulatore di qualche decina di millisecondi dall’accensione
del dispositivo, cosicché la corrente di spunto possa essere fornita
dal condensatore elettrolitico esterno, nel caso la corrente di picco erogata
dall’alimentatore esterno sia inferiore a 500 mA.
6. RISULTATI SPERIMENTALI
La fotografia di fig. 11 mostra il primo esemplare realizzato. Le fig. 12
e 13 mostrano rispettivamente la reiezione della banda laterale indesiderata
con il modulatore in modalità USB e i prodotti spuri nella banda
compresa tra 1 e 17 MHz. Le misure sono state effettuate con un analizzatore
di spettro Hewlett-Packard HP8563E. Come si nota nella fig. 12 la soppressione
della banda laterale con un segnale audio di 1 KHz è superiore ad
80 dB. Il rumore di quantizzazione introdotto dal convertitore audio A/D
è ben visibile, ma comunque confinato nella banda del filtro di reiezione
e di ampiezza trascurabile. In fig. 13 viene evidenziato il più alto
prodotto spurio generato dal modulatore, di ampiezza inferiore a –75 dBc.
Nelle prove effettuate è stata verificata la purezza spettrale di un
modulatore in cui, al posto del convertitore AD9754, è stato montato
il più economico convertitore a 10 bit AD9760, senza notare significative
variazioni nella misura dell’SFDR. La versione con il convertitore a 10 bit
ha evidenziato un fondo di rumore superiore, e tuttavia ancora trascurabile,
in una banda di circa 2 MHz centrata a 9 MHz.
Fig.11 – Foto del modulatore SSB digitale
|
|
Fig.12,13 – Misura della reiezione della banda laterale indesiderata e dell’SFDR
7. CONCLUSIONI
Utilizzando un economico circuito logico programmabile e sfruttando algoritmi
ottimizzati per l’implementazione hardware di funzioni aritmetiche complesse
è stato possibile realizzare un modulatore SSB digitale compatto con
uscita IF a 9 MHz. Il modulatore può essere impiegato come exciter
in trasmettitori SSB/CW autocostruiti e come BFO della sezione ricevente.
Il core del modulatore, interamente sviluppato in linguaggio VHDL, occupa
un area limitata e si adatta comodamente in un’FPGA Xilinx Spartan II XC2S30,
occupando 400 slices e 3 RamBlocks da 4096 bit (fig. 14).
Fig. 14 – Il core del modulatore SSB sul dispositivo XC2S30
Le prestazioni ottenute sono eccellenti e superiori a quelle di un convenzionale
modulatore analogico. Gli sviluppi nell’immediato futuro prevedono la realizzazione
SOC di un trasmettitore SSB/CW per onde corte cui, tempo libero permettendo,
seguirà un intero ricetrasmettitore.
Un ringraziamento va a Cesare Buzzi, IV3MUR che, condividendo con me la
passione per la sperimentazione, ha inciso i circuiti stampati e assemblato
i primi prototipi del modulatore.
8. RIFERIMENTI
[1] F. Nardone, “Il Personal computer come una radio”,
Quotidiano “Il Messaggero Veneto”, 22 Maggio 1992.
[2] Donald K. Weaver, “A Third Method of Generation and
Detection of Single-Sideband Signals”, IRE Proceedings, 1956, pp. 1703-1705.
[3] Ray Andraka, “A survey of CORDIC algorithms for FPGA
based computers”, ACM, Monterey, 1998 (disponibile anche su Internet http://www.andraka.com/files/crdcsrvy.pdf
)
[4] J. Volder, “Binary computation algorithms for coordinate
rotation and function generation”, Convair Report IAR-1 148 Aeroelectrics
Group, June 1956.
[5] J. Volder, “The CORDIC Computing Technique”, IRE
Trans. on Computers, v. EC-8, Sept. 1959, pp. 330-334
[6] E.B. Hogenhauer, “An economical class of digital
filters for decimation and interpolation”, IEEE Trans. on Acustics, Speech
and Signal Processing, ASSP-29(2), 1981, pp. 155-162.