Trasmettitore BPSK

Transcript

Trasmettitore BPSK
Esercitazione di Elettronica delle Comunicazioni Digitali
Ing. F. Iannuzzo - A.A. 2008/2009
Trasmettitore BPSK
ver 1.0
In questa esercitazione si realizzerà un trasmettitore BPSK. Per fare ciò, si impiegherà, tra l’altro, il
modulatore PWM realizzato nelle passate esercitazioni.
Il circuito è riportato in figura:
Si notino, fin da subito, alcune importanti differenze con i circuiti realizzati finora:
1. ci sono numerosi collegamenti apparentemente interrotti (Ck, msb, count[6..0]). Tali
collegamenti, in realtà, avvengono per omonimia, attribuendo, cioè, lo stesso nome ai due
monconi da collegare;
2. una linea tratteggiata aiuta la comprensione del flusso dati;
3. compaiono blocchi non reperibili in libreria (seno, pwm). Si imparerà, nell’arco
dell’esercitazione, a realizzare blocchi personalizzati.
Si crei un opportuno albero di directory, come segue:
Nella directory BPSK andrà costruito il progetto. Nella directory PWM_lib verrà inserito il
modulatore PWM prodotto nelle passate esercitazioni (per uniformità didattica, si scarichi quello
messo a disposizione sul sito del docente, come indicato in seguito), opportunamente trasformato in
libreria.
1
Uso di un progetto come libreria
Per prima cosa si imparerà a costruire una libreria. Una libreria in Quartus II® è, semplicemente,
un progetto i cui elementi sono utilizzabili da altri progetti.
Per uniformare l’avanzamento dell’esercitazione, si scarichi il modulatore PWM dal sito del
docente (file PWM_lib.zip), e lo si scompatti nella directory PWM_lib. Si lanci l’ambiente di
sviluppo Quartus II®.
Per prima cosa, si crei un nuovo progetto nella directory C:\Elettronica\BPSK e si indichi bpsk
come nome del file principale:
si prosegua. Alla prossima schermata, si scelga il tasto User Libraries… :
apparirà la finestra di scelta libreria:
2
si scelga la directory PWM_lib e si dia OK.
Si completi il wizard di creazione nuovo progetto, ricordando che il dispositivo da scegliere è
l’EPM240T100C5.
Uso della Libreria
L’utilizzazione di un componente di libreria è molto semplice. Mediante il Symbol Tool
attivare la finestra Symbol. A questo punto, apparirà la libreria C:/Elettronica/PWM_lib/,
contenente il componente pwm.
Creazione della ROM
Alcuni dispositivi, tra cui quello usato al corso, NON consentono la realizzazione di memorie
ROM. Ciononostante, però, tale difficoltà è aggirabile con relativa semplicità. La ROM, infatti, è
una particolare rete combinatoria e, pertanto, può essere realizzata con una semplice tabella di
verità.
3
In ambiente Quartus II®, ciò è possibile mediante la redazione di un semplice file di testo, scritto in
linguaggio di descrizione dell’hardware (AHDL – Altera Hardware Description Language). La sua
struttura è di questo tipo:
Per agevolare la generazione di un simile file, sul sito del docente è disponibile il semplice script
MATLAB® seno.m. Lo script produce l’equivalente di una ROM contenente un periodo di
sinusoide campionato a passo e risoluzione arbitrarie.
Si scarichi lo script seno.m nella directory C:\Elettronica\BPSK e lo si esegua in MATLAB®. Si
adotti n=7 (N=128) e m=5. Si dia seno come nome del file, e si verifichi l’avvenuta generazione del
file seno.tdf.
E’ fortemente consigliabile eseguire alcune prove di generazione a varie risoluzioni e
passi di campionamento.
Una volta generato il file .tdf, si ritorni in Quartus e lo si aggiunga al progetto, mediante il menu
Project/Add/remove files in project… come segue:
4
A questo punto, occorre effettuare il passo finale: generare il simbolo grafico. Si apra il file:
e, dal menu File/Create/Update/Create symbol files for current file… si generi il file di simbolo.
E’ ora possibile inserire la ROM così generata mediante il Symbol Tool
5
:
Completamento del circuito
Si completi il circuito, badando in particolare alla correttezza dei nomi. Si adotti n=7 (N=128) e
m=5. Si noti, inoltre, come è possibile elencare le linee di un bus, ordinatamente dall’msb all’lsb,
mediante l’uso della virgola:
Si noti che l’implementazione suggerita è lievemente differente da quanto proposto
a lezione. La porta xor, infatti, è posta sull’ingresso alla ROM anziché sull’uscita, e
opera su un bit solo (“msb”) anziché su tutti. Se ne commenti la correttezza formale
e il risparmio di risorse.
a) Per questa esercitazione si impiegherà una frequenza di clock di 3,6864MHz. Si verifichi il
dimensionamento dei divisori, avendo assunto fOUT=1700Hz.
Simulazione
b) Si avvii lo strumento “Simulator Tool” dal menu Tools. Si scelga “Functional” come tipo di
simulazione (cioè a tempi di propagazione nulli) e si generi la Funcional netlist (tasto apposito),
necessaria alla simulazione. Si clicchi sul tasto
per creare un file di simulazione .VWF.
Dal menu Edit/End time… si scelga 5 millisecondi (qualche periodo a 1700Hz). si clicchi col
tasto destro sulla sezione sinistra, Insert node or bus… e si scelga Node finder… . Si scelgano
i seguenti segnali (per il segnale data si scelga unsigned Decimal):
Si imponga al segnale Ck una frequenza di 3,6864MHz e al segnale bitstream un livello basso. Si
chiuda il file e si esegua la simulazione
.
c) Si verifichi la congruenza dei risultati (zoomando sul segnale Pwm_out si osserva un’onda a
duty cycle variabile? La legge di variazione è coerente col segnale data?).
Predisposizione della basetta
Per utilizzare l’oscillatore di clock ad alta frequenza (3.6864MHz), occorre predisporre il ponticello
sul connettore J13 come indicato nella figura seguente. Tale impostazione fornisce al pin 64 del
CPLD un clock a frequenza di 3.6864MHz.
6
E’ inoltre necessario prelevare con l’oscilloscopio il segnale prodotto dal circuito. Si connettano le
sonde al connettore J12 come indicato in figura. La massa va collegata al pin 40 del connettore J12.
Le due sonde vanno collegate ai pin 38 e pin 39 di J12. In questo modo, esse acquisiranno i segnali
sui pin 51 e pin 50 del CPLD, rispettivamente. Alimentare la basetta.
Modifica del progetto
Per effettuare la prova sperimentale del funzionamento, occorre alimentare il modulatore BPSK con
un bitstream non costante.
Per prima cosa, occorre creare un simbolo che rappresenti tutto il precedente schema BPSK. Come
visto per il file .tdf, mediante il menu File/Create/Update/Create symbol files for current file…
si generi il file di simbolo bpsk.bsf. Da adesso in avanti, sarà possibile inserire l’intero trasmettitore
BPSK con un semplice simbolo!
Si crei un nuovo file .bdf (non un nuovo progetto!!!!) e lo si chiami main.bdf. Un possibile circuito
è il seguente:
7
Esso produce un bitstream alternante a 100simboli/s (verificare!) e lo invia al blocco bpsk. Si
proceda all’assegnazione dei pin come in figura, tranne che per l’uscita data[4..0], utile ai soli fini
simulativi.
Entità superiore di gerarchia
Per compilare main.bdf, è ora necessario cambiare l’entità superiore di gerarchia (la “Top-level
entity”). bpsk.bdf, infatti, è adesso una parte di main.bdf. Per fare ciò, occorre operare come in
figura:
Salvare e compilare il progetto.
d) Si effettui la simulazione del circuito. Per fare ciò, occorrerà un nuovo file .vwf. Lo si denomini
main.vwf. Ecco un possibile esempio:
8
Per simulare il nuovo file, occorre specificarlo come simulation input nel simulator tool.
Programmazione della basetta
Prima di programmare la basetta, non si dimentichi di assegnare i pin al nostro progetto.
. Nella finestra che si aprirà, si controlli che appaia, come di seguito,
Si faccia click sull’icona
la scritta ByteBlaster [LPT1].
e si programmi la basetta.
Analisi delle forme d’onda
Si provi a impostare il trigger sull’uscita bitstream, in modo da sincronizzarsi con i cambi di fase.
e) Si modifichi il main.bdf, in modo da collegare l’ingresso a uno switch della basetta.
f) Si modifichi il main.bdf, in modo da mandare in uscita una stringa RS-232 alla pressione di un
tasto.
Suggerimento: si utilizzi un registro a scorrimento, presettato con la sequenza
opportuna.
9
Appendice
Pin relativi agli switch on/off, ai display e ai led della basetta e assegnazioni suggerite.
Clock generator “standard”: PIN_14. Clock “veloce” a 3.6864MHz: PIN_64.
SW
Pin del
CPLD
SW1
2
SW2
3
SW3
Out7…Out0
LED
Pin del
CPLD
6
LED1
48
SW4
7
LED2
49
SW5
15
LED3
43
SW6
16
LED4
47
SW7
19
LED5
37
SW8
20
LED6
39
SW9
4
LED7
90
SW10
5
LED8
88
SW11
8
SW12
12
SW13
17
SW14
18
SW15
21
SW16
26
NB: tutti i led sono
attivi BASSI (“0”
Æ led acceso)
NB: tutti gli switch
sono attivi BASSI
(switch premuto Æ pin
a “0”)
10
end
Segmento
Pin del
CPLD
Segment A
33
Segment B
34
Segment C
35
Segment D
42
Segment E
41
Segment F
36
Segment G
38
Dot Point DP
40
Enable DISP 1
30
Enable DISP 2
29
Enable DISP 3
28
Enable DISP 4
27
NB: tutti i segmenti e i segnali di enable sono
attivi BASSI (“0” Æ segmento acceso)
11