Sistemes Electrònics Digitals: Pràctiques de laboratori - UPC
Sistemes Electrònics Digitals: Pràctiques de laboratori - UPC
Sistemes Electrònics Digitals: Pràctiques de laboratori - UPC
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
SISTEMES ELECTRÒNICS<br />
DIGITALS<br />
PRÀCTIQUES DE LABORATORI<br />
EMILI LUPON i ROSÉS<br />
SETEMBRE 2011
SISTEMES ELECTRÒNICS<br />
DIGITALS<br />
PRÀCTICA 1<br />
INTRODUCCIÓ AL DISSENY DE SISTEMES DIGITALS<br />
BASAT EN DISPOSITIUS LÒGICS PROGRAMABLES<br />
ÍNDEX<br />
1. OBJECTIUS .................................................................................................................................... 3<br />
2. PREPARACIÓ ................................................................................................................................. 3<br />
3. DESCRIPCIÓ DEL CONTROLADOR .......................................................................................... 4<br />
4. INICIACIÓ DE L'ENTORN DE TREBALL I ESTABLIMENT DEL PROJECTE ...................... 6<br />
5. EDICIÓ DEL DISSENY ................................................................................................................. 8<br />
5.1. Mòdul on_som........................................................................................................................... 8<br />
5.2. Mòdul s_fix ............................................................................................................................. 11<br />
5.3. Mòdul s_int ............................................................................................................................. 14<br />
5.4. Mòdul divf ............................................................................................................................... 15<br />
5.5. Mòdul metro ............................................................................................................................ 16<br />
6. COMPILACIÓ DEL DISSENY .................................................................................................... 16<br />
6.1. Preparació <strong>de</strong> l'entorn i generació <strong>de</strong> la base <strong>de</strong> da<strong>de</strong>s <strong>de</strong>l disseny (anàlisi i síntesi) ............. 17<br />
6.2. Encabiment.............................................................................................................................. 24<br />
6.3. Generació <strong>de</strong> fitxers per a eines <strong>de</strong> tercers .............................................................................. 31<br />
6.4. Compilació completa .............................................................................................................. 32<br />
7. SIMULACIÓ DEL DISSENY ....................................................................................................... 34<br />
7.1. Simulació amb un banc <strong>de</strong> proves en VHDL .......................................................................... 35<br />
7.2. Simulació amb un fitxer <strong>de</strong> coman<strong>de</strong>s Tcl .............................................................................. 43<br />
8. VERIFICACIÓ EXPERIMENTAL DEL DISSENY .................................................................... 45<br />
9. AMPLIACIÓ DEL PROJECTE .................................................................................................... 48
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
1 - 2
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
INTRODUCCIÓ AL DISSENY DE SISTEMES DIGITALS BASAT EN DISPOSITIUS<br />
LÒGICS PROGRAMABLES<br />
1. OBJECTIUS<br />
L'objectiu d'aquesta pràctica és familiaritzar a l'alumne amb les eines més bàsiques <strong>de</strong> l'entorn <strong>de</strong><br />
disseny <strong>de</strong> dispositius lògics programables Quartus II d'ALTERA (versió 10.0sp1), les quals inclouen<br />
el simulador lògic Mo<strong>de</strong>lSim-Altera <strong>de</strong> Mentor Graphics (versió 6.5e). Amb aquesta finalitat, es<br />
proposa un tutorial consistent en la realització guiada <strong>de</strong>l disseny d'un projecte consistent en un<br />
senzill sistema seqüencial per al control d'un visualitzador <strong>de</strong> la situació d'un tren dins una línia <strong>de</strong><br />
metro, visualitzador similar als instal·lats en els vagons <strong>de</strong> les línies <strong>de</strong> metro <strong>de</strong> Barcelona, si bé<br />
que, en principi, per a una línia <strong>de</strong> metro amb només quatre estacions.<br />
2. PREPARACIÓ<br />
Llegiu-vos <strong>de</strong>tingudament tot l'enunciat <strong>de</strong> la pràctica, inclòs el seu annex. Aquest annex conté una<br />
<strong>de</strong>scripció <strong>de</strong> la placa educativa DE0 d'ALTERA/Terasic, la qual farem servir en aquest tutorial.<br />
A l'apartat 3 es <strong>de</strong>scriuen, <strong>de</strong> forma <strong>de</strong>tallada, les especificacions i el disseny <strong>de</strong>l sistema <strong>de</strong> control<br />
<strong>de</strong>l visualitzador <strong>de</strong> la situació <strong>de</strong>l tren dins la línia.<br />
A l'apartat 4 s'exposen les accions que s'han <strong>de</strong> fer per iniciar l'entorn <strong>de</strong> treball <strong>de</strong>l Quartus II.<br />
A l'apartat 5 es realitza l'etapa d'introducció <strong>de</strong>l disseny, en la que s'utilitzen, <strong>de</strong> forma combinada,<br />
dues <strong>de</strong> les eines <strong>de</strong> l'entorn, un editor <strong>de</strong> blocs i un editor <strong>de</strong> texts. L'editor <strong>de</strong> blocs és un editor<br />
gràfic que permet introduir i editar esquemàtics i diagrames <strong>de</strong> blocs. L'editor <strong>de</strong> texts permet<br />
<strong>de</strong>scriure blocs emprant llenguatges <strong>de</strong> <strong>de</strong>scripció <strong>de</strong> hardware, com ara els llenguatges estàndards<br />
VHDL i Verilog. Entre els aspectes més rellevants que s'inclouen en aquest apartat, <strong>de</strong>staquen el<br />
funcionament bàsic d'aquests dos editors, la utilització d'elements <strong>de</strong> les biblioteques disponibles i<br />
la jerarquització <strong>de</strong>ls dissenys.<br />
A l'apartat 6 es realitza la compilació <strong>de</strong>l disseny sobre un dispositiu lògic programable concret (en<br />
aquest cas, l'EP3C16F484C6N <strong>de</strong> la família Cyclone III d'ALTERA). En el procés <strong>de</strong> compilació, el<br />
disseny es <strong>de</strong>scompon en funcions que es po<strong>de</strong>n materialitzar en els recursos <strong>de</strong>ls que disposa el<br />
dispositiu lògic programable triat (elements lògics, pins d'entrada/sortida, etc.) i s'ubiquen aquestes<br />
funcions en recursos concrets. Es po<strong>de</strong>n observar i forçar aquestes ubicacions, <strong>de</strong> forma que posteriors<br />
compilacions les respectin, mitjançant vàries eines <strong>de</strong> l'entorn (editor d'assignacions, planificador<br />
<strong>de</strong>l xip i planificador <strong>de</strong>ls pins). També es po<strong>de</strong>n imposar prestacions temporals que guiïn el procés<br />
<strong>de</strong> compilació i verificar aquestes prestacions amb una eina anomenada TimeQuest. La compilació<br />
també genera els fitxers a emprar en la verificació <strong>de</strong>l disseny i en la programació <strong>de</strong>l xip.<br />
A l'apartat 7 es proce<strong>de</strong>ix a la verificació <strong>de</strong>l disseny mitjançant simulació temporal. Es presenta i<br />
utilitza una altra eina <strong>de</strong> l'entorn: el simulador lògic Mo<strong>de</strong>lSim-Altera, un eina <strong>de</strong> Mentor Graphics<br />
que enllaça amb l'entorn <strong>de</strong>l Quartus II. S'empren dues formes alternatives per <strong>de</strong>finir els estímuls<br />
introduïts al circuit: la creació d'un banc <strong>de</strong> proves en VHDL i la utilització <strong>de</strong>l llenguatge Tcl.<br />
Un cop verificat el funcionament <strong>de</strong>l disseny, a l'apartat 8 es configura l'EP3C16F484C6N existent<br />
a la placa educativa DE0 d'ALTERA/Terasic i es comprova experimentalment el funcionament <strong>de</strong>l<br />
sistema <strong>de</strong> control dissenyat.<br />
1 - 3
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
Finalment, a l'apartat 9 es proposa una petita ampliació <strong>de</strong>l disseny, consistent en implementar un<br />
sistema anàleg per a una línia <strong>de</strong> metro amb set estacions.<br />
3. DESCRIPCIÓ DEL CONTROLADOR<br />
El controlador, anomenat metro, gestiona un visualitzador <strong>de</strong> situació dins la línia instal·lat en els<br />
vagons d'una línia <strong>de</strong> metro. Aquest visualitzador consta d'un LED per estació i indica quina és<br />
l'estació actual en la que ens trobem o a la que ens dirigim (LED en intermitència amb un perío<strong>de</strong><br />
<strong>de</strong> 600 ms), quines estacions s'han recorregut prèviament en aquell trajecte (LEDs encesos) i quines<br />
estacions falten per arribar al final <strong>de</strong> la línia (LEDs apagats). Per tal <strong>de</strong> simplificar la complexitat<br />
<strong>de</strong>l problema, i tenint present que el sistema és perfectament ampliable, es consi<strong>de</strong>rarà una línia <strong>de</strong><br />
metro amb només quatre estacions (estació 0 a estació 3). Així doncs, disposareu <strong>de</strong> quatre LEDs<br />
que comandareu mitjançant un conjunt <strong>de</strong> senyals actius per 1 anomenat led (led0 a led3).<br />
L'aplicació disposa d'una sèrie <strong>de</strong> sensors situats en certs punts <strong>de</strong>l recorregut <strong>de</strong>l metro, els quals<br />
estan associats a les entra<strong>de</strong>s <strong>de</strong>l sistema. Així, es rep un pols negatiu en una entrada anomenada<br />
nsensor cada cop que el tren surt d'una estació. Similarment, es rep un pols negatiu en una entrada<br />
anomenada ne_origen quan el tren canvia <strong>de</strong> sentit (i <strong>de</strong> via) en l'estació terminal consi<strong>de</strong>rada com a<br />
origen <strong>de</strong> la línia (estació 0) i es rep un pols negatiu en una altra entrada anomenada ne_final quan<br />
el tren canvia <strong>de</strong> sentit (i <strong>de</strong> via) en l'altra estació terminal (estació final o estació 3). La figura 1<br />
il·lustra la disposició <strong>de</strong>ls sensors en la línia <strong>de</strong> metro.<br />
Estació 3<br />
ne_final<br />
nsensor<br />
Figura 1: Disposició <strong>de</strong>ls sensors en la línia <strong>de</strong> metro.<br />
D'altra banda, es necessita un senyal periòdic <strong>de</strong> rellotge per, com a mínim, generar la intermitència<br />
<strong>de</strong>l LED associat a la pròxima estació. En general, el senyal <strong>de</strong> rellotge <strong>de</strong>l que hom disposarà com<br />
entrada al sistema, que anomenarem clk_hf, presentarà una freqüència hf força superior a la que<br />
hom requereix lf (lf = 1 / 600 ms = 5 / 3 Hz), essent necessari emprar un divisor <strong>de</strong> freqüència per N<br />
(N = hf / lf) per tal d'obtenir el senyal <strong>de</strong> rellotge <strong>de</strong> baixa freqüència <strong>de</strong>sitjat, el qual anomenarem<br />
clk_lf. La figura 2 mostra l'esquema d'entra<strong>de</strong>s i sorti<strong>de</strong>s <strong>de</strong>l sistema <strong>de</strong> control.<br />
nsensor<br />
ne_origen<br />
ne_final<br />
clk_hf<br />
Estació 2<br />
Circuit<br />
seqüencial<br />
metro<br />
led[3..0]<br />
Figura 2: Entra<strong>de</strong>s i sorti<strong>de</strong>s <strong>de</strong>l sistema metro.<br />
Per fer el disseny d'aquest sistema s'ha triat una estructura jeràrquica, on es generen per separat i en<br />
lògica positiva els senyals fixos i d'intermitència per als LEDs, els quals es combinen posteriorment<br />
emprant portes OR. D'acord amb això, l'estructura consta <strong>de</strong>ls següents mòduls (veure figura 3):<br />
1 - 4<br />
4<br />
Estació 1 Estació 0<br />
estació<br />
3<br />
estació<br />
2<br />
ne_origen<br />
estació<br />
1<br />
estació<br />
0
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
ne_final<br />
ne_origen<br />
nsensor<br />
clk_hf<br />
on_som<br />
D Q<br />
clk_lf<br />
DIVISOR DE<br />
FREQÜÈNCIA<br />
PER N/2<br />
DIVISOR DE<br />
FREQÜÈNCIA<br />
PER 2<br />
divf<br />
sm<br />
sensorf<br />
nald<br />
down<br />
naclr<br />
Figura 3: Esquema <strong>de</strong>l sistema metro.<br />
a) Un mòdul seqüencial, anomenat divf, corresponent al divisor <strong>de</strong> freqüència per N (N parell) que<br />
permet obtenir el rellotge clk_lf a partir <strong>de</strong>l rellotge d'entrada clk_hf. En aquest cas, la placa<br />
educativa DE0 d'ALTERA/Terasic disposa d'un senyal <strong>de</strong> rellotge precablejat <strong>de</strong> freqüència<br />
50 MHz, requerint-se d'un divisor per N = 30.000.000. Ara bé, per no allargar massa el temps<br />
<strong>de</strong>stinat a la verificació <strong>de</strong>l circuit, en les simulacions <strong>de</strong> l'apartat 7 es consi<strong>de</strong>rarà un divisor <strong>de</strong><br />
freqüència per N = 30, amb la qual cosa el sistema anirà 1.000.000 <strong>de</strong> vega<strong>de</strong>s més <strong>de</strong> pressa. El<br />
divisor <strong>de</strong> freqüència per N està implementat per dos divisors enca<strong>de</strong>nats, un primer per N / 2 i<br />
un segon per 2, a fi d'aconseguir una sortida clk_lf simètrica per a qualsevol valor <strong>de</strong> N parell.<br />
b) Un mòdul seqüencial, anomenat on_som, que estableix en quin punt <strong>de</strong>l recorregut es troba el<br />
tren i quin és el sentit <strong>de</strong> la marxa. Per fer-ho, utilitza un comptador bidireccional, que memoritza<br />
l'estació actual q, i un biestable R<br />
bidireccional disposa <strong>de</strong> senyals asíncrons <strong>de</strong> posada a zero i càrrega en paral·lel actius per nivell<br />
baix. Els senyals ne_origen i ne_final actuen com a senyals <strong>de</strong> control asíncrons, <strong>de</strong>finint tant<br />
l'estació actual (una <strong>de</strong> les dues estacions terminals) com el nou sentit <strong>de</strong> la marxa. A més a més,<br />
aquests dos senyals permeten inicialitzar el sistema, consi<strong>de</strong>rant el tren aturat en una <strong>de</strong> les<br />
estacions terminals, i no importa que presentin espuris en commutar (no afecten al funcionament<br />
S asíncron, que memoritza el sentit <strong>de</strong> la marxa sm. El comptador<br />
1 - 5<br />
0<br />
d<br />
0<br />
c<br />
1<br />
b<br />
1<br />
a<br />
COMPTADOR<br />
MÒDUL 16<br />
a<br />
b<br />
qd qc qb qa<br />
q1 q0<br />
sm q[1..0] sf[3..0]<br />
0 00 0000<br />
0 01 0001<br />
0 10 0011<br />
0 11 0111<br />
1 00 1110<br />
1 01 1100<br />
1 10 1000<br />
1 11 0000<br />
s_fix<br />
y3n<br />
DESCOD y2n<br />
1<br />
2 a 4<br />
g1 y1n<br />
g2an<br />
g2bn y0<br />
n<br />
0<br />
s_int<br />
sf3<br />
sf2<br />
sf1<br />
sf0<br />
si3<br />
si2<br />
si1<br />
si0<br />
led3<br />
led2<br />
led1<br />
led0
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
<strong>de</strong>l sistema). Com a senyal <strong>de</strong> rellotge <strong>de</strong>l comptador s'hauria d'emprar el senyal nsensor, però<br />
aquest senyal només es pot emprar directament si està lliure d'espuris. Donat que en la vostra<br />
aplicació emprareu un polsador per simular el senyal nsensor, molt probablement presentarà<br />
espuris en commutar i no podrà ser utilitzat directament. Per filtrar aquests espuris es pot emprar<br />
un biestable tipus D que pren mostres <strong>de</strong>l senyal nsensor a una freqüència inferior a la durada<br />
<strong>de</strong>ls espuris (per exemple, a la freqüència <strong>de</strong> la intermitència, és a dir, cada 600 ms), generant<br />
una imatge filtrada sensorf lliure d'espuris, si bé quelcom retardada. Per tot l'exposat, el mòdul<br />
on_som consi<strong>de</strong>ra realment com entrada el senyal filtrat sensorf, existint un petit circuit extern<br />
encarregat <strong>de</strong> la seva generació.<br />
c) Una xarxa combinacional, anomenada s_fix, que, a partir <strong>de</strong> la posició <strong>de</strong>l tren q i <strong>de</strong>l sentit <strong>de</strong> la<br />
marxa sm, genera els senyals que indiquen quins LEDs han d'estar encesos <strong>de</strong> forma permanent<br />
(estacions recorregu<strong>de</strong>s prèviament) i quins no (la resta, inclosa l'estació actual).<br />
d) Una segona xarxa combinacional, anomenada s_int, que, a partir <strong>de</strong> la situació <strong>de</strong>l tren q i <strong>de</strong>l<br />
senyal <strong>de</strong> rellotge <strong>de</strong> baixa freqüència clk_lf, genera el senyal d'intermitència per al LED<br />
corresponent a l'estació actual, <strong>de</strong>ixant la resta apagats <strong>de</strong> forma permanent.<br />
4. INICIACIÓ DE L'ENTORN DE TREBALL I ESTABLIMENT DEL PROJECTE<br />
Aneu a l'escriptori <strong>de</strong> Windows i feu doble click sobre la icona Quartus II 10.0sp1. S'obrirà la<br />
finestra principal <strong>de</strong>l programa Quartus II (veure figura 4). Si, a més a més, s'obre una altra finestra<br />
amb algun missatge, tanqueu-la. Dins la finestra principal, podreu observar tres finestres obertes, la<br />
<strong>de</strong>l navegador <strong>de</strong>l projecte a dalt a l'esquerra, la <strong>de</strong> tasques al mig a l'esquerra, i la <strong>de</strong> missatges a<br />
baix. A més a més, resta un espai reservat per obrir altres finestres.<br />
Figura 4: Finestra principal <strong>de</strong>l Quartus II.<br />
1 - 6
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
En cas <strong>de</strong> què necessiteu complementar la informació sobre qualsevol comanda <strong>de</strong> les empra<strong>de</strong>s en<br />
el tutorial, po<strong>de</strong>u recórrer al menú Help o a la icona amb un interrogant blanc sobre fons blau. El<br />
mateix es pot fer per obtenir informació addicional sobre primitives, megafuncions, dispositius, etc.<br />
Seguidament, s'ha d'establir el projecte amb el que es vol treballar. Es pot seleccionar un d'existent<br />
o crear-ne un <strong>de</strong> nou. El concepte <strong>de</strong> projecte va més enllà d'un simple agrupament <strong>de</strong>ls fitxers que<br />
contindran el disseny, ja que inclou molta més informació, com ara el directori on s'ubicaran els<br />
fitxers, el dispositiu on s'implementarà el disseny, les assignacions <strong>de</strong>ls pins d'entrada/sortida, les<br />
condicions <strong>de</strong> compilació i <strong>de</strong> simulació, les eines <strong>de</strong> tercers que s'empraran en la compilació i la<br />
simulació, etc. Penseu que po<strong>de</strong>u estar treballant amb un projecte i, simultàniament, tenir oberts<br />
fitxers que pertanyin a d'altres projectes. Cal assignar un nom a cada projecte i la recomanació és<br />
<strong>de</strong>nominar-lo exactament igual que el mòdul <strong>de</strong> més alt nivell <strong>de</strong> la seva estructura jeràrquica.<br />
I) Selecció d'un projecte existent. A la barra <strong>de</strong> menús <strong>de</strong>l Quartus II:<br />
1. Trieu File Open Project.... S'obrirà la finestra d'un programa <strong>de</strong> cerca que us permetrà<br />
navegar per l'ordinador i seleccionar el projecte <strong>de</strong>sitjat (fitxer amb extensió qpf).<br />
II) Creació d'un projecte nou (cas actual). A la barra <strong>de</strong> menús <strong>de</strong>l Quartus II:<br />
1. Trieu File New Project Wizard.... Si surt algun missatge d'advertiment, premeu OK. En<br />
qualsevol cas, s'obrirà la finestra <strong>de</strong> l'assistent <strong>de</strong> nous projectes per la pàgina 1 <strong>de</strong> 5.<br />
2. Introduïu el directori <strong>de</strong> treball. És convenient emprar un directori diferent per a cada nou<br />
projecte. Po<strong>de</strong>u navegar per l'ordinador fins arribar al directori <strong>de</strong>sitjat, si ja existeix, o fins<br />
a un directori pare on creareu un nou directori (en aquest cas, cal completar manualment el<br />
camí <strong>de</strong>l directori <strong>de</strong> treball). Es recomana crear un nou directori anomenat metro4 ubicat<br />
en el directori pare que vulgueu. Introduïu metro com a nom <strong>de</strong>l projecte i també com a<br />
nom <strong>de</strong> l'entitat o mòdul <strong>de</strong> nivell més alt. Seguidament, passeu a la següent pàgina <strong>de</strong><br />
l'assistent prement Next. Si el directori <strong>de</strong> treball que heu indicat no existeix, el Quartus II<br />
us preguntarà si el voleu crear. Premeu Yes.<br />
3. Com encara no heu creat cap mòdul ni cap biblioteca d'usuari i les biblioteques <strong>de</strong> l'entorn<br />
són sempre accessibles, passeu directament a la següent pàgina <strong>de</strong> l'assistent prement Next.<br />
4. Seleccioneu Cyclone III com a família <strong>de</strong> dispositius i indiqueu que voleu seleccionar un<br />
dispositiu concret <strong>de</strong> dita família. Seleccioneu Any en tots els filtres (empaquetat, nombre<br />
<strong>de</strong> pins i velocitat) a fi <strong>de</strong> què apareguin tots els dispositius <strong>de</strong> la família Cyclone III en la<br />
llista que s'indica a la finestra. Seleccioneu el dispositiu EP3C16F484C6. Seguidament,<br />
passeu a la següent pàgina <strong>de</strong> l'assistent prement Next.<br />
5. Com a eina <strong>de</strong> terceres parts emprarem el simulador lògic Mo<strong>de</strong>lSim-Altera <strong>de</strong> Mentor<br />
Graphics. A l'apartat <strong>de</strong> simulació, seleccioneu Mo<strong>de</strong>lSim-Altera com a eina i VHDL com a<br />
format. Seguidament, passeu a la següent pàgina <strong>de</strong> l'assistent prement Next.<br />
6. Ja heu arribat a la darrera pàgina <strong>de</strong> l'assistent, que mostra un resum <strong>de</strong> totes les da<strong>de</strong>s<br />
introduï<strong>de</strong>s. Vali<strong>de</strong>u-les amb Finish. Noteu que, a la barra superior <strong>de</strong> la finestra principal<br />
<strong>de</strong>l Quartus II, us apareix ara el directori <strong>de</strong> treball, el nom <strong>de</strong>l projecte que heu creat i amb<br />
el que esteu treballant (metro), i l'entitat amb la que esteu treballant (metro). Aquesta<br />
entitat també apareix a la finestra <strong>de</strong>l navegador <strong>de</strong>l projecte quan se selecciona la pestanya<br />
<strong>de</strong> la jerarquia <strong>de</strong>l projecte.<br />
La informació relativa al projecte, agrupada en categories, es pot veure i modificar en qualsevol<br />
moment triant Assignments Settings... a la barra <strong>de</strong> menús <strong>de</strong>l Quartus II. Aquesta informació<br />
apareix en una finestra a l'efecte que presenta, a l'esquerra, una llista <strong>de</strong> les diferents categories<br />
d'informació i, a la dreta, la informació relativa a la categoria seleccionada en la llista.<br />
1 - 7
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
5. EDICIÓ DEL DISSENY<br />
Per introduir el disseny, heu d'editar cinc fitxers, corresponents als mòduls o entitats divf, on_som,<br />
s_fix, s_int i metro, aquesta darrera corresponent al nivell més alt <strong>de</strong> la jerarquia <strong>de</strong>l disseny. Amb<br />
aquesta finalitat, utilitzareu dues eines <strong>de</strong> l'entorn Quartus II, l'editor <strong>de</strong> blocs i l'editor <strong>de</strong> texts,<br />
presentant-se aquí les seves coman<strong>de</strong>s i procediments més significatius. Una tercera eina utilitzable<br />
per especificar un disseny és l'editor <strong>de</strong> símbols, si bé no l'emprareu en aquest tutorial, en aprofitar<br />
sense cap canvi els símbols que s'hauran generat <strong>de</strong> forma automàtica.<br />
5.1. Mòdul on_som<br />
El mòdul on_som es generarà en forma d'esquemàtic emprant l'editor <strong>de</strong> blocs <strong>de</strong>l Quartus II. Un<br />
esquemàtic consisteix en un conjunt <strong>de</strong> símbols, que representen components, interconnectats.<br />
I) Creació <strong>de</strong>l fitxer <strong>de</strong>l mòdul. A la barra <strong>de</strong> menús <strong>de</strong>l Quartus II:<br />
1. Trieu File New..., seleccioneu Block Diagram/Schematic File dins <strong>de</strong> Design Files com<br />
a tipus <strong>de</strong>l fitxer <strong>de</strong>l disseny i vali<strong>de</strong>u amb OK. S'obrirà la finestra <strong>de</strong> l'editor <strong>de</strong> blocs en<br />
l'espai reservat a l'efecte. Maximitzeu-la si no ho està. Aquesta finestra presenta tres barres<br />
d'eines. La barra més llarga, que consta <strong>de</strong> vint-i-una icones, és la barra d'eines <strong>de</strong> dibuix.<br />
Quan una eina està activada, la icona corresponent està ressaltada.<br />
2. Trieu File Save As..., indiqueu el nom on_som (extensió bdf), marqueu que voleu afegir<br />
el fitxer que esteu creant al projecte actual i vali<strong>de</strong>u amb Save.<br />
II) Selecció <strong>de</strong> les opcions <strong>de</strong> l'editor <strong>de</strong> blocs. Hi ha ocasions, especialment quan es treballa amb<br />
esquemes complexos, en les que és útil visualitzar una graella <strong>de</strong> referència que permeti<br />
distribuir els components sobre la pantalla amb més comoditat. També pot resultar convenient<br />
<strong>de</strong>finir altres prestacions:<br />
1. A la barra <strong>de</strong> menús <strong>de</strong>l Quartus II trieu Tools Options.... S'obrirà una finestra amb el<br />
nom anterior que presenta, a l'esquerra, una llista amb les diferents categories d'opcions <strong>de</strong><br />
l'entorn <strong>de</strong> treball i, a la dreta, les opcions relatives a la categoria seleccionada en la llista.<br />
2. Seleccioneu a la llista Block/Symbol Editor.<br />
3. Introduïu 1 com a distància <strong>de</strong> la graella i marqueu totes les opcions menys les següents:<br />
Double-click to show property sheet, Show I/O standards and reserve pin assignments,<br />
Show page breaks i Inclu<strong>de</strong> a bor<strong>de</strong>r when printing. Vali<strong>de</strong>u amb OK.<br />
III) Introducció <strong>de</strong>ls components (primitives, mòduls, blocs i megafuncions). Per a tal fi, fareu<br />
servir dues eines <strong>de</strong> la barra d'eines <strong>de</strong> dibuix <strong>de</strong> l'editor <strong>de</strong> blocs. La primera icona d'aquesta<br />
barra (una fletxa blanca) permet activar l'eina <strong>de</strong> selecció, mentre que la cinquena icona<br />
d'aquesta barra (una porta AND) permet activar l'eina d'introducció <strong>de</strong> símbols.<br />
1. Estant l'eina <strong>de</strong> selecció activada, feu doble click sobre la zona blanca <strong>de</strong> la finestra <strong>de</strong><br />
l'editor <strong>de</strong> blocs o bé seleccioneu l'eina d'introducció <strong>de</strong> símbols. Apareixerà una finestra,<br />
anomenada finestra <strong>de</strong>l símbol, que presenta, a l'esquerra, una llista amb les biblioteques<br />
<strong>de</strong> components a les que po<strong>de</strong>u accedir i un camp (Name) on es pot escriure directament el<br />
nom <strong>de</strong>l component a introduir. Es recomana fer un passeig per aquestes biblioteques per<br />
veure quin tipus <strong>de</strong> components contenen, especialment per les biblioteques primitives i<br />
maxplus2, aquesta última dins la categoria others.<br />
2. En el camp Name, escriviu 4count (comptador bidireccional <strong>de</strong> 4 bits <strong>de</strong> la biblioteca<br />
maxplus2). A la dreta <strong>de</strong> la finestra <strong>de</strong>l símbol apareixerà el símbol d'aquest component.<br />
1 - 8
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
Vali<strong>de</strong>u amb OK. La finestra <strong>de</strong>l símbol <strong>de</strong>sapareixerà i el símbol us apareixerà sobre la<br />
finestra <strong>de</strong> l'editor <strong>de</strong> blocs, <strong>de</strong>splaçant-se sobre ella seguint el moviment <strong>de</strong>l ratolí.<br />
3. Feu click sobre la finestra <strong>de</strong> l'editor <strong>de</strong> blocs allà on <strong>de</strong>sitgeu posar una unitat <strong>de</strong>l símbol<br />
que havíeu seleccionat.<br />
4. Si teníeu activada l'eina <strong>de</strong> selecció, només podreu introduir una unitat d'aquest símbol. En<br />
canvi, si teníeu activada l'eina d'introducció <strong>de</strong> símbols, podreu introduir tantes unitats <strong>de</strong>l<br />
símbol com vulgueu, per a la qual cosa simplement haureu <strong>de</strong> repetir el pas 3. En aquest<br />
darrer cas, per activar novament l'eina <strong>de</strong> selecció, po<strong>de</strong>u prémer la tecla Esc o la icona <strong>de</strong><br />
l'eina <strong>de</strong> selecció. També po<strong>de</strong>u obrir novament la finestra <strong>de</strong>l símbol, per triar-ne un altre,<br />
prement la icona <strong>de</strong> l'eina d'introducció <strong>de</strong> símbols.<br />
5. Repetiu els passos 1 a 3 (o 2 a 4) per introduir en l'esquemàtic una unitat <strong>de</strong>ls símbols <strong>de</strong>ls<br />
següents components: NAND2, INPUT (port d'entrada), OUTPUT (port <strong>de</strong> sortida), VCC<br />
(1 lògic) i GND (0 lògic).<br />
6. Noteu que cada component introduït a l'esquemàtic té associat, a més a més <strong>de</strong>l nom que<br />
indica la seva funcionalitat (p.e. NAND2), un altre nom que serveix per i<strong>de</strong>ntificar-lo <strong>de</strong><br />
forma unívoca i inequívoca (en un esquemàtic po<strong>de</strong>n haver moltes portes NAND2 i cal<br />
distingir-les). Aquest nom i<strong>de</strong>ntificador ha <strong>de</strong> ser, per tant, diferent per a cada component.<br />
Per <strong>de</strong>fecte, aquest i<strong>de</strong>ntificador és pin_name o pin_name seguit d'un número per als ports<br />
d'entrada/sortida i inst o inst seguit d'un número per als altres components.<br />
IV) Desplaçament i rèplica <strong>de</strong> components. És possible capturar un símbol, replicar-lo o esborrarlo<br />
seleccionant, respectivament, Edit Copy, Edit Paste o Edit Cut a la barra <strong>de</strong> menús<br />
<strong>de</strong>l Quartus II, o bé prement, respectivament, les tecles Ctrl-C, Ctrl-V o Ctrl-X. Per capturarlo<br />
o esborrar-lo, cal tenir-lo seleccionat, i per replicar-lo, cal no tenir-ne cap <strong>de</strong> seleccionat. A<br />
més a més, el Quartus II disposa <strong>de</strong>ls següents procediments específics per al <strong>de</strong>splaçament i<br />
rèplica <strong>de</strong> components:<br />
1. Per moure un símbol, premeu el botó esquerre <strong>de</strong>l ratolí sobre el símbol i, sense <strong>de</strong>ixar-lo<br />
anar, arrossegueu-lo a la posició <strong>de</strong>sitjada.<br />
2. Per replicar un símbol, premeu alhora el botó esquerre <strong>de</strong>l ratolí sobre el símbol i la tecla<br />
Ctrl i, sense <strong>de</strong>ixar-los anar, arrossegueu la rèplica a la posició <strong>de</strong>sitjada. Utilitzeu aquest<br />
procediment per dibuixar una segona porta NAND2, un segon port <strong>de</strong> sortida i dos ports<br />
més d'entrada.<br />
V) Assignació d'i<strong>de</strong>ntificadors personalitzats als components. Cada component <strong>de</strong> l'esquemàtic té<br />
un i<strong>de</strong>ntificador que li ha estat assignat en el moment <strong>de</strong> la seva introducció, però aquest<br />
i<strong>de</strong>ntificador <strong>de</strong>pèn <strong>de</strong> l'ordre d'introducció <strong>de</strong>l component i no aporta cap informació sobre la<br />
seva funció dins <strong>de</strong>l vostre disseny. Per això és molt útil assignar i<strong>de</strong>ntificadors personalitzats<br />
als components, <strong>de</strong> forma que sigui fàcil i<strong>de</strong>ntificar els seus senyals en les successives etapes<br />
<strong>de</strong>l disseny. Pel que fa als ports d'entrada/sortida, aquest i<strong>de</strong>ntificador és el nom <strong>de</strong>l senyal<br />
d'entrada/sortida associat al port.<br />
1. Feu doble click sobre el nom per <strong>de</strong>fecte d'un <strong>de</strong>ls ports d'entrada. El nom quedarà ressaltat<br />
i a punt per ser modificat. Escriviu naset i vali<strong>de</strong>u el nom prement la tecla Esc o fent click<br />
en algun altre punt <strong>de</strong> la finestra <strong>de</strong> l'editor <strong>de</strong> blocs. Si vali<strong>de</strong>u el nom prement un retorn,<br />
és possible que el Quartus II també passi a ressaltar el nom d'algun altre component.<br />
2. Repetiu el pas 1 per posar els noms narst i clk als altres dos ports d'entrada, sm a un <strong>de</strong>ls<br />
ports <strong>de</strong> sortida i q[1..0] a l'altre port <strong>de</strong> sortida (no <strong>de</strong>ixeu cap espai en blanc). Això últim<br />
significa que es tracta d'un bus o grup <strong>de</strong> senyals (en aquest cas <strong>de</strong> dos, q[1] i q[0]).<br />
3. Repetiu el pas 1 per posar els noms gen-sm i gen-q als components que generaran els<br />
senyals sm i q[1..0].<br />
1 - 9
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
4. També es pot canviar el nom d'un component fent doble click sobre el component (però no<br />
sobre el seu i<strong>de</strong>ntificador). En aquest cas, s'obrirà una nova finestra, anomenada finestra <strong>de</strong><br />
propietats. En aquesta finestra, dins les propietats generals, trobareu un camp amb el nom<br />
<strong>de</strong>l component. Po<strong>de</strong>u escriure el nou nom en aquest camp i <strong>de</strong>sprés validar-lo prement<br />
OK. La finestra <strong>de</strong> propietats es tancarà. Hi ha una forma alternativa d'accedir a la finestra<br />
<strong>de</strong> propietats. Feu click sobre el component amb el botó dret <strong>de</strong>l ratolí. Es <strong>de</strong>splegarà una<br />
llista d'accions a fer sobre el component. En aquesta llista, trieu l'acció Properties i s'obrirà<br />
la finestra <strong>de</strong> propietats.<br />
VI) Connexió <strong>de</strong>ls components. Un cop situats els components a l'esquemàtic, cal interconnectarlos<br />
a<strong>de</strong>quadament. Les línies <strong>de</strong> connexió po<strong>de</strong>n fer-se <strong>de</strong> dues maneres diferents:<br />
a) Si està activada l'eina <strong>de</strong> selecció, prement el botó esquerre <strong>de</strong>l ratolí sobre un port d'un<br />
component (entrada o sortida <strong>de</strong>l símbol) o sobre l'extrem o un colze d'una línia dibuixada<br />
prèviament, i movent el ratolí sense <strong>de</strong>ixar anar el botó, apareix una línia <strong>de</strong> connexió que<br />
po<strong>de</strong>u fer arribar fins al punt que vulgueu (un altre port d'un component, una altra línia, o<br />
un punt a l'aire). Si la línia <strong>de</strong> connexió és prima, correspon a un no<strong>de</strong>, és a dir, a un únic<br />
punt o senyal elèctric. En canvi, si la línia <strong>de</strong> connexió és gruixuda, correspon a un bus, és<br />
a dir, a un conjunt <strong>de</strong> punts o senyals elèctrics. L'aspecte <strong>de</strong> la línia <strong>de</strong> connexió es genera<br />
automàticament en coherència amb l'amplada <strong>de</strong>ls ports <strong>de</strong>ls components o <strong>de</strong> les línies <strong>de</strong><br />
connexió que connecta.<br />
b) Movent un component fins que un <strong>de</strong>ls seus ports toqui un port d'un altre component fa<br />
que aquests dos ports quedin interconnectats. Si posteriorment es mou qualsevol <strong>de</strong>ls dos<br />
components, es genera automàticament la corresponent línia <strong>de</strong> connexió. Això funciona<br />
només si es té activada l'opció Rubberbanding, la qual s'activa amb la divuitena icona <strong>de</strong> la<br />
barra d'eines <strong>de</strong> dibuix <strong>de</strong> l'editor <strong>de</strong> blocs.<br />
Les icones setena i <strong>de</strong>sena <strong>de</strong> la barra d'eines <strong>de</strong> l'editor <strong>de</strong> blocs activen, respectivament, les<br />
eines <strong>de</strong> connexió ortogonal i diagonal <strong>de</strong> no<strong>de</strong>s. Amb alguna d'aquestes eines activa<strong>de</strong>s, totes<br />
les noves línies que es dibuixin seran primes (no<strong>de</strong>s).<br />
Les icones vuitena i onzena <strong>de</strong> la barra d'eines <strong>de</strong> l'editor <strong>de</strong> blocs activen, respectivament, les<br />
eines <strong>de</strong> connexió ortogonal i diagonal <strong>de</strong> busos. Amb alguna d'aquestes eines activa<strong>de</strong>s, totes<br />
les noves línies que es dibuixin seran gruixu<strong>de</strong>s (busos).<br />
Els no<strong>de</strong>s i els busos també po<strong>de</strong>n connectar-se entre si assignant-los noms coinci<strong>de</strong>nts. Per<br />
exemple, per connectar el port <strong>de</strong> sortida q[1..0] <strong>de</strong>l mòdul on_som als ports QA i QB <strong>de</strong>l<br />
mòdul 4count, es pot fer el següent:<br />
1. Dibuixeu una línia que surti <strong>de</strong>l port QA <strong>de</strong> 4count i que acabi aparentment a l'aire.<br />
2. Feu click damunt aquesta línia amb el botó dret <strong>de</strong>l ratolí. Es <strong>de</strong>splegarà un llista d'accions<br />
a fer sobre aquesta línia. En aquesta llista, trieu l'acció Properties i s'obrirà la finestra <strong>de</strong><br />
propietats <strong>de</strong> la línia. En aquesta finestra, dins les propietats generals, trobareu un camp<br />
amb el nom <strong>de</strong> la línia. Escriviu q[0], que és el nom que voleu donar al senyal d'aquesta<br />
línia. Es fa notar que els noms q[0] i q0 són equivalents.<br />
3. Repetiu els passos 1 i 2 per tal <strong>de</strong> posar el nom q[1] al no<strong>de</strong> connectat a QB <strong>de</strong> 4count i<br />
q[1..0] al bus connectat al port <strong>de</strong> sortida q[1..0]. Es fa notar que els noms q[1] i q1 són<br />
equivalents.<br />
Feu les accions necessàries fins obtenir l'esquemàtic <strong>de</strong> la figura 5. Si heu d'esborrar un tram<br />
d'una línia o un component, seleccioneu-lo i premeu la tecla Supr (Del o Delete).<br />
1 - 10
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
Figura 5: Finestra <strong>de</strong> l'editor <strong>de</strong> blocs amb el mòdul on_som.bdf.<br />
VII) Enregistrament <strong>de</strong>l mòdul dissenyat, generació d'un símbol gràfic per al mòdul dissenyat i<br />
acabament. Abans d'acabar, cal enregistrar en un fitxer el mòdul dissenyat i crear un símbol<br />
per a dit mòdul (on_som) que pugui ser utilitzar-se en altres mòduls <strong>de</strong> jerarquia superior. A la<br />
barra <strong>de</strong> menús <strong>de</strong>l Quartus II:<br />
1. Trieu File Save.<br />
2. Trieu File Create / Update Create Symbol Files for Current File. S'obrirà una nova<br />
finestra <strong>de</strong> tipus navegador, anomenada finestra <strong>de</strong> creació <strong>de</strong>l fitxer <strong>de</strong>l símbol, que us<br />
permetrà anomenar el fitxer i <strong>de</strong>sar-lo on vulgueu. En aquest cas, només cal que vali<strong>de</strong>u el<br />
nom <strong>de</strong>l fitxer i la ubicació que apareixen per <strong>de</strong>fecte prement Desa (Save). Vali<strong>de</strong>u amb<br />
OK el missatge informatiu que us apareixerà a continuació.<br />
3. Trieu File Close per finalitzar la introducció <strong>de</strong>l mòdul on_som. Indiqueu que voleu<br />
actualitzar els fitxers <strong>de</strong>l disseny en cas <strong>de</strong> què el Quartus II us ho <strong>de</strong>mani.<br />
5.2. Mòdul s_fix<br />
El mòdul s_fix es generarà amb l'editor <strong>de</strong> texts utilitzant el llenguatge <strong>de</strong> <strong>de</strong>scripció <strong>de</strong> hardware<br />
VHDL.<br />
I) Creació <strong>de</strong>l fitxer <strong>de</strong>l mòdul. A la barra <strong>de</strong> menús <strong>de</strong>l Quartus II:<br />
1. Trieu File New..., seleccioneu VHDL File dins <strong>de</strong> Design Files com a tipus <strong>de</strong>l fitxer <strong>de</strong>l<br />
disseny i vali<strong>de</strong>u amb OK. S'obrirà la finestra <strong>de</strong> l'editor <strong>de</strong> texts en l'espai reservat a<br />
l'efecte. Maximitzeu-la si no ho està. Aquesta finestra presenta una sola barra d'eines, que<br />
és la barra <strong>de</strong> l'editor <strong>de</strong> texts i conté dinou icones.<br />
2. Trieu File Save As..., indiqueu el nom s_fix (extensió vhd), marqueu que voleu afegir el<br />
fitxer que esteu creant al projecte actual i vali<strong>de</strong>u amb Save.<br />
1 - 11
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
II) Selecció <strong>de</strong> les opcions <strong>de</strong> l'editor <strong>de</strong> texts. En general, quan es treballa amb editors <strong>de</strong> texts,<br />
és útil <strong>de</strong>finir un pas <strong>de</strong> tabulació. També pot resultar convenient <strong>de</strong>finir altres prestacions. A<br />
la barra <strong>de</strong> menús <strong>de</strong>l Quartus II:<br />
1. Trieu Tools Options.... Apareixerà una finestra amb el nom anterior que presenta, a la<br />
seva part esquerra, una llista amb les diferents categories d'opcions <strong>de</strong> l'entorn <strong>de</strong> treball i,<br />
a la dreta, les opcions relatives a la categoria seleccionada en la llista.<br />
2. Seleccioneu a la llista Text Editor.<br />
3. Introduïu 2 com a pas <strong>de</strong> tabulació i marqueu totes les opcions a excepció <strong>de</strong> les opcions<br />
Show white space, Word wrap i Show in<strong>de</strong>nt gui<strong>de</strong>. Vali<strong>de</strong>u amb OK.<br />
III) Entrada <strong>de</strong> plantilles pre<strong>de</strong>fini<strong>de</strong>s ("templates") d'estructures <strong>de</strong>l llenguatge VHDL. Degut a<br />
què encara no coneixeu massa bé el llenguatge VHDL, editareu el fitxer <strong>de</strong> text s_fix.vhd<br />
utilitzant les plantilles <strong>de</strong>l llenguatge VHDL que estan pre<strong>de</strong>fini<strong>de</strong>s en l'editor <strong>de</strong> texts. Es<br />
recomana que llegiu els comentaris presents a les plantilles, que us aclariran la finalitat <strong>de</strong> les<br />
estructures <strong>de</strong>l llenguatge VHDL que heu introduït. Posteriorment, po<strong>de</strong>u esborrar les línies<br />
<strong>de</strong> comentaris d'aquestes plantilles i les línies en blanc<br />
1. Premeu la dotzena icona <strong>de</strong> la barra d'eines <strong>de</strong> l'editor <strong>de</strong> texts (un pergamí <strong>de</strong>senrotllat),<br />
que correspon a la introducció <strong>de</strong> plantilles. S'obrirà la finestra d'inserció <strong>de</strong> plantilles, que<br />
presenta, a la seva esquerra, un arbre <strong>de</strong> plantilles <strong>de</strong> diferents llenguatges.<br />
2. Desplegueu l'arbre <strong>de</strong> plantilles VHDL Constructs Design Units fent click sobre els<br />
respectius signes <strong>de</strong> <strong>de</strong>splegament (+).<br />
3. Seleccioneu la plantilla Library Clause en l'arbre que heu <strong>de</strong>splegat. A la part dreta <strong>de</strong> la<br />
finestra d'inserció <strong>de</strong> plantilles apareixerà el text associat a aquesta plantilla, que comprèn<br />
una seqüència <strong>de</strong> comentaris en VHDL (les línies en verd que comencen per --) més una<br />
sentència VHDL (la línia library ;).<br />
4. En el fitxer <strong>de</strong> text, poseu el cursor d'inserció <strong>de</strong> text en el punt on vulgueu inserir el text<br />
<strong>de</strong> la plantilla i inseriu-lo prement el botó Insert <strong>de</strong> la finestra d'inserció <strong>de</strong> plantilles.<br />
Noteu que el text apareix seleccionat en el vostre fitxer (ressaltat en blau marí) i que la<br />
finestra d'inserció <strong>de</strong> plantilles roman oberta. Po<strong>de</strong>u <strong>de</strong>seleccionar el text movent el cursor<br />
d'inserció <strong>de</strong> text a qualsevol altre punt <strong>de</strong>l fitxer. No tanqueu la finestra d'inserció <strong>de</strong><br />
plantilles, ja que la continuareu utilitzant.<br />
IV) Declaració <strong>de</strong> les biblioteques i <strong>de</strong>ls elements d'aquestes biblioteques a emprar en el disseny.<br />
En el disseny d'aquest mòdul només emprarem els elements <strong>de</strong>l paquet std_logic_1164 <strong>de</strong> la<br />
biblioteca ieee. Aquesta biblioteca és una biblioteca estàndard que <strong>de</strong>u el seu nom a l'institut<br />
que ha <strong>de</strong>senvolupat i normalitzat el llenguatge VHDL. Procediu <strong>de</strong> la següent forma:<br />
1. Seguint el procediment indicat al punt III, afegiu al final <strong>de</strong>l fitxer <strong>de</strong> text el text associat a<br />
la plantilla VHDL Constructs Design Unit Use Clause. En aquest cas, s'afegeixen<br />
vàries línies <strong>de</strong> comentaris i <strong>de</strong> sentències. Les primeres línies <strong>de</strong> sentències corresponen a<br />
casos generals (la primera és use ..all;), mentre que<br />
les darreres són alguns casos particulars molt freqüents.<br />
2. A la Library Clause, substituïu per ieee per obtenir library ieee;. Ja<br />
heu <strong>de</strong>clarat l'ús <strong>de</strong> la biblioteca ieee. Si voleu veure el seu contingut, aquesta biblioteca es<br />
troba al directori ...\quartus\libraries\vhdl\ieee <strong>de</strong> la instal·lació <strong>de</strong>l Quartus II.<br />
3. A la primera Use Clause, substituïu per ieee i per<br />
std_logic_1164 per obtenir use ieee.std_logic_1164.all;. Ja heu <strong>de</strong>clarat que voleu<br />
emprar tots els elements (.all) <strong>de</strong>l paquet std_logic_1164 <strong>de</strong> la biblioteca ieee. Noteu que<br />
aquesta sentència és una <strong>de</strong> les indica<strong>de</strong>s com a casos particulars molt freqüents. Esborreu<br />
1 - 12
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
totes les línies <strong>de</strong> sentències <strong>de</strong> la plantilla Use Clause a excepció <strong>de</strong> la que acabeu <strong>de</strong><br />
modificar.<br />
V) Declaració <strong>de</strong>l nom <strong>de</strong> l'entitat i <strong>de</strong>ls senyals d'entrada/sortida. Recor<strong>de</strong>u que el mòdul es diu<br />
s_fix i que presenta com a entra<strong>de</strong>s sm i q[1..0] i com a sorti<strong>de</strong>s sf[3..0]. Realitzeu la següent<br />
seqüència d'accions:<br />
1. Seguint el procediment indicat al punt III, afegiu al final <strong>de</strong>l fitxer <strong>de</strong> text el text associat a<br />
la plantilla VHDL Constructs Design Unit Entity.<br />
2. Substituïu per s_fix a la primera i darrera línies <strong>de</strong> la plantilla Entity per<br />
obtenir, respectivament, entity s_fix is i end s_fix;. Ja heu <strong>de</strong>clarat que s_fix és una<br />
entitat. Ara cal especificar quina és la seva interfície amb l'exterior.<br />
3. Esborreu les sis línies <strong>de</strong> sentències que hi ha a continuació <strong>de</strong> la línia entity s_fix is<br />
(<strong>de</strong>s <strong>de</strong> generic fins a );). Aquestes línies serveixen per <strong>de</strong>clarar variables genèriques <strong>de</strong><br />
l'entitat i, per al cas <strong>de</strong> l'entitat s_fix, no cal <strong>de</strong>clarar-ne cap perquè no hi ha.<br />
4. Les línies <strong>de</strong> sentències que us que<strong>de</strong>n permeten <strong>de</strong>clarar cinc ports d'entrada/sortida (dos<br />
d'entrada, un bidireccional i dos <strong>de</strong> sortida). Noteu que s'empra el caràcter ; per separar les<br />
sentències que <strong>de</strong>claren els diferents senyals d'entrada/sortida i que aquest caràcter no s'ha<br />
<strong>de</strong> posar en la darrera <strong>de</strong>claració, ja que no cal separar-la d'una altra.<br />
5. A la primera línia <strong>de</strong> <strong>de</strong>claració d'un port d'entrada, substituïu per sm i per<br />
std_logic per obtenir sm : in std_logic;. Ja heu <strong>de</strong>clarat que sm és una entrada <strong>de</strong><br />
tipus std_logic.<br />
6. A la primera línia <strong>de</strong> <strong>de</strong>claració d'un port <strong>de</strong> sortida, substituïu per sf i per<br />
std_logic_vector(3 downto 0) per obtenir sf : out std_logic_vector(3 downto 0);.<br />
Ja heu <strong>de</strong>clarat que sf és una sortida <strong>de</strong> tipus std_logic_vector amb ín<strong>de</strong>xs que van <strong>de</strong>l 3 al<br />
0, és a dir, una sortida múltiple integrada pels senyals sf[3..0], sent cada senyal individual<br />
sf[i] <strong>de</strong> tipus std_logic.<br />
7. Esborreu les línies <strong>de</strong> <strong>de</strong>claració <strong>de</strong> ports que no heu modificat.<br />
8. Entre les dues línies <strong>de</strong> <strong>de</strong>claració <strong>de</strong> ports que us que<strong>de</strong>n, afegiu una nova línia per<br />
<strong>de</strong>clarar una altra entrada q <strong>de</strong> tipus std_logic_vector que correspongui als senyals q[1..0].<br />
9. Esborreu el ; amb el que acaba la darrera <strong>de</strong> les tres <strong>de</strong>claracions <strong>de</strong> ports que ara teniu.<br />
V) Declaració <strong>de</strong> l'arquitectura <strong>de</strong> l'entitat. Realitzeu la següent seqüència d'accions:<br />
1. Seguint el procediment indicat al punt III, afegiu al final <strong>de</strong>l fitxer <strong>de</strong> text el text associat a<br />
la plantilla VHDL Constructs Design Unit Architecture.<br />
2. Substituïu per taula_veritat i per s_fix a la primera i a<br />
la darrera sentència <strong>de</strong> la plantilla Architecture per obtenir, respectivament, les sentències<br />
architecture taula_veritat of s_fix is i end taula_veritat;. Ja heu <strong>de</strong>clarat<br />
que taula_veritat és una arquitectura <strong>de</strong> l'entitat s_fix. El nom <strong>de</strong> l'arquitectura pot ser<br />
qualsevol altre, però el triat resulta adient, ja que <strong>de</strong>scriureu el disseny d'aquest mòdul amb<br />
una taula <strong>de</strong> la veritat.<br />
3. Esborreu totes les línies <strong>de</strong> comentaris i línies en blanc.<br />
VI) Descripció funcional <strong>de</strong> l'arquitectura <strong>de</strong> l'entitat. El mòdul s_fix és un circuit combinacional<br />
amb una funcionalitat que queda especificada mitjançant la taula <strong>de</strong> la veritat que s'indica a la<br />
figura 3. Aquesta taula <strong>de</strong> la veritat s'ha d'implementar dins el cos <strong>de</strong> l'arquitectura <strong>de</strong> l'entitat,<br />
que és el conjunt <strong>de</strong> sentències que hi ha entre les sentències begin i end taula_veritat;<br />
<strong>de</strong>l vostre fitxer <strong>de</strong> text. Aquesta taula <strong>de</strong> la veritat és pot implementar amb una sentència<br />
d'assignació condicional a senyal, mitjançant la qual s'assignen diferents valors a un senyal en<br />
funció <strong>de</strong> si es compleixen o no diferents condicions lògiques. Procediu <strong>de</strong> la següent forma:<br />
1 - 13
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
1. Escriviu al vostre fitxer <strong>de</strong> text les nou línies que apareixen a la figura 6 entre les sentències<br />
begin i end taula_veritat;, que corresponen a una sentència d'assignació condicional a<br />
senyal. Aquesta sentència assigna diferents valors al senyal sf en funció <strong>de</strong>ls valors que<br />
prenen els senyals sm i q. Amplieu la figura 6 si no po<strong>de</strong>u observar-la bé.<br />
2. Compareu l'estructura <strong>de</strong> la sentència concurrent que acabeu d'escriure amb la <strong>de</strong> la plantilla<br />
VHDL Constructs Concurrent Statements Conditional Signal Assignment.<br />
3. Tanqueu la finestra d'inserció <strong>de</strong> plantilles prement el botó Close.<br />
Figura 6: Finestra <strong>de</strong> l'editor <strong>de</strong> texts amb el mòdul s_fix.vhd.<br />
VII) Enregistrament <strong>de</strong>l mòdul dissenyat, generació d'un símbol gràfic per al mòdul dissenyat i<br />
acabament. Cal fer les mateixes accions que s'han fet per al mòdul on_som (veure punt VII <strong>de</strong><br />
l'apartat 5.1). Les úniques diferències són que en el pas 2 (generació <strong>de</strong>l símbol) no es pot<br />
triar ni el nom ni la ubicació <strong>de</strong>l fitxer amb el símbol (el nom és el <strong>de</strong>l mòdul i la ubicació és<br />
el directori <strong>de</strong> treball) i que s'executa un programa que analitza el codi VHDL contingut en el<br />
fitxer (apareixeran alguns missatges en la finestra <strong>de</strong> missatges <strong>de</strong>l Quartus II). En acabar<br />
l'anàlisi, apareix una finestra amb un missatge indicatiu d'èxit o error, la qual es pot tancar<br />
prement el botó OK. Si us donés algun error, repasseu el codi, corregiu-lo i repetiu aquest punt<br />
<strong>de</strong>s <strong>de</strong>l començament.<br />
5.3. Mòdul s_int<br />
Com a l'apartat anterior, el mòdul s_int es <strong>de</strong>scriurà en VHDL, entrant-lo mitjançant l'editor <strong>de</strong> texts<br />
<strong>de</strong>l Quartus II. En aquest cas es farà una <strong>de</strong>scripció mixta funcional/estructural, emprant expressions<br />
booleanes i una unitat <strong>de</strong>l component a_74138, que correspon a un <strong>de</strong>scodificador <strong>de</strong> 3 a 8 línies<br />
tipus 74138. Aquest component, a l'igual que altres components <strong>de</strong> la sèrie 74XX, està inclòs en el<br />
paquet maxplus2 <strong>de</strong> la biblioteca altera, la qual es troba al directori ...\quartus\libraries\vhdl\altera<br />
<strong>de</strong> la instal·lació <strong>de</strong>l Quartus II. Po<strong>de</strong>u veure el pin-out i comportament d'aquest component en els<br />
seus fulls <strong>de</strong> característiques, els quals podreu trobar en format pdf via Internet.<br />
1 - 14
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
Utilitzant els procediments <strong>de</strong>scrits a l'apartat 5.2, creeu, editeu, genereu el símbol i salveu un fitxer<br />
<strong>de</strong> text anomenat s_int.vhd amb el codi VHDL mostrat a la figura 7. Noteu que, en aquest cas, la<br />
part <strong>de</strong>clarativa <strong>de</strong> l'arquitectura conté sentències mitjançant les quals es <strong>de</strong>claren nous senyals que<br />
s'empraran en <strong>de</strong>scriure el cos <strong>de</strong> l'arquitectura, concretament en la interconnexió <strong>de</strong>l component<br />
a_74138. Fixeu-vos també en com es <strong>de</strong>fineix la unitat <strong>de</strong>l component a_74138 i en com s'associen<br />
els seus senyals d'entrada/sortida (ports) als diferents senyals <strong>de</strong>clarats prèviament (ports <strong>de</strong> l'entitat<br />
i senyals <strong>de</strong>clarats en la part <strong>de</strong>clarativa <strong>de</strong> l'arquitectura).<br />
5.4. Mòdul divf<br />
Figura 7: Finestra <strong>de</strong> l'editor <strong>de</strong> texts amb el mòdul s_int.vhd.<br />
Com als dos apartats anteriors, el mòdul divf es <strong>de</strong>scriurà en VHDL, entrant-lo mitjançant l'editor <strong>de</strong><br />
texts <strong>de</strong>l Quartus II. En aquest cas, es farà una <strong>de</strong>scripció funcional en la que s'empraran dos senyals<br />
intermedis (divlimit i div2) corresponents, respectivament, a l'estat d'un comptador amb el que<br />
s'implementa un divisor <strong>de</strong> freqüència per N / 2 i a l'estat d'un biestable amb el que s'implementa un<br />
divisor <strong>de</strong> freqüència per 2.<br />
Fixeu-vos que el comptador divlimit s'incrementa cada cop que existeix un flanc <strong>de</strong> pujada <strong>de</strong>l<br />
senyal <strong>de</strong> rellotge clk_hf (valor actual, posterior a un canvi, igual a 1) i que compta <strong>de</strong>s <strong>de</strong> 0 fins a<br />
un cert valor limit – 1, tornant seguidament a 0. El valor limit ve <strong>de</strong>finit com una constant igual a 15<br />
(aquest valor és vàlid només per a les simulacions, ja que les <strong>de</strong>sitgeu accelerar; més endavant el<br />
canviareu a 15.000.000 per a les proves sobre la placa). Aquesta constant i el senyal divlimit s'han<br />
<strong>de</strong>finit com a nombres enters <strong>de</strong> 24 bits, és a dir, compresos entre 0 i 2 24 – 1. Fixeu-vos també que<br />
el biestable div2 es complementa cada vegada que el comptador divlimit torna a 0 i que el seu estat<br />
constitueix el senyal <strong>de</strong> sortida <strong>de</strong> baixa freqüència clk_lf.<br />
Utilitzant els procediments <strong>de</strong>scrits a l'apartat 5.2, creeu, editeu, genereu el símbol i salveu un fitxer<br />
<strong>de</strong> text anomenat divf.vhd amb el codi VHDL mostrat a la figura 8.<br />
1 - 15
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
5.5. Mòdul metro<br />
Figura 8: Finestra <strong>de</strong> l'editor <strong>de</strong> texts amb el mòdul divf.vhd.<br />
El mòdul metro materialitzarà el vostre disseny, ostentant la jerarquia màxima en el projecte metro i<br />
incloent els quatre mòduls anteriors. Utilitzant l'editor <strong>de</strong> blocs <strong>de</strong>l Quartus II i els procediments<br />
presentats a l'apartat 5.1, creeu, editeu i salveu un fitxer amb un esquemàtic com l'indicat a la figura 9.<br />
Noteu que s'ha utilitzat una unitat <strong>de</strong> cada un <strong>de</strong>ls quatre mòduls creats en els punts anteriors, així<br />
com <strong>de</strong>ls mòduls NOT, DFF (biestable D) i OR2. Noteu també que la "porta" OR2, que opera amb<br />
busos, és una porta múltiple (una porta per cada línia <strong>de</strong>ls busos). I<strong>de</strong>ntifiqueu amb el nom propi <strong>de</strong>l<br />
mòdul les unitats <strong>de</strong>ls mòduls que heu creat en els apartats 5.1 a 5.4 (on_som, s_fix, s_int i divf).<br />
I<strong>de</strong>ntifiqueu amb gen-sensorf la unitat <strong>de</strong>l biestable que genera sensorf i amb gen-leds la unitat <strong>de</strong> la<br />
porta que genera led[3..0]. No us obli<strong>de</strong>u <strong>de</strong> posar els noms <strong>de</strong>ls no<strong>de</strong>s i busos.<br />
6. COMPILACIÓ DEL DISSENY<br />
Un cop introduït tot el disseny metro, el disseny s'ha <strong>de</strong> compilar per obtenir una sèrie <strong>de</strong> fitxers que<br />
s'utilitzaran posteriorment en els processos <strong>de</strong> verificació (apartat 7) i <strong>de</strong> programació (apartat 8).<br />
Po<strong>de</strong>n distingir-se les següents cinc etapes en el procés <strong>de</strong> compilació:<br />
a) Extracció <strong>de</strong> la llista <strong>de</strong> connexions i posterior síntesi lògica ("analysis & synthesis"), mitjançant<br />
les quals es <strong>de</strong>scompon el disseny en una sèrie <strong>de</strong> funcions elementals suportables pels recursos<br />
lògics disponibles en el dispositiu triat.<br />
b) Encabiment <strong>de</strong>l disseny en el dispositiu lògic programable triat ("fitter"), mitjançant el qual<br />
s'assignen físicament les funcions elementals i llurs interconnexions als recursos lògics i <strong>de</strong><br />
connexionat <strong>de</strong>l dispositiu, po<strong>de</strong>nt-se calcular els retards reals <strong>de</strong> tots els senyals <strong>de</strong>l circuit.<br />
1 - 16
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
Figura 9: Finestra <strong>de</strong> l'editor <strong>de</strong> blocs amb el mòdul metro.bdf.<br />
c) Generació <strong>de</strong>ls fitxers necessaris per a la programació <strong>de</strong>l dispositiu ("assembler").<br />
d) Verificació <strong>de</strong>ls requisits temporals exigits als senyals <strong>de</strong>l disseny ("timing analysis").<br />
e) Escriptura <strong>de</strong> la llista <strong>de</strong> connexions i retards en un format adient per a eines <strong>de</strong> tercers que s'han<br />
d'emprar per verificar el disseny ("EDA netlist writer").<br />
Aquestes cinc etapes po<strong>de</strong>n observar-se en la finestra <strong>de</strong> tasques <strong>de</strong>l Quartus II quan en aquesta<br />
finestra es tria Compilation o Full Design com a flux <strong>de</strong>l procés <strong>de</strong> disseny.<br />
El procés <strong>de</strong> compilació pot en<strong>de</strong>gar-se triant Processing Start Compilation a la barra <strong>de</strong> menús<br />
<strong>de</strong>l Quartus II o prement la vuitena icona <strong>de</strong> la barra d'eines <strong>de</strong> la finestra principal <strong>de</strong>l Quartus II<br />
(un triangle que apunta cap a la dreta).<br />
6.1. Preparació <strong>de</strong> l'entorn i generació <strong>de</strong> la base <strong>de</strong> da<strong>de</strong>s <strong>de</strong>l disseny (anàlisi i síntesi)<br />
Abans d'executar la compilació en si, és necessari fixar una sèrie <strong>de</strong> paràmetres que la condicionen<br />
<strong>de</strong>cisivament en <strong>de</strong>terminar les tècniques d'optimització empra<strong>de</strong>s en la síntesi automàtica.<br />
D'altra banda, en fer la síntesi, el compilador ubicarà els senyals d'entrada/sortida <strong>de</strong> l'aplicació en<br />
els pins <strong>de</strong>l dispositiu seleccionat per contenir-la. En sistemes molt complexos, aquesta ubicació<br />
estarà fortament condicionada per les prestacions <strong>de</strong>sitja<strong>de</strong>s, que implicaran optimitzacions d'espai i<br />
temps dins <strong>de</strong>l dispositiu programable seleccionat, i serà interessant que el compilador tingui la<br />
màxima llibertat per aconseguir resultats òptims. En canvi, en aplicacions senzilles com l'actual, és<br />
possible que la ubicació <strong>de</strong>terminada pel compilador no sigui l'apropiada <strong>de</strong>s <strong>de</strong>l punt <strong>de</strong> vista <strong>de</strong><br />
l'aplicació, en existir restriccions imposa<strong>de</strong>s per la placa <strong>de</strong> circuit imprès on ha d'estar ubicat el<br />
dispositiu. En aquests casos, cal que l'usuari pugui fixar la ubicació <strong>de</strong>ls senyals d'entrada/sortida.<br />
1 - 17
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
I) Preparació <strong>de</strong> l'entorn. A la barra <strong>de</strong> menús <strong>de</strong>l Quartus II:<br />
1. Trieu Assignments Settings.... S'obrirà una finestra <strong>de</strong> configuracions ("settings") que<br />
presenta, a la seva part esquerra, una llista amb les diferents categories <strong>de</strong> paràmetres <strong>de</strong>l<br />
projecte actiu i, a la dreta, els paràmetres associats a la categoria seleccionada en la llista.<br />
2. Seleccioneu els paràmetres generals i comproveu que el projecte actiu és el projecte metro.<br />
3. Seleccioneu els paràmetres <strong>de</strong>ls fitxers i comproveu que els cinc fitxers que heu creat abans<br />
(on_som.bdf, s_fix.vhd, s_int.vhd, divf.vhd i metro.bdf) estan incorporats al projecte.<br />
4. Seleccioneu els paràmetres <strong>de</strong> temperatura dins les condicions d'operació. Seleccioneu No<br />
heat sink with still air (sense radiador amb aire ambient) com a tècnica <strong>de</strong> refredament<br />
emprada ("Use cooling solution"), que és com es troba el dispositiu a la placa educativa<br />
DE0 d'Altera/Terasic.<br />
5. Seleccioneu els paràmetres <strong>de</strong>l procés <strong>de</strong> compilació i elimineu les marques <strong>de</strong> totes les<br />
opcions a excepció <strong>de</strong> la <strong>de</strong> l'opció Preserve fewer no<strong>de</strong> names to save disk space. Ara per<br />
ara, no necessiteu que s'executi l'"assembler", perquè la versió <strong>de</strong>l divisor <strong>de</strong> freqüència<br />
que ara teniu està orientada a la verificació <strong>de</strong>l disseny i no a la seva experimentació sobre<br />
la placa educativa DE0 d'Altera/Terasic (l'execució <strong>de</strong> l'"assembler" seria perdre el temps).<br />
6. Seleccioneu els paràmetres <strong>de</strong> les eines EDA i verifiqueu que teniu seleccionada com a<br />
eina <strong>de</strong> simulació Mo<strong>de</strong>lSim-Altera amb format VHDL.<br />
7. Seleccioneu els paràmetres d'anàlisi i síntesi. Trieu Balanced com a tècnica d'optimització i<br />
marqueu les opcions Timing-Driven Synthesis i Power-Up Don't Care. Seleccioneu els<br />
paràmetres d'entrada <strong>de</strong>l VHDL dins els paràmetres d'anàlisi i síntesi i escolliu la versió <strong>de</strong><br />
1993.<br />
8. Seleccioneu els paràmetres d'anàlisi temporal i marqueu utilitzar l'analitzador temporal<br />
TimeQuest durant la compilació.<br />
9. Vali<strong>de</strong>u tots els canvis fets amb OK. La finestra <strong>de</strong> configuracions es tancarà.<br />
II) Creació <strong>de</strong> la base <strong>de</strong> da<strong>de</strong>s <strong>de</strong>l disseny. Abans <strong>de</strong> fer la compilació <strong>de</strong>finitiva s'han d'assignar<br />
els senyals d'entrada/sortida al dispositiu i s'han d'establir els requisits temporals que han <strong>de</strong><br />
guiar la compilació. Per fer aquestes dues accions és necessari disposar <strong>de</strong>ls noms <strong>de</strong>finitius<br />
<strong>de</strong>ls senyals que intervenen en el disseny, els quals es troben a la base <strong>de</strong> da<strong>de</strong>s <strong>de</strong>l disseny<br />
que s'obté en la primera etapa <strong>de</strong> la compilació (anàlisi i síntesi <strong>de</strong>l disseny). A la barra <strong>de</strong><br />
menús <strong>de</strong>l Quartus II:<br />
1. Trieu Processing Start Start Analysis & Synthesis. S'obrirà una nova finestra,<br />
anomenada report <strong>de</strong> la compilació, que s'anirà omplint amb l'esmentat report a mesura que<br />
la compilació avanci. En paral·lel, aniran apareixen diferents missatges en la finestra <strong>de</strong><br />
missatges. Es pot veure el progrés <strong>de</strong> la compilació a la finestra <strong>de</strong> tasques. També es pot<br />
en<strong>de</strong>gar l'anàlisi i síntesi prement la novena icona <strong>de</strong> la barra d'eines <strong>de</strong>l Quartus II (un<br />
triangle que apunta a la dreta, més una porta i un símbol <strong>de</strong> validació).<br />
2. En acabar aquesta compilació parcial, s'obrirà una finestra informativa indicant si ha acabat<br />
amb èxit o s'han produït errors (en aquest cas, amb èxit i 3 advertiments). Tanqueu-la<br />
prement OK. La figura 10 mostra la finestra <strong>de</strong>l Quartus II en acabar l'anàlisi i síntesi.<br />
III) Observació d'alguns resultats <strong>de</strong> la compilació parcial (anàlisi i síntesi).<br />
1. Fixeu-vos que el contingut <strong>de</strong> la finestra <strong>de</strong>l navegador <strong>de</strong>l projecte ha canviat, en disposar<br />
ara <strong>de</strong> la base <strong>de</strong> da<strong>de</strong>s <strong>de</strong>l disseny. Si seleccioneu la pestanya <strong>de</strong> la jerarquia, veureu que<br />
sota el mòdul metro apareixen els mòduls divf:divf, on_som:on_som, s_fix:s_fix i s_int:s_int.<br />
A més a més, sota el mòdul on_som:on_som es troba el mòdul 4count:gen-q i sota el mòdul<br />
s_int:s_int es troba el mòdul 74138:<strong>de</strong>scod. També s'indica, amb una icona, <strong>de</strong> quin tipus<br />
(esquemàtic, fitxer VHDL) és cada un d'aquests mòduls. Noteu que els mòduls s'anomenen<br />
1 - 18
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
amb el tipus <strong>de</strong>l mòdul seguit per l'i<strong>de</strong>ntificador <strong>de</strong>l mòdul, separant-se ambdós noms per<br />
un símbol ":". Noteu també que s'ha assignat com i<strong>de</strong>ntificador <strong>de</strong>l mòdul 74138 l'etiqueta<br />
<strong>de</strong> la sentència VHDL que vàreu emprar per incorporar-lo a l'arquitectura <strong>de</strong> s_int.<br />
2. En el resum <strong>de</strong>l flux <strong>de</strong> disseny, que apareix a la finestra <strong>de</strong>l report <strong>de</strong> compilació, s'indica<br />
el nombre d'elements lògics que el compilador estima necessaris per implementar el vostre<br />
disseny (versió simulació). Fixeu-vos que només són necessaris 69 elements lògics <strong>de</strong>ls<br />
existents en la família Cyclone III.<br />
3. Tanqueu la finestra <strong>de</strong>l report <strong>de</strong> la compilació.<br />
Figura 10: Finestra <strong>de</strong>l report <strong>de</strong> la compilació <strong>de</strong>l Quartus II.<br />
IV) Observació <strong>de</strong>l circuit resultant <strong>de</strong> la síntesi. En el procés <strong>de</strong> síntesi s'ha obtingut un circuit<br />
equivalent al vostre disseny que empra només els recursos existents en el dispositiu lògic<br />
programable que heu triat per al vostre disseny (per exemple, elements lògics integrats per<br />
una LUT i un biestable). Aquest circuit es pot <strong>de</strong>scriure amb una llista <strong>de</strong> connexions o amb<br />
un esquemàtic, els quals procuren seguir l'estructura jeràrquica que heu establert vosaltres en<br />
<strong>de</strong>scriure el vostre disseny. L'entorn <strong>de</strong>l Quartus II disposa d'una eina, anomenada visualitzador<br />
<strong>de</strong>l mapa tecnològic ("Technology Map Viewer"), que permet veure aquest circuit <strong>de</strong>sprés <strong>de</strong><br />
la síntesi ("Post-Mapping") o <strong>de</strong>sprés <strong>de</strong> l'encabiment ("Post-Fitting"). Aquesta eina acce<strong>de</strong>ix<br />
a la base <strong>de</strong> da<strong>de</strong>s <strong>de</strong>l disseny i, per tant, us permet conèixer el nom <strong>de</strong>ls senyals presents en<br />
aquesta base <strong>de</strong> da<strong>de</strong>s, els quals són els que haureu <strong>de</strong> fer servir d'ara endavant i que sovint<br />
són diferents <strong>de</strong>ls que heu indicat vosaltres.<br />
1. Trieu Tools Netlist Viewers Technology Map Viewer (Post-Mapping) a la barra <strong>de</strong><br />
menús <strong>de</strong>l Quartus II. S'obrirà la finestra <strong>de</strong>l visualitzador <strong>de</strong>l mapa tecnològic resultant <strong>de</strong><br />
la síntesi. Aquesta finestra us permet navegar per l'esquemàtic <strong>de</strong>l vostre disseny que s'ha<br />
obtingut en la síntesi, en el que s'interconnecten recursos <strong>de</strong>l dispositiu lògic programable<br />
emprat. La figura 11 mostra la finestra <strong>de</strong>l visualitzador <strong>de</strong>l mapa tecnològic.<br />
1 - 19
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
Figura 11: Finestra <strong>de</strong>l visualitzador <strong>de</strong>l mapa tecnològic <strong>de</strong>l Quartus II.<br />
2. Observeu que la LUT ("Look-Up Table") <strong>de</strong>ls elements lògics apareix com un bloc <strong>de</strong> color<br />
blau i que el biestable <strong>de</strong>ls elements lògics apareix com un bloc <strong>de</strong> color violeta. Els blocs<br />
<strong>de</strong> color verd (divf:divf i on_som:on_som) són blocs jeràrquics, po<strong>de</strong>nt-se <strong>de</strong>scendir en la<br />
jerarquia fent doble click damunt ells. Noteu que, aparentment, els mòduls s-fix i s_int han<br />
<strong>de</strong>saparegut en fer la síntesi. De fet, aquests dos mòduls s'han combinat entre sí i amb les<br />
portes OR que generaven els senyals led[3..0], donant lloc als mòduls combinacionals fets<br />
amb LUTs anomenats gen-leds....<br />
3. Poseu el cursor <strong>de</strong>l ratolí damunt el bus que surt <strong>de</strong>l mòdul on_som (teòricament, hauria <strong>de</strong><br />
ser el bus q[1..0], integrat pels senyals q1 i q0). Apareixerà una cridada indicant que es<br />
tracta <strong>de</strong>ls senyals on_som:on_som|4count:gen-q|[45..46]~head_lut, és a dir, <strong>de</strong>ls senyals<br />
on_som:on_som|4count:gen-q|45~head_lut i on_som:on_som|4count:gen-q|46~head_lut.<br />
Noteu que els noms tenen en compte la jerarquia <strong>de</strong>l disseny, separant-se els nivells <strong>de</strong> la<br />
jerarquia amb el símbol "|". Dins el mòdul on_som amb i<strong>de</strong>ntificador on_som es troba el<br />
mòdul 4count amb i<strong>de</strong>ntificador gen-q, i dins aquest hi ha els mòduls amb i<strong>de</strong>ntificadors<br />
45~head_lut (genera q1) i 46~head_lut (genera q0). En el proper punt es justificarà el perquè<br />
d'aquests noms.<br />
4. Seguint el procediment indicat al punt anterior, comproveu que el senyal que surt <strong>de</strong>l mòdul<br />
divf (teòricament, hauria <strong>de</strong> ser el senyal clk_lf) ara s'anomena divf:divf|div2, que el senyal<br />
que surt <strong>de</strong>l mòdul gen-sensorf (teòricament, hauria <strong>de</strong> ser el senyal sensorf) ara s'anomena<br />
gen-sensorf i que l'altre senyal que surt <strong>de</strong>l mòdul on_som (teòricament, hauria <strong>de</strong> ser el<br />
senyal sm) ara s'anomena on_som:on_som|gen-sm~1.<br />
5. Poseu el cursor <strong>de</strong>l ratolí damunt el bloc gen-leds[0]~3. Apareixerà una cridada indicant en<br />
nom d'aquest bloc combinacional, que consisteix en una LUT <strong>de</strong> 16 bits, el contingut en<br />
hexa<strong>de</strong>cimal d'aquesta LUT i la funció <strong>de</strong> 4 variables DATAA, DATAB, DATAC i DATAD<br />
que implementa, sent cada una d'aquestes variables un <strong>de</strong>terminat senyal <strong>de</strong>l circuit.<br />
6. Feu doble click sobre el bloc gen-leds[0]~3. En el seu interior apareixerà l'esquemàtic <strong>de</strong><br />
la funció que implementa. Po<strong>de</strong>u ocultar aquest esquemàtic fent click sobre el bloc amb el<br />
1 - 20
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
botó dret <strong>de</strong>l ratolí i seleccionant l'acció Hi<strong>de</strong> Content en el menú d'accions que s'acaba <strong>de</strong><br />
<strong>de</strong>splegar.<br />
7. Poseu el cursor <strong>de</strong>l ratolí damunt <strong>de</strong>l biestable gen-sensorf i observeu el contingut <strong>de</strong> la<br />
cridada que apareix.<br />
8. Feu doble click sobre el bloc divf:divf per <strong>de</strong>scendir en la jerarquia d'aquest bloc. En el nivell<br />
inferior només trobareu blocs combinacionals i biestables. Els biestables presenten una<br />
sortida Q. Alguns blocs combinacionals presenten dues sorti<strong>de</strong>s, anomena<strong>de</strong>s COMBOUT<br />
i COUT, mentre que els altres només presenten la sortida COMBOUT. Els primers blocs<br />
implementen funcions aritmètiques, corresponent la sortida COUT al bit <strong>de</strong> portar-ne <strong>de</strong><br />
sortida. En aquests blocs combinacionals, la LUT <strong>de</strong> 16 bits s'ha convertit en dues LUTs <strong>de</strong><br />
8 bits, una per a cada sortida. Recor<strong>de</strong>u el nom <strong>de</strong> les sorti<strong>de</strong>s, perquè caldrà emprar-los.<br />
9. Tanqueu la finestra <strong>de</strong>l visualitzador <strong>de</strong>l mapa tecnològic resultant <strong>de</strong> la síntesi.<br />
V) Anàlisi <strong>de</strong>ls missatges <strong>de</strong> la compilació. Es volen analitzar ara els missatges subministrats pel<br />
compilador que han anat apareixent en la finestra <strong>de</strong> missatges. Aquests missatges han quedat<br />
classificats en vàries categories (processament, informació, advertiments, advertiments crítics,<br />
errors, etc.), sent possible veure els <strong>de</strong> cada categoria per separat simplement seleccionant la<br />
pestanya associada a la categoria, on també s'indica el nombre <strong>de</strong> missatges <strong>de</strong> la categoria.<br />
1. Comproveu que no teniu cap error ni cap advertiment crític.<br />
2. Comproveu que teniu un advertiment. Aquest nombre d'advertiments és contradictori amb<br />
el nombre d'advertiments (3) indicat a la finestra informativa que heu tancat fa un moment.<br />
Seleccioneu la pestanya d'advertiments i comproveu que només apareix un advertiment, el<br />
qual presenta, a la seva esquerra, un símbol "+" indicatiu d'agrupació. Això significa que hi<br />
ha varis missatges sota aquest advertiment. Desagrupeu els missatges fent click sobre el<br />
símbol d'agrupació. Podreu comprovar que hi ha un total <strong>de</strong> 3 advertiments.<br />
3. L'advertiment <strong>de</strong> la compilació indica que els registres amb senyals asíncrons <strong>de</strong> "preset" i<br />
"clear" han estat convertits a circuits equivalents que inclouen latches. També indica que<br />
aquests registres s'inicialitzaran a un valor <strong>de</strong>sconegut en donar tensió al disseny (això és<br />
<strong>de</strong>gut a què els esmentats latches s'inicialitzen a un valor aleatori). Aquest advertiment es<br />
<strong>de</strong>u a què el biestable que hi ha en els elements lògics <strong>de</strong> la família Cyclone III només<br />
disposa <strong>de</strong> senyal asíncron <strong>de</strong> "clear" i cal aplicar un truc per aconseguir biestables amb<br />
senyals asíncrons <strong>de</strong> "preset" i "clear". Aquest truc consisteix en transformar el senyal <strong>de</strong><br />
"preset" en un senyal <strong>de</strong> "clear" canviant la lògica <strong>de</strong>l biestable, és a dir, complementant la<br />
seva entrada i la seva sortida. La figura 12 il·lustra, d'una forma quelcom simplificada (el<br />
circuit real és una mica més complex que l'exposat, ja que ha d'evitar l'aparició d'espuris),<br />
com s'implementa un biestable amb senyals asíncrons <strong>de</strong> "preset" i "clear" a partir d'un<br />
biestable que només disposa <strong>de</strong> senyal asíncron <strong>de</strong> "clear" (biestable _emulated). El latch<br />
serveix per memoritzar la lògica amb la que està actuant aquest biestable, la qual <strong>de</strong>pèn <strong>de</strong><br />
l'última acció asíncrona que s'hagi fet sobre ell: si ha estat un "preset", la seva sortida val 1,<br />
i si ha estat un "clear", la seva sortida val 0. Per aconseguir que el biestable _emulated<br />
treballi en tot moment amb la lògica apropiada, calen dues portes XOR controla<strong>de</strong>s per la<br />
sortida <strong>de</strong>l latch, una que actua sobre l'entrada D (implementada amb el bloc data_lut) i<br />
l'altra que actua sobre la sortida Q (implementada amb el bloc head_lut). A més a més, els<br />
senyals <strong>de</strong> "preset" i "clear" s'han <strong>de</strong> combinar en un <strong>de</strong> sol, que és el que actua sobre el<br />
biestable _emulated. Si en lloc d'un biestable es té un registre <strong>de</strong> varis bits, el latch i el<br />
circuit que combina els senyals asíncrons <strong>de</strong> "preset" i "clear" po<strong>de</strong>n compartir-se entre els<br />
biestables que es posin simultàniament al mateix valor. En el vostre disseny, aquesta<br />
conversió ha tingut lloc per als biestables que implementen el comptador gen-q, és a dir,<br />
els que generen q1 i q0. Recor<strong>de</strong>u que a la base <strong>de</strong> da<strong>de</strong>s aquests dos senyals s'anomenaven<br />
on_som:on_som|4count:gen-q|45~head_lut i on_som:on_som|4count:gen-q|46~head_lut,<br />
respectivament. Com quan s'actua asíncronament sobre el comptador aquests dos biestables<br />
1 - 21
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
es posen sempre al mateix valor (q és 00 o 11), po<strong>de</strong>n compartir el latch que memoritza la<br />
lògica amb la que estan actuant (on_som:on_som|4count:gen-q|46~latch).<br />
npreset<br />
nclear<br />
latch<br />
d<br />
clk<br />
npreset<br />
nclear<br />
Figura 12: Implementació d'un biestable amb senyals asíncrons <strong>de</strong> "preset" i "clear".<br />
VI) Assignació <strong>de</strong>ls senyals d'entrada/sortida als pins <strong>de</strong>l xip. A la barra <strong>de</strong> menús <strong>de</strong>l Quartus II:<br />
1. Trieu Assignments Pin planner. S'obrirà la finestra corresponent al planificador <strong>de</strong>ls<br />
pins. Maximitzeu-la. Dins aquesta finestra apareixen tres finestres, una a baix i dues a dalt.<br />
La <strong>de</strong> dalt a la dreta és una representació gràfica <strong>de</strong>l mapa <strong>de</strong> pins <strong>de</strong>l dispositiu triat,<br />
l'EP3C16F484C6. La <strong>de</strong> baix conté una taula amb la relació <strong>de</strong> pins <strong>de</strong>l disseny.<br />
2. A la finestra inferior <strong>de</strong>l planificador <strong>de</strong>ls pins, feu doble click a la casella <strong>de</strong> la columna<br />
"Location" situada a la línia <strong>de</strong>l senyal clk_hf i seleccioneu el pin <strong>de</strong>l xip al que voleu assignar<br />
dit senyal, que ha <strong>de</strong> ser el pin PIN_G21. Vali<strong>de</strong>u amb la tecla <strong>de</strong> retorn o fent click en una<br />
altra casella. Po<strong>de</strong>u fer la mateixa acció arrossegant amb el ratolí la casella amb el nom <strong>de</strong>l<br />
senyal clk_hf fins al pin PIN_G21 <strong>de</strong> la representació gràfica <strong>de</strong> la finestra superior dreta.<br />
3. Repetiu el pas 2 per assignar a pins els altres senyals d'entrada/sortida: el senyal ne_origen<br />
al pin PIN_H2, el senyal ne_final al pin PIN_F1, el senyal nsensor al pin PIN_G3, el senyal<br />
led[0] al pin PIN_J1, el senyal led[1] al pin PIN_J2, el senyal led[2] al pin PIN_J3 i el<br />
senyal led[3] al pin PIN_H1. Noteu que els senyals led0 a led3 <strong>de</strong>l bus led apareixen amb<br />
l'ín<strong>de</strong>x entre claudàtors. Aquest canvi <strong>de</strong> noms ha estat fet pel compilador en crear la base <strong>de</strong><br />
da<strong>de</strong>s <strong>de</strong>l projecte, i ho ha fet amb tots els senyals que pertanyen a busos, ja siguin entra<strong>de</strong>s,<br />
sorti<strong>de</strong>s o senyals intermedis. En acabar, la finestra <strong>de</strong>l planificador <strong>de</strong>ls pins tindrà l'aspecte<br />
indicat a la figura 13.<br />
4. Tanqueu la finestra <strong>de</strong>l planificador <strong>de</strong>ls pins.<br />
5. Trieu File Open... i obriu el fitxer metro.dbf. Comproveu que s'han afegit a l'esquemàtic<br />
els pins associats als ports d'entrada/sortida.<br />
6. Tanqueu la finestra <strong>de</strong>l fitxer metro.dbf.<br />
VII) Establiment <strong>de</strong>ls requisits temporals que han <strong>de</strong> guiar el procés d'encabiment ("fitter"). Hi ha<br />
dues eines en el Quartus II que permeten establir aquests requisits i fer la corresponent anàlisi<br />
temporal: l'analitzador temporal TimeQuest i l'analitzador temporal Classic. Fareu servir el<br />
primer, donat que Altera aviat <strong>de</strong>ixarà <strong>de</strong> suportar el segon. Els requisits temporals s'indiquen<br />
a l'analitzador temporal TimeQuest mitjançant un fitxer <strong>de</strong> text escrit en Tcl (Tool command<br />
language) i amb extensió sdc (Synopsys <strong>de</strong>sign constraints). La millor forma d'escriure aquest<br />
fitxer és mitjançant les plantilles pre<strong>de</strong>fini<strong>de</strong>s ("templates") <strong>de</strong> l'editor <strong>de</strong> texts <strong>de</strong>l Quartus II.<br />
El primer requisit temporal que haureu d'incloure és que l'entrada <strong>de</strong> rellotge d'alta freqüència<br />
clk_hf pugui anar a 50 MHz. A més a més <strong>de</strong> l'entrada <strong>de</strong> rellotge clk_hf, en el vostre disseny<br />
teniu altres senyals que actuen com a rellotge <strong>de</strong> biestables i/o registres: el senyal clk_lf, el<br />
qual <strong>de</strong>riva <strong>de</strong>l senyal clk_hf a través <strong>de</strong>l mòdul divf que actua en simulació com un divisor<br />
per 30, i el senyal sensorf, el qual <strong>de</strong>riva <strong>de</strong>l senyal clk_lf a través <strong>de</strong>l biestable gen-sensorf<br />
que actua, en el pitjor <strong>de</strong>ls casos, com un divisor per 2. A la barra <strong>de</strong> menús <strong>de</strong>l Quartus II:<br />
1 - 22<br />
data_lut<br />
D Q<br />
CL<br />
_emulated<br />
head_lut<br />
q
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
Figura 13: Finestra <strong>de</strong>l planificador <strong>de</strong>ls pins <strong>de</strong>l Quartus II.<br />
1. Trieu File New.... Seleccioneu Synopsys Design Constraints File dins d'Other Files com a<br />
tipus <strong>de</strong>l nou fitxer i vali<strong>de</strong>u amb OK. S'obrirà la finestra <strong>de</strong> l'editor <strong>de</strong> texts en l'espai<br />
reservat a l'efecte. Maximitzeu-la si no ho està.<br />
2. Trieu File Save As..., indiqueu el nom metro (extensió sdc), marqueu que voleu afegir el<br />
fitxer que esteu creant al projecte actual i vali<strong>de</strong>u amb Save.<br />
3. Premeu la icona d'introducció <strong>de</strong> plantilles (un pergamí <strong>de</strong>senrotllat) a la barra d'eines <strong>de</strong><br />
l'editor <strong>de</strong> texts per obrir la finestra d'inserció <strong>de</strong> plantilles. Desplegueu l'arbre <strong>de</strong> plantilles<br />
TimeQuest SDC Commands Clocks.<br />
4. Seleccioneu la plantilla Simple 50/50 Clock en l'arbre que heu <strong>de</strong>splegat i afegiu-la al fitxer<br />
<strong>de</strong> text prement el botó Insert. Substituïu __name per clk_hf (aquest nom pot ser qualsevol<br />
altre), __period per 20ns i __port per clk_hf, per obtenir create_clock -name clk_hf<br />
-period 20ns [get_ports clk_hf].<br />
5. Seleccioneu la plantilla Generated Clock en l'arbre que heu <strong>de</strong>splegat i afegiu-la al fitxer<br />
<strong>de</strong> text prement el botó Insert. Esborreu les dues darreres línies i el text |-multiply_by <strong>de</strong><br />
la primera línia. Substituïu __name per clk_lf (o altre nom), __factor per 30, __source<br />
per clk_hf i __targets per divf:divf|div2 (recor<strong>de</strong>u que així es <strong>de</strong>ia el senyal clk_lf a<br />
la base <strong>de</strong> da<strong>de</strong>s <strong>de</strong>l vostre disseny), per obtenir create_generated_clock -name clk_lf<br />
-divi<strong>de</strong>_by 30 -source clk_hf divf:divf|div2.<br />
6. Seleccioneu la plantilla Generated Clock en l'arbre que heu <strong>de</strong>splegat i afegiu-la al fitxer<br />
<strong>de</strong> text prement el botó Insert. Esborreu les dues darreres línies i el text |-multiply_by <strong>de</strong><br />
la primera línia. Substituïu __name per sensorf (o altre nom), __factor per 2, __source<br />
per divf:divf|div2 (així es <strong>de</strong>ia el senyal clk_lf a la base <strong>de</strong> da<strong>de</strong>s <strong>de</strong>l vostre disseny), i<br />
__targets per gen-sensorf (així es <strong>de</strong>ia el senyal sensorf a la base <strong>de</strong> da<strong>de</strong>s <strong>de</strong>l vostre<br />
disseny), per obtenir create_generated_clock -name sensorf -divi<strong>de</strong>_by 2 -source<br />
divf:divf|div2 gen-sensorf.<br />
7. Desplegueu l'arbre <strong>de</strong> plantilles TimeQuest SDC Commands Clock Attributes,<br />
seleccioneu la plantilla Auto-Calculate Uncertainty i afegiu-la al final <strong>de</strong>l fitxer <strong>de</strong> text.<br />
1 - 23
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
8. Tanqueu la finestra d'introducció <strong>de</strong> plantilles prement OK.<br />
9. Guar<strong>de</strong>u el fitxer <strong>de</strong> text metro.sdc i tanqueu la finestra <strong>de</strong> l'editor <strong>de</strong> texts.<br />
6.2. Encabiment<br />
A partir <strong>de</strong> la llista <strong>de</strong> connexionat <strong>de</strong>l disseny, i un cop <strong>de</strong>finits els paràmetres (ubicacions, requisits<br />
temporals, etc.) que han <strong>de</strong> guiar l'etapa <strong>de</strong> l'encabiment, es pot procedir a efectuar-lo.<br />
I) Encabiment. A la barra <strong>de</strong> menús <strong>de</strong>l Quartus II:<br />
1. Trieu Processing Start Start Fitter. S'obrirà la finestra <strong>de</strong>l report <strong>de</strong> la compilació,<br />
que s'anirà omplint amb l'esmentat report a mesura que la compilació avanci. També aniran<br />
apareixen diferents missatges en la finestra <strong>de</strong> missatges a mesura que la compilació avanci.<br />
Es pot veure el progrés <strong>de</strong> la compilació a la finestra <strong>de</strong> tasques.<br />
2. En acabar l'encabiment, s'obrirà una finestra informativa indicant si ha acabat amb èxit o<br />
s'han produït errors (en aquest cas, amb èxit i 5 advertiments). Tanqueu-la prement OK.<br />
3. Po<strong>de</strong>u comprovar, en el resum <strong>de</strong>l flux <strong>de</strong> disseny que apareix a la finestra <strong>de</strong>l report <strong>de</strong> la<br />
compilació, que per al vostre disseny són necessaris 69 elements lògics <strong>de</strong>ls 15.408 que hi<br />
ha al dispositiu EP3C16F484C6, la qual cosa representa menys <strong>de</strong>l 0,5% <strong>de</strong> la capacitat <strong>de</strong>l<br />
dispositiu.<br />
II) Anàlisi <strong>de</strong>ls missatges <strong>de</strong> la compilació. Es volen analitzar ara els missatges subministrats pel<br />
compilador que han anat apareixent en la finestra <strong>de</strong> missatges.<br />
1. Comproveu que no teniu cap error ni cap advertiment crític.<br />
2. Comproveu que teniu 3 advertiments. Aquest nombre sembla estar en contradicció amb el<br />
nombre d'advertiments (5) indicat a la finestra informativa que acabeu <strong>de</strong> tancar, però ja<br />
sabeu que alguns advertiments que<strong>de</strong>n agrupats. Seleccioneu la pestanya d'advertiments i<br />
comproveu que apareixen 3 advertiments. Desagrupeu els advertiments que estan agrupats<br />
i comproveu que el nombre total d'advertiments és 5.<br />
3. El primer advertiment us indica que la versió <strong>de</strong> <strong>de</strong>mostració no té la prestació LogicLock.<br />
4. El segon advertiment us indica que hi ha pins d'entrada/sortida que no estan completament<br />
especificats i us suggereix comprovar el que passa al report d'advertiments <strong>de</strong> l'assignació<br />
d'entra<strong>de</strong>s/sorti<strong>de</strong>s. Aquest report forma part <strong>de</strong>l report <strong>de</strong> la compilació. En la finestra <strong>de</strong>l<br />
report <strong>de</strong> la compilació, seleccioneu I/O Assignment Warnings sota Fitter. Veureu que el<br />
que passa és que no heu <strong>de</strong>finit l'"slew rate" ni la força <strong>de</strong> les sorti<strong>de</strong>s led. No és massa<br />
important, però procedireu a <strong>de</strong>finir aquests paràmetres més endavant.<br />
5. Els tres advertiments següents ens indiquen que teniu llaços combinacionals i que aquests<br />
llaços actuen com a latches. Ja ho sabíeu. Un és el latch que genera el senyal sm i l'altre és<br />
el latch que s'ha generat com a part <strong>de</strong>l comptador gen-q.<br />
III) Visualització <strong>de</strong>l resultat <strong>de</strong> l'encabiment. El planificador <strong>de</strong>l xip és una utilitat que permet<br />
visualitzar el resultat <strong>de</strong> l'encabiment <strong>de</strong>l vostre disseny sobre l'estructura física <strong>de</strong>l dispositiu<br />
utilitzat (assignació <strong>de</strong> pins i elements lògics, interconnexions, equacions implementa<strong>de</strong>s per<br />
cada element lògic, fan-in i fan-out <strong>de</strong> cada element lògic, etc.). També permet modificar i fer<br />
noves assignacions <strong>de</strong>ls senyals d'entrada/sortida als pins <strong>de</strong>l dispositiu i <strong>de</strong>ls senyals interns<br />
als elements lògics abans <strong>de</strong> fer un nou encabiment. Tingueu present que la ubicació <strong>de</strong>ls<br />
senyals interns pot ser diferent d'un encabiment a un altre, ja que fins ara no heu fet cap mena<br />
d'assignació pel que fa als senyals interns <strong>de</strong>l disseny. A la barra <strong>de</strong> menús <strong>de</strong>l Quartus II:<br />
1. Trieu Tools Chip Planner (Floorplan and Chip Editor). S'obrirà la finestra <strong>de</strong>l planificador<br />
<strong>de</strong>l xip. Maximitzeu-la. Aquesta finestra presenta tres finestres, dues a la part superior i<br />
1 - 24
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
una a la inferior. A la finestra superior esquerra apareix un esquema <strong>de</strong> l'estructura interna<br />
<strong>de</strong>l xip. La finestra superior dreta permet establir els nivells <strong>de</strong> recursos que es volen veure<br />
i els colors emprats en la seva visualització. Seleccioneu la pestanya <strong>de</strong> configuració <strong>de</strong>ls<br />
nivells i comproveu que teniu marcat Block Utilization dins Background. A la finestra<br />
inferior, <strong>de</strong>nominada finestra <strong>de</strong>ls elements seleccionats, apareixen da<strong>de</strong>s sobre els elements<br />
que estan seleccionats a l'esquema <strong>de</strong> l'estructura interna. La figura 14 mostra la finestra<br />
<strong>de</strong>l planificador <strong>de</strong>l xip. El planificador <strong>de</strong>l xip també es pot en<strong>de</strong>gar prement la sisena<br />
icona <strong>de</strong> la barra d'eines <strong>de</strong>l Quartus II.<br />
Figura 14: Finestra <strong>de</strong>l planificador <strong>de</strong>l xip <strong>de</strong>l Quartus II (xip complet).<br />
2. A la barra <strong>de</strong> menús <strong>de</strong>l planificador <strong>de</strong>l xip trieu View Fit in Window per veure ben<br />
ampliat tot l'esquema <strong>de</strong> l'estructura interna <strong>de</strong>l xip. Noteu que està integrat, aparentment,<br />
per una perifèria amb els pads d'entrada/sortida i un nucli amb una retícula <strong>de</strong> 1.120 blocs<br />
(28 files 40 columnes). Alguns blocs són <strong>de</strong> color groc (2 columnes, per tant, 56 blocs).<br />
Corresponen a blocs <strong>de</strong> 9 kbits <strong>de</strong> memòria RAM (total, 516.096 bits). Altres blocs són <strong>de</strong><br />
color blanc (2 columnes, per tant, 56 blocs). Corresponen a blocs amb 1 multiplicador <strong>de</strong><br />
18 bits, que es pot reconvertir en dos multiplicadors <strong>de</strong> 9 bits (total, 56 multiplicadors <strong>de</strong><br />
18 bits o 112 multiplicadors <strong>de</strong> 9 bits). Hi ha un conjunt <strong>de</strong> 45 blocs (5 files 9 columnes)<br />
<strong>de</strong> color negre o marró. Corresponen a recursos <strong>de</strong>l dispositiu lògic programable per a la<br />
seva programació i posada a punt. Finalment, la resta <strong>de</strong> blocs (1.120 – 56 – 56 – 45 = 963)<br />
són <strong>de</strong> color blau, existint vàries tonalitats <strong>de</strong> color blau. Corresponen a blocs amb un LAB,<br />
cada LAB comprenent 16 elements lògics (total, 15.408 elements lògics). La tonalitat <strong>de</strong>l<br />
color blau està associada a la utilització <strong>de</strong>l LAB: quan més fosc és el blau, més recursos<br />
<strong>de</strong>l LAB s'estan utilitzant.<br />
3. Poseu el cursor <strong>de</strong>l ratolí damunt d'un <strong>de</strong>ls blocs <strong>de</strong> color blau cel. Apareixerà una cridada<br />
indicant <strong>de</strong> quin LAB es tracta (X, Y) i quina és la seva utilització (0 <strong>de</strong> 32). El nombre <strong>de</strong><br />
recursos és 32 perquè hi ha 16 LUTs i 16 biestables. Comproveu que la utilització <strong>de</strong>ls<br />
LABs augmenta en augmentar la tonalitat <strong>de</strong>l blau.<br />
1 - 25
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
4. Feu click sobre el LAB amb un blau més fosc (utilització més gran). Se seleccionarà i el<br />
seu nom apareixerà a la finestra <strong>de</strong>ls elements seleccionats. Activeu la lupa per ampliar el<br />
<strong>de</strong>tall <strong>de</strong>l LAB fins que s'observin els seus <strong>de</strong>talls interns (LUTs i biestables), tal com es<br />
mostra a la figura 15. Els recursos no utilitzats apareixen <strong>de</strong> color blanc, les LUTs utilitza<strong>de</strong>s<br />
<strong>de</strong> color blau <strong>UPC</strong> i els biestables utilitzats <strong>de</strong> color granat. Desactiveu la lupa.<br />
Figura 15: Finestra <strong>de</strong>l planificador <strong>de</strong>l xip <strong>de</strong>l Quartus II (<strong>de</strong>tall).<br />
5. Observeu el contingut <strong>de</strong> les crida<strong>de</strong>s que apareixen en posar el cursor <strong>de</strong>l ratolí damunt<br />
d'una LUT utilitzada i d'un biestable utilitzat.<br />
6. A la barra <strong>de</strong> menús <strong>de</strong>l planificador <strong>de</strong>l xip trieu Edit Find... o bé premeu la dissetena<br />
icona <strong>de</strong> les barres d'eines (prismàtics). S'obrirà la finestra <strong>de</strong> cerca. Indiqueu com a nom a<br />
cercar divf:divf|div2, comproveu que teniu marcada la categoria Atoms i premeu el botó<br />
Find Next. Se seleccionarà el recurs (biestable) amb aquest nom, que quedarà ressaltat en<br />
blau marí, i el seu nom apareixerà a la finestra d'elements seleccionats. Tanqueu la finestra<br />
<strong>de</strong> cerca prement el botó Close. Seguidament, feu click sobre el nom que hi ha a la finestra<br />
d'elements seleccionats. En ella apareixeran dues llistes amb els ventalls d'entrada ("fanin")<br />
i <strong>de</strong> sortida ("fan-out") d'aquest senyal. A la llista <strong>de</strong>l ventall <strong>de</strong> sortida, seleccioneu<br />
gen-sensorf i premeu el botó Go To >. Aquest no<strong>de</strong> passarà a ser el seleccionat. Feu click<br />
sobre el nom que hi ha a la finestra d'elements seleccionats per veure els seus ventalls<br />
d'entrada i <strong>de</strong> sortida. A la llista <strong>de</strong>l ventall d'entrada, seleccioneu el senyal gen-sensorf~0 i<br />
premeu el botó < Go To. Aquest no<strong>de</strong> passarà a ser el seleccionat. Obteniu els seus ventalls<br />
d'entrada i <strong>de</strong> sortida i, a la llista <strong>de</strong>l ventall d'entrada, seleccioneu nsensor~input i premeu<br />
el botó < Go To. Aquest no<strong>de</strong>, que està a la perifèria, passarà a ser el seleccionat. Emprant<br />
aquest procediment, po<strong>de</strong>u <strong>de</strong>splaçar-vos endavant i endarrera pels senyals <strong>de</strong>l circuit tant<br />
com vulgueu.<br />
7. Seleccioneu novament el no<strong>de</strong> divf:divf|div2 amb el mèto<strong>de</strong> <strong>de</strong> cerca que s'ha explicat al punt<br />
anterior i comproveu que teniu activada la quinzena icona <strong>de</strong> les barres d'eines (uns blocs<br />
més un cronòmetre). A continuació, premeu la setena icona <strong>de</strong> les barres d'eines o trieu<br />
1 - 26
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
View Generate Fan-Out Connections a la barra <strong>de</strong> menús. Apareixeran dibuixa<strong>de</strong>s unes<br />
fletxes blaves que, partint <strong>de</strong>l no<strong>de</strong> divf:divf|div2, us porten als no<strong>de</strong>s <strong>de</strong>l seu ventall <strong>de</strong><br />
sortida. Aquestes fletxes representen les corresponents connexions, connexions que també<br />
apareixeran a la finestra d'elements seleccionats perquè estan selecciona<strong>de</strong>s. Amb l'eina <strong>de</strong><br />
la lupa activada, reduïu el <strong>de</strong>tall fins a que pugueu veure completament les fletxes.<br />
Observeu que, al costat <strong>de</strong> cada connexió, apareix el retard <strong>de</strong> propagació <strong>de</strong> la connexió,<br />
tant el <strong>de</strong> pujada (R) com el <strong>de</strong> baixada (F). Desactiveu la lupa. Poseu el cursor <strong>de</strong>l ratolí<br />
damunt una <strong>de</strong> les connexions que apareixen a la finestra d'elements seleccionats i observeu<br />
que apareix dibuixat el traçat real <strong>de</strong> dita connexió en color vermell. Repetiu aquesta acció<br />
per a totes les connexions selecciona<strong>de</strong>s.<br />
8. Esborreu tots els elements que apareixen a la finestra <strong>de</strong> selecció d'elements per tal <strong>de</strong> no<br />
tenir-ne cap <strong>de</strong> seleccionat. Seguidament, trieu View Clear Unselected Connections/Paths<br />
a fi d'esborrar les connexions que estaven dibuixa<strong>de</strong>s.<br />
IV) Assignació <strong>de</strong> no<strong>de</strong>s a recursos interns <strong>de</strong>l xip amb l'editor d'assignacions. L'editor d'assignacions<br />
és una utilitat que permet forçar molts paràmetres <strong>de</strong>ls no<strong>de</strong>s <strong>de</strong>l vostre disseny, com ara la<br />
seva ubicació en els elements lògics <strong>de</strong>l xip. Aneu a la finestra <strong>de</strong>l Quartus II i en la seva barra<br />
<strong>de</strong> menús:<br />
1. Trieu Assignments Assignment Editor. S'obrirà la finestra <strong>de</strong> l'editor d'assignacions, que<br />
consta <strong>de</strong> dues finestres: la superior llista les assignacions que ja heu fet (fins ara heu fet 8<br />
assignacions, que corresponen a la ubicació <strong>de</strong>ls senyals d'entrada/sortida en els pins <strong>de</strong>l<br />
xip), mentre que la inferior permet crear noves assignacions. La figura 16 mostra la finestra<br />
<strong>de</strong> l'editor d'assignacions. Amplieu la columna Assignment Name <strong>de</strong> la finestra inferior.<br />
L'editor d'assignacions també es pot en<strong>de</strong>gar prement la quarta icona <strong>de</strong> la barra d'eines <strong>de</strong>l<br />
Quartus II.<br />
Figura 16: Finestra <strong>de</strong> l'editor d'assignacions <strong>de</strong>l Quartus II.<br />
1 - 27
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
2. Feu doble click sobre la casella buida <strong>de</strong> la columna To <strong>de</strong> la creació d'una nova assignació.<br />
Dins la casella apareixerà un botó associat a la cerca <strong>de</strong> no<strong>de</strong>s. Premeu-lo. S'obrirà una nova<br />
finestra, anomenada finestra <strong>de</strong> cerca <strong>de</strong> no<strong>de</strong>s. En aquesta finestra, seleccioneu Pins: all &<br />
Registers: post-fitting com a filtre <strong>de</strong>ls no<strong>de</strong>s i premeu el botó List. La llista <strong>de</strong> no<strong>de</strong>s<br />
trobats s'omplirà. Cerqueu el no<strong>de</strong> divf:divf|div2 en aquesta llista i passeu-lo a la llista <strong>de</strong><br />
no<strong>de</strong>s seleccionats. Vali<strong>de</strong>u amb OK. La finestra <strong>de</strong> cerca <strong>de</strong> no<strong>de</strong>s es tancarà i el nou no<strong>de</strong><br />
apareixerà a la casella <strong>de</strong> la creació <strong>de</strong> nova assignació.<br />
3. Feu doble click sobre la casella buida <strong>de</strong> la columna Assignment Name <strong>de</strong> la creació d'una<br />
nova assignació. Dins la casella apareixerà un botó associat al <strong>de</strong>splegament <strong>de</strong>ls noms<br />
<strong>de</strong>ls tipus d'assignacions. Premeu-lo. Es <strong>de</strong>splegarà una llista amb els tipus d'assignacions<br />
per ordre alfabètic. Seleccioneu Location.<br />
4. Feu doble click sobre la casella buida <strong>de</strong> la columna Value <strong>de</strong> la creació d'una nova assignació.<br />
Dins la casella apareixerà un botó associat a un navegador. Premeu-lo. S'obrirà una finestra<br />
que us permetrà seleccionar el tipus d'element. Seleccioneu Register cell. L'aspecte <strong>de</strong> la<br />
finestra canviarà i us permetrà seleccionar tres coor<strong>de</strong>na<strong>de</strong>s X, Y i Z. Establiu el valor 1<br />
per a cadascuna d'elles i vali<strong>de</strong>u amb OK.<br />
5. Feu click sobre la casella que mostra l'estat <strong>de</strong> la creació. Passarà a indicar que l'estat és<br />
correcte.<br />
6. Premeu el botó Create <strong>de</strong> la finestra <strong>de</strong> creació <strong>de</strong> noves assignacions. La nova assignació<br />
es transferirà a la finestra superior i en la finestra <strong>de</strong> missatges <strong>de</strong>l Quartus II apareixerà un<br />
missatge <strong>de</strong> sistema indicant la creació d'una nova assignació.<br />
7. Repetiu els passos 2 a 6 per <strong>de</strong>finir l'"slew rate" i la força <strong>de</strong> les sorti<strong>de</strong>s led. Cal crear dues<br />
noves assignacions per al grup <strong>de</strong> senyals led (no cal fer-ho sortida a sortida, és pot fer a<br />
nivell <strong>de</strong> tot el grup). En una, assigneu el valor 1 al tipus Slew Rate i, en l'altra, assigneu el<br />
valor Maximum Current al tipus Current Strength.<br />
8. A la barra <strong>de</strong> menús <strong>de</strong>l Quartus II, trieu File Save per actualitzar el fitxer d'assignacions.<br />
9. Tanqueu la finestra <strong>de</strong> l'editor d'assignacions.<br />
V) Encabiment amb els nous paràmetres. Un cop <strong>de</strong>finits els nous paràmetres que han <strong>de</strong> guiar el<br />
procés d'encabiment, es pot procedir a efectuar-lo. A la barra <strong>de</strong> menús <strong>de</strong>l Quartus II:<br />
1. Trieu Processing Start Start Fitter per tornar a executar el procés d'encabiment.<br />
2. En acabar l'encabiment, s'obrirà una finestra informativa indicant si ha acabat amb èxit o<br />
s'han produït errors (en aquest cas, amb èxit i 4 advertiments). Tanqueu-la prement OK.<br />
3. Po<strong>de</strong>u comprovar, en el resum <strong>de</strong>l flux <strong>de</strong> disseny que apareix a la finestra <strong>de</strong>l report <strong>de</strong> la<br />
compilació, que per al vostre disseny són ara necessaris 70 elements lògics <strong>de</strong>ls 15.408 que<br />
hi ha al dispositiu EP3C16F484C6.<br />
4. Comproveu que l'advertiment que indicava que hi havia pins d'entrada/sortida que no estaven<br />
completament especificats ha <strong>de</strong>saparegut.<br />
5. Emprant el planificador <strong>de</strong>l xip, comproveu que la ubicació actual <strong>de</strong>l senyal divf:divf|div2<br />
és l'element lògic 1 (Z) <strong>de</strong>l LAB situat a la fila 1 (Y) <strong>de</strong> la columna 1 (X). Comproveu<br />
també que l'emplaçament <strong>de</strong> tot el vostre disseny ha canviat força respecte a l'emplaçament<br />
obtingut en primera instància.<br />
6. Dels resultats obtinguts (necessitat <strong>de</strong> més recursos <strong>de</strong>l xip) po<strong>de</strong>m <strong>de</strong>duir que l'assignació<br />
que hem fet en forçar la ubicació <strong>de</strong>l no<strong>de</strong> divf:divf|div2 no ha estat gens profitosa. Anem a<br />
llevar aquesta assignació. Trieu Assignments Assignment Editor. S'obrirà la finestra <strong>de</strong><br />
l'editor d'assignacions. Seleccioneu la casella en la que apareix el no<strong>de</strong> divf:divf|div2 i feu<br />
click amb el botó <strong>de</strong> la dreta <strong>de</strong>l ratolí. Seleccioneu Delete en la llista d'accions que apareix.<br />
L'assignació <strong>de</strong>l no<strong>de</strong> divf:divf|div2 <strong>de</strong>sapareixerà. Trieu File Save per actualitzar el<br />
fitxer d'assignacions i tanqueu la finestra <strong>de</strong> l'editor d'assignacions.<br />
7. Trieu Processing Start Start Fitter per tornar a executar el procés d'encabiment.<br />
1 - 28
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
8. En acabar l'encabiment, s'obrirà una finestra informativa indicant si ha acabat amb èxit o<br />
s'han produït errors (en aquest cas, amb èxit i 4 advertiments). Tanqueu-la prement OK.<br />
9. Comproveu que per al vostre disseny només tornen a ser necessaris 69 elements lògics <strong>de</strong>ls<br />
15.408 que hi ha al dispositiu EP3C16F484C6.<br />
VI) Edició <strong>de</strong> les propietats <strong>de</strong>ls recursos. L'editor <strong>de</strong> les propietats <strong>de</strong>ls recursos és una utilitat<br />
que permet observar i modificar les propietats <strong>de</strong>ls recursos emprats <strong>de</strong>l xip (LUTs, biestables,<br />
elements lògics, ports d'entrada/sortida, etc.). A la finestra <strong>de</strong>l planificador <strong>de</strong>l xip:<br />
1. Seleccioneu novament el no<strong>de</strong> divf:divf|div2 amb el mèto<strong>de</strong> <strong>de</strong> cerca que s'ha explicat abans.<br />
2. Feu doble click damunt d'ell. S'obrirà una nova finestra, anomenada finestra <strong>de</strong> l'editor <strong>de</strong> les<br />
propietats <strong>de</strong>ls recursos. Maximitzeu-la. Aquesta finestra subministra informació <strong>de</strong> totes les<br />
propietats <strong>de</strong>l recurs que heu seleccionat i presenta cinc finestres, una superior, dues centrals<br />
i dues inferiors. La finestra superior és la finestra <strong>de</strong> selecció <strong>de</strong>l no<strong>de</strong>. A la finestra central<br />
esquerra apareix l'esquema <strong>de</strong> l'element lògic <strong>de</strong>l no<strong>de</strong> seleccionat, que po<strong>de</strong>u ajustar triant<br />
View Fit in Window a la barra <strong>de</strong> menús <strong>de</strong>l planificador <strong>de</strong>l xip. La finestra inferior<br />
esquerra és la finestra <strong>de</strong> connectivitat i indica quins són els senyals que es troben connectats<br />
a les entra<strong>de</strong>s i sorti<strong>de</strong>s d'aquest element lògic, en el que s'empren la sortida <strong>de</strong>l biestable<br />
(senyal divf:divf|div2) i una <strong>de</strong> les sorti<strong>de</strong>s <strong>de</strong> la LUT (senyal divf:divf|div2~0). La finestra<br />
central dreta és la finestra <strong>de</strong> propietats. Seleccioneu la pestanya Combinatorial, d'aquesta<br />
finestra per veure el contingut <strong>de</strong> la LUT, 78F0 en hexa<strong>de</strong>cimal, i la funció que implementa,<br />
C $ (A & B & D). Finalment, la finestra inferior dreta és la finestra d'informació sobre els<br />
retards interns <strong>de</strong>l recurs. Si en aquesta finestra seleccioneu com a nom <strong>de</strong>l no<strong>de</strong> el no<strong>de</strong><br />
divf:divf|div2, veureu els retards <strong>de</strong> propagació <strong>de</strong>l biestable, i si seleccioneu com a nom<br />
<strong>de</strong>l no<strong>de</strong> el no<strong>de</strong> divf:divf|div2~0, veureu els retards <strong>de</strong> propagació <strong>de</strong> la LUT. Si feu click<br />
damunt un d'aquests retards, es marcarà en verd el camí corresponent en la finestra <strong>de</strong><br />
l'esquema. La figura 17 mostra la finestra <strong>de</strong> l'editor <strong>de</strong> les propietats <strong>de</strong>ls recursos.<br />
Figura 17: Finestra <strong>de</strong> l'editor <strong>de</strong> les propietats <strong>de</strong>ls recursos <strong>de</strong>l Quartus II.<br />
1 - 29
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
3. Tots els valors que estan en blanc en la finestra <strong>de</strong> propietats es po<strong>de</strong>n editar. Seleccioneu<br />
la pestanya Combinatorial <strong>de</strong> la finestra <strong>de</strong> propietats i feu doble click sobre el valor <strong>de</strong> la<br />
propietat Sum LUT Mask. Ara estareu en disposició <strong>de</strong> modificar aquest valor. Modifiqueulo<br />
a 7800 hexa<strong>de</strong>cimal i premeu la tecla <strong>de</strong> retorn per validar el nou valor. Veureu que<br />
l'equació <strong>de</strong> la funció implementada per la LUT canvia a D & (C $ (A & B)) i que els nous<br />
valors que<strong>de</strong>n <strong>de</strong>stacats en negreta, confirmant el canvi.<br />
4. Tots els valors que estan en blanc en la finestra <strong>de</strong> connectivitat es po<strong>de</strong>n editar. Feu doble<br />
click sobre el valor <strong>de</strong> la propietat DATAC en aquesta finestra. Apareixerà un botó dins la<br />
casella. Premeu-lo. S'obrirà la finestra <strong>de</strong> cerca <strong>de</strong> no<strong>de</strong>s. En aquesta finestra, seleccioneu<br />
Post-synthesis com a filtre <strong>de</strong>ls no<strong>de</strong>s i premeu el botó List. La llista <strong>de</strong> no<strong>de</strong>s trobats<br />
s'omplirà. Cerqueu el no<strong>de</strong> divf:divf|Equal0~3 en aquesta llista i passeu-lo a la llista <strong>de</strong><br />
no<strong>de</strong>s seleccionats. Vali<strong>de</strong>u amb OK. La finestra <strong>de</strong> cerca <strong>de</strong> no<strong>de</strong>s es tancarà i el nou no<strong>de</strong><br />
apareixerà a la casella <strong>de</strong>l valor <strong>de</strong> DATAC. Premeu la tecla <strong>de</strong> retorn per validar el nou<br />
valor. Veureu que el nou valor queda <strong>de</strong>stacat en negreta, confirmant el canvi.<br />
5. Tanqueu la finestra <strong>de</strong> l'editor <strong>de</strong> les propietats <strong>de</strong>ls recursos.<br />
VII) Modificació manual <strong>de</strong> l'encabiment. L'encabiment es pot modificar manualment emprant el<br />
planificador <strong>de</strong>l xip. A la finestra <strong>de</strong> l'esquema <strong>de</strong> l'arquitectura interna <strong>de</strong>l xip:<br />
1. Seleccioneu ECO – EP3C16F484C6 com a mo<strong>de</strong> d'edició i comproveu que la catorzena<br />
icona <strong>de</strong> les barres d'eines (un circuit més un signe <strong>de</strong> verificació) està inhabilitada.<br />
2. Seleccioneu el biestable que conté el senyal divf:divf|div2 i arrossegueu-lo amb el ratolí<br />
fins a un biestable d'un altre LAB, preferiblement d'un que estigui completament buit, perquè<br />
així el podreu i<strong>de</strong>ntificar millor (només el podreu moure a un biestable amb la mateixa<br />
coor<strong>de</strong>nada Z – crec que es tracta d'un error en el programa).<br />
3. Seleccioneu la LUT que genera el senyal divf:divf|div2~0 i arrossegueu-la amb el ratolí<br />
fins a la LUT <strong>de</strong> l'element lògic on ara es troba el senyal divf:divf|div2.<br />
4. Comproveu que la catorzena icona <strong>de</strong> les barres d'eines està ara habilitada. Premeu-la a fi<br />
<strong>de</strong> fer efectius els canvis que hem fet. S'executarà novament el procés d'encabiment. En<br />
completar-se, s'obrirà una finestra informativa indicant si ha acabat amb èxit o s'han produït<br />
errors (en aquest cas, amb èxit i 4 advertiments). Tanqueu-la prement OK.<br />
5. Amb els procediments ja explicats, comproveu que la ubicació <strong>de</strong>l no<strong>de</strong> divf:divf|div2 és la<br />
nova que heu indicat.<br />
6. Amb els procediments ja explicats, comproveu que el contingut <strong>de</strong> la LUT que genera el<br />
senyal divf:divf|div2~0 és el nou que heu indicat.<br />
7. Amb els procediments ja explicats, comproveu que els senyals d'entrada a la LUT que<br />
genera el senyal divf:divf|div2~0 són els nous que heu indicat.<br />
VIII) Assignació <strong>de</strong> no<strong>de</strong>s a recursos interns <strong>de</strong>l xip amb el planificador <strong>de</strong>l xip. Amb el planificador<br />
<strong>de</strong>l xip també es po<strong>de</strong>n assignar no<strong>de</strong>s a recursos interns <strong>de</strong>l xip. Aneu a la finestra <strong>de</strong>l Quartus<br />
II i en la seva barra <strong>de</strong> menús:<br />
1. Trieu Assignments Assignment Editor. S'obrirà la finestra <strong>de</strong> l'editor d'assignacions, on<br />
veureu que teniu establertes 10 assignacions. Tanqueu la finestra <strong>de</strong> l'editor d'assignacions.<br />
2. A la finestra <strong>de</strong> l'esquema <strong>de</strong> l'arquitectura interna <strong>de</strong>l xip, seleccioneu com a mo<strong>de</strong> d'edició<br />
Assignment – EP3C16F484C6.<br />
3. Seleccioneu el biestable que conté el senyal divf:divf|div2 i arrossegueu-lo amb el ratolí<br />
fins a un biestable d'un altre LAB, preferiblement d'un que estigui completament buit, perquè<br />
així el podreu i<strong>de</strong>ntificar millor (només el podreu moure a un biestable amb la mateixa<br />
coor<strong>de</strong>nada Z – crec que es tracta d'un error en el programa). El biestable es mantindrà en<br />
la seva ubicació original, però la nova ubicació quedarà marcada <strong>de</strong> color verd.<br />
1 - 30
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
4. Seleccioneu la LUT que genera el senyal divf:divf|div2~0 i arrossegueu-la amb el ratolí fins a<br />
la LUT <strong>de</strong> l'element lògic que heu reservat per al senyal divf:divf|div2. La LUT es mantindrà<br />
en la seva ubicació original, però la nova ubicació quedarà marcada <strong>de</strong> color verd.<br />
5. Trieu Assignments Assignment Editor. S'obrirà la finestra <strong>de</strong> l'editor d'assignacions, on<br />
veureu que ara teniu establertes 12 assignacions, havent-se afegit <strong>de</strong> forma automàtica les<br />
dues noves assignacions corresponents a les noves ubicacions <strong>de</strong>ls no<strong>de</strong>s divf:divf|div2 i<br />
divf:divf|div2~0. Com no us interessa mantenir les noves assignacions, esborreu-les. Un<br />
cop esborra<strong>de</strong>s, trieu File Save per actualitzar el fitxer d'assignacions i tanqueu la finestra<br />
<strong>de</strong> l'editor d'assignacions.<br />
6. Comproveu, en la finestra <strong>de</strong> l'esquema <strong>de</strong> l'estructura interna <strong>de</strong>l xip, que el biestable i la<br />
LUT que havíeu reservat per als no<strong>de</strong>s divf:divf|div2 i divf:divf|div2~0 ja no estan reservats.<br />
7. Tanqueu la finestra <strong>de</strong>l planificador <strong>de</strong>l xip.<br />
IX) Retards. Al final <strong>de</strong>l procés d'emplaçament, un cop es coneix exactament quins són els recursos<br />
<strong>de</strong>l xip assignats per fer cada funció elemental, s'està en condicions <strong>de</strong> calcular els retards <strong>de</strong><br />
tots els senyals <strong>de</strong>l vostre disseny. Aquests retards es calculen per a un únic cas: voltatge <strong>de</strong>l<br />
nucli <strong>de</strong>l xip <strong>de</strong> 1.200 mV, temperatura <strong>de</strong> 85ºC i procés <strong>de</strong> fabricació amb difusions que donen<br />
lloc a constants <strong>de</strong> temps màximes i, per tant, a transicions lentes. Aquests retards són els que<br />
heu vist en el punts III.7 (connexions entre elements lògics) i VI.2 (interns als elements lògics)<br />
d'aquest apartat.<br />
1. Amb l'explorador <strong>de</strong>l Windows, aneu al directori on teniu el disseny que esteu fent. Noteu<br />
que en ell hi ha un munt <strong>de</strong> fitxers i dos directoris: db i incremental_db.<br />
2. Baixeu al directori db, que conté la base <strong>de</strong> da<strong>de</strong>s <strong>de</strong>l disseny. Observeu que teniu un fitxer<br />
anomenat metro.tiscmp.slow_1200mv_85c.ddb. Aquest és el fitxer que conté els retards.<br />
Observeu també que no hi ha cap altre fitxer que comenci per metro.tiscmp..<br />
6.3. Generació <strong>de</strong> fitxers per a eines <strong>de</strong> tercers<br />
Malgrat no interessar-vos mantenir els canvis que heu fet manualment amb el planificador <strong>de</strong>l xip i<br />
l'editor <strong>de</strong> propietats <strong>de</strong>ls recursos en l'emplaçament i funcionalitat <strong>de</strong>l vostre disseny, és instructiu<br />
fer la darrera etapa <strong>de</strong>l procés <strong>de</strong> compilació per veure que és el que passa. Aquesta etapa consisteix<br />
en la generació <strong>de</strong> fitxers per a eines <strong>de</strong> tercers, fitxers que contenen <strong>de</strong>scripcions <strong>de</strong> la llista <strong>de</strong><br />
connexionat i <strong>de</strong>ls retards en llenguatges normalitzats ("EDA netlist writer"). EDA és l'acrònim<br />
d'"Electronic Design Automation").<br />
I) Generació <strong>de</strong>ls fitxers. A la barra <strong>de</strong> menús <strong>de</strong>l Quartus II:<br />
1. Trieu Processing Start Start EDA Netlist Writer.<br />
2. En acabar la compilació, s'obrirà una finestra informativa indicant si ha acabat amb èxit o<br />
s'han produït errors (en aquest cas, amb èxit). Tanqueu-la prement OK.<br />
II) Observació <strong>de</strong>ls fitxers generats. Aquests fitxers seran emprats en la simulació.<br />
1. Amb l'explorador <strong>de</strong>l Windows, aneu al directori on teniu el disseny que esteu fent. Noteu<br />
que en ell ara hi ha un munt <strong>de</strong> fitxers i tres directoris: db, incremental_db i simulation.<br />
2. Baixeu al directori simulation, on només trobareu un directori anomenat mo<strong>de</strong>lsim. Baixeu<br />
a aquest directori.<br />
3. Observeu que teniu un fitxer anomenat metro_6_1200mv_85c_slow.vho. Aquest fitxer conté<br />
una <strong>de</strong>scripció estructural en VHDL <strong>de</strong>l vostre disseny, en la que s'han emprat components<br />
que corresponen als recursos disponibles en el xip EP3C16F484C6 triat.<br />
1 - 31
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
4. Observeu que teniu un fitxer anomenat metro_6_1200mv_85c_vhd_slow.sdo. Aquest fitxer<br />
conté una <strong>de</strong>scripció en SDF ("Standard Delay Format") <strong>de</strong>l vostre disseny.<br />
5. Només hi ha un altre fitxer amb extensió vho, el fitxer metro.vho, el qual és exactament<br />
igual que el fitxer metro_6_1200mv_85c_slow.vho.<br />
6. Només hi ha un altre fitxer amb extensió sdo, el fitxer metro_vhd.sdo, el qual és exactament<br />
igual que el fitxer metro_6_1200mv_85c_vhd_slow.sdo.<br />
6.4. Compilació completa<br />
Ja s'ha comentat que no us interessa mantenir els canvis que heu fet manualment amb el planificador<br />
<strong>de</strong>l xip i l'editor <strong>de</strong> propietats <strong>de</strong>ls recursos en l'emplaçament i funcionalitat <strong>de</strong>l vostre disseny, així<br />
que hauríeu <strong>de</strong> tornar a fer l'emplaçament a partir <strong>de</strong>ls resultats <strong>de</strong> la síntesi, per <strong>de</strong>sprés continuar<br />
amb la resta d'etapes <strong>de</strong>l procés <strong>de</strong> compilació. Una altra alternativa és fer una compilació completa<br />
<strong>de</strong>l vostre disseny, partint <strong>de</strong> zero, si bé respectant les assignacions que heu establert fins a aquest<br />
moment. Aquesta alternativa farà més feina <strong>de</strong> la necessària, ja que repetirà la primera etapa <strong>de</strong>l<br />
procés <strong>de</strong> compilació (anàlisi i síntesi), però és convenient que conegueu quin és el procediment a<br />
seguir ja que sovint l'haureu <strong>de</strong> fer al llarg <strong>de</strong> les pràctiques.<br />
I) Compilació completa. A la barra <strong>de</strong> menús <strong>de</strong>l Quartus II:<br />
1. Trieu Processing Start Compilation per en<strong>de</strong>gar el procés complet <strong>de</strong> compilació.<br />
2. En acabar la compilació, s'obrirà una finestra informativa indicant si ha acabat amb èxit o<br />
s'han produït errors (en aquest cas, amb èxit i 11 advertiments). Tanqueu-la prement OK.<br />
3. Po<strong>de</strong>u comprovar, en el resum <strong>de</strong>l flux <strong>de</strong> disseny que apareix a la finestra <strong>de</strong>l report <strong>de</strong> la<br />
compilació, que per al vostre disseny són necessaris 69 elements lògics <strong>de</strong>ls 15.408 que hi<br />
ha al dispositiu EP3C16F484C6.<br />
4. Comproveu que no teniu cap error ni cap advertiment crític.<br />
5. Comproveu que teniu 5 advertiments. Aquest nombre sembla estar en contradicció amb el<br />
nombre d'advertiments (11) indicat a la finestra informativa que s'ha obert en acabar la<br />
compilació, però ja sabeu d'abans que alguns advertiments que<strong>de</strong>n agrupats. Seleccioneu la<br />
pestanya d'advertiments i comproveu que hi ha 5 advertiments. Desagrupeu els advertiments<br />
que estan agrupats i comproveu que el nombre total d'advertiments és 11.<br />
6. Els tres primers advertiments corresponen a la primera etapa <strong>de</strong>l procés <strong>de</strong> compilació<br />
(anàlisi i síntesi) i els quatre advertiments següents corresponen a la segona etapa <strong>de</strong>l<br />
procés <strong>de</strong> compilació (emplaçament). Tots ells ja han estat comentats amb anterioritat.<br />
7. El vuitè advertiment us indica que el procés <strong>de</strong> compilació s'ha saltat l'etapa corresponent a<br />
l'"assembler". Així ho havíeu or<strong>de</strong>nat. Cap problema.<br />
8. Els tres darrers advertiments corresponen a l'etapa d'anàlisi temporal i són una repetició<br />
<strong>de</strong>ls advertiments <strong>de</strong> caire temporal corresponents a l'emplaçament.<br />
II) Observació <strong>de</strong>ls resultats <strong>de</strong> la compilació completa. El report <strong>de</strong> la compilació permet observar<br />
molts <strong>de</strong>ls resultats <strong>de</strong>l procés <strong>de</strong> compilació. Són d'especial interès els resultats <strong>de</strong> l'anàlisi<br />
temporal realitzada pel TimeQuest i l'observació <strong>de</strong>l fitxer metro_6_1200mv_85c_slow.vho. A<br />
la finestra <strong>de</strong>l report <strong>de</strong> compilació:<br />
1. Expandiu els resultats <strong>de</strong>l TimeQuest Timing Analyzer. Observeu que aquest analitzador<br />
temporal ha efectuat tres anàlisis amb diferents condicions <strong>de</strong> temperatura i <strong>de</strong>l procés <strong>de</strong><br />
fabricació: Slow 1200mV 85C Mo<strong>de</strong>l, Slow 1200mV 0C Mo<strong>de</strong>l i Fast 1200mV 0C Mo<strong>de</strong>l. Els<br />
retards per al primer mo<strong>de</strong>l han estat obtinguts en l'etapa d'encabiment. Òbviament, els<br />
retards <strong>de</strong>ls altres dos mo<strong>de</strong>ls han estat <strong>de</strong>rivats pel TimeQuest a partir <strong>de</strong>ls retards <strong>de</strong>l<br />
primer mo<strong>de</strong>l.<br />
1 - 32
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
2. Expandiu els resultats per al mo<strong>de</strong>l Slow 1200mV 85C Mo<strong>de</strong>l i seleccioneu Fmax Summary<br />
per veure les màximes freqüències a les que po<strong>de</strong>n oscil·lar els senyals <strong>de</strong> rellotge <strong>de</strong>l vostre<br />
disseny. Comproveu que són molt superiors a les freqüències que heu especificat.<br />
3. Feu el mateix per als altres dos mo<strong>de</strong>ls. Quin és el mo<strong>de</strong>l amb retards més elevats?<br />
4. Po<strong>de</strong>u navegar pel report <strong>de</strong> la compilació per veure altres resultats. En acabar, tanqueu la<br />
finestra <strong>de</strong>l report <strong>de</strong> la compilació.<br />
5. Amb l'explorador <strong>de</strong>l Windows, aneu al directori on teniu el disseny que esteu fent i baixeu<br />
al directori db. Observeu que ara teniu tres fitxers que comencen per metro.tiscmp., un per<br />
a cada mo<strong>de</strong>l <strong>de</strong>ls abans esmentats. Són els fitxers metro.tiscmp.slow_1200mv_85c.ddb,<br />
metro.tiscmp.slow_1200mv_0c.ddb i metro.tiscmp.fast_1200mv_0c.ddb. Els dos darrers han<br />
estat creats pel TimeQuest.<br />
6. Amb l'explorador <strong>de</strong>l Windows, aneu al directori on teniu el disseny que esteu fent i baixeu<br />
al directori simulation/mo<strong>de</strong>lsim. Observeu que teniu quatre fitxers amb extensió vho (un<br />
<strong>de</strong> genèric i un per a cada mo<strong>de</strong>l <strong>de</strong>ls abans esmentats) i quatre fitxers amb extensió sdo<br />
(un <strong>de</strong> genèric i un per a cada mo<strong>de</strong>l <strong>de</strong>ls abans esmentats). Tots els fitxers amb extensió<br />
vho són idèntics. Els fitxers amb extensió sdo són diferents.<br />
7. En la finestra principal <strong>de</strong>l Quartus II, trieu File Open... a fi d'obrir el fitxer en VHDL<br />
simulation/mo<strong>de</strong>lsim/metro_6_1200mv_85c_slow.vho amb l'editor <strong>de</strong> texts <strong>de</strong>l Quartus II.<br />
Comproveu que aquest fitxer només conté una entitat anomenada metro, que és el nom <strong>de</strong><br />
l'entitat que ostenta la màxima jerarquia en el vostre disseny. Comproveu que per <strong>de</strong>scriure<br />
aquesta entitat s'utilitzen paquets <strong>de</strong> les biblioteques altera i cycloneiii (a banda <strong>de</strong>l paquet<br />
standard_logic_1164 <strong>de</strong> la biblioteca ieee ja conegut), els quals contenen els components<br />
corresponents als recursos disponibles en el xip emprat. Fixeu-vos especialment en la part<br />
<strong>de</strong>clarativa <strong>de</strong> l'entitat metro, ja que el nom, direcció i tipus <strong>de</strong>ls ports s'hauran <strong>de</strong> reproduir<br />
en <strong>de</strong>clarar aquesta entitat com un component quan vulgueu fer la simulació <strong>de</strong>l vostre<br />
disseny en el proper apartat. La figura 18 mostra la part <strong>de</strong>clarativa <strong>de</strong> l'entitat metro.<br />
8. Tanqueu la finestra <strong>de</strong> l'editor <strong>de</strong> texts <strong>de</strong>l Quartus II.<br />
Figura 18: Part <strong>de</strong>clarativa <strong>de</strong> l'entitat metro al fitxer metro_6_1200mv_85c_slow.vho.<br />
1 - 33
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
7. SIMULACIÓ DEL DISSENY<br />
Un cop compilat el projecte metro, s'ha <strong>de</strong> simular per tal <strong>de</strong> comprovar que el seu funcionament és<br />
correcte. La simulació consisteix, bàsicament, en excitar les entra<strong>de</strong>s <strong>de</strong>l disseny amb uns senyals<br />
d'entrada i observar l'evolució <strong>de</strong>ls senyals generats pel circuit (sorti<strong>de</strong>s i senyals interns). Si aquesta<br />
evolució no és l'esperada, és que existeix quelcom incorrecte en el vostre disseny. Llavors, cal trobar<br />
què és el que falla, reeditar la part <strong>de</strong>l disseny que falla i tornar-lo a compilar i simular. Quan les<br />
simulacions siguin satisfactòries, es pot executar l'etapa <strong>de</strong> l'"assembler" i procedir a la programació<br />
<strong>de</strong>l dispositiu.<br />
Per fer la simulació, l'entorn <strong>de</strong>l Quartus II utilitza una eina externa, el simulador Mo<strong>de</strong>lSim <strong>de</strong><br />
Mentor Graphics. Aquest simulador és un simulador especialitzat en llenguatges <strong>de</strong> <strong>de</strong>scripció <strong>de</strong><br />
hardware, com ara VHDL, Verilog, SystemC o SystemVerilog, però la versió que teniu instal·lada<br />
només disposa <strong>de</strong>l simulador per a VHDL. És per això que els fitxers generats en la compilació per<br />
a eines <strong>de</strong> tercers s'han generat emprant aquest llenguatge (fitxers amb extensió vho).<br />
Cada un <strong>de</strong>ls fitxers amb extensió vho (per exemple, el fitxer metro_6_1200mv_85c_slow.vho) conté<br />
la <strong>de</strong>scripció estructural <strong>de</strong>l vostre disseny, però únicament a nivell lògic. Els retards corresponents<br />
a l'estructura <strong>de</strong>scrita en aquest fitxer se subministren al Mo<strong>de</strong>lSim mitjançant el corresponent fitxer<br />
amb extensió sdo. La primera cosa que el simulador ha <strong>de</strong> fer és combinar el fitxer amb extensió vho<br />
amb els fitxers que contenen els paquets <strong>de</strong> les biblioteques indica<strong>de</strong>s en aquest fitxer (per exemple,<br />
el paquet cycloneiii_components <strong>de</strong> la biblioteca cycloneiii), per generar una estructura <strong>de</strong> da<strong>de</strong>s<br />
que permeti una simulació eficient. Aquesta estructura <strong>de</strong> da<strong>de</strong>s s'anomena disseny i queda guardada<br />
en un directori que s'anomena biblioteca ("library"). El procés que permet obtenir el disseny a partir<br />
<strong>de</strong> fitxers en llenguatges <strong>de</strong> <strong>de</strong>scripció <strong>de</strong> hardware s'anomena compilació. No s'ha <strong>de</strong> confondre el<br />
procés <strong>de</strong> compilació <strong>de</strong>l Quartus II amb el <strong>de</strong>l Mo<strong>de</strong>lSim, ni les biblioteques <strong>de</strong>l Quartus II amb les<br />
<strong>de</strong>l Mo<strong>de</strong>lSim, ni els dissenys <strong>de</strong>l Quartus II amb els <strong>de</strong>l Mo<strong>de</strong>lSim.<br />
Un cop es disposa <strong>de</strong>l disseny <strong>de</strong>l Mo<strong>de</strong>lSim i <strong>de</strong>l seu fitxer <strong>de</strong> retards associat (fitxer amb extensió<br />
sdo), ja es pot simular, és a dir, fer-lo evolucionar en el temps tot excitant les seves entra<strong>de</strong>s amb<br />
uns <strong>de</strong>terminats senyals d'entrada. El quid <strong>de</strong> la qüestió és com generar aquests senyals d'entrada.<br />
En aquest tutorial es presenten dues alternatives:<br />
a) Una possibilitat és generar els senyals d'entrada mitjançant processos escrits en VHDL, és a dir,<br />
en el llenguatge <strong>de</strong> <strong>de</strong>scripció <strong>de</strong> hardware suportat pel Mo<strong>de</strong>lSim. En aquesta alternativa, es<br />
crea un banc <strong>de</strong> proves per al vostre disseny en VHDL. El banc <strong>de</strong> proves és una entitat VHDL<br />
sense entra<strong>de</strong>s i amb una arquitectura mixta que comprèn una unitat <strong>de</strong>l component metro, és a<br />
dir, el vostre disseny, més els processos abans esmentats encarregats <strong>de</strong> subministrar els senyals<br />
d'entrada a aquest component, és a dir, al vostre disseny. La figura 19 il·lustra el concepte <strong>de</strong> banc<br />
<strong>de</strong> proves <strong>de</strong>l disseny metro.<br />
Entra<strong>de</strong>s<br />
BANC DE PROVES PER AL DISSENY metro<br />
PROCÉS 1<br />
PROCÉS n<br />
.<br />
Figura 19: Banc <strong>de</strong> proves per simular el disseny metro.<br />
b) L'altra possibilitat és subministrar l'evolució <strong>de</strong>ls senyals d'entrada en el llenguatge <strong>de</strong> coman<strong>de</strong>s<br />
emprat pel Mo<strong>de</strong>lSim, que és el Tcl ("Tool command language"). Les coman<strong>de</strong>s es po<strong>de</strong>n anar<br />
1 - 34<br />
COMPONENT<br />
metro<br />
.<br />
Sorti<strong>de</strong>s
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
subministrant d'una en una en la línia <strong>de</strong> coman<strong>de</strong>s o es pot crear i executar un fitxer amb la<br />
seqüència <strong>de</strong> coman<strong>de</strong>s a fer (fitxer amb extensió do).<br />
El Mo<strong>de</strong>lSim també disposa d'un editor <strong>de</strong> texts amb plantilles. Es recomana usar l'editor <strong>de</strong> texts<br />
<strong>de</strong>l Mo<strong>de</strong>lSim per editar els fitxers en VHDL o en Tcl que haureu menester.<br />
7.1. Simulació amb un banc <strong>de</strong> proves en VHDL<br />
I) Engegada <strong>de</strong>l simulador Mo<strong>de</strong>lSim. A la barra <strong>de</strong> menús <strong>de</strong>l Quartus II:<br />
1. Trieu Tools Run EDA Simulation Tool EDA Gate Level Simulation.... S'obrirà una<br />
finestra que us <strong>de</strong>manarà quin <strong>de</strong>ls mo<strong>de</strong>ls <strong>de</strong>l vostre disseny voleu simular (recor<strong>de</strong>u que<br />
en teniu tres, cada un amb unes <strong>de</strong>termina<strong>de</strong>s condicions <strong>de</strong> temperatura i <strong>de</strong>l procés <strong>de</strong><br />
fabricació). Seleccioneu el mo<strong>de</strong>l "Slow -6 1.2V 85 Mo<strong>de</strong>l" i premeu el botó Run. S'obrirà<br />
la finestra principal <strong>de</strong>l Mo<strong>de</strong>lSim. Maximitzeu-la. Com s'observa a la figura 20, la finestra<br />
principal <strong>de</strong>l Mo<strong>de</strong>lSim presenta, inicialment, dues finestres, una superior i una altra inferior.<br />
La finestra superior, anomenada finestra <strong>de</strong> biblioteques, mostra una llista amb totes les<br />
biblioteques que contenen dissenys <strong>de</strong>l Mo<strong>de</strong>lSim. La finestra inferior, anomenada finestra<br />
<strong>de</strong> la transcripció, conté l'historial <strong>de</strong> les coman<strong>de</strong>s Tcl que s'han executat fins al moment<br />
present i permet la introducció <strong>de</strong> noves coman<strong>de</strong>s Tcl. Les finestres que componen la<br />
finestra principal <strong>de</strong>l Mo<strong>de</strong>lSim (les dues abans esmenta<strong>de</strong>s i moltes altres que aniran<br />
apareixent a mesura que avanceu en el tutorial) es po<strong>de</strong>n <strong>de</strong>sacoblar <strong>de</strong> la finestra principal<br />
<strong>de</strong>l Mo<strong>de</strong>lSim prement el botó central <strong>de</strong>ls tres botons associats a les finestres en qüestió<br />
(el botó amb un quadrat <strong>de</strong>l que surt una fletxa). Un cop <strong>de</strong>sacobla<strong>de</strong>s, es po<strong>de</strong>n tornar a<br />
acoblar <strong>de</strong> forma similar. La finestra <strong>de</strong>l Mo<strong>de</strong>lSim pot presentar vàries barres d'eines (fins<br />
a 7). A la figura 20 apareixen 4, que són, d'esquerra a dreta: la barra <strong>de</strong>l fitxer font, la barra<br />
estàndard, la barra <strong>de</strong> la compilació i la barra <strong>de</strong> la configuració <strong>de</strong> barres d'eina.<br />
Figura 20: Finestra <strong>de</strong>l Mo<strong>de</strong>lSim.<br />
1 - 35
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
2. Observeu, a la finestra <strong>de</strong> la transcripció i amb ajuda <strong>de</strong> la barra <strong>de</strong> <strong>de</strong>splaçament vertical<br />
corresponent, les coman<strong>de</strong>s que s'han fet <strong>de</strong> forma automàtica en executar-se el simulador.<br />
Entre aquestes coman<strong>de</strong>s <strong>de</strong>staquen les següents:<br />
- vlib gate_work. Aquesta comanda crea una biblioteca (directori) anomenada gate_work<br />
al vostre directori <strong>de</strong> simulació, que és el directori simulation/mo<strong>de</strong>lsim. Amb l'explorador<br />
<strong>de</strong>l Windows, aneu al directori <strong>de</strong>l vostre disseny, baixeu al directori simulation/mo<strong>de</strong>lsim i<br />
comproveu que en ell s'ha creat un directori anomenat gate_work.<br />
- vmap work gate_work. Aquesta comanda associa el directori <strong>de</strong> treball, que s'anomena<br />
work (sempre s'anomena així), al directori gate_work.<br />
- vcom -93 -work work {metro_6_1200mv_85c_slow.vho}. Aquesta comanda compila<br />
el fitxer metro_6_1200mv_85c_slow.vho en el directori <strong>de</strong> treball, consi<strong>de</strong>rant la versió<br />
<strong>de</strong> l'any 1993 per al VHDL. Amb l'explorador <strong>de</strong>l Windows, aneu al directori <strong>de</strong> treball<br />
(.../simulation/mo<strong>de</strong>lsim/gate_work) i comproveu que en ell s'ha creat un directori anomenat<br />
metro, que és el nom <strong>de</strong>l vostre disseny.<br />
3. Observeu, a la finestra <strong>de</strong> biblioteques i amb ajuda <strong>de</strong> la barra <strong>de</strong> <strong>de</strong>splaçament vertical<br />
corresponent, que teniu accessibles les biblioteques gate_work i work. Ambdues presenten<br />
el vostre disseny: l'entitat metro.<br />
II) Edició <strong>de</strong>l banc <strong>de</strong> proves <strong>de</strong>l disseny metro. Aquest banc <strong>de</strong> proves és un fitxer VHDL que<br />
conté una entitat sense ports d'entrada/sortida amb una arquitectura integrada per una unitat<br />
<strong>de</strong>l vostre disseny (entitat metro, que caldrà <strong>de</strong>clarar com a un nou component) més una sèrie<br />
<strong>de</strong> processos que han <strong>de</strong> subministrar les excitacions al vostre disseny. Po<strong>de</strong>u editar aquest<br />
fitxer amb qualsevol editor i donar-li qualsevol nom, però és convenient <strong>de</strong>sar-lo en el mateix<br />
directori que el fitxer que conté el vostre disseny (fitxer metro_6_1200mv_85c_slow.vho, que<br />
conté l'entitat metro), és a dir, al directori .../simulation/mo<strong>de</strong>lsim. Seguidament es <strong>de</strong>talla el<br />
procediment a seguir en cas d'emprar l'editor <strong>de</strong> texts <strong>de</strong>l Mo<strong>de</strong>lSim i anomenar metro_tb.vhd al<br />
fitxer. A la barra <strong>de</strong> menús <strong>de</strong>l Mo<strong>de</strong>lSim:<br />
1. Trieu File New Source VHDL. S'obrirà, <strong>de</strong>sacoblada, la finestra <strong>de</strong> l'editor <strong>de</strong> texts<br />
<strong>de</strong>l Mo<strong>de</strong>lSim disposada per a l'edició d'un fitxer anomenat Untitled-1.vhd. Premeu el botó<br />
central <strong>de</strong>ls tres que la finestra té associats (el botó amb un quadrat al que arriba una fletxa) a<br />
fi d'acoblar aquesta finestra a la finestra principal <strong>de</strong>l Mo<strong>de</strong>lSim. S'acoblarà a la dreta <strong>de</strong> la<br />
finestra <strong>de</strong> biblioteques. Ajusteu l'espai corresponent a aquestes dues finestres <strong>de</strong> forma<br />
que pugueu editar el vostre fitxer amb comoditat.<br />
2. Premeu la tercera icona <strong>de</strong> la barra <strong>de</strong>l fitxer font (un full blanc amb una T), que correspon<br />
a la introducció <strong>de</strong> plantilles. La finestra <strong>de</strong> l'editor <strong>de</strong> texts <strong>de</strong>l Mo<strong>de</strong>lSim quedarà dividida<br />
en dues parts, apareixent, a la part esquerra, les plantilles per al fitxer font (VHDL).<br />
3. Feu doble click sobre la plantilla Create Testbench. S'obrirà la finestra corresponent a<br />
l'ajudant <strong>de</strong> la creació <strong>de</strong>l banc <strong>de</strong> proves, que presenta, a la dreta, una llista amb totes les<br />
biblioteques disponibles, on heu <strong>de</strong> seleccionar la unitat <strong>de</strong> disseny per a la que voleu crear<br />
un banc <strong>de</strong> proves. Expandiu la biblioteca gate_work i seleccioneu l'entitat metro, la qual<br />
apareixerà a la casella <strong>de</strong>l nom <strong>de</strong> la unitat <strong>de</strong> disseny. Premeu el botó Next.<br />
4. L'ajudant <strong>de</strong> la creació <strong>de</strong>l banc <strong>de</strong> proves us informarà <strong>de</strong>ls noms per <strong>de</strong>fecte <strong>de</strong> la unitat <strong>de</strong><br />
disseny <strong>de</strong>l banc <strong>de</strong> proves (metro_tb) i <strong>de</strong>l fitxer que contindrà aquesta unitat <strong>de</strong> disseny<br />
(metro_tb.vhd). Si voleu, els po<strong>de</strong>u canviar, però aquests noms són apropiats. Desmarqueu<br />
la casella corresponent a la compilació automàtica <strong>de</strong>l banc <strong>de</strong> proves, marqueu les altres<br />
caselles i premeu el botó Finish. L'ajudant <strong>de</strong> la creació <strong>de</strong>l banc <strong>de</strong> proves es tancarà i a la<br />
finestra <strong>de</strong> l'editor <strong>de</strong> texts apareixerà una segona pestanya amb el fitxer metro_tb.vhd. La<br />
figura 21 mostra la finestra <strong>de</strong>l Mo<strong>de</strong>lSim en aquesta situació. En aquest fitxer, les línies 1-6<br />
<strong>de</strong>claren l'ús <strong>de</strong> diferents paquets <strong>de</strong> les biblioteques altera, cycloneiii i ieee. Les línies 7-8<br />
<strong>de</strong>claren una entitat anomenada metro_tb que no presenta cap variable genèrica ni cap port<br />
d'entrada/sortida. A la línia 10 es <strong>de</strong>clara l'arquitectura metro_tb_arch <strong>de</strong> l'entitat metro_tb,<br />
1 - 36
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
que acaba a la línia 32. En aquest cas, l'arquitectura té una part <strong>de</strong>clarativa (les línies 11-23) i<br />
un cos (les línies 25-31), separats per la sentència BEGIN (línia 24). La part <strong>de</strong>clarativa <strong>de</strong><br />
l'arquitectura comprèn la <strong>de</strong>claració <strong>de</strong> varis senyals (línies 11-15) i la <strong>de</strong>claració d'un<br />
component anomenat metro (línies 16-23), tots ells a emprar en el cos <strong>de</strong> l'arquitectura. El<br />
component metro correspon al vostre disseny, el qual està <strong>de</strong>finit en l'entitat metro <strong>de</strong>l<br />
fitxer metro_6_1200mv_85c_slow.vho que es troba ubicat al directori <strong>de</strong> treball. Els senyals<br />
corresponen als senyals d'entrada/sortida <strong>de</strong>l vostre disseny. El cos <strong>de</strong> l'arquitectura només<br />
conté, ara per ara, una unitat <strong>de</strong>l component metro anomenada DUT (línies 27-34), amb els<br />
seus ports d'entrada/sortida connectats als senyals abans esmentats.<br />
Figura 21: Fitxer metro_tb.vhd creat per l'ajudant <strong>de</strong> creació <strong>de</strong>l banc <strong>de</strong> proves.<br />
5. Ara cal completar el fitxer metro_tb.vhd amb els processos que han <strong>de</strong> generar els senyals<br />
d'entrada al vostre disseny (clk_hf, ne_origen, ne_final i nsensor). Afegiu al fitxer, al cos<br />
<strong>de</strong> l'arquitectura, els dos processos, clock i sensors, que s'observen a la figura 22. El procés<br />
clock genera el senyal clk_hf (línies 32-38) i el procés sensors genera els altres tres senyals<br />
(línies 39-61). El procés clock complementa el senyal clk_hf cada 10 ns, generant un senyal<br />
simètric <strong>de</strong> freqüència 50 MHz i valor inicial 0. El procés sensors inicialitza i manté els<br />
senyals ne_origen, ne_final i nsensor a 1 durant 2 s (línies 41-44) i <strong>de</strong>sprés entra en un<br />
llaç repetitiu en el que cada 3 s genera un pols negatiu en algun d'aquells senyals amb una<br />
duració <strong>de</strong> 1 s: un pols a ne_origen, tres polsos a nsensor, un pols a ne_final i tres polsos<br />
a nsensor, repetint aquest cicle varis cops.<br />
6. Trieu File Save per <strong>de</strong>sar el fitxer metro_tb.vhd.<br />
7. Tanqueu les dues pestanyes <strong>de</strong> la finestra <strong>de</strong> l'editor <strong>de</strong> texts <strong>de</strong>l Mo<strong>de</strong>lSim.<br />
III) Compilació <strong>de</strong>l banc <strong>de</strong> proves test_metro.vhd. A la barra <strong>de</strong> menús <strong>de</strong>l Mo<strong>de</strong>lSim:<br />
1. Trieu Compile Compile.... S'obrirà la finestra <strong>de</strong> la compilació <strong>de</strong>l Mo<strong>de</strong>lSim. Indiqueu<br />
que voleu compilar el fitxer metro_tb.vhd ubicat al directori .../simulation/mo<strong>de</strong>lsim i que<br />
1 - 37
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
voleu <strong>de</strong>sar la compilació a la biblioteca <strong>de</strong> treball (work). Recor<strong>de</strong>u que aquesta biblioteca<br />
(directori) es troba al directori .../simulation/mo<strong>de</strong>lsim/gate_work.<br />
Figura 22: Processos inclosos al fitxer metro_tb.vhd.<br />
2. Executeu la compilació prement el botó Compile. A la finestra <strong>de</strong> biblioteques, expandiu<br />
les biblioteques work i gate_work per comprovar que ara teniu dues entitats en elles: les<br />
entitats metro i metro_tb. La compilació s'ha pogut realitzar amb èxit gràcies a què la<br />
biblioteca <strong>de</strong> treball contenia l'entitat metro prèviament compilada.<br />
3. Tanqueu la finestra <strong>de</strong> compilació <strong>de</strong>l Mo<strong>de</strong>lSim prement el botó Done.<br />
IV) En<strong>de</strong>gada <strong>de</strong> la simulació. A la barra <strong>de</strong> menús <strong>de</strong>l Mo<strong>de</strong>lSim:<br />
1. Trieu Simulate Start Simulation.... S'obrirà la finestra <strong>de</strong> l'engegada <strong>de</strong> la simulació, que<br />
presenta vàries pestanyes.<br />
2. Seleccioneu la pestanya <strong>de</strong>l disseny. Veureu una llista amb les biblioteques disponibles.<br />
Expandiu la biblioteca gate_work i seleccioneu el disseny metro_tb.vhd.<br />
3. Seleccioneu la pestanya <strong>de</strong> fitxers SDF ("Standard Delay Format") i premeu el botó Add....<br />
S'obrirà una petita finestra per a la introducció <strong>de</strong> fitxers SDF. Com a fitxer SDF, indiqueu<br />
el fitxer metro_6_1200mv_85c_vhd_slow.sdo (po<strong>de</strong>u buscar-lo amb el navegador associat).<br />
Com a regió on aplicar-lo, indiqueu /dut (el fitxer SDF indicat correspon al vostre disseny<br />
<strong>de</strong>l Quartus II i, per tant, al mòdul dut <strong>de</strong>l banc <strong>de</strong> proves). Seleccioneu consi<strong>de</strong>rar els<br />
retards màxims i vali<strong>de</strong>u aquestes da<strong>de</strong>s prement el botó OK.<br />
4. Vali<strong>de</strong>u les da<strong>de</strong>s <strong>de</strong> la finestra <strong>de</strong> l'engegada <strong>de</strong> la simulació prement el botó OK. La<br />
finestra principal <strong>de</strong>l Mo<strong>de</strong>lSim canviarà d'aspecte, quedant estructurada en tres finestres, dues<br />
a dalt i una a baix. La finestra superior esquerre presenta tres pestanyes, una corresponent a<br />
la finestra <strong>de</strong> biblioteques, una altra a la finestra <strong>de</strong> projectes i una tercera a la finestra <strong>de</strong><br />
simulació, sent aquesta darrera pestanya la que està seleccionada i visualitzant-se, per tant,<br />
la finestra <strong>de</strong> simulació. En aquesta finestra es visualitza el conjunt <strong>de</strong> mòduls que intervenen<br />
1 - 38
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
en la simulació, entre els que es troba l'entitat metro_tb. Aquest mòdul apareix seleccionat i<br />
expandit, observant-se que consta <strong>de</strong> tres mòduls: clock, dut i sensors. La finestra superior<br />
dreta és la finestra d'objectes i en ella apareix una llista alfabètica <strong>de</strong>ls objectes (senyals)<br />
<strong>de</strong>l mòdul seleccionat a la finestra <strong>de</strong> simulació. En aquest cas, apareixen els senyals<br />
interns <strong>de</strong>l mòdul metro_tb, els quals coinci<strong>de</strong>ixen amb els senyals d'entrada/sortida <strong>de</strong>l<br />
mòdul dut i, per tant, amb els senyals d'entrada/sortida <strong>de</strong>l vostre disseny (clk_hf, led,<br />
ne_final, ne_origen i nsensor). La finestra inferior continua sent la finestra <strong>de</strong> la transcripció.<br />
La figura 23 mostra la finestra principal <strong>de</strong>l Mo<strong>de</strong>lSim en aquesta situació.<br />
Figura 23: Finestra <strong>de</strong>l Mo<strong>de</strong>lSim en la simulació <strong>de</strong> l'entitat metro_tb.<br />
V) Selecció <strong>de</strong>ls senyals a visualitzar. Es pot visualitzar, en forma <strong>de</strong> cronograma, l'evolució <strong>de</strong><br />
tots els senyals <strong>de</strong>ls elements lògics, mòduls i pads d'entrada/sortida que materialitzen el vostre<br />
disseny sobre el dispositiu lògic programable triat. Ara bé, en general, per po<strong>de</strong>r comprovar el<br />
funcionament <strong>de</strong>l vostre disseny i corregir les possibles erra<strong>de</strong>s comeses no cal observar-los<br />
tots. Sovint n'hi ha prou amb observar alguns d'ells, bàsicament els senyals d'entrada/sortida<br />
(en aquest cas, els senyals clk_hf, ne_origen, ne_final, nsensor i led), el contingut <strong>de</strong>ls registres<br />
i biestables (en aquest cas, els senyals divlimit, clk_lf, sm, sensorf i q) i els senyals <strong>de</strong> rellotge<br />
(ja es troben entre els senyals abans indicats).<br />
1. Poseu el ratolí sobre la finestra d'objectes i premeu el botó dret <strong>de</strong>l ratolí. Es <strong>de</strong>splegarà un<br />
menú d'accions. En aquest menú trieu Add To Wave Signals in Region. S'obrirà una<br />
nova finestra, anomenada finestra <strong>de</strong> les formes d'ona, que permetrà observar gràficament<br />
l'evolució <strong>de</strong>ls senyals seleccionats per ser visualitzats a mesura que la simulació avanci.<br />
Maximitzeu-la. Seguidament, feu click amb el botó dret <strong>de</strong>l ratolí sobre l'espai buit <strong>de</strong>stinat<br />
a barres d'eines i seleccioneu reset a la llista <strong>de</strong> barres d'eines que us apareixerà. La figura 24<br />
mostra la finestra <strong>de</strong> les formes d'ona en aquesta situació. En ella apareixen, a l'esquerra,<br />
els noms <strong>de</strong>ls senyals interns <strong>de</strong>l mòdul metro_tb que estaven llistats a la finestra d'objectes,<br />
però en l'ordre establert a la part <strong>de</strong>clarativa <strong>de</strong> l'arquitectura <strong>de</strong> l'entitat metro_tb (senyals<br />
1 - 39
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
nsensor, ne_final, led, ne_origen i clk_hf). Al costat d'aquests noms apareixen els valors<br />
<strong>de</strong>ls senyals en l'instant actual (també es po<strong>de</strong>n fer aparèixer els valors en l'instant indicat<br />
per un cursor). Com encara no s'ha fet avançar la simulació, el temps actual és 0 ps i tots<br />
els senyals estan in<strong>de</strong>finits (U, "un<strong>de</strong>fined"). Noteu també que el senyal led és un vector <strong>de</strong><br />
4 bits que es pot <strong>de</strong>splegar. A la dreta, apareix el cronograma <strong>de</strong>ls senyals, en el que no<br />
s'observa cap forma d'ona ja que no s'ha fet avançar la simulació.<br />
2. Seleccioneu el mòdul dut a la finestra <strong>de</strong> simulació <strong>de</strong>l Mo<strong>de</strong>lSim. A la finestra d'objectes<br />
podreu ara veure la llista alfabètica <strong>de</strong>ls senyals interns <strong>de</strong>l vostre disseny. Fixeu-vos que el<br />
nom d'aquests senyals coinci<strong>de</strong>ix amb el nom <strong>de</strong>ls senyals observats amb el visualitzador<br />
<strong>de</strong>l mapa tecnològic a l'apartat 6.1 o amb el planificador <strong>de</strong>l xip a l'apartat 6.2.<br />
3. A la finestra d'objectes, fent click amb el botó esquerre <strong>de</strong>l ratolí amb la tecla Ctrl premuda,<br />
seleccioneu els senyals \divf|div2~q\ (és el senyal clk_lf), \divf|divlimit\ (és el vector <strong>de</strong> 24<br />
bits divlimit), \gen-sensorf~q\ (és el senyal sensorf), \on_som|gen-q|45~head_lut_combout\<br />
(és el senyal q1), \on_som|gen-q|46~head_lut_combout\ (és el senyal q0) i, en darrer lloc,<br />
\on_som|gen-sm~1_combout\ (és el senyal sm).<br />
4. Mantenint el cursor <strong>de</strong>l ratolí sobre un <strong>de</strong>ls senyals seleccionats a la finestra d'objectes,<br />
premeu ara el botó dret <strong>de</strong>l ratolí. Es <strong>de</strong>splegarà un menú d'accions. En aquest menú trieu<br />
Add To Wave Selected Signals. Els senyals seleccionats s'afegiran als presents a la<br />
finestra <strong>de</strong> formes d'ona.<br />
Figura 24: Finestra <strong>de</strong> les formes d'ona abans <strong>de</strong> simular l'entitat metro_tb.<br />
VI) Condicionament <strong>de</strong>ls senyals visualitzats. Aquest pas permet visualitzar <strong>de</strong> manera més còmoda<br />
els resultats. Es modificaran els noms <strong>de</strong>ls senyals als noms originals, usualment més curts; es<br />
reor<strong>de</strong>naran els senyals a l'ordre entra<strong>de</strong>s, senyals interns, sorti<strong>de</strong>s; s'expandiran aquells senyals<br />
que convingui (led); i s'elegirà el format apropiat per a cada un <strong>de</strong>ls senyals (tots en binari,<br />
llevat <strong>de</strong> divlimit, que convé indicar en hexa<strong>de</strong>cimal). A la finestra <strong>de</strong> formes d'ona:<br />
1. Feu doble click sobre el nom <strong>de</strong>l primer senyal (/metro_tb/nsensor). S'obrirà una nova<br />
1 - 40
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
finestra, anomenada finestra <strong>de</strong> les propietats <strong>de</strong> l'ona, amb les propietats d'aquest senyal.<br />
Introduïu nsensor com a nom a visualitzar i vali<strong>de</strong>u amb OK.<br />
2. Repetiu el pas 1 per posar els noms originals als altres senyals (per ordre, haurien <strong>de</strong> ser els<br />
noms ne_final, led, ne_origen, clk_hf, clk_lf, divlimit, sensorf, q1, q0 i sm).<br />
3. Premeu el botó esquerre <strong>de</strong>l ratolí sobre el nom <strong>de</strong>l cinquè senyal (clk_hf) i, sense <strong>de</strong>ixar-lo<br />
anar, arrossegueu-lo a la primera <strong>de</strong> les posicions.<br />
4. Repetiu el pas 3 per reor<strong>de</strong>nar els senyals a l'ordre indicat: clk_hf, ne_origen, ne_final,<br />
nsensor, divlimit, clk_lf, sensorf, sm, q1, q0 i led.<br />
5. Expandiu el senyal led fent click sobre el símbol d'expansió associat.<br />
6. Feu doble click sobre el nom <strong>de</strong>l senyal divlimit. S'obrirà la finestra amb les propietats<br />
d'aquest senyal. Trieu hexa<strong>de</strong>cimal com a base numèrica ("radix") a emprar en la seva<br />
visualització i vali<strong>de</strong>u amb OK.<br />
7. Reduïu dins el possible l'amplada <strong>de</strong> les àrees <strong>de</strong>stina<strong>de</strong>s als noms i als valors <strong>de</strong>ls senyals<br />
a fi <strong>de</strong> maximitzar l'àrea <strong>de</strong>stinada al cronograma.<br />
VII) Progrés <strong>de</strong> la simulació. A la finestra <strong>de</strong> la transcripció, en l'espai indicat per a la introducció <strong>de</strong><br />
noves coman<strong>de</strong>s Tcl, escriviu la comanda run 61 us. El Mo<strong>de</strong>lSim avançarà 61 s en la<br />
simulació <strong>de</strong>l vostre disseny i la finestra <strong>de</strong> formes d'ona s'actualitzarà en consonància.<br />
VIII) Anàlisi <strong>de</strong>ls resultats <strong>de</strong> la simulació. A la barra <strong>de</strong> menús <strong>de</strong> la finestra <strong>de</strong> les formes d'ona:<br />
1. Trieu View Zoom Zoom Full a fi <strong>de</strong> veure els 61 s que dura la simulació. La figura<br />
25 mostra la pantalla <strong>de</strong> les formes d'ona en aquesta situació. Noteu que l'instant actual <strong>de</strong><br />
la simulació és 61000000 ps, és a dir, 61 s, i que el valor indicat <strong>de</strong>ls senyals correspon a<br />
aquest temps.<br />
2. Trieu View Zoom Zoom In per augmentar la resolució en el temps. Po<strong>de</strong>u fer-ho<br />
tantes vega<strong>de</strong>s com calgui per observar com actuen els divisors <strong>de</strong> freqüència <strong>de</strong>l mòdul divf.<br />
Figura 25: Finestra <strong>de</strong> les formes d'ona <strong>de</strong>sprés <strong>de</strong> simular l'entitat metro_tb.<br />
1 - 41
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
3. Feu click amb el ratolí situat una mica <strong>de</strong>sprés d'un canvi en algun <strong>de</strong>ls senyals <strong>de</strong> sortida<br />
led. Apareixerà un cursor vertical, anomenat cursor 1, que se situarà exactament sobre aquest<br />
canvi, indicant-se en ps l'instant <strong>de</strong> temps corresponent a la part inferior <strong>de</strong>l cursor. Preneu<br />
nota d'aquest valor. Augmenteu la resolució en el temps al voltant <strong>de</strong>l cursor fins observar<br />
clarament els canvis en el senyal clk_hf. Feu ara click amb el ratolí <strong>de</strong>sprés <strong>de</strong>l flanc <strong>de</strong><br />
pujada <strong>de</strong>l senyal clk_hf immediatament anterior a on éreu abans. El cursor canviarà <strong>de</strong><br />
lloc i us indicarà l'instant d'aquest nou canvi. Preneu nota d'aquest nou valor i calculeu el<br />
temps que hi ha entre els dos canvis esmentats. És el retard <strong>de</strong> propagació <strong>de</strong>l vostre<br />
sistema. Emprant el mèto<strong>de</strong> <strong>de</strong>scrit en el punt anterior, mesureu el retards que hi ha entre el<br />
senyal clk_hf i el senyal clk_lf i entre el senyal clk_lf i el senyal sensorf.<br />
4. Feu una interpretació <strong>de</strong>ls resultats obtinguts i, a partir d'ella, <strong>de</strong>l funcionament global <strong>de</strong>l<br />
projecte metro. Quin és el funcionament <strong>de</strong>l sistema que esteu simulant? És realista? Per<br />
què els senyals sm, q i leds estan in<strong>de</strong>finits durant els 2 s inicials? Què cal fer per a què<br />
aquests senyals <strong>de</strong>ixin d'estar in<strong>de</strong>finits? Què passaria si el primer pols tingués lloc al senyal<br />
nsensor? Què passaria si en arribar als extrems <strong>de</strong> la línia no actuessin els senyals ne_origen<br />
o ne_final, actuant novament el senyal nsensor? Què podria passar si els polsos <strong>de</strong>l senyal<br />
nsensor fossin molt estrets, per exemple, d'un perío<strong>de</strong> <strong>de</strong> clk_hf? I si ho fossin els <strong>de</strong>ls<br />
senyals ne_origen o ne_final? Com haurien <strong>de</strong> ser els senyals d'entrada per inicialitzar el<br />
sistema amb el tren a l'estació final?<br />
5. Deseu el format <strong>de</strong> la simulació triant File Save Format.... S'obrirà una finestra que us<br />
permetrà triar la ubicació i nom <strong>de</strong>l fitxer que ha <strong>de</strong> guardar la seqüència <strong>de</strong> coman<strong>de</strong>s Tcl<br />
que cal fer per obtenir el format <strong>de</strong> la simulació actual (extensió do). Per <strong>de</strong>fecte, el fitxer<br />
s'anomena wave.do i es guarda al directori <strong>de</strong> treball .../simulation/mo<strong>de</strong>lsim, però aquests<br />
valors es po<strong>de</strong>n canviar. El format guardat es pot recuperar triant File Load... a la barra<br />
<strong>de</strong> menús i seleccionat el fitxer wave.do en el navegador que s'ha obert.<br />
IX) Noves simulacions. Es <strong>de</strong>sitja <strong>de</strong>finir i executar noves simulacions que il·lustrin les respostes<br />
a algunes <strong>de</strong> les preguntes <strong>de</strong>l punt anterior, tot comprovant <strong>de</strong>sprés els resultats obtinguts.<br />
Per fer-ho, caldrà modificar el fitxer <strong>de</strong>l banc <strong>de</strong> proves metro_tb.vhd, bàsicament el procés<br />
sensors que genera els senyals ne_origen, ne_final i nsensor. Es recomana anomenar els<br />
successius fitxers que creareu amb noms diferents i <strong>de</strong>sprés treballar amb els nous fitxers.<br />
Po<strong>de</strong>u seguir el següent procediment:<br />
1. En la barra <strong>de</strong> menús <strong>de</strong>l Mo<strong>de</strong>lSim, trieu File Open... per llegir el fitxer <strong>de</strong>l banc <strong>de</strong><br />
proves metro_tb.vhd, modifiqueu-lo i <strong>de</strong>seu-lo amb un altre nom al mateix directori (per<br />
exemple, metro_tb_xxx.vhd) triant File Save As....<br />
2. En el Mo<strong>de</strong>lSim, compileu el nou banc <strong>de</strong> proves test_metro_xxx.vhd. L'entitat metro_tb <strong>de</strong><br />
la biblioteca gate_work es modificarà, però continuarà anomenant-se igual ja que no heu<br />
modificat el seu nom.<br />
3. A la finestra <strong>de</strong> la transcripció <strong>de</strong>l Mo<strong>de</strong>lSim, en l'espai indicat per a la introducció <strong>de</strong> noves<br />
coman<strong>de</strong>s Tcl, escriviu la comanda restart per esborrar la simulació anterior tot mantenint<br />
l'ordre i format <strong>de</strong>ls senyals visualitzats.<br />
4. A la finestra <strong>de</strong> la transcripció <strong>de</strong>l Mo<strong>de</strong>lSim, en l'espai indicat per a la introducció <strong>de</strong> noves<br />
coman<strong>de</strong>s Tcl, escriviu la comanda run 61 us per simular 61 s (si ho creieu convenient,<br />
po<strong>de</strong>u canviar aquesta durada). La finestra <strong>de</strong> formes d'ona s'actualitzarà en consonància.<br />
5. Repetiu els passos 1 a 4 tantes vega<strong>de</strong>s com necessiteu.<br />
IX) Acabament <strong>de</strong> les simulacions. En acabar les simulacions, trieu Simulate End Simulation a<br />
la barra <strong>de</strong> menús <strong>de</strong>l Mo<strong>de</strong>lSim. Es tancaran automàticament la finestra <strong>de</strong>sacoblada <strong>de</strong> les<br />
formes d'ona i les finestres acobla<strong>de</strong>s d'objectes, <strong>de</strong> projectes i <strong>de</strong> la simulació, per tornar a<br />
una situació semblant a la indicada a la figura 20.<br />
1 - 42
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
7.2. Simulació amb un fitxer <strong>de</strong> coman<strong>de</strong>s Tcl<br />
I) Engegada <strong>de</strong>l simulador Mo<strong>de</strong>lSim i compilació <strong>de</strong>l disseny metro. El Mo<strong>de</strong>lSim s'engegaria<br />
<strong>de</strong> la mateixa forma que s'ha engegat a l'apartat 7.1. La seva engegada comportaria, a més a<br />
més, la compilació <strong>de</strong>l vostre disseny (l'entitat metro apareixeria a la biblioteca gate_work).<br />
En aquest cas, ja heu fet aquestes accions com a conseqüència <strong>de</strong> l'execució <strong>de</strong> l'apartat 7.1.<br />
II) Edició <strong>de</strong>l fitxer amb les coman<strong>de</strong>s <strong>de</strong> simulació. Cal editar un fitxer <strong>de</strong> text que contingui la<br />
seqüència <strong>de</strong> coman<strong>de</strong>s Tcl que ha <strong>de</strong> generar els estímuls d'entrada al vostre disseny i fer<br />
avançar la simulació (fitxer amb extensió do). Po<strong>de</strong>u editar aquest fitxer amb qualsevol editor<br />
i donar-li qualsevol nom, però és convenient <strong>de</strong>sar-lo en el mateix directori que el fitxer que<br />
conté el vostre disseny (fitxer metro_6_1200mv_85c_slow.vho, que conté l'entitat metro), és a<br />
dir, al directori .../simulation/mo<strong>de</strong>lsim. Seguidament es <strong>de</strong>talla el procediment a seguir en cas<br />
d'emprar l'editor <strong>de</strong> texts <strong>de</strong>l Mo<strong>de</strong>lSim i anomenar test_metro.do al fitxer. A la barra <strong>de</strong> menús<br />
<strong>de</strong>l Mo<strong>de</strong>lSim:<br />
1. Trieu File New Source Do. S'obrirà la finestra <strong>de</strong> l'editor <strong>de</strong> texts <strong>de</strong>l Mo<strong>de</strong>lSim,<br />
acoblada a la dreta <strong>de</strong> la finestra <strong>de</strong> biblioteques i disposada per a l'edició d'un fitxer anomenat<br />
Untitled-1.do. Ajusteu l'espai corresponent a aquestes dues finestres <strong>de</strong> forma que pugueu<br />
editar el vostre fitxer amb comoditat.<br />
2. No cal prémer la icona <strong>de</strong> plantilles <strong>de</strong> la barra <strong>de</strong>l fitxer font ja que no existeixen plantilles<br />
per a aquest tipus <strong>de</strong> fitxer.<br />
3. Introduïu el text indicat a la figura 26 com a contingut <strong>de</strong>l fitxer test_metro.do. En aquest<br />
text, la comanda <strong>de</strong> la línia 1 or<strong>de</strong>na la simulació <strong>de</strong>l disseny metro tenint en compte el<br />
fitxer <strong>de</strong> retards metro_6_1200mv_85c_vhd_slow.sdo. A conseqüència d'aquesta comanda<br />
s'obriran la finestra <strong>de</strong>sacoblada <strong>de</strong> les formes d'ona i les finestres acobla<strong>de</strong>s d'objectes, <strong>de</strong><br />
projectes i <strong>de</strong> la simulació. Les coman<strong>de</strong>s <strong>de</strong> les línies 2-12 or<strong>de</strong>nen la incorporació <strong>de</strong>ls<br />
senyals indicats amb el format indicat a la finestra <strong>de</strong> les formes d'ona d'acord a l'ordre <strong>de</strong><br />
les coman<strong>de</strong>s. Aquestes coman<strong>de</strong>s són semblants a les coman<strong>de</strong>s presents en el fitxer<br />
wave.do obtingut a l'apartat 7.1. Noteu que s'empra la seqüència <strong>de</strong> símbols \\ per<br />
representar el símbol \. Les coman<strong>de</strong>s <strong>de</strong> les línies 13-14 generen un senyal clk_hf <strong>de</strong><br />
freqüència 50 MHz, simètric i amb un valor inicial 0: la comanda <strong>de</strong> la línia 13 or<strong>de</strong>na<br />
posar el senyal clk_hf a 0 als 0 ns i repetir aquesta acció <strong>de</strong> forma in<strong>de</strong>finida cada 20 ns,<br />
mentre que la comanda <strong>de</strong> la línia 14 or<strong>de</strong>na posar el senyal clk_hf a 1 als 10 ns i repetir<br />
aquesta acció <strong>de</strong> forma in<strong>de</strong>finida cada 20 ns. Les coman<strong>de</strong>s <strong>de</strong> les línies 15-17 forcen els<br />
senyals ne_origen, ne_final i nsensor a 1, mentre que la comanda <strong>de</strong> la línia 18 or<strong>de</strong>na<br />
avançar la simulació 2 s. Les coman<strong>de</strong>s <strong>de</strong> les línies 19-29 <strong>de</strong>fineixen, a partir <strong>de</strong> l'instant<br />
actual, un llaç repetitiu en el que en cada iteració (cada 3 s) es genera un pols negatiu amb<br />
una durada <strong>de</strong> 1 s en algun <strong>de</strong>ls senyals ne_origen, ne_final i nsensor. La seqüència <strong>de</strong><br />
polsos és: un pols a ne_origen, tres polsos a nsensor, un pols a ne_final i tres polsos a<br />
nsensor, repetint-se aquesta seqüència varis cops. Noteu que les expressions matemàtiques<br />
es posen entre claudàtors per obtenir el valor numèric resultant <strong>de</strong> l'expressió. La comanda<br />
<strong>de</strong> la línia 18 or<strong>de</strong>na avançar la simulació 59 s, generant-se, doncs, un total <strong>de</strong> 20 polsos<br />
<strong>de</strong>l abans esmentats. Finalment, la comanda <strong>de</strong> la línia 32 or<strong>de</strong>na veure tot el temps <strong>de</strong><br />
simulació (un total <strong>de</strong> 61 s) en la finestra <strong>de</strong> les formes d'ona.<br />
4. Trieu File Save As... i <strong>de</strong>seu el fitxer al directori .../simulation/mo<strong>de</strong>lsim amb el nom<br />
test_metro.do.<br />
5. Tanqueu la finestra <strong>de</strong> l'editor <strong>de</strong> texts.<br />
III) Execució <strong>de</strong> la simulació. A la finestra <strong>de</strong> la transcripció, en l'espai indicat per a la introducció<br />
<strong>de</strong> noves coman<strong>de</strong>s Tcl, escriviu la comanda do test_metro.do. El Mo<strong>de</strong>lSim executarà les<br />
coman<strong>de</strong>s presents al fitxer test_metro.do. S'obriran les finestres acobla<strong>de</strong>s d'objectes, <strong>de</strong><br />
1 - 43
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
projectes i <strong>de</strong> la simulació i la finestra <strong>de</strong>sacoblada <strong>de</strong> les formes d'ona i la simulació avançarà<br />
alternant-se vàries vega<strong>de</strong>s en pantalla la finestra principal <strong>de</strong>l Mo<strong>de</strong>lSim i la finestra <strong>de</strong> les<br />
formes d'ona, per acabar en la finestra principal <strong>de</strong>l Mo<strong>de</strong>lSim.<br />
Figura 26: Fitxer test_metro.do amb les coman<strong>de</strong>s per a la simulació <strong>de</strong>l disseny metro.<br />
IV) Anàlisi <strong>de</strong>ls resultats <strong>de</strong> la simulació.<br />
1. Accediu a la finestra <strong>de</strong> les formes d'ona i maximitzeu-la. Reduïu dins el possible l'amplada<br />
<strong>de</strong> les àrees <strong>de</strong>stina<strong>de</strong>s als noms i als valors <strong>de</strong>ls senyals a fi <strong>de</strong> maximitzar l'àrea <strong>de</strong>stinada<br />
al cronograma.<br />
2. Comproveu que l'instant actual <strong>de</strong> la simulació és 61000000 ps, és a dir, 61 s, i que el<br />
valor indicat <strong>de</strong>ls senyals correspon a aquest temps.<br />
3. A la barra <strong>de</strong> menús d'aquesta finestra trieu View Zoom Zoom Full a fi <strong>de</strong> veure tota la<br />
simulació amb el màxim <strong>de</strong>tall. Comproveu que les formes d'ona obtingu<strong>de</strong>s coinci<strong>de</strong>ixen<br />
amb les obtingu<strong>de</strong>s a l'apartat 7.1 (figura 25).<br />
V) Noves simulacions. Per dur a terme noves simulacions, caldrà modificar el fitxer <strong>de</strong> coman<strong>de</strong>s<br />
test_metro.do i executar-lo. Es recomana anomenar els successius fitxers que creareu amb<br />
noms diferents i <strong>de</strong>sprés treballar amb els nous fitxers. Po<strong>de</strong>u seguir el següent procediment:<br />
1. En la barra <strong>de</strong> menús <strong>de</strong>l Mo<strong>de</strong>lSim, trieu File Open... per llegir el fitxer <strong>de</strong> coman<strong>de</strong>s<br />
test_metro.do, modifiqueu-lo i <strong>de</strong>seu-lo amb un altre nom al mateix directori (per exemple,<br />
test_metro_xxx.do) triant File Save As....<br />
2. A la finestra <strong>de</strong> la transcripció <strong>de</strong>l Mo<strong>de</strong>lSim, en l'espai indicat per a la introducció <strong>de</strong> noves<br />
coman<strong>de</strong>s Tcl, escriviu la comanda do test_metro_xxx.do per simular <strong>de</strong> nou el vostre<br />
disseny. La finestra <strong>de</strong> formes d'ona s'actualitzarà en consonància.<br />
3. Repetiu els passos 1 a 2 tantes vega<strong>de</strong>s com necessiteu.<br />
1 - 44
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
VI) Acabament <strong>de</strong> les simulacions. En acabar les simulacions, trieu Simulate End Simulation a<br />
la barra <strong>de</strong> menús <strong>de</strong>l Mo<strong>de</strong>lSim. Es tancaran automàticament la finestra <strong>de</strong>sacoblada <strong>de</strong> les<br />
formes d'ona i les finestres acobla<strong>de</strong>s d'objectes, <strong>de</strong> projectes i <strong>de</strong> la simulació. Seguidament,<br />
tanqueu la finestra principal <strong>de</strong>l Mo<strong>de</strong>lSim.<br />
8. VERIFICACIÓ EXPERIMENTAL DEL DISSENY<br />
Un cop verificat per simulació el projecte metro, el seu disseny s'ha <strong>de</strong> modificar lleugerament per<br />
adaptar-lo a la freqüència real <strong>de</strong> funcionament. Seguidament, el projecte s'ha <strong>de</strong> compilar <strong>de</strong> nou,<br />
incloent-hi en aquesta compilació l'etapa <strong>de</strong> generació <strong>de</strong>ls fitxers necessaris per a la programació<br />
<strong>de</strong>l dispositiu ("assembler"). Disposant d'aquests fitxers, es pot procedir a programar el dispositiu<br />
EP3C16F484C6N <strong>de</strong> la placa educativa DE0 d'ALTERA/Terasic sobre la pròpia placa (ISP o "In<br />
System Programming"), per a la qual cosa connectareu la placa al vostre PC mitjançant el cable<br />
anomenat "USB Blaster" i executareu en el PC un sistema <strong>de</strong> programació basat en l'estàndard<br />
JTAG. Aquest estàndard, en principi orientat al test a nivell sistema, es basa en: 1) l'existència d'un<br />
registre <strong>de</strong> <strong>de</strong>splaçament que recorre els diferents dispositius existents a la placa, un rera l'altre<br />
(ca<strong>de</strong>na), <strong>de</strong> forma que cada biestable d'aquest registre està associat a un senyal d'entrada/sortida<br />
d'un dispositiu; i 2) un protocol <strong>de</strong> <strong>de</strong>splaçament en sèrie i bolcat en paral·lel <strong>de</strong> la informació,<br />
gràcies al qual es po<strong>de</strong>n forçar valors a les entra<strong>de</strong>s <strong>de</strong>ls dispositius i llegir l'estat <strong>de</strong> les seves<br />
sorti<strong>de</strong>s. Finalment, es verificarà experimentalment el disseny.<br />
I) Adaptació <strong>de</strong>l projecte metro a la freqüència real <strong>de</strong> funcionament. Com s'ha indicat a l'apartat<br />
3, a fi <strong>de</strong> no allargar massa les simulacions, en el disseny <strong>de</strong>l projecte metro que heu realitzat<br />
fins ara s'ha emprat un senyal <strong>de</strong> rellotge clk_lf <strong>de</strong> freqüència 5/3 MHz (perío<strong>de</strong> 600 ns) en<br />
lloc d'un senyal <strong>de</strong> freqüència 5/3 Hz (perío<strong>de</strong> 600 ms). Ha arribat l'hora d'adaptar el projecte<br />
metro a la freqüència real d'aquest senyal <strong>de</strong> rellotge. A tal fi, n'hi ha prou amb modificar el<br />
divisor <strong>de</strong> freqüència que permet obtenir el rellotge <strong>de</strong> baixa freqüència clk_lf, convertint-lo<br />
d'un divisor per N = 30 a un divisor per N = 30.000.000. Realitzeu les següents accions:<br />
1. Obriu el fitxer divf.vhd, modifiqueu el valor <strong>de</strong> la constant limit <strong>de</strong> 15 a 15.000.000 i salveu<br />
el fitxer.<br />
2. A la barra <strong>de</strong> menús <strong>de</strong>l Quartus II, trieu Assignments Settings... a fi d'obrir la finestra<br />
<strong>de</strong> configuracions. En ella, seleccioneu els paràmetres <strong>de</strong>l procés <strong>de</strong> compilació i marqueu<br />
les opcions Preserve fewer no<strong>de</strong> names to save disk space i Run Assembler during compilation.<br />
Vali<strong>de</strong>u els canvis fets amb OK. La finestra <strong>de</strong> configuracions es tancarà.<br />
3. Compileu novament el projecte metro. La compilació acabarà amb èxit i 9 advertiments. El<br />
vostre disseny continuarà requerint 69 elements lògics <strong>de</strong>ls 15.408 que hi ha al dispositiu<br />
EP3C16F484C6. En el report <strong>de</strong> la compilació, expandiu els resultats <strong>de</strong>l TimeQuest Timing<br />
Analyzer i comproveu que les màximes freqüències a les que po<strong>de</strong>n oscil·lar els senyals <strong>de</strong><br />
rellotge <strong>de</strong>l vostre disseny són molt superiors a les freqüències que heu especificat.<br />
4. Tanqueu la finestra <strong>de</strong>l report <strong>de</strong> la compilació.<br />
II) Connexionat i alimentació <strong>de</strong> la placa educativa DE0 d'ALTERA/Terasic.<br />
1. Sense tenir-lo endollat a la xarxa elèctrica, connecteu el cable d'alimentació al connector<br />
d'alimentació <strong>de</strong> la placa educativa DE0 d'ALTERA/Terasic (és el connector situat al vèrtex<br />
superior esquerre <strong>de</strong> la placa, molt proper a l'interruptor vermell <strong>de</strong> posada en marxa. No<br />
endolleu encara a la xarxa el cable d'alimentació.<br />
2. Connecteu l'extrem adient <strong>de</strong>l cable "USB Blaster" a un port USB <strong>de</strong>l vostre PC i l'altre<br />
extrem al connector USB <strong>de</strong> la placa educativa DE0 d'ALTERA/Terasic. Aquest connector<br />
està situat a la dreta <strong>de</strong>l connector d'alimentació.<br />
1 - 45
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
3. Verifiqueu que el commutador SW11, que es troba a l'esquerra <strong>de</strong>ls set-segments, es troba<br />
a la posició RUN. Amb aquest commutador en aquesta posició succeeixen dues coses: en<br />
primer lloc, es transfereix el contingut <strong>de</strong> la memòria EEPROM sèrie EPCS4 al dispositiu<br />
lògic programable EP3C16F484C6N cada cop que es dóna alimentació a la placa i, en segon<br />
lloc, quan es fa una programació es programa directament el dispositiu lògic programable<br />
EP3C16F484C6N. En canvi, si aquest commutador es trobés en la posició PROG, no es<br />
transferiria el contingut <strong>de</strong> la memòria EEPROM al dispositiu lògic programable en donar<br />
alimentació a la placa i, d'altra banda, en fer una programació es programaria la memòria<br />
EEPROM en lloc <strong>de</strong>l dispositiu lògic programable.<br />
4. Endolleu el cable d'alimentació a la xarxa elèctrica.<br />
5. Premeu l'interruptor vermell <strong>de</strong> posada en marxa. Com el commutador SW11 es troba en la<br />
posició RUN, el dispositiu lògic programable es programa amb el contingut <strong>de</strong> la memòria<br />
EEPROM i comença a treballar en la forma establerta per aquest contingut. La memòria<br />
EEPROM conté, <strong>de</strong> fàbrica, una aplicació <strong>de</strong> prova <strong>de</strong> la placa que, entre d'altres coses, fa<br />
que tots els set-segments visualitzin cíclicament els dígits hexa<strong>de</strong>cimals 0 a F i que els LEDs<br />
s'encenguin i apaguin simulant una oscil·lació lluminosa. Això és el que hauríeu d'observar.<br />
III) Engegada <strong>de</strong>l programador i selecció <strong>de</strong>l hardware. A la barra <strong>de</strong> menús <strong>de</strong>l Quartus II:<br />
1. Trieu Tools Programmer. S'obrirà la finestra <strong>de</strong>l programador <strong>de</strong>l Quartus II. Modifiqueu<br />
les seves dimensions fins que presenti un aspecte semblant a l'indicat a la figura 27.<br />
2. És molt probable que en aquesta finestra s'indiqui que no teniu cap hardware <strong>de</strong> programació<br />
seleccionat amb el text "No hardware" en un camp a l'efecte. Per seleccionar-lo, premeu el<br />
botó Hardware Setup.... Apareixerà la finestra d'aquesta utilitat amb dues pestanyes.<br />
3. Trieu la pestanya Hardware Settings i seleccioneu USB-Blaster com a tipus <strong>de</strong> hardware fent<br />
doble click damunt d'aquesta opció. Aquesta opció apareixerà com a hardware seleccionat.<br />
Tanqueu la finestra prement el botó Close.<br />
Figura 27: Finestra <strong>de</strong>l programador <strong>de</strong> l'entorn Quartus II.<br />
IV) Definició <strong>de</strong> la configuració <strong>de</strong> la ca<strong>de</strong>na JTAG. Aquesta configuració és una llista or<strong>de</strong>nada<br />
amb els noms <strong>de</strong>ls fitxers <strong>de</strong> programació que voleu transmetre per la ca<strong>de</strong>na JTAG. L'ordre<br />
1 - 46
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
<strong>de</strong>ls fitxers en la llista ha <strong>de</strong> correspondre, en cas d'haver-hi varis dispositius a la placa, a<br />
l'ordre <strong>de</strong>ls dispositius en la ca<strong>de</strong>na. Un cop <strong>de</strong>finida, la configuració <strong>de</strong> la ca<strong>de</strong>na JTAG es<br />
pot salvar en un fitxer que es pot utilitzar més endavant per evitar haver-la <strong>de</strong> tornar a <strong>de</strong>finir.<br />
1. Seleccioneu JTAG com a mo<strong>de</strong> <strong>de</strong> programació.<br />
2. Comproveu que a la llista només teniu el fitxer metro.sof i que aquest fitxer està concebut<br />
per al dispositiu lògic programable EP3C16F484. Si no és així, esborreu tots els fitxers <strong>de</strong><br />
la llista (seleccioneu i premeu el botó Delete) i afegiu el fitxer en qüestió que s'ha <strong>de</strong> trobar<br />
al directori <strong>de</strong> treball <strong>de</strong>l Quartus II (premeu el botó Add File... i cerqueu el fitxer).<br />
3. Premeu el botó Auto Detect per a què el sistema verifiqui <strong>de</strong> forma automàtica si la vostra<br />
llista <strong>de</strong> fitxers <strong>de</strong> programació és compatible amb la ca<strong>de</strong>na <strong>de</strong> dispositius que formen la<br />
ca<strong>de</strong>na JTAG. Si tot ho heu fet bé, no hauríeu d'obtenir cap missatge d'error.<br />
V) Programació <strong>de</strong>l dispositiu lògic programable EP3C16F484C6N.<br />
1. Marqueu l'opció Program/Configure associada al fitxer <strong>de</strong> programació que heu introduït.<br />
2. Premeu el botó Start <strong>de</strong> la finestra <strong>de</strong>l programador. Observareu com avança la seqüència<br />
<strong>de</strong> programació.<br />
3. Triant File Save a la barra <strong>de</strong> menús <strong>de</strong> la finestra <strong>de</strong>l programador, <strong>de</strong>seu la ca<strong>de</strong>na <strong>de</strong><br />
programació que teniu <strong>de</strong>finida en un fitxer anomenat per <strong>de</strong>fecte metro.cdf.<br />
4. Tanqueu la finestra <strong>de</strong>l programador <strong>de</strong>l Quartus II.<br />
VI) Verificació experimental <strong>de</strong>l disseny.<br />
1. Com estan inicialment els LEDs? En quina situació (estació, sentit <strong>de</strong> moviment) es troba<br />
el tren? Per què s'ha inicialitzat així el vostre disseny?<br />
2. Premeu el polsador BUTTON0 <strong>de</strong> la placa (el situat més a la dreta), que genera el senyal<br />
ne_origen. Com passen a estar els LEDs? En quina estació es troba el tren? És correcte?<br />
3. Premeu el polsador BUTTON2 <strong>de</strong> la placa (el situat més a l'esquerra), que genera el senyal<br />
ne_final. Com passen a estar els LEDs? En quina estació es troba el tren? És correcte?<br />
4. Premeu, durant un mínim <strong>de</strong> 600 ms, el polsador BUTTON1 <strong>de</strong> la placa (el situat enmig),<br />
que genera el senyal nsensor. Com passen a estar els LEDs? En quina estació es troba ara<br />
el tren? És correcte?<br />
5. Repetiu el punt 4 fins arribar a l'altre extrem <strong>de</strong> la línia, però canviant la durada <strong>de</strong>l pols.<br />
Comproveu que és el que passa (sovint, no sempre) quan el pols generat amb BUTTON1<br />
és molt curt.<br />
6. Continueu excitant els senyals d'entrada al vostre disseny tal com heu fet a la simulació. És<br />
correcte el funcionament <strong>de</strong>l vostre disseny?<br />
VII) Desconnexió <strong>de</strong> la placa, preservació <strong>de</strong>l projecte i sortida <strong>de</strong> l'entorn. Un cop completada la<br />
verificació experimental, feu el següent procediment per <strong>de</strong>sconnectar la placa i sortir <strong>de</strong><br />
l'entorn:<br />
1. Premeu l'interruptor vermell <strong>de</strong> posada en marxa per <strong>de</strong>ixar d'alimentar la placa.<br />
2. Desendolleu <strong>de</strong> la xarxa elèctrica el cable d'alimentació.<br />
3. Desconnecteu el cable d'alimentació <strong>de</strong> la placa.<br />
4. Desconnecteu el cable "USB Blaster" <strong>de</strong> la placa i <strong>de</strong>l PC.<br />
5. Guar<strong>de</strong>u tota la informació relativa al projecte triant File Save Project a la barra <strong>de</strong><br />
menús <strong>de</strong>l Quartus II.<br />
6. Tanqueu el projecte triant File Close Project a la barra <strong>de</strong> menús <strong>de</strong>l Quartus II.<br />
7. Tanqueu la finestra principal <strong>de</strong>l Quartus II per tornar a Windows.<br />
1 - 47
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 1<br />
9. AMPLIACIÓ DEL PROJECTE<br />
Es proposa que modifiqueu el projecte ampliant-lo a un total <strong>de</strong> set estacions. Es recomana que feu<br />
una còpia <strong>de</strong>l directori <strong>de</strong>l projecte metro (directori metro4) sobre un altre directori (per exemple,<br />
un anomenat metro7) i que comenceu obrint el projecte metro que es troba al nou directori. Noteu<br />
que el projecte es pot dir igual que l'anterior ja que està ubicat a un altre directori.<br />
Modifiqueu adientment els fitxers on_som.bdf, s_fix.vhd, s_int.vhd, divf.vhd i metro.bdf. Noteu que<br />
les entra<strong>de</strong>s <strong>de</strong>l sistema seran les mateixes i que el nombre <strong>de</strong> sorti<strong>de</strong>s s'incrementaran a 7 (led6 a<br />
led0). També necessitareu un bit més per codificar l'estat q <strong>de</strong>l metro.<br />
Compileu el projecte tot mantenint la ubicació en el xip <strong>de</strong>ls senyals abans existents i assignant a les<br />
tres sorti<strong>de</strong>s addicionals (led6 a led4) els pins PIN_C1, PIN_E1 i PIN_F2 <strong>de</strong>l xip, respectivament. No<br />
cal que torneu a fixar els altres paràmetres i/o opcions que condicionen la compilació, ja que<br />
aquests van quedar registrats en el projecte anterior.<br />
Simuleu el projecte per veure si és correcte. Haureu <strong>de</strong> modificar adientment l'evolució <strong>de</strong> les<br />
entra<strong>de</strong>s al sistema, ja que ara hi ha sis sorti<strong>de</strong>s d'estació en un recorregut d'extrem a extrem <strong>de</strong> la<br />
línia. No cal que modifiqueu la durada total <strong>de</strong> la simulació (simulareu menys recorreguts). Pareu<br />
atenció al divisor <strong>de</strong> freqüència que cal emprar en les simulacions.<br />
Un cop verificat el projecte via simulació, modifiqueu el divisor <strong>de</strong> freqüència per obtenir la versió<br />
emprada en la verificació experimental. Compileu la nova versió.<br />
Programeu el dispositiu EP3C16F484C6N <strong>de</strong> la placa educativa DE0 d'ALTERA/Terasic amb la<br />
nova versió <strong>de</strong>l projecte.<br />
Verifiqueu el disseny experimentalment tot actuant sobre els polsadors BUTTON2 a BUTTON0 <strong>de</strong><br />
la placa educativa DE0 d'ALTERA/Terasic.<br />
1 - 48
SISTEMES ELECTRÒNICS<br />
ÍNDEX<br />
DIGITALS<br />
PRÀCTICA 2<br />
INTRODUCCIÓ AL DISSENY DE SISTEMES<br />
DIGITALS EMPRANT VHDL<br />
1. OBJECTIUS .................................................................................................................................... 3<br />
2. PREPARACIÓ ................................................................................................................................. 3<br />
3. ESPECIFICACIONS ....................................................................................................................... 4<br />
4. ESTRUCTURA I COMPORTAMENT DEL CIRCUIT ................................................................. 5<br />
5. BIBLIOTEQUES D'USUARI ......................................................................................................... 8<br />
6. EDICIÓ DEL DISSENY ............................................................................................................... 10<br />
6.1. Implementació <strong>de</strong> la biblioteca d'usuari bibsed <strong>de</strong>l Quartus II. .............................................. 11<br />
6.2. Implementació <strong>de</strong> la biblioteca d'usuari compilada bibsed <strong>de</strong>l Mo<strong>de</strong>lSim. ............................ 12<br />
6.3. Creació <strong>de</strong>l projecte cronometre. ............................................................................................ 13<br />
6.4. Implementació <strong>de</strong> l'entitat cronometre. ................................................................................... 13<br />
7. COMPILACIÓ I VERIFICACIÓ FUNCIONAL DEL DISSENY ............................................... 18<br />
7.1. Preparació <strong>de</strong> l'entorn i generació <strong>de</strong> la base <strong>de</strong> da<strong>de</strong>s <strong>de</strong>l disseny (anàlisi i síntesi) ............. 18<br />
7.2. Simulació funcional <strong>de</strong>l projecte. ............................................................................................ 18<br />
8. COMPILACIÓ I VERIFICACIÓ TEMPORAL DEL DISSENY ................................................. 19<br />
8.1. Preparació <strong>de</strong> l'entorn i compilació completa <strong>de</strong>l projecte. .................................................... 19<br />
8.2. Simulació temporal <strong>de</strong>l projecte. ............................................................................................ 20<br />
9. IMPLEMENTACIÓ DEL DISSENY SOBRE EL DISPOSITIU LÒGIC PROGRAMABLE ..... 22
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 2<br />
2 - 2
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 2<br />
INTRODUCCIÓ AL DISSENY DE SISTEMES DIGITALS EMPRANT VHDL<br />
1. OBJECTIUS<br />
Aquesta pràctica té per objectiu aprofundir en la metodologia <strong>de</strong> disseny <strong>de</strong> circuits digitals <strong>de</strong>scrits<br />
totalment en VHDL. A tal fi, es <strong>de</strong>sitja dissenyar en VHDL un cronòmetre que, a partir d'un senyal<br />
periòdic clk100 <strong>de</strong> freqüència 100 Hz, comptabilitzi el temps transcorregut (segons i centèsimes <strong>de</strong><br />
segon) i el mostri en un visualitzador integrat per quatre set-segments en àno<strong>de</strong> comú. El cronòmetre<br />
ha <strong>de</strong> tenir una resolució <strong>de</strong> 0,01 segons i ha <strong>de</strong> po<strong>de</strong>r visualitzar un temps màxim <strong>de</strong> 99,99 segons.<br />
Aquest cronòmetre s'ha d'implementar sobre el dispositiu lògic programable EP3C16F484C6N <strong>de</strong> la<br />
família Cyclone III d'ALTERA existent a la placa educativa DE0 d'ALTERA/Terasic fent servir els<br />
paquets <strong>de</strong> CAD electrònic Quartus II i Mo<strong>de</strong>lSim introduïts a la pràctica 1.<br />
Ara bé, en aquesta pràctica es <strong>de</strong>mana que verifiqueu el funcionament <strong>de</strong>l vostre disseny en VHDL<br />
abans <strong>de</strong> procedir a la seva síntesi sobre el dispositiu lògic programable. Aquesta verificació es pot fer<br />
amb el simulador <strong>de</strong> llenguatges <strong>de</strong> <strong>de</strong>scripció <strong>de</strong> hardware Mo<strong>de</strong>lSim, si bé emprant-lo <strong>de</strong> forma<br />
quelcom diferent a com ha estat emprat a la pràctica 1. En la pràctica 1, el simulador va partir d'una<br />
<strong>de</strong>scripció estructural totalment plana <strong>de</strong>l vostre disseny, la qual vàreu obtenir dins un únic fitxer<br />
amb extensió vho en sintetitzar-lo sobre el dispositiu lògic programable. Aquesta <strong>de</strong>scripció estructural<br />
totalment plana era <strong>de</strong> baix nivell, basada en uns components que representaven els elements lògics<br />
(LEs) <strong>de</strong>l dispositiu lògic programable, i en ella havien <strong>de</strong>saparegut alguns senyals <strong>de</strong>l vostre disseny<br />
original, com ara els senyals yn, sf o si. A més a més, disposàveu d'un fitxer amb extensió sdo que<br />
contenia els retards <strong>de</strong>ls senyals sintetitzats. En canvi, ara es vol partir d'una <strong>de</strong>scripció d'alt nivell<br />
<strong>de</strong>l vostre disseny, en part estructural i en part funcional, i molt sovint integrada per varis fitxers<br />
amb extensió vhd en ser una <strong>de</strong>scripció jeràrquica en la que s'utilitzen components no estàndards<br />
prèviament <strong>de</strong>finits per l'usuari i localitzats dins biblioteques d'usuari. A més a més, voleu veure<br />
tots els vostres senyals, <strong>de</strong>ls quals <strong>de</strong>sconeixeu els retards que tindran en una implementació física.<br />
En aquesta pràctica també es vol fer èmfasi en la creació i utilització <strong>de</strong> biblioteques d'usuari, les<br />
quals contindran paquets amb components <strong>de</strong>finits per l'usuari que podran ser emprats, no només en<br />
el disseny d'aquesta pràctica, sinó també en altres possibles futurs dissenys.<br />
Un cop verificat el funcionament <strong>de</strong>l vostre disseny en VHDL, procedireu a sintetitzar-lo sobre el<br />
dispositiu lògic programable EP3C16F484C6N i a verificar el seu comportament temporal.<br />
Finalment, per verificar experimentalment el disseny, programareu el dispositiu EP3C16F484C6N<br />
existent a la placa educativa DE0 d'ALTERA/Terasic. Recor<strong>de</strong>u que en aquesta placa només es<br />
disposa d'un senyal <strong>de</strong> rellotge clkin <strong>de</strong> freqüència 50 MHz i, en conseqüència, caldrà incorporar un<br />
divisor <strong>de</strong> freqüència addicional que permeti obtenir el senyal <strong>de</strong> rellotge clk100 a partir <strong>de</strong>l senyal<br />
<strong>de</strong> rellotge clkin (divisor per 500.000). Es recomana que aquest divisor <strong>de</strong> freqüència es redueixi a<br />
la mínima expressió (divisor per 2) en les fases <strong>de</strong> verificació <strong>de</strong>l vostre disseny mitjançant simulació<br />
<strong>de</strong>scrites anteriorment a fi <strong>de</strong> reduir el temps d'execució <strong>de</strong> les simulacions.<br />
2. PREPARACIÓ<br />
Repasseu l'enunciat <strong>de</strong> la pràctica 1, en la que es va introduir el paquet <strong>de</strong> CAD electrònic Quartus II,<br />
a fi <strong>de</strong> refrescar la metodologia <strong>de</strong> disseny a seguir. Llegiu-vos <strong>de</strong>tingudament tot l'enunciat d'aquesta<br />
pràctica, fixant-vos especialment en els nous coneixements <strong>de</strong> VHDL introduïts. Analitzeu el codi<br />
VHDL <strong>de</strong>ls diferents elements que constitueixen el disseny.<br />
2 - 3
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 2<br />
3. ESPECIFICACIONS<br />
Com s'ha indicat a l'apartat d'objectius, es <strong>de</strong>sitja dissenyar un cronòmetre que, a partir d'un senyal<br />
periòdic <strong>de</strong> freqüència 100 Hz, comptabilitzi el temps que ha passat <strong>de</strong>s <strong>de</strong> la posada en marxa <strong>de</strong>l<br />
cronòmetre i el mostri en un visualitzador integrat per quatre set-segments en àno<strong>de</strong> comú emprant<br />
el format "SS.CC", on SS són els segons i CC les centèsimes <strong>de</strong> segon, estant ambdues quantitats<br />
separats per un punt <strong>de</strong>cimal. En cas d'excedir el temps màxim que es pot visualitzar (99,99 segons),<br />
es mostrarà pel visualitzador una indicació d'error amb el text " Err" (noteu que el caràcter mostrat<br />
pel primer set-segments és un espai en blanc).<br />
Per a la posada en marxa i aturada <strong>de</strong>l cronòmetre es disposa d'un polsador a l'efecte, <strong>de</strong>nominat<br />
START/STOP. Quan es prem aquest polsador estant el cronòmetre aturat, el temps s'inicialitza a 0 i<br />
el cronòmetre es posa en marxa, mostrant-se el temps en curs en el visualitzador. Quan es prem<br />
aquest polsador estant el cronòmetre en marxa, el cronòmetre s'atura, mostrant-se el temps final en<br />
el visualitzador. Inicialment, el cronòmetre està aturat i inicialitzat a 0.<br />
El sistema disposa d'un segon polsador, <strong>de</strong>nominat ACTUAL/MEM, que permet memoritzar el temps<br />
en curs en un registre i visualitzar el contingut d'aquest registre. Quan el cronòmetre està en marxa i<br />
es prem aquest polsador, el temps en curs queda memoritzat en el registre, per<strong>de</strong>nt-se el contingut<br />
que aquest registre pogués tenir llavors (per exemple, un altre valor memoritzat amb anterioritat).<br />
Quan el cronòmetre està aturat, el valor mostrat en el visualitzador es pot seleccionar entre el temps<br />
final i el temps memoritzat al registre actuant sobre el polsador ACTUAL/MEM: cada nova premuda<br />
d'aquest polsador permet commutar <strong>de</strong> la variable visualitzada a l'altra. Tant si s'està mostrant un<br />
<strong>de</strong>ls temps o l'altre, el registre es posa a 0 i es passa a veure el temps en curs quan es prem el<br />
polsador START/STOP.<br />
Els quatre set-segments que s'empren en el sistema són <strong>de</strong> tipus àno<strong>de</strong> comú (connectat a VCC) i es<br />
coman<strong>de</strong>n directament <strong>de</strong>s <strong>de</strong>l dispositiu lògic programable (els buffers <strong>de</strong> sortida s'encarreguen <strong>de</strong><br />
limitar el corrent). Cada segment es controla via una sortida in<strong>de</strong>pen<strong>de</strong>nt activa per nivell baix: un<br />
nivell baix ("0") a la sortida implica segment il·luminat, mentre que un nivell alt a la sortida ("1")<br />
implica segment apagat. Els quatre set-segments <strong>de</strong> la placa educativa DE0 d'ALTERA/Terasic es<br />
troben precablejats, forçant la ubicació <strong>de</strong>ls senyals que els controlen. El mateix succeeix amb els<br />
corresponents punts <strong>de</strong>cimals, els quals convé també controlar a fi d'evitar que s'encenguin/apaguin<br />
discrecionalment en virtut <strong>de</strong>l resultat <strong>de</strong> la compilació <strong>de</strong>l projecte.<br />
Els polsadors <strong>de</strong> la placa educativa DE0 d'ALTERA/Terasic estan precablejats i actuen per nivell<br />
baix, és a dir, estan normalment a nivell alt ("1") i generen un nivell baix ("0") quan es premen. Com<br />
a polsador START/STOP s'emprarà el polsador BUTTON2 i com a polsador ACTUAL/MEM, el<br />
polsador BUTTON1.<br />
No es consi<strong>de</strong>ra cap senyal global d'inicialització, ja que el dispositiu EP3C16F484C6N incorpora<br />
un mecanisme <strong>de</strong> "power-on reset" que serveix per inicialitzar a 0 el contingut <strong>de</strong> tots els biestables i<br />
registres <strong>de</strong>l vostre disseny quan es configura el dispositiu lògic programable.<br />
En conseqüència, el circuit digital a dissenyar ha <strong>de</strong> presentar les següents entra<strong>de</strong>s i sorti<strong>de</strong>s:<br />
- clkin: Senyal <strong>de</strong> rellotge <strong>de</strong> freqüència 50 MHz actiu per flanc <strong>de</strong> pujada. Aquest<br />
senyal entra a un divisor <strong>de</strong> freqüència per 500.000 encarregat <strong>de</strong> generar el<br />
senyal <strong>de</strong> rellotge clk100 <strong>de</strong> freqüència 100 Hz. En les simulacions, aquest<br />
divisor <strong>de</strong> freqüència queda reduït a un divisor per 2. Es connecta al pin G21<br />
<strong>de</strong>l xip.<br />
2 - 4
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 2<br />
- nstart_nstop: Entrada provinent <strong>de</strong>l polsador START/STOP (BUTTON2) emprat per posar<br />
en marxa i aturar el cronòmetre. Presenta un nivell alt en repòs i un nivell<br />
baix quan es prem el polsador. Es connecta al pin F1 <strong>de</strong>l xip.<br />
- nactual_nmem: Entrada provinent <strong>de</strong>l polsador ACTUAL/MEM (BUTTON1) emprat per<br />
seleccionar el paràmetre visualitzat. Presenta un nivell alt en repòs i un nivell<br />
baix quan es prem el polsador. Es connecta al pin G3 <strong>de</strong>l xip.<br />
- nss_<strong>de</strong>cenes_s(6..0): Sorti<strong>de</strong>s <strong>de</strong> control <strong>de</strong>ls segments g, f, e, d, c, b i a, respectivament, <strong>de</strong>l setsegments<br />
HEX3 <strong>de</strong>stinat a visualitzar les <strong>de</strong>senes <strong>de</strong>ls segons. Són actives<br />
per nivell baix. Es connecten, respectivament, als pins G15, D19, C19, B19,<br />
A19, F15 i B18 <strong>de</strong>l xip.<br />
- nss_unitats_s(6..0): Sorti<strong>de</strong>s <strong>de</strong> control <strong>de</strong>ls segments g, f, e, d, c, b i a, respectivament, <strong>de</strong>l setsegments<br />
HEX2 <strong>de</strong>stinat a visualitzar les unitats <strong>de</strong>ls segons. Són actives<br />
per nivell baix. Es connecten, respectivament, als pins F14, B17, A17, E15,<br />
B16, A16 i D15 <strong>de</strong>l xip.<br />
- nss_<strong>de</strong>cenes_c(6..0): Sorti<strong>de</strong>s <strong>de</strong> control <strong>de</strong>ls segments g, f, e, d, c, b i a, respectivament, <strong>de</strong>l setsegments<br />
HEX1 <strong>de</strong>stinat a visualitzar les <strong>de</strong>senes <strong>de</strong> les centèsimes <strong>de</strong> segon.<br />
Són actives per nivell baix. Es connecten, respectivament, als pins A15,<br />
E14, B14, A14, C13, B13 i A13 <strong>de</strong>l xip.<br />
- nss_unitats_c(6..0): Sorti<strong>de</strong>s <strong>de</strong> control <strong>de</strong>ls segments g, f, e, d, c, b i a, respectivament, <strong>de</strong>l setsegments<br />
HEX0 <strong>de</strong>stinat a visualitzar les unitats <strong>de</strong> les centèsimes <strong>de</strong> segon.<br />
Són actives per nivell baix. Es connecten, respectivament, als pins F13, F12,<br />
G12, H13, H12, F11 i E11 <strong>de</strong>l xip.<br />
- npd_<strong>de</strong>senes_s: Sortida <strong>de</strong> control <strong>de</strong>l punt <strong>de</strong>cimal <strong>de</strong>l set-segments HEX3 que visualitza<br />
les <strong>de</strong>senes <strong>de</strong>ls segons. És activa per nivell baix. Es connecta al pin G16<br />
<strong>de</strong>l xip, en el que es força sempre un nivell alt (punt <strong>de</strong>cimal apagat).<br />
- npd_ unitats_s: Sortida <strong>de</strong> control <strong>de</strong>l punt <strong>de</strong>cimal <strong>de</strong>l set-segments HEX2 que visualitza les<br />
unitats <strong>de</strong>ls segons. És activa per nivell baix. Es connecta al pin A18 <strong>de</strong>l xip.<br />
- npd_<strong>de</strong>senes_c: Sortida <strong>de</strong> control <strong>de</strong>l punt <strong>de</strong>cimal <strong>de</strong>l set-segments HEX1 que visualitza<br />
les <strong>de</strong>senes <strong>de</strong> les centèsimes <strong>de</strong> segon. És activa per nivell baix. Es<br />
connecta al pin B15 <strong>de</strong>l xip, en el que es força sempre un nivell alt (punt<br />
<strong>de</strong>cimal apagat).<br />
- npd_ unitats_c: Sortida <strong>de</strong> control <strong>de</strong>l punt <strong>de</strong>cimal <strong>de</strong>l set-segments HEX0 que visualitza les<br />
unitats <strong>de</strong> les centèsimes <strong>de</strong> segon. És activa per nivell baix. Es connecta al<br />
pin D13 <strong>de</strong>l xip, en el que es força sempre un nivell alt (punt <strong>de</strong>cimal apagat).<br />
4. ESTRUCTURA I COMPORTAMENT DEL CIRCUIT<br />
Des d'un punt <strong>de</strong> vista estructural, i tal com es mostra al diagrama <strong>de</strong> blocs <strong>de</strong>l circuit representat a<br />
la figura 1, el circuit a dissenyar es pot implementar amb els següents mòduls:<br />
- Un divisor <strong>de</strong> freqüència que genera el senyal <strong>de</strong> rellotge clk100 a partir <strong>de</strong>l senyal <strong>de</strong> rellotge<br />
d'entrada clkin. És un divisor per 500.000 que es redueix a un divisor per 2 en les simulacions. El<br />
senyal clk100 s'empra per comandar tots els altres mòduls seqüencials que integren el sistema.<br />
2 - 5
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 2<br />
nstart_nstop<br />
nactual_nmem<br />
clkin<br />
DIV.<br />
FREQ.<br />
nstart_nstop_s<br />
FF DETECT.<br />
FLANC<br />
BAIXADA<br />
FF<br />
clk100<br />
LÒGICA<br />
nactual_nmem_s<br />
nss_<strong>de</strong>senes_s<br />
nss_unitats_s nss_<strong>de</strong>senes_c nss_unitats_c<br />
npd_<strong>de</strong>senes_s npd_unitats_s npd_<strong>de</strong>senes_c npd_unitats_c<br />
Figura 1: Diagrama <strong>de</strong> blocs <strong>de</strong>l circuit.<br />
- Dos biestables, que sincronitzen les entra<strong>de</strong>s asíncrones nstart_nstop i nactual_nmem <strong>de</strong>l sistema<br />
amb el senyal <strong>de</strong> rellotge clk100. Donen lloc als senyals síncrons nstart_nstop_s i nactual_nmem_s,<br />
que possibiliten que tota la resta <strong>de</strong>l sistema comandat pel senyal <strong>de</strong> rellotge clk100 es<strong>de</strong>vingui un<br />
sistema seqüencial síncron. Així s'eviten carreres en el subministrament <strong>de</strong> valors actualitzats als<br />
altres biestables <strong>de</strong>l sistema i violacions <strong>de</strong>ls seus temps <strong>de</strong> preestabliment i manteniment. A més a<br />
més, en mostrejar els senyals nstart_nstop i nactual_nmem a una freqüència <strong>de</strong> 100 Hz, es filtren<br />
els rebots ocasionats en commutar els polsadors, els quals tenen una durada inferior a 10 ms.<br />
- Dos <strong>de</strong>tectors <strong>de</strong> flancs <strong>de</strong> baixada en els senyals nstart_nstop_s i nactual_nmem_s, que generen,<br />
respectivament, els senyals nstart_nstop_fb i nactual_nmem_fb. Aquests senyals presenten un pols<br />
positiu amb una durada d'un pols <strong>de</strong> rellotge cada cop que es <strong>de</strong>tecta un flanc <strong>de</strong> baixada en el<br />
corresponent senyal d'entrada.<br />
- Un comptador <strong>de</strong> 4 dígits en BCD natural, integrat per una ca<strong>de</strong>na <strong>de</strong> 4 comptadors d'un dígit en<br />
BCD natural que compten, respectivament, les unitats <strong>de</strong> les centèsimes <strong>de</strong> segon (0 a 9), les<br />
2 - 6<br />
DETECT.<br />
FLANC<br />
BAIXADA<br />
AUTÒMAT DE CONTROL<br />
controls<br />
COMPTADOR<br />
<strong>de</strong>s.<br />
seg.<br />
<strong>de</strong>s.<br />
seg.<br />
unit.<br />
seg.<br />
CANVIADOR<br />
DE CODI<br />
BCD a SS-LN<br />
<strong>de</strong>s.<br />
cent.<br />
SELECTOR<br />
unit.<br />
seg.<br />
CANVIADOR<br />
DE CODI<br />
BCD a SS-LN<br />
unit.<br />
cent.<br />
nstart_nstop_fb<br />
nactual_nmem_fb<br />
<strong>de</strong>s.<br />
seg.<br />
REGISTRE<br />
<strong>de</strong>s.<br />
cent.<br />
unit.<br />
seg.<br />
CANVIADOR<br />
DE CODI<br />
BCD a SS-LN<br />
controls<br />
<strong>de</strong>s.<br />
cent.<br />
unit.<br />
cent.<br />
control<br />
unit.<br />
cent.<br />
CANVIADOR<br />
DE CODI<br />
BCD a SS-LN<br />
1
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 2<br />
<strong>de</strong>senes <strong>de</strong> les centèsimes <strong>de</strong> segon (0 a 9), les unitats <strong>de</strong>ls segons (0 a 9) i les <strong>de</strong>senes <strong>de</strong>ls segons<br />
(0 a 9). Aquests comptadors d'un dígit en BCD natural (4 bits) també admeten carregar-se a valors<br />
que no corresponen al codi BCD natural a fi <strong>de</strong> registrar els caràcters alfabètics existents al text<br />
" Err". Se suggereix emprar el valor binari 1010 per representar el caràcter "E", el valor binari 1011<br />
per representar el caràcter "r" i el valor binari 1111 per representar l'espai en blanc. Si es consi<strong>de</strong>ra<br />
que l'operació d'increment és especial (<strong>de</strong>l valor "9999" es passa al valor " Err" i d'aquest valor es<br />
passa a ell mateix), només cal que el comptador es pugui inicialitzar a "0000", incrementar en una<br />
centèsima <strong>de</strong> segon (increment especial), i mantenir. Per indicar l'operació a fer n'hi ha prou amb<br />
dos senyals síncrons <strong>de</strong> control: posada a 0 i habilitació <strong>de</strong>l comptatge.<br />
- Un registre paral·lel <strong>de</strong> 4 dígits en BCD natural, que memoritza un temps expressat en unitats <strong>de</strong><br />
centèsimes <strong>de</strong> segon, <strong>de</strong>senes <strong>de</strong> centèsimes <strong>de</strong> segon, unitats <strong>de</strong> segons i <strong>de</strong>senes <strong>de</strong> segons. Aquest<br />
registre també admet carregar-se a valors que no corresponen al codi BCD natural a fi <strong>de</strong> permetre<br />
visualitzar el text " Err". El registre s'ha <strong>de</strong> po<strong>de</strong>r inicialitzar a "0000", mantenir, i actualitzar a un<br />
nou valor. N'hi ha prou amb dos senyals síncrons <strong>de</strong> control: posada a 0 i càrrega en paral·lel.<br />
- Un selector, que selecciona el paràmetre temporal a visualitzar (temps memoritzat al comptador o<br />
temps memoritzat al registre). Per controlar-lo, només cal un senyal <strong>de</strong> selecció.<br />
- Un autòmat <strong>de</strong> control, que genera els senyals que controlen el funcionament <strong>de</strong>l comptador, <strong>de</strong>l<br />
registre i <strong>de</strong>l selector abans esmentats. El cronòmetre passa d'aturat a marxa en <strong>de</strong>tectar-se un<br />
flanc <strong>de</strong> baixada en el senyal nstart_nstop_s estant el cronòmetre aturat, i passa <strong>de</strong> marxa a aturat<br />
en <strong>de</strong>tectar-se un flanc <strong>de</strong> baixada en el senyal nstart_nstop_s estant el cronòmetre en marxa. El<br />
comptador i el registre s'inicialitzen a "0000" en connectar l'alimentació i en posar en marxa el<br />
cronòmetre. El valor <strong>de</strong>l comptador s'ha d'incrementar mentre el cronòmetre estigui en marxa (els<br />
increments <strong>de</strong>ls valors "9999" i " Err" són especials, però són increments). Si es <strong>de</strong>sitja precisió, el<br />
registre s'ha d'actualitzar amb el valor al que s'actualitza el comptador en el moment <strong>de</strong> <strong>de</strong>tectar-se<br />
un flanc <strong>de</strong> baixada en el senyal nactual_nmem_s estant el cronòmetre en marxa. Aquest valor<br />
coinci<strong>de</strong>ix amb el valor <strong>de</strong>l comptador en el següent perío<strong>de</strong> <strong>de</strong>l rellotge. Si el vol emprar el valor<br />
contingut en el comptador com a dada a carregar en el registre, cal endarrerir la generació <strong>de</strong>l<br />
senyal <strong>de</strong> càrrega en paral·lel un perío<strong>de</strong> <strong>de</strong> rellotge respecte a la <strong>de</strong>tecció <strong>de</strong> l'esmentat flanc <strong>de</strong><br />
baixada. Quan el cronòmetre està en marxa, es visualitza sempre el temps memoritzat al comptador.<br />
Quan el cronòmetre està aturat, es canvia <strong>de</strong> paràmetre visualitzat en <strong>de</strong>tectar un flanc <strong>de</strong> baixada<br />
<strong>de</strong>l senyal nactual_nmem_s. L'autòmat <strong>de</strong> control presenta els següents tres estats: aturat_actual,<br />
en el que el cronòmetre està aturat i es visualitza el temps <strong>de</strong>l comptador (és l'estat inicial <strong>de</strong><br />
l'autòmat); aturat_mem, en el que el cronòmetre està aturat i es visualitza el temps <strong>de</strong>l registre; i<br />
marxa, en el que el cronòmetre està en marxa i es visualitza el temps <strong>de</strong>l comptador. La figura 2<br />
mostra el diagrama <strong>de</strong> transicions <strong>de</strong> l'autòmat <strong>de</strong> control, mentre que la figura 3 mostra un diagrama<br />
temporal <strong>de</strong> la seva evolució.<br />
- Quatre convertidors <strong>de</strong> codi BCD natural (ampliat amb codis associats als caràcters alfabètics <strong>de</strong>l<br />
text " Err") a codi set-segments amb sorti<strong>de</strong>s actives per nivell baix, que subministren els senyals<br />
nss_<strong>de</strong>senes_s, nss_unitats_s, nss_<strong>de</strong>senes_c i nss_unitats_c.<br />
ATURAT<br />
ACTUAL<br />
(inicial)<br />
nstart_nstop_fb<br />
nstart_nstop_fb<br />
(POSADA EN MARXA)<br />
MARXA<br />
nstart_nstop_fb' · nactual_nmem_fb<br />
Figura 2: Diagrama <strong>de</strong> transicions <strong>de</strong> l'autòmat <strong>de</strong> control.<br />
2 - 7<br />
nstart_nstop_fb<br />
nstart_nstop_fb' · nactual_nmem_fb<br />
ATURAT<br />
MEM
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 2<br />
clk100<br />
nstart_nstop_f<br />
b<br />
nactual_nmem_f<br />
b<br />
estat<br />
comptador<br />
registre<br />
visualització<br />
Figura 3: Diagrama temporal amb l'evolució <strong>de</strong> l'autòmat <strong>de</strong> control.<br />
- Una lògica que controla la sortida activa per nivell baix <strong>de</strong>l punt <strong>de</strong>cimal corresponent a les unitats<br />
<strong>de</strong> segons, sortida que <strong>de</strong>pèn <strong>de</strong>l valor visualitzat (només val 1 quan es visualitza el valor " Err").<br />
Les altres sorti<strong>de</strong>s <strong>de</strong> punts <strong>de</strong>cimals estan sempre al valor 1 (punts <strong>de</strong>cimals apagats).<br />
5. BIBLIOTEQUES D'USUARI<br />
ATURAT<br />
ACTUAL MARXA ATURAT<br />
ACTUAL<br />
SS<br />
CC<br />
SS<br />
CC<br />
SS<br />
CC<br />
00<br />
00<br />
00<br />
00<br />
00<br />
01<br />
00<br />
01<br />
00<br />
02<br />
00<br />
02<br />
00<br />
00<br />
00<br />
03<br />
00<br />
03<br />
00<br />
04<br />
00<br />
04<br />
00<br />
05<br />
00<br />
05<br />
00<br />
06<br />
00<br />
06<br />
L'objectiu principal <strong>de</strong> la pràctica és concebre una entitat en VHDL que <strong>de</strong>scrigui el circuit que heu<br />
<strong>de</strong> dissenyar. Aquesta entitat la <strong>de</strong>nominarem cronometre, estarà en el màxim nivell <strong>de</strong> la jerarquia<br />
<strong>de</strong>l vostre disseny i la materialitzareu dins un fitxer anomenat cronometre.vhd.<br />
Com es <strong>de</strong>sprèn <strong>de</strong>l diagrama <strong>de</strong> blocs <strong>de</strong>l circuit a dissenyar mostrat a la figura 1, el circuit empra<br />
per quadruplicat un mòdul no estàndard, la funció <strong>de</strong>l qual és convertir una paraula d'un codi BCD<br />
natural ampliat amb algunes lletres a codi set-segments. Aquest mòdul el <strong>de</strong>nominarem bcd_err_nss.<br />
A fi <strong>de</strong> no haver d'introduir quatre vega<strong>de</strong>s el codi VHDL que <strong>de</strong>scriu el comportament <strong>de</strong>l mòdul<br />
bcd_err_nss, és convenient concebre'l com un component que <strong>de</strong>sprés es pugui incorporar vàries<br />
vega<strong>de</strong>s al vostre disseny. A tal fi cal fer les següents dues accions:<br />
- Crear una entitat anomenada bcd_err_nss que <strong>de</strong>scrigui el mòdul <strong>de</strong>l mateix nom, tant pel que fa a<br />
les seves entra<strong>de</strong>s i sorti<strong>de</strong>s com a la seva implementació. En tractar-se d'un circuit combinacional,<br />
la seva implementació es pot <strong>de</strong>scriure mitjançant el seu comportament, el qual queda establert per<br />
la seva taula <strong>de</strong> la veritat.<br />
- Declarar un component anomenat com l'entitat, bcd_err_nss, que <strong>de</strong>sprés es podrà incorporar les<br />
vega<strong>de</strong>s que calgui al vostre disseny, cada incorporació concretant les connexions adients.<br />
Si aquest component no s'ha d'emprar en cap més disseny, la <strong>de</strong>claració <strong>de</strong>l component pot fer-se a<br />
la part <strong>de</strong>clarativa <strong>de</strong> l'arquitectura <strong>de</strong> l'entitat cronometre. Més endavant, dins <strong>de</strong>l cos <strong>de</strong> l'esmentada<br />
arquitectura, podreu incloure tantes unitats d'aquest component com vulgueu. Per la seva banda,<br />
l'entitat bcd_err_nss pot incloure's en el fitxer cronometre.vhd (per exemple, darrera <strong>de</strong> la <strong>de</strong>scripció<br />
<strong>de</strong> l'entitat cronometre) o bé en un fitxer a part, fitxer que estaria bé anomenar bcd_err_nss.vhd.<br />
Si s'inclou l'entitat bcd_err_nss en el fitxer cronometre.vhd, el projecte <strong>de</strong>l Quartus II només haurà<br />
d'incloure el fitxer cronometre.vhd. Si no s'inclou l'entitat bcd_err_nss en el fitxer cronometre.vhd,<br />
el projecte <strong>de</strong>l Quartus II o bé haurà d'incloure els dos fitxers cronometre.vhd i bcd_err_nss.vhd o<br />
bé podrà incloure només el fitxer cronometre.vhd a condició <strong>de</strong> què el fitxer bcd_err_nss.vhd es<br />
trobi al directori <strong>de</strong> treball, és a dir, al mateix directori que el fitxer cronometre.vhd, obtenint-se en<br />
aquest darrer cas un advertiment més en la compilació <strong>de</strong>l projecte per aquest motiu.<br />
2 - 8<br />
00<br />
07<br />
00<br />
07<br />
00<br />
08<br />
00<br />
08<br />
00<br />
09<br />
00<br />
09<br />
00<br />
10<br />
00<br />
05<br />
ATURAT<br />
MEM<br />
00<br />
10<br />
00<br />
05<br />
ATURAT<br />
ACTUAL<br />
00<br />
10
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 2<br />
En canvi, si aquest component s'ha d'emprar en altres dissenys, és millor incorporar-lo dins un paquet<br />
d'una biblioteca d'usuari, per exemple dins el paquet moduls <strong>de</strong> la biblioteca bibsed. Si la biblioteca<br />
bibsed ja està implementada, dins el fitxer cronometre.vhd només haureu <strong>de</strong> <strong>de</strong>clarar que bibsed és<br />
una biblioteca i que voleu emprar els components presents al paquet moduls <strong>de</strong> la biblioteca bibsed<br />
abans <strong>de</strong> començar a <strong>de</strong>scriure l'entitat cronometre. Més endavant, dins el cos <strong>de</strong> l'arquitectura <strong>de</strong><br />
l'entitat cronometre, podreu incloure tantes unitats d'aquest component com vulgueu.<br />
En aquesta pràctica optarem per aquesta darrera possibilitat, potser quelcom més complexa que les<br />
exposa<strong>de</strong>s abans, però molt més útil <strong>de</strong> cara a la reutilització <strong>de</strong>ls components. A l'apartat 1 ja es va<br />
avançar que la creació i utilització <strong>de</strong> biblioteques d'usuari era un <strong>de</strong>ls objectius d'aquesta pràctica.<br />
En l'entorn integrat pel Quartus II en combinació amb el simulador Mo<strong>de</strong>lSim, quan es parla d'una<br />
biblioteca d'usuari es contemplen, en realitat, dues biblioteques diferents: la biblioteca <strong>de</strong>l Quartus II i<br />
la corresponent biblioteca compilada <strong>de</strong>l Mo<strong>de</strong>lSim. Aquesta biblioteca compilada només es necessita<br />
quan es volen fer simulacions funcionals amb el Mo<strong>de</strong>lSim abans <strong>de</strong> sintetitzar sobre el dispositiu<br />
lògic programable el disseny que utilitza dita biblioteca (simulacions <strong>de</strong> fitxers amb extensió vhd).<br />
Les simulacions <strong>de</strong> dissenys ja sintetitzats (simulacions d'un fitxer amb extensió vho) no requereixen<br />
<strong>de</strong> les biblioteques d'usuari, ja que la nova <strong>de</strong>scripció estructural i totalment plana en VHDL <strong>de</strong>l<br />
disseny no empra els components inclosos en aquestes biblioteques.<br />
Cada biblioteca d'usuari <strong>de</strong>l Quartus II es troba implementada sobre un directori que té per nom el<br />
nom <strong>de</strong> la biblioteca. De la mateixa manera, cada biblioteca d'usuari compilada <strong>de</strong>l Mo<strong>de</strong>lSim es<br />
troba implementada sobre un directori que té per nom el nom <strong>de</strong> la biblioteca. Els dos directoris<br />
associats a una biblioteca d'usuari po<strong>de</strong>n ser el mateix (és a dir, tenir el mateix camí), però el més<br />
habitual és que siguin dos directoris diferents (és a dir, amb camins diferents).<br />
Les biblioteques d'usuari <strong>de</strong>l Quartus II només contenen fitxers amb extensió vhd. Dins aquests<br />
fitxers es troben <strong>de</strong>clarats i implementats els paquets, components, funcions, entitats, arquitectures,<br />
etc. que integren la biblioteca. En canvi, les corresponents biblioteques compila<strong>de</strong>s <strong>de</strong>l Mo<strong>de</strong>lSim<br />
contenen una col·lecció <strong>de</strong> subdirectoris, cada un corresponent a un objecte (paquet o entitat) <strong>de</strong> la<br />
biblioteca. Aquesta col·lecció <strong>de</strong> subdirectoris s'obté en compilar els fitxers <strong>de</strong> la biblioteca d'usuari<br />
<strong>de</strong>l Quartus II amb el Mo<strong>de</strong>lSim i és convenient no haver <strong>de</strong> repetir aquesta compilació per a cada<br />
projecte que empra l'esmentada biblioteca.<br />
L'exposat als tres paràgrafs anteriors també és parcialment vàlid per a les biblioteques pre<strong>de</strong>fini<strong>de</strong>s<br />
<strong>de</strong>l VHDL que es troben al vostre abast, com ara les biblioteques ieee i altera. En aquest cas, però,<br />
es parla <strong>de</strong> biblioteques precompila<strong>de</strong>s, ja que la compilació amb el Mo<strong>de</strong>lSim s'ha fet prèviament a<br />
la distribució <strong>de</strong>l programari i no s'ha <strong>de</strong> tornar a fer. Les biblioteques pre<strong>de</strong>fini<strong>de</strong>s <strong>de</strong>l Quartus II<br />
estan ubica<strong>de</strong>s sota el directori .../Altera/10.0sp1/quartus/libraries/vhdl, mentre que les corresponents<br />
biblioteques precompila<strong>de</strong>s <strong>de</strong>l Mo<strong>de</strong>lSim es troben localitza<strong>de</strong>s sota dos directoris diferents amb<br />
camins .../Altera/10.0sp1/mo<strong>de</strong>lsim_ase i .../Altera/10.0sp1/mo<strong>de</strong>lsim_ase/altera/vhdl.<br />
El Mo<strong>de</strong>lSim empra biblioteques precompila<strong>de</strong>s tant si es fan simulacions funcionals <strong>de</strong> dissenys<br />
abans <strong>de</strong> ser sintetitzats amb el Quartus II sobre un dispositiu lògic programable (simulacions <strong>de</strong><br />
fitxers amb extensió vhd) com si es fan simulacions <strong>de</strong> dissenys ja sintetitzats amb el Quartus II<br />
(simulacions d'un fitxer amb extensió vho).<br />
Hi ha dues formes d'operar per a no obtenir errors quan es compila amb el Quartus II un disseny que<br />
empra biblioteques d'usuari.<br />
Una primera possibilitat és incloure en el projecte tots els fitxers que contenen elements emprats en<br />
el disseny, inclosos els pertanyents a biblioteques d'usuari. Per exemple, en el nostre cas, a més a més<br />
2 - 9
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 2<br />
<strong>de</strong>l fitxer cronometre.vhd, caldria incloure el fitxer o els fitxers que continguessin el paquet moduls<br />
i l'entitat bcd_err_nss. En aquesta forma d'operar, els elements que integren les biblioteques d'usuari<br />
po<strong>de</strong>n distribuir-se en un o varis fitxers, els quals po<strong>de</strong>n anomenar-se <strong>de</strong> qualsevol manera. A més a<br />
més, les biblioteques d'usuari po<strong>de</strong>n estar ubica<strong>de</strong>s en qualsevol lloc i no cal incloure-les en el<br />
projecte. Es recomana ubicar les biblioteques d'usuari en el mateix dispositiu d'emmagatzematge en<br />
el que ubiqueu els vostres projectes.<br />
La segona possibilitat és implementar cada element <strong>de</strong> les biblioteques d'usuari en un fitxer diferent<br />
que tingui el mateix nom que l'element (en el present cas, el paquet moduls en un fitxer moduls.vhd<br />
i l'entitat bcd_err_nss en un fitxer bcd_err_nss.vhd), ubicar les biblioteques d'usuari sota el directori<br />
.../Altera/10.0sp1/quartus/libraries/vhdl (en el present cas, la biblioteca bibsed integrada pels fitxers<br />
moduls.vhd i bcd_err_nss.vhd) i incloure en el projecte el fitxer amb l'entitat <strong>de</strong> més alt nivell i les<br />
biblioteques d'usuari empra<strong>de</strong>s (en el present cas, el fitxer cronometre.vhd i la biblioteca bibsed).<br />
Aquesta alternativa pot semblar millor, però recor<strong>de</strong>u que en els ordinadors <strong>de</strong>l <strong>laboratori</strong> docent es<br />
restitueix una imatge <strong>de</strong>l disc que no conté les biblioteques d'usuari cada cop que els ordinadors es<br />
posen en marxa. Si s'opta per aquesta alternativa, caldrà que tingueu un back-up <strong>de</strong> les biblioteques<br />
d'usuari i que les copieu sota el directori .../Altera/10.0sp1/quartus/libraries/vhdl abans <strong>de</strong> començar a<br />
treballar amb el Quartus II. Això no serà necessari en els vostres ordinadors personals. Es recomana<br />
ubicar el back-up <strong>de</strong> les biblioteques d'usuari en el mateix dispositiu d'emmagatzematge en el que<br />
ubiqueu els vostres projectes.<br />
Tant si s'opta per la primera alternativa com per la segona, i a no ser que hagueu fet prèviament una<br />
sèrie d'accions, el Mo<strong>de</strong>lSim us donarà un error en cridar-lo <strong>de</strong>s <strong>de</strong>l Quartus II per fer una simulació<br />
funcional abans <strong>de</strong> sintetitzar el disseny sobre un dispositiu lògic programable. Aquest error és <strong>de</strong>gut<br />
a què el Mo<strong>de</strong>lSim no troba les biblioteques d'usuari compila<strong>de</strong>s. Les accions que s'han <strong>de</strong> fer per tal<br />
d'evitar aquest error són les següents:<br />
- Amb el Mo<strong>de</strong>lSim, crear i bastir les biblioteques d'usuari compila<strong>de</strong>s, ubicant-les allà on vulgueu.<br />
Per bastir-les, haureu <strong>de</strong> compilar tots els fitxers que integren cada biblioteca d'usuari <strong>de</strong>l Quartus<br />
II tot generant la sortida <strong>de</strong> la compilació cap a la corresponent biblioteca d'usuari compilada. Es<br />
recomana ubicar les biblioteques d'usuari compila<strong>de</strong>s en el mateix dispositiu d'emmagatzematge<br />
en el que ubiqueu els vostres projectes.<br />
- Modificar el fitxer mo<strong>de</strong>lsim.ini ubicat al directori .../Altera/10.0sp1/mo<strong>de</strong>lsim_ase, incloent-hi les<br />
ubicacions <strong>de</strong> les biblioteques d'usuari compila<strong>de</strong>s a semblança <strong>de</strong> com s'inclouen les ubicacions<br />
<strong>de</strong> les biblioteques precompila<strong>de</strong>s. Aquest fitxer és <strong>de</strong> només lectura, així que haureu <strong>de</strong> canviar<br />
aquest atribut, modificar el fitxer i tornar a canviar l'atribut. Com en els ordinadors <strong>de</strong>l <strong>laboratori</strong><br />
docent es restitueix una imatge <strong>de</strong>l disc que no conté aquest canvi cada cop que els ordinadors es<br />
posen en marxa, caldrà que tingueu un back-up <strong>de</strong>l fitxer mo<strong>de</strong>lsim.ini modificat i que el copieu al<br />
directori .../Altera/10.0sp1/mo<strong>de</strong>lsim_ase abans <strong>de</strong> començar a treballar amb el Quartus II. Això<br />
no serà necessari en els vostres ordinadors personals. Es recomana ubicar aquest back-up junt a les<br />
biblioteques d'usuari compila<strong>de</strong>s.<br />
6. EDICIÓ DEL DISSENY<br />
Com s'ha apuntat anteriorment, el vostre disseny s'ha d'implementar <strong>de</strong> forma jeràrquica emprant<br />
components d'una biblioteca d'usuari. L'entitat que ostentarà el màxim nivell <strong>de</strong> la jerarquia <strong>de</strong>l<br />
vostre disseny s'anomenarà cronometre i la materialitzareu dins un fitxer anomenat cronometre.vhd.<br />
En l'arquitectura d'aquesta entitat incloureu quatre unitats d'un component anomenat bcd_err_nss, el<br />
qual formarà part d'un paquet anomenat moduls pertanyent a una biblioteca d'usuari anomenada<br />
bibsed. L'entitat corresponent al component bcd_err_nss estarà materialitzada en un fitxer anomenat<br />
2 - 10
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 2<br />
bcd_err_nss.vhd i el paquet moduls estarà materialitzat en un fitxer anomenat moduls.vhd. Els fitxers<br />
bcd_err_nss.vhd i moduls.vhd integraran la biblioteca d'usuari bibsed, biblioteca que ubicareu sota<br />
el directori .../Altera/10.0sp1/quartus/libraries/vhdl i <strong>de</strong> la qual en fareu un back-up sota un directori<br />
anomenat biblioteques quartus. La corresponent biblioteca d'usuari compilada <strong>de</strong>l Mo<strong>de</strong>lSim, que<br />
també s'anomenarà bibsed, la ubicareu en un directori anomenat biblioteques mo<strong>de</strong>lsim. Aquests dos<br />
directoris amb biblioteques els po<strong>de</strong>u situar al mateix nivell que els projectes <strong>de</strong>l Quartus II.<br />
6.1. Implementació <strong>de</strong> la biblioteca d'usuari bibsed <strong>de</strong>l Quartus II.<br />
En primer lloc, creeu un directori anomenat biblioteques quartus situat en el mateix directori pare en<br />
el que vàreu crear els directoris <strong>de</strong>ls projectes metro <strong>de</strong> la pràctica 1. Sota aquest directori creeu un<br />
altre directori anomenat bibsed, el qual està <strong>de</strong>stinat a contenir el back-up <strong>de</strong> la biblioteca d'usuari<br />
bibsed <strong>de</strong>l Quartus II.<br />
Sota el directori .../biblioteques quartus/bibsed heu <strong>de</strong> crear dos fitxers, el fitxer bcd_err_nss.vhd<br />
amb l'entitat bcd_err_nss i el fitxer moduls.vhd amb el paquet moduls. Aquests dos fitxers els po<strong>de</strong>u<br />
editar com vulgueu, però com <strong>de</strong>sprés s'hauran <strong>de</strong> compilar amb el Mo<strong>de</strong>lSim, pot ser convenient<br />
editar-los <strong>de</strong>s <strong>de</strong>l mateix Mo<strong>de</strong>lSim. Seguidament s'exposen les accions a fer si s'opta per aquesta<br />
possibilitat.<br />
Per començar, aneu a l'escriptori <strong>de</strong> Windows i feu doble click sobre la icona Mo<strong>de</strong>lSim (Quartus II<br />
10.0sp1) SE. S'obrirà la finestra principal <strong>de</strong>l Mo<strong>de</strong>lSim. Maximitzeu-la.<br />
A la barra <strong>de</strong> menús <strong>de</strong> la pantalla principal <strong>de</strong>l Mo<strong>de</strong>lSim trieu File New Source VHDL a<br />
fi <strong>de</strong> crear un nou fitxer VHDL amb el contingut que s'indica a continuació, el qual anomenareu<br />
bcd_err_nss.vhd i el <strong>de</strong>sareu al directori .../biblioteques quartus/bibsed. Aquest fitxer conté una entitat<br />
anomenada bcd_err_nss que converteix un codi BCD natural ampliat amb caràcters alfabètics<br />
(entrada bcd_err) a un codi set-segments en lògica negativa (sortida nss). La paraula <strong>de</strong> codi "1010"<br />
s'empra per representar el caràcter "E", la paraula <strong>de</strong> codi "1011" per al caràcter "r" i les paraules <strong>de</strong><br />
codi "1100" a "1111" per al caràcter " ". L'arquitectura <strong>de</strong> l'entitat pren la forma d'una taula <strong>de</strong> la<br />
veritat que s'implementa emprant una sentència <strong>de</strong>l tipus assignació per selecció a senyal.<br />
library ieee;<br />
use ieee.std_logic_1164.all;<br />
entity bcd_err_nss is<br />
port (<br />
bcd_err : in std_logic_vector(3 downto 0);<br />
nss : out std_logic_vector(6 downto 0)<br />
);<br />
end bcd_err_nss;<br />
architecture taula_veritat of bcd_err_nss is<br />
begin<br />
with bcd_err select<br />
nss
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 2<br />
A la barra <strong>de</strong> menús <strong>de</strong> la pantalla principal <strong>de</strong>l Mo<strong>de</strong>lSim trieu File New Source VHDL a<br />
fi <strong>de</strong> crear un nou fitxer VHDL amb el contingut que s'indica a continuació, el qual anomenareu<br />
moduls.vhd i el <strong>de</strong>sareu al directori .../biblioteques quartus/bibsed. Aquest fitxer conté un paquet<br />
anomenat moduls integrat per un únic component anomenat bcd_err_nss que correspon a l'entitat<br />
bcd_err_nss abans <strong>de</strong>scrita.<br />
library ieee;<br />
use ieee.std_logic_1164.all;<br />
package moduls is<br />
component bcd_err_nss<br />
port (<br />
bcd_err : in std_logic_vector(3 downto 0);<br />
nss : out std_logic_vector(6 downto 0)<br />
);<br />
end component;<br />
end moduls;<br />
Des <strong>de</strong> l'explorador <strong>de</strong>l Windows, seleccioneu la carpeta <strong>de</strong>l directori .../biblioteques quartus/bibsed i<br />
copieu-la sota el directori .../Altera/10.0sp1/quartus/libraries/vhdl. Ja teniu implementada la biblioteca<br />
d'usuari bibsed en el directori .../Altera/10.0sp1/quartus/libraries/vhdl/bibsed.<br />
6.2. Implementació <strong>de</strong> la biblioteca d'usuari compilada bibsed <strong>de</strong>l Mo<strong>de</strong>lSim.<br />
En primer lloc, creeu un directori anomenat biblioteques mo<strong>de</strong>lsim situat en el mateix directori pare<br />
en el que abans heu creat el directori .../biblioteques quartus.<br />
Seguidament, trieu File Change Directory... a la barra <strong>de</strong> menús <strong>de</strong> la pantalla principal <strong>de</strong>l<br />
Mo<strong>de</strong>lSim i seleccioneu el directori .../biblioteques mo<strong>de</strong>lsim que acabeu <strong>de</strong> crear.<br />
A la barra <strong>de</strong> menús <strong>de</strong> la pantalla principal <strong>de</strong>l Mo<strong>de</strong>lSim, trieu File New Library.... S'obrirà<br />
la finestra <strong>de</strong> creació d'una nova biblioteca. Indiqueu que voleu crear una nova biblioteca i assignar-li<br />
una ubicació física, indiqueu bibsed com a nom <strong>de</strong> la biblioteca i poseu el camí complet <strong>de</strong>l directori<br />
...biblioteques mo<strong>de</strong>lsim/bibsed com a ubicació física. A la llista <strong>de</strong> biblioteques disponibles que es<br />
visualitza a la finestra <strong>de</strong> biblioteques s'incorporarà la biblioteca compilada bibsed, que apareixerà<br />
inicialment buida. En el directori ...biblioteques mo<strong>de</strong>lsim es crearà un subdirectori anomenat bibsed,<br />
que és on s'implementarà la biblioteca d'usuari compilada bibsed, i un fitxer anomenat mo<strong>de</strong>lsim.ini,<br />
el qual inclourà una referència a la biblioteca compilada que acabeu <strong>de</strong> crear.<br />
Trieu ara Compile Compile... a la barra <strong>de</strong> menús <strong>de</strong> la pantalla principal <strong>de</strong>l Mo<strong>de</strong>lSim. S'obrirà<br />
la finestra <strong>de</strong> la selecció <strong>de</strong> fitxers a compilar. Indiqueu bibsed com a nom <strong>de</strong> la biblioteca, cerqueu<br />
en el directori .../biblioteques quartus/bibsed i seleccioneu els fitxers bcd_err_nss.vhd i moduls.vhd<br />
per a ser compilats tots dos alhora. Un cop compilats, l'entitat bcd_err_nss i el paquet moduls ja<br />
estaran disponibles a la biblioteca bibsed. Ho podreu comprovar a la finestra <strong>de</strong> biblioteques.<br />
A continuació, obriu el fitxer mo<strong>de</strong>lsim.ini <strong>de</strong>l directori ...biblioteques mo<strong>de</strong>lsim amb un editor <strong>de</strong><br />
texts, copieu la secció User libraries que inclou la referència a la biblioteca compilada bibsed que<br />
acabeu <strong>de</strong> crear (la secció acaba abans <strong>de</strong>l camp [vcom]) i tanqueu el fitxer. Seguidament, aneu al<br />
directori .../Altera/10.0sp1/mo<strong>de</strong>lsim_ase, esborreu l'atribut <strong>de</strong> només lectura <strong>de</strong>l fitxer mo<strong>de</strong>lsim.ini<br />
que trobareu en aquest directori, editeu aquest fitxer incorporant-hi la secció User libraries que heu<br />
copiat abans com a darrera línia <strong>de</strong>l camp [Library], és a dir, just abans <strong>de</strong>l camp [vcom], salveu el<br />
fitxer modificat, tanqueu-lo i torneu a posar-li l'atribut <strong>de</strong> només lectura. Amb aquesta seqüència<br />
d'accions heu incorporat al Mo<strong>de</strong>lSim una nova biblioteca precompilada, la biblioteca bibsed.<br />
Tanqueu ara el Mo<strong>de</strong>lSim i torneu-lo a obrir. Veureu que la biblioteca bibsed apareix en la llista <strong>de</strong><br />
biblioteques disponibles. Torneu a tancar el Mo<strong>de</strong>lSim.<br />
2 - 12
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 2<br />
Finalment, copieu el fitxer mo<strong>de</strong>lsim.ini <strong>de</strong>l directori .../Altera/10.0sp1/mo<strong>de</strong>lsim_ase que acabeu <strong>de</strong><br />
modificar al directori ...biblioteques mo<strong>de</strong>lsim. Així tindreu accessible un back-up d'aquest fitxer.<br />
6.3. Creació <strong>de</strong>l projecte cronometre.<br />
Aneu a l'escriptori <strong>de</strong> Windows i feu doble click sobre la icona Quartus II 10.0sp1 a fi d'obrir la<br />
finestra principal <strong>de</strong>l programa Quartus II.<br />
Creeu un nou projecte <strong>de</strong>l Quartus II per al vostre disseny triant File New Project Wizard... a la<br />
barra <strong>de</strong> menús <strong>de</strong>l Quartus II. Com a directori <strong>de</strong>l projecte indiqueu un directori anomenat<br />
cronometre situat en el mateix directori pare en el que vàreu crear els directoris <strong>de</strong>ls projectes metro<br />
<strong>de</strong> la pràctica 1. Com no existeix, us <strong>de</strong>manarà permís per crear-lo. Com a nom <strong>de</strong>l projecte indiqueu<br />
cronometre. No afegiu, <strong>de</strong> moment, cap fitxer al projecte, ja que encara no n'heu editat cap. En<br />
canvi, sí que heu d'afegir la biblioteca d'usuari bibsed. A tal fi, premeu el botó User Libraries... i<br />
afegiu la biblioteca bibsed com a biblioteca global. La biblioteca s'especifica amb el directori on es<br />
troba, el qual és .../Altera/10.0sp1/quartus/libraries/vhdl/bibsed. Seguidament, seleccioneu Cyclone<br />
III com a família <strong>de</strong> dispositius, indiqueu que voleu seleccionar un dispositiu concret <strong>de</strong> dita família<br />
i seleccioneu el dispositiu EP3C16F484C6. Finalment, seleccioneu Mo<strong>de</strong>lSim-Altera com a eina <strong>de</strong><br />
simulació i VHDL com a format.<br />
6.4. Implementació <strong>de</strong> l'entitat cronometre.<br />
A la barra <strong>de</strong> menús <strong>de</strong>l Quartus II, trieu File New..., seleccioneu VHDL File dins <strong>de</strong> Design<br />
Files com a tipus <strong>de</strong>l fitxer <strong>de</strong>l disseny i vali<strong>de</strong>u amb OK a fi <strong>de</strong> crear un nou fitxer VHDL amb el<br />
contingut que s'indica a continuació, el qual anomenareu cronometre.vhd. Aquest fitxer l'haureu <strong>de</strong><br />
<strong>de</strong>sar al directori <strong>de</strong> treball .../cronometre i haureu d'afegir-lo al projecte.<br />
library ieee;<br />
use ieee.std_logic_1164.all;<br />
use ieee.std_logic_unsigned.all;<br />
library bibsed;<br />
use bibsed.moduls.all;<br />
entity cronometre is<br />
generic<br />
(<br />
versio : string := "simulacio" -- "simulacio" o "experimentacio"<br />
);<br />
port<br />
(<br />
clkin : in std_logic;<br />
nstart_nstop : in std_logic;<br />
nactual_nmem : in std_logic;<br />
nss_<strong>de</strong>senes_s : out std_logic_vector(6 downto 0);<br />
nss_unitats_s : out std_logic_vector(6 downto 0);<br />
nss_<strong>de</strong>senes_c : out std_logic_vector(6 downto 0);<br />
nss_unitats_c : out std_logic_vector(6 downto 0);<br />
npd_<strong>de</strong>senes_s : out std_logic;<br />
npd_unitats_s : out std_logic;<br />
npd_<strong>de</strong>senes_c : out std_logic;<br />
npd_unitats_c : out std_logic<br />
);<br />
end cronometre;<br />
architecture estructural_funcional of cronometre is<br />
type automat_control is (aturat_actual, aturat_mem, marxa);<br />
signal clk100 : std_logic := '0';<br />
signal nstart_nstop_s : std_logic := '1';<br />
signal nactual_nmem_s : std_logic := '1';<br />
signal nstart_nstop_sa : std_logic := '1';<br />
signal nactual_nmem_sa : std_logic := '1';<br />
2 - 13
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 2<br />
signal nstart_nstop_fb : std_logic;<br />
signal nactual_nmem_fb : std_logic;<br />
signal estat_control : automat_control := aturat_actual;<br />
signal clr_compt_reg : std_logic;<br />
signal en_comptador : std_logic;<br />
signal ld_registre : std_logic := '0';<br />
signal sel_actual : std_logic;<br />
signal <strong>de</strong>senes_s_act : std_logic_vector(3 downto 0) := "0000";<br />
signal unitats_s_act : std_logic_vector(3 downto 0) := "0000";<br />
signal <strong>de</strong>senes_c_act : std_logic_vector(3 downto 0) := "0000";<br />
signal unitats_c_act : std_logic_vector(3 downto 0) := "0000";<br />
signal <strong>de</strong>senes_s_mem : std_logic_vector(3 downto 0) := "0000";<br />
signal unitats_s_mem : std_logic_vector(3 downto 0) := "0000";<br />
signal <strong>de</strong>senes_c_mem : std_logic_vector(3 downto 0) := "0000";<br />
signal unitats_c_mem : std_logic_vector(3 downto 0) := "0000";<br />
signal <strong>de</strong>senes_s : std_logic_vector(3 downto 0);<br />
signal unitats_s : std_logic_vector(3 downto 0);<br />
signal <strong>de</strong>senes_c : std_logic_vector(3 downto 0);<br />
signal unitats_c : std_logic_vector(3 downto 0);<br />
begin<br />
-- components (canviadors <strong>de</strong> codi bcd a set-segments)<br />
bcd_err_nss_<strong>de</strong>senes_s : bcd_err_nss port map (<strong>de</strong>senes_s, nss_<strong>de</strong>senes_s);<br />
bcd_err_nss_unitats_s : bcd_err_nss port map (unitats_s, nss_unitats_s);<br />
bcd_err_nss_<strong>de</strong>senes_c : bcd_err_nss port map (<strong>de</strong>senes_c, nss_<strong>de</strong>senes_c);<br />
bcd_err_nss_unitats_c : bcd_err_nss port map (unitats_c, nss_unitats_c);<br />
--<br />
-- divisor <strong>de</strong> frequencia<br />
divf : process (clkin)<br />
variable divlimit : integer range 2**18-1 downto 0 := 0;<br />
begin<br />
if clkin'event and clkin = '1' then<br />
if (versio = "experimentacio") then -- en experimentacio, clkin = 50 MHz<br />
if divlimit /= 249999 then -- cal dividir per 500.000 (2*250.000)<br />
divlimit := divlimit + 1;<br />
else<br />
divlimit := 0;<br />
clk100
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 2<br />
elsif nactual_nmem_fb = '1' then<br />
estat_control <br />
if nstart_nstop_fb = '1' then<br />
estat_control
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 2<br />
unitats_s_mem
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 2<br />
- clr_compt_reg, en_comptador, ld_registre i sel_actual són les sorti<strong>de</strong>s <strong>de</strong> l'autòmat <strong>de</strong> control que<br />
controlen el funcionament <strong>de</strong>l comptador, <strong>de</strong>l registre i <strong>de</strong>l selector <strong>de</strong>l paràmetre a visualitzar.<br />
Són senyals combinacionals, a excepció <strong>de</strong>l senyal ld_registre que està retardat un cop <strong>de</strong> rellotge<br />
respecte al corresponent senyal combinacional. El senyal ld_registre s'inicialitza a 0.<br />
- <strong>de</strong>senes_s_act, unitats_s_act, <strong>de</strong>senes_c_act i unitats_c_act indiquen el contingut <strong>de</strong>l comptador,<br />
el qual s'inicialitza a "0000" (00 segons i 00 centèsimes).<br />
- <strong>de</strong>senes_s_mem, unitats_s_mem, <strong>de</strong>senes_c_mem i unitats_c_mem indiquen el contingut <strong>de</strong>l<br />
registre, el qual s'inicialitza a "0000" (00 segons i 00 centèsimes).<br />
- <strong>de</strong>senes_s, unitats_s, <strong>de</strong>senes_c i unitats_c són les sorti<strong>de</strong>s <strong>de</strong>l multiplexor <strong>de</strong> valors temporals.<br />
El cos <strong>de</strong> l'arquitectura <strong>de</strong> l'entitat comença amb la inclusió i connexió <strong>de</strong> quatre convertidors <strong>de</strong><br />
codi BCD natural ampliat amb caràcters alfabètics a codi set-segments en lògica negativa, és a dir,<br />
<strong>de</strong> quatre unitats <strong>de</strong>l component bcd_err_nss <strong>de</strong> la biblioteca d'usuari bibsed.<br />
Seguidament es troba un procés, anomenat divf, que implementa el divisor <strong>de</strong> freqüència <strong>de</strong>l senyal<br />
d'entrada clkin. Si la variable genèrica versio val "experimentacio", aquest procés s'encarrega <strong>de</strong><br />
dividir la freqüència <strong>de</strong>l senyal clkin (50 MHz) per 500.000, donant lloc al senyal clk100, amb una<br />
freqüència <strong>de</strong> 100 Hz. En canvi, si la variable genèrica versio no val "experimentacio" (per exemple,<br />
si val "simulacio"), el procés queda reduït a un divisor <strong>de</strong> freqüència per 2, fent que el senyal clk100<br />
tingui una freqüència <strong>de</strong> 25 MHz. En aquest procés s'empra una variable anomenada divlimit, que<br />
materialitza un comptador emprat en el divisor <strong>de</strong> freqüència per comptar els 250.000 perío<strong>de</strong>s <strong>de</strong>l<br />
senyal <strong>de</strong> rellotge clkin que hi ha en un semiperío<strong>de</strong> <strong>de</strong>l rellotge clk100. S'inicialitza a 0.<br />
Després es troba un altre procés, anomenat sinc, que sincronitza els senyals d'entrada nstart_nstop i<br />
nactual_nmem amb el senyal <strong>de</strong> rellotge clk100, generant nstart_nstop_s i nactual_nmem_s.<br />
A continuació es troba un altre procés, anomenat flancs, que implementa els <strong>de</strong>tectors <strong>de</strong> flancs <strong>de</strong><br />
baixada <strong>de</strong>ls senyals nstart_nstop_s i nactual_nmem_s, generant nstart_nstop_fb i nactual_nmem_fb.<br />
Després es troba un altre procés, anomenat control, que implementa l'autòmat <strong>de</strong> control amb estat<br />
estat_control. La funció <strong>de</strong> transició <strong>de</strong> l'autòmat s'implementa amb una sentència case sobre els<br />
valors <strong>de</strong> l'estat estat_control. L'autòmat genera els senyals <strong>de</strong> control clr_compt_reg, en_comptador,<br />
ld_registre i sel_actual. Els senyals clr_compt_reg, en_comptador i sel_actual es generen <strong>de</strong> forma<br />
combinacional, fora <strong>de</strong> l'estructura condicional <strong>de</strong>l flanc <strong>de</strong> pujada <strong>de</strong>l rellotge clk100, mentre que<br />
el senyal ld_registre s'actualitza <strong>de</strong> forma registrada a fi d'endarrerir-lo un perío<strong>de</strong> <strong>de</strong>l rellotge clk100<br />
respecte <strong>de</strong> l'activació a 1 <strong>de</strong>l senyal nactual_nmem_fb.<br />
Seguidament es troba un altre procés, anomenat comptador, que correspon al comptador <strong>de</strong> temps.<br />
Quan el senyal <strong>de</strong> control clr_compt_reg val 1, el comptador es posa a "0000". Altrament, quan el<br />
senyal <strong>de</strong> control en_comptatge val 1 i el valor <strong>de</strong> les <strong>de</strong>senes <strong>de</strong>ls segons és diferent <strong>de</strong>l valor<br />
binari 1111 (aquest valor correspon a l'espai en blanc i és indicatiu <strong>de</strong> què el comptador està al valor "<br />
Err"), el comptador s'incrementa en una unitat, tot tenint present que el valor següent <strong>de</strong>l "9999" és<br />
" Err". Altrament (inclou que el senyal en_comptatge val 1 i el valor <strong>de</strong>l comptador és " Err"), no es<br />
fa cap acció sobre el comptador, que manté el seu valor.<br />
A continuació es troba un altre procés, anomenat registre, que correspon al registre <strong>de</strong> temps. Quan<br />
el senyal <strong>de</strong> control clr_compt_reg val 1, el registre es posa a "0000". Altrament, quan el senyal <strong>de</strong><br />
control ld_registre val 1, el registre s'actualitza amb el contingut <strong>de</strong>l comptador. Altrament, no es fa<br />
cap acció sobre el registre, que manté el seu valor.<br />
2 - 17
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 2<br />
Finalment, es troba la implementació <strong>de</strong>l selector <strong>de</strong>l paràmetre temporal a visualitzar, la qual es fa<br />
amb sentències <strong>de</strong>l tipus assignació condicional a senyal, i la implementació <strong>de</strong> les sorti<strong>de</strong>s associa<strong>de</strong>s<br />
als punts <strong>de</strong>cimals <strong>de</strong>ls set-segments.<br />
7. COMPILACIÓ I VERIFICACIÓ FUNCIONAL DEL DISSENY<br />
7.1. Preparació <strong>de</strong> l'entorn i generació <strong>de</strong> la base <strong>de</strong> da<strong>de</strong>s <strong>de</strong>l disseny (anàlisi i síntesi)<br />
Prepareu l'entorn <strong>de</strong>l compilador <strong>de</strong> forma idèntica a com ho heu fet a la pràctica 1. Seguidament,<br />
trieu Processing Start Start Analysis & Synthesis a fi <strong>de</strong> dur a terme l'etapa d'anàlisi i síntesi.<br />
Aquesta etapa s'ha <strong>de</strong> completar amb èxit i 4 advertiments, si bé a la finestra <strong>de</strong>ls missatges només<br />
us apareixerà un, el qual us indica que hi ha algunes sorti<strong>de</strong>s (tres <strong>de</strong> les sorti<strong>de</strong>s corresponents als<br />
punts <strong>de</strong>cimals) que estan fixes a un nivell lògic. És correcte, perquè voleu que aquests tres punts<br />
<strong>de</strong>cimals sempre estiguin apagats.<br />
7.2. Simulació funcional <strong>de</strong>l projecte.<br />
A la barra <strong>de</strong> menús <strong>de</strong>l Quartus II, trieu Tools Run EDA Simulation Tool EDA RTL Simulation.<br />
S'obrirà la finestra principal <strong>de</strong>l Mo<strong>de</strong>lSim. Maximitzeu-la.<br />
Observeu, a la finestra <strong>de</strong> la transcripció, quines són les coman<strong>de</strong>s que s'han fet <strong>de</strong> forma automàtica<br />
en executar-se el simulador. Entre aquestes coman<strong>de</strong>s <strong>de</strong>staquen les següents:<br />
- vlib rtl_work. Aquesta comanda crea una biblioteca <strong>de</strong>l Mo<strong>de</strong>lSim anomenada rtl_work al vostre<br />
directori <strong>de</strong> simulació, que és el directori simulation/mo<strong>de</strong>lsim. Amb l'explorador <strong>de</strong>l Windows,<br />
baixeu al directori simulation/mo<strong>de</strong>lsim <strong>de</strong>l directori <strong>de</strong>l vostre disseny i comproveu que en ell s'ha<br />
creat un directori anomenat rtl_work corresponent a aquesta biblioteca.<br />
- vmap work rtl_work. Aquesta comanda associa el directori <strong>de</strong> treball work (sempre s'anomena<br />
així) al directori rtl_work.<br />
- vcom -93 -work work {/cronometre/cronometre.vhd}. Aquesta comanda compila el fitxer<br />
cronometre.vhd en el directori <strong>de</strong> treball, consi<strong>de</strong>rant la versió <strong>de</strong> l'any 1993 per al VHDL. Amb<br />
l'explorador <strong>de</strong>l Windows, aneu al directori <strong>de</strong> treball .../simulation/mo<strong>de</strong>lsim/rtl_work i comproveu<br />
que en ell s'ha creat un directori anomenat cronometre, que és el nom <strong>de</strong>l vostre disseny.<br />
- vcom -93 -work work {/altera/10.0sp1/quartus/libraries/vhdl/bibsed/bcd_err_nss.vhd}.<br />
Aquesta comanda compila el fitxer bcd_err_nss.vhd <strong>de</strong> la biblioteca d'usuari bibsed en el directori<br />
<strong>de</strong> treball, consi<strong>de</strong>rant la versió <strong>de</strong> l'any 1993 per al VHDL. S'ha generat automàticament en haver<br />
emprat aquest component. Amb l'explorador <strong>de</strong>l Windows, comproveu que en el directori <strong>de</strong> treball<br />
.../simulation/mo<strong>de</strong>lsim/rtl_work s'ha creat un directori anomenat bcd_err_nss.<br />
Observeu, a la finestra <strong>de</strong> biblioteques, que, a més a més <strong>de</strong> la biblioteca d'usuari bibsed, també<br />
teniu accessibles les biblioteques rtl_work i work. Aquestes dues darreres biblioteques contenen el<br />
vostre disseny (l'entitat cronometre) i el component bcd_err_nss.<br />
A la finestra <strong>de</strong> biblioteques, feu doble click sobre l'entitat cronometre <strong>de</strong> la biblioteca rtl_work a fi<br />
<strong>de</strong> simular el vostre disseny. Po<strong>de</strong>u incloure tots els senyals <strong>de</strong> la finestra d'objectes en la finestra <strong>de</strong><br />
les formes d'ona. Aquests senyals són les entra<strong>de</strong>s i sorti<strong>de</strong>s <strong>de</strong>l vostre disseny i tots els senyals que<br />
heu <strong>de</strong>clarat en l'arquitectura <strong>de</strong> l'entitat cronometre. Or<strong>de</strong>neu els senyals al vostre gust. Els po<strong>de</strong>u<br />
posar en l'ordre indicat a la figura 4 (entra<strong>de</strong>s i senyals interns immediats, altres senyals interns<br />
2 - 18
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 2<br />
progressant cap a les sorti<strong>de</strong>s, sorti<strong>de</strong>s). Es recomana configurar els senyals que són codis en BCD<br />
natural ampliats amb caràcters alfabètics com a enters sense signe ("radix": "unsigned"). Un cop<br />
or<strong>de</strong>nats i configurats els senyals, es recomanable guardar la configuració en un fitxer que po<strong>de</strong>u<br />
anomenar wave_rtl.do dins el directori .../simulation/mo<strong>de</strong>lsim.<br />
Figura 4: Simulació <strong>de</strong>l projecte cronometre a nivell funcional.<br />
Seguidament, escriviu les coman<strong>de</strong>s <strong>de</strong> simulació que vulgueu executar a la finestra <strong>de</strong> la transcripció<br />
i observeu l'evolució <strong>de</strong>l vostre circuit. També po<strong>de</strong>u editar un fitxer que inclogui tota la seqüència<br />
d'aquestes coman<strong>de</strong>s (per exemple, un fitxer que po<strong>de</strong>u anomenar test_cronometre.do), <strong>de</strong>sant-lo al<br />
directori .../simulation/mo<strong>de</strong>lsim i executar-lo amb la comanda do test_cronometre.do. Com a<br />
seqüència <strong>de</strong> coman<strong>de</strong>s a fer, po<strong>de</strong>u intentar replicar l'evolució <strong>de</strong>l cronòmetre que es mostra a la<br />
figura 4. Aquesta evolució verifica bona part <strong>de</strong> les especificacions <strong>de</strong>l vostre disseny. També és<br />
recomanable fer una simulació que inclogui un comptatge complet <strong>de</strong>l comptador, <strong>de</strong>s <strong>de</strong>l valor<br />
"0000" fins al valor " Err". Comproveu que no existeixen retards entre senyals en la vostra simulació.<br />
Això és <strong>de</strong>gut a què esteu fent una simulació només a nivell funcional (retards nuls).<br />
En cas <strong>de</strong> tenir errors en les compilacions, haureu <strong>de</strong> revisar el codi VHDL que heu introduït. En<br />
cas <strong>de</strong> què les simulacions <strong>de</strong>l vostre disseny no reflecteixen el funcionament esperat <strong>de</strong>l vostre<br />
disseny, haureu <strong>de</strong> revisar el codi VHDL que heu introduït. En acabar amb èxit totes les simulacions<br />
<strong>de</strong>l vostre disseny, tanqueu totes les finestres <strong>de</strong>l Mo<strong>de</strong>lSim.<br />
8. COMPILACIÓ I VERIFICACIÓ TEMPORAL DEL DISSENY<br />
8.1. Preparació <strong>de</strong> l'entorn i compilació completa <strong>de</strong>l projecte.<br />
Torneu al Quartus II per fer l'assignació <strong>de</strong>ls senyals d'entrada/sortida als pins <strong>de</strong>l dispositiu lògic<br />
programable. Establiu la ubicació <strong>de</strong>ls senyals d'entrada/sortida <strong>de</strong>l vostre disseny que s'han indicat<br />
a l'apartat 3 d'aquesta pràctica fent servir el procediment explicat a la pràctica 1.<br />
2 - 19
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 2<br />
Obriu l'editor d'assignacions i creeu dues noves assignacions per a cada un <strong>de</strong>ls dos grups <strong>de</strong> senyals<br />
<strong>de</strong> sortida nss* i npd*. Noteu que us esteu beneficiant <strong>de</strong> la possibilitat d'emprar comodins a l'hora<br />
d'especificar el noms <strong>de</strong>ls grups. El primer grup agrupa tots els senyals <strong>de</strong>ls set-segments, mentre<br />
que el segon agrupa a tots els senyals <strong>de</strong>ls punts <strong>de</strong>cimals. En una <strong>de</strong> les noves assignacions, assigneu<br />
el valor 1 al tipus Slew Rate i, en l'altra, assigneu el valor 8 mA al tipus Current Strength (el valor<br />
màxim, que és 16 mA, us donaria un advertiment en haver masses pins <strong>de</strong>l mateix banc que po<strong>de</strong>n<br />
estar actius simultàniament).<br />
Amb ajut <strong>de</strong> l'editor <strong>de</strong> texts <strong>de</strong>l Quartus II, editeu un fitxer amb els requisits temporals <strong>de</strong>l vostre<br />
disseny i anomeneu-lo cronometre.sdc, <strong>de</strong>sant-lo al directori .../cronometre. Els únics dos requisits<br />
temporals que heu d'incloure en aquest fitxer són que l'entrada <strong>de</strong> rellotge d'alta freqüència clkin<br />
pugui anar a 50 MHz i que el senyal <strong>de</strong> rellotge generat clk100 sigui una divisió per 2 <strong>de</strong>l senyal<br />
clkin. No us obli<strong>de</strong>u d'afegir la plantilla Auto-Calculate Uncertainty al final <strong>de</strong>l fitxer.<br />
Compileu el projecte cronometre <strong>de</strong> bon principi, però sense generar els fitxers <strong>de</strong> programació, ja<br />
que no té sentit generar-los per a la versió <strong>de</strong> simulació. La compilació s'ha <strong>de</strong> completar amb èxit i<br />
6 advertiments, si bé a la finestra <strong>de</strong>ls missatges només us apareixeran 3. Els 4 primers són els ja<br />
comentats a l'apartat 7.1. El següent advertiment us indica que la versió <strong>de</strong> <strong>de</strong>mostració no té la<br />
prestació LogicLock. Finalment, el darrer advertiment us indica que el procés <strong>de</strong> compilació s'ha<br />
saltat l'etapa corresponent a l'"assembler". Així ho havíeu or<strong>de</strong>nat.<br />
Comproveu que heu emprat 117 elements lògics <strong>de</strong>ls 15.408 existents al dispositiu (menys d'un 1%<br />
<strong>de</strong> la capacitat <strong>de</strong>l dispositiu). Comproveu també que la freqüència màxima a la que pot treballar el<br />
vostre disseny és molt superior als 50 MHz requerits.<br />
8.2. Simulació temporal <strong>de</strong>l projecte.<br />
A la barra <strong>de</strong> menús <strong>de</strong>l Quartus II, trieu Tools Run EDA Simulation Tool EDA Gate Level<br />
Simulation.... S'obrirà una finestra que us <strong>de</strong>manarà quin <strong>de</strong>ls mo<strong>de</strong>ls <strong>de</strong>l vostre disseny voleu simular<br />
(recor<strong>de</strong>u que en teniu tres, cada un amb unes <strong>de</strong>termina<strong>de</strong>s condicions <strong>de</strong> temperatura i <strong>de</strong>l procés<br />
<strong>de</strong> fabricació). Seleccioneu el mo<strong>de</strong>l "Slow -6 1.2V 85 Mo<strong>de</strong>l" i premeu el botó Run. S'obrirà la<br />
finestra principal <strong>de</strong>l Mo<strong>de</strong>lSim. Maximitzeu-la.<br />
Observeu, a la finestra <strong>de</strong> la transcripció, quines són les coman<strong>de</strong>s que s'han fet <strong>de</strong> forma automàtica<br />
en executar-se el simulador. Entre aquestes coman<strong>de</strong>s <strong>de</strong>staquen les següents:<br />
- vlib gate_work. Aquesta comanda crea una biblioteca (directori) anomenada gate_work al vostre<br />
directori <strong>de</strong> simulació, que és el directori simulation/mo<strong>de</strong>lsim. Amb l'explorador <strong>de</strong>l Windows,<br />
aneu al directori <strong>de</strong>l vostre disseny, baixeu al directori simulation/mo<strong>de</strong>lsim i comproveu que en ell<br />
s'ha creat un directori anomenat gate_work.<br />
- vmap work gate_work. Aquesta comanda associa el directori <strong>de</strong> treball work (sempre s'anomena<br />
així) al directori gate_work.<br />
- vcom -93 -work work {cronometre_6_1200mv_85c_slow.vho}. Aquesta comanda compila el<br />
fitxer cronometre_6_1200mv_85c_slow.vho en el directori <strong>de</strong> treball, consi<strong>de</strong>rant la versió <strong>de</strong> l'any<br />
1993 per al VHDL. Aquest fitxer conté tot el vostre disseny dins una entitat anomenada cronometre.<br />
Amb l'explorador <strong>de</strong>l Windows, aneu al directori <strong>de</strong> treball .../simulation/mo<strong>de</strong>lsim/gate_work i<br />
comproveu que en ell s'ha creat un directori anomenat cronometre.<br />
Fixeu-vos que només s'ha compilat un fitxer. Això és <strong>de</strong>gut a què l'esmentat fitxer conté tot el vostre<br />
disseny <strong>de</strong> forma plana, estant ja integrats en aquest disseny els components <strong>de</strong> la biblioteca bibsed.<br />
2 - 20
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 2<br />
Observeu, a la finestra <strong>de</strong> biblioteques, que, a més a més <strong>de</strong> la biblioteca d'usuari bibsed, també<br />
teniu accessibles les biblioteques gate_work i work. Aquestes dues darreres biblioteques presenten<br />
el vostre disseny (l'entitat cronometre).<br />
Per tal <strong>de</strong> simular el vostre disseny, trieu Simulate Start Simulation.... a la barra <strong>de</strong> menús <strong>de</strong>l<br />
Mo<strong>de</strong>lSim. S'obrirà la finestra <strong>de</strong> l'engegada <strong>de</strong> la simulació, que presenta vàries pestanyes. Aneu a<br />
la pestanya <strong>de</strong>l disseny (Design), expandiu la biblioteca gate_work i seleccioneu el disseny cronometre.<br />
Aneu ara a la pestanya <strong>de</strong> fitxers <strong>de</strong> retards (SDF), premeu el botó Add... i afegiu el fitxer <strong>de</strong> retards<br />
cronometre_6_1200mv_85c_vhd_slow.sdo situat al directori .../cronometre/simulation/mo<strong>de</strong>lsim. Cal<br />
aplicar-lo a la regió primària, que ja surt per <strong>de</strong>fecte (/) i consi<strong>de</strong>rar retards màxims. Vali<strong>de</strong>u amb<br />
OK per procedir a preparar la simulació. A la finestra d'objectes apareixeran tots els senyals <strong>de</strong>l<br />
vostre disseny. Noteu que molts d'aquests senyals (bàsicament, els senyals interns <strong>de</strong>l vostre disseny)<br />
són diferents <strong>de</strong>ls que teníeu a la simulació funcional que heu fet en el capítol anterior, ja que són<br />
conseqüència <strong>de</strong> la compilació sobre el dispositiu d'ALTERA. Alguns <strong>de</strong>ls senyals presents a la<br />
simulació funcional han <strong>de</strong>saparegut (per exemple, els senyals nactual_nmem_fb, en_comptador,<br />
<strong>de</strong>senes_s, unitats_s, <strong>de</strong>senes_c i unitats_c) o s'han reconvertit (per exemple, el senyal estat_control,<br />
que ara es materialitza en tres biestables, un per cada estat <strong>de</strong> l'autòmat <strong>de</strong> control, en haver-se<br />
sintetitzat aquest autòmat emprant la tècnica "one-hot"). Haureu <strong>de</strong> <strong>de</strong>duir quins d'aquests senyals<br />
són els senyals interns més rellevants <strong>de</strong>l vostre disseny.<br />
Incorporeu els senyals que vulgueu <strong>de</strong> la finestra d'objectes a la finestra <strong>de</strong> les formes d'ona. Es<br />
recomana que incorporeu els senyals que apareixen a la figura 5 i que els or<strong>de</strong>neu en l'ordre indicat<br />
a dita figura (entra<strong>de</strong>s i senyals interns immediats, altres senyals interns progressant cap a les sorti<strong>de</strong>s,<br />
sorti<strong>de</strong>s). També es recomana que configureu els senyals que són codis en BCD natural ampliats<br />
amb caràcters alfabètics com a enters sense signe ("radix": "unsigned"). Un cop or<strong>de</strong>nats i configurats<br />
els senyals, es recomanable guardar la configuració en un fitxer que po<strong>de</strong>u anomenar wave_gate.do<br />
dins el directori .../simulation/mo<strong>de</strong>lsim.<br />
Figura 5: Simulació <strong>de</strong>l projecte cronometre a nivell temporal.<br />
2 - 21
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 2<br />
Simuleu ara el vostre disseny amb el Mo<strong>de</strong>lSim. Po<strong>de</strong>u emprar els mateixos fitxers que heu emprat<br />
abans per simular el vostre disseny a nivell funcional (per exemple, el fitxer test_cronometre.do).<br />
La figura 5 mostra la mateixa simulació que la <strong>de</strong> la figura 4, però ara incloent-hi els retards reals<br />
imposats pel dispositiu lògic programable. Mesureu quin és el màxim retard <strong>de</strong> propagació <strong>de</strong>l vostre<br />
circuit (<strong>de</strong>s d'un flanc <strong>de</strong>l rellotge al corresponent canvi en les sorti<strong>de</strong>s <strong>de</strong>l disseny). En acabar amb<br />
èxit totes les simulacions <strong>de</strong>l vostre disseny, tanqueu totes les finestres <strong>de</strong>l Mo<strong>de</strong>lSim.<br />
9. IMPLEMENTACIÓ DEL DISSENY SOBRE EL DISPOSITIU LÒGIC PROGRAMABLE<br />
Un cop verificat el vostre disseny amb el Mo<strong>de</strong>lSim, és hora <strong>de</strong> provar-lo experimentalment sobre<br />
el dispositiu lògic programable EP3C16F484C6N <strong>de</strong> la placa educativa DE0 d'ALTERA/Terasic. A<br />
tal fi, modificareu el vostre disseny a la versió d'experimentació i el tornareu a compilar. Després,<br />
programareu el dispositiu lògic programable EP3C16F484C6N que hi ha a la placa educativa DE0<br />
d'ALTERA/Terasic i verificareu experimentalment el vostre disseny.<br />
En el fitxer <strong>de</strong>l vostre disseny cronometre.vhd, modifiqueu la variable genèrica versio <strong>de</strong> simulacio<br />
a experimentacio. Seguidament, aneu a la configuració <strong>de</strong>l compilador i marqueu la casella d'executar<br />
l'"assembler" durant la compilació.<br />
No cal que modifiqueu el fitxer cronometre.sdc, que conté els requeriments temporals <strong>de</strong>l vostre<br />
disseny, encara que ara el senyal clk100 és d'una freqüència molt més baixa que en el cas <strong>de</strong> la<br />
simulació funcional.<br />
Compileu <strong>de</strong> nou el projecte cronometre. La compilació s'ha <strong>de</strong> completar amb èxit i 5 advertiments,<br />
si bé a la finestra <strong>de</strong>ls missatges només us apareixeran 2. Són els advertiments ja comentats a<br />
l'apartat 8.1, llevat <strong>de</strong>l que indica que el procés <strong>de</strong> compilació s'ha saltat l'etapa corresponent a<br />
l'"assembler".<br />
Comproveu que heu emprat 149 elements lògics <strong>de</strong>ls 15.408 existents al dispositiu (menys d'un 1%<br />
<strong>de</strong> la capacitat <strong>de</strong>l dispositiu). Comproveu també que la freqüència màxima a la que pot treballar el<br />
vostre disseny és molt superior als 50 MHz requerits.<br />
Connecteu la placa educativa DE0 d'ALTERA/Terasic al vostre PC mitjançant el cable USB i a la<br />
xarxa elèctrica mitjançant el cable d'alimentació. Verifiqueu que el commutador SW11 <strong>de</strong> la placa<br />
es troba a la posició RUN i doneu tensió a la placa prement l'interruptor vermell.<br />
Seguidament, en<strong>de</strong>gueu el programador <strong>de</strong>l Quartus II i programeu el dispositiu lògic programable<br />
EP3C16F484C6N <strong>de</strong> la placa amb el fitxer cronometre.sof.<br />
Verifiqueu experimentalment el vostre disseny prement els polsadors BUTTON2 (START/STOP) i<br />
BUTTON1 (ACTUAL/MEM). Comproveu el que passa quan el cronòmetre supera el temps màxim<br />
<strong>de</strong> comptatge.<br />
2 - 22
SISTEMES ELECTRÒNICS<br />
ÍNDEX<br />
DIGITALS<br />
PRÀCTICA 3<br />
DISSENY D'UN AUTÒMAT PER A L'OBERTURA I<br />
TANCAMENT AUTOMATITZATS D'UNA PORTA<br />
EMPRANT VHDL<br />
1. OBJECTIUS .................................................................................................................................... 3<br />
2. PREPARACIÓ ................................................................................................................................. 3<br />
3. DESCRIPCIÓ DE LA MAQUETA ................................................................................................. 3<br />
4. ESPECIFICACIONS ....................................................................................................................... 8<br />
5. REALITZACIÓ ............................................................................................................................... 9
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 3<br />
3 - 2
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 3<br />
DISSENY D'UN AUTÒMAT PER A L'OBERTURA I TANCAMENT AUTOMATITZATS<br />
D'UNA PORTA EMPRANT VHDL<br />
1. OBJECTIUS<br />
Aquesta pràctica té un doble objectiu. D'una banda, exercitar els coneixements adquirits a classe <strong>de</strong><br />
teoria i a les darreres pràctiques, emprant-los per dissenyar un sistema <strong>de</strong> comandament que gestioni<br />
l'obertura i tancament automatitzats d'una porta. D'altra banda, presentar les principals característiques<br />
<strong>de</strong> la maqueta d'una porta amb un sistema d'obertura i tancament electromecànic, la qual serà emprada,<br />
no només en aquesta pràctica, sinó també en les dues pràctiques següents <strong>de</strong> l'assignatura.<br />
El sistema <strong>de</strong> comandament a dissenyar s'ha d'implementar sobre un dispositiu lògic programable<br />
<strong>de</strong> la família Cyclone III d'ALTERA, concretament l'EP3C16F484C6N ubicat a la placa educativa<br />
DE0 d'ALTERA/Terasic, fent servir els paquets <strong>de</strong> CAD electrònic Quartus II i Mo<strong>de</strong>lSim introduïts<br />
a la pràctica 1 i emprant el llenguatge <strong>de</strong> <strong>de</strong>scripció <strong>de</strong> hardware VHDL com a mèto<strong>de</strong> d'entrada <strong>de</strong>l<br />
disseny.<br />
2. PREPARACIÓ<br />
Repasseu els enunciats <strong>de</strong> les pràctiques 1 i 2, en les que es van introduir, respectivament, els paquets<br />
<strong>de</strong> CAD electrònic Quartus II i Mo<strong>de</strong>lSim i el llenguatge <strong>de</strong> <strong>de</strong>scripció <strong>de</strong> hardware VHDL. Llegiuvos<br />
<strong>de</strong>tingudament l'enunciat d'aquesta pràctica, parant especial atenció a la <strong>de</strong>scripció <strong>de</strong> la maqueta,<br />
a les especificacions <strong>de</strong>l sistema <strong>de</strong> comandament i al codi VHDL subministrat.<br />
3. DESCRIPCIÓ DE LA MAQUETA<br />
Es disposa d'una maqueta d'una porta dotada d'un sistema d'obertura i tancament electromecànic<br />
controlable digitalment. La figura 1 esquerra mostra la maqueta <strong>de</strong> la porta vista <strong>de</strong>s <strong>de</strong> l'exterior <strong>de</strong>l<br />
recinte al qual es vol accedir a través <strong>de</strong> la porta, mentre que la figura 1 dreta mostra la maqueta<br />
vista <strong>de</strong>s <strong>de</strong> l'interior <strong>de</strong>l recinte al que es vol accedir.<br />
Figura 1: Vistes <strong>de</strong> la maqueta <strong>de</strong> la porta <strong>de</strong>s <strong>de</strong> l'exterior <strong>de</strong>l recinte (foto <strong>de</strong> l'esquerra)<br />
i <strong>de</strong>s <strong>de</strong> l'interior <strong>de</strong>l recinte (foto <strong>de</strong> la dreta).<br />
El sistema d'obertura i tancament <strong>de</strong> la porta està integrat per una sèrie <strong>de</strong> sensors i actuadors i per<br />
llurs interfícies amb el sistema digital <strong>de</strong> comandament (l'EP3C16F484C6N <strong>de</strong> la placa DE0), operant<br />
3 - 3
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 3<br />
gràcies a tres tensions d'alimentació: 12 V (provinents d'una font d'alimentació), 5 V (provinents <strong>de</strong><br />
la placa DE0) i 3,3 V (obtinguts al propi sistema a partir <strong>de</strong> la tensió <strong>de</strong> 5 V amb un regulador <strong>de</strong><br />
tensió). La figura 2 mostra aquest sistema d'obertura i tancament, el qual es troba cobert, a la figura 1,<br />
per una tapa lliscant situada a l'esquerra <strong>de</strong> la porta en l'interior <strong>de</strong>l recinte.<br />
Figura 2: Vista <strong>de</strong>l sistema d'obertura i tancament <strong>de</strong> la porta.<br />
La porta s'immobilitza mitjançant un passador que es pot moure entre dues posicions extremes,<br />
corresponents als estats <strong>de</strong> porta immobilitzada i porta alliberada. Aquestes posicions extremes venen<br />
indica<strong>de</strong>s, respectivament, per dos senyals actius per 1, FCI i FCA, provinents <strong>de</strong> sengles <strong>de</strong>tectors<br />
<strong>de</strong> final <strong>de</strong> carrera (FCI = 1 quan la porta està immobilitzada i FCA = 1 quan la porta està alliberada).<br />
Quan un <strong>de</strong>ls senyals FCI o FCA està a 1, l'altre està a 0. En punts intermedis <strong>de</strong>l recorregut, els dos<br />
senyals estan a 0. A més a més, quan la porta està alliberada, es pot trobar oberta o tancada. Existeix<br />
un tercer <strong>de</strong>tector <strong>de</strong> l'estat <strong>de</strong> la porta que subministra un senyal NPOB actiu per 0 que indica si la<br />
porta està oberta (NPOB = 0 quan la porta està oberta). La figura 3 mostra, a l'esquerra, els <strong>de</strong>tectors<br />
<strong>de</strong> final <strong>de</strong> carrera que generen els senyals FCI (el <strong>de</strong> dreta) i FCA (el <strong>de</strong> l'esquerra) i, a la dreta, el<br />
<strong>de</strong>tector que genera NPOB i que es troba en un <strong>de</strong>ls angles superiors <strong>de</strong>l marc <strong>de</strong> la porta.<br />
Figura 3: Detectors <strong>de</strong> l'estat <strong>de</strong> la porta: a l'esquerra, finals <strong>de</strong> carrera que generen els<br />
senyals FCI i FCA; a la dreta, <strong>de</strong>tector que genera NPOB.<br />
El passador es mou gràcies a un actuador electromecànic integrat per un solenoi<strong>de</strong> <strong>de</strong> 12 V, una<br />
palanca i una molla <strong>de</strong> recuperació. La figura 4 mostra el conjunt <strong>de</strong> l'actuador electromecànic: a la<br />
part inferior es troba el solenoi<strong>de</strong>; a la part superior, el passador amb la molla <strong>de</strong> recuperació; enmig,<br />
transmetent el moviment <strong>de</strong>l solenoi<strong>de</strong> al passador, la palanca. També es po<strong>de</strong>n observar els <strong>de</strong>tectors<br />
finals <strong>de</strong> carrera que generen els senyals FCI i FCA, els quals són accionats per la palanca.<br />
3 - 4
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 3<br />
Figura 4: Detall <strong>de</strong>l mecanisme electromecànic d'obertura i tancament <strong>de</strong> la porta.<br />
El solenoi<strong>de</strong> presenta dos estats estables, que es corresponen als estats <strong>de</strong> porta immobilitzada i porta<br />
alliberada, po<strong>de</strong>nt-se passar d'un estat a l'altre mitjançant l'aplicació d'una diferència <strong>de</strong> potencial al<br />
solenoi<strong>de</strong> d'uns 12 V, positiva per al moviment en un sentit i negativa per al moviment en sentit<br />
invers. A fi <strong>de</strong> generar aquesta diferència <strong>de</strong> potencial, es disposa d'un xip L293B <strong>de</strong> SGS-Thomson,<br />
que comprèn un pont <strong>de</strong> transistors controlable digitalment mitjançant tres senyals actius per 1: ENP<br />
(habilitació <strong>de</strong>l pont), PIA (pas <strong>de</strong> porta immobilitzada a alliberada) i PAI (pas <strong>de</strong> porta alliberada a<br />
immobilitzada). Quan el senyal ENP està a 0 o quan els senyals PIA i PAI prenen el mateix valor,<br />
no s'aplica cap tensió al solenoi<strong>de</strong> i, en conseqüència, aquest roman en el seu estat anterior. Quan el<br />
senyal ENP presenta un 1 i, a més a més, els senyals PIA i PAI són diferents, s'aplica una diferència<br />
<strong>de</strong> potencial <strong>de</strong> 12 V o –12 V al solenoi<strong>de</strong>, la qual el fa alliberar la porta quan PIA està a 1 i PAI<br />
està a 0 i immobilitzar-la quan PAI està a 1 i PIA està a 0. A fi d'evitar la <strong>de</strong>strucció <strong>de</strong>l solenoi<strong>de</strong>,<br />
cal limitar a uns 3 segons el temps en què se li aplica una diferència <strong>de</strong> potencial <strong>de</strong> 12 V o –12 V.<br />
Quan la porta està immobilitzada, es pot or<strong>de</strong>nar l'obertura d'aquesta mitjançant dos procediments.<br />
D'una banda, es disposa d'un teclat situat a l'exterior <strong>de</strong>l recinte al qual es vol accedir a través <strong>de</strong> la<br />
porta. Aquest teclat pot servir per a la introducció d'un codi secret que permeti alliberar la porta <strong>de</strong>s<br />
<strong>de</strong> l'exterior. També pot servir per a la modificació i verificació d'aquest codi secret. El teclat és <strong>de</strong><br />
tipus matricial <strong>de</strong> dotze tecles (*, # i dígits <strong>de</strong>l 0 al 9) distribuï<strong>de</strong>s en quatre files per tres columnes.<br />
Per accedir al teclat hom disposa <strong>de</strong> set senyals, quatre associa<strong>de</strong>s a les files i tres a les columnes.<br />
S'ha triat connectar les files a unes sorti<strong>de</strong>s <strong>de</strong> selecció <strong>de</strong>l sistema <strong>de</strong> control i les columnes a unes<br />
entra<strong>de</strong>s <strong>de</strong> da<strong>de</strong>s <strong>de</strong>l sistema <strong>de</strong> control. Per evitar possibles curtcircuits entre les sorti<strong>de</strong>s <strong>de</strong> selecció,<br />
s'ha <strong>de</strong>cidit emprar sorti<strong>de</strong>s en drenador obert, capaces <strong>de</strong> generar alta impedància o una tensió baixa,<br />
i connectar resistències <strong>de</strong> "pull-up" a les entra<strong>de</strong>s <strong>de</strong> da<strong>de</strong>s per po<strong>de</strong>r forçar en elles una tensió alta.<br />
Quan no hi hagi cap tecla premuda, s'obtindran tensions altes a les entra<strong>de</strong>s <strong>de</strong> da<strong>de</strong>s, estiguin com<br />
estiguin les sorti<strong>de</strong>s <strong>de</strong> selecció. Quan les sorti<strong>de</strong>s <strong>de</strong> selecció estiguin en alta impedància, s'obtindran<br />
tensions altes a les entra<strong>de</strong>s <strong>de</strong> da<strong>de</strong>s, estiguin com estiguin les tecles. Només s'obtindrà una tensió<br />
baixa en una entrada <strong>de</strong> da<strong>de</strong>s quan hi hagi una tecla premuda i s'hagi seleccionat la fila en la que es<br />
troba la tecla (sortida <strong>de</strong> selecció subministrant una tensió baixa). En conseqüència, tant les sorti<strong>de</strong>s<br />
<strong>de</strong> selecció, NST3 a NST0, com les entra<strong>de</strong>s <strong>de</strong> da<strong>de</strong>s, NDT2 a NDT0, són actives per 0.<br />
D'altra banda, es disposa <strong>de</strong> dos polsadors situats a l'interior <strong>de</strong>l recinte. Aquests dos polsadors<br />
generen dos senyals actius per 1, CMD el polsador <strong>de</strong> l'esquerra i CET el polsador <strong>de</strong> la dreta, que<br />
subministren un 1 en prémer-los. La finalitat d'aquests polsadors pot variar d'acord a les especificacions<br />
funcionals <strong>de</strong>l sistema. Per exemple, el primer d'ells pot servir per alliberar la porta <strong>de</strong>s <strong>de</strong> l'interior,<br />
mentre que l'altre pot servir per habilitar o <strong>de</strong>shabilitar l'obertura <strong>de</strong> la porta <strong>de</strong>s <strong>de</strong> l'exterior.<br />
3 - 5
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 3<br />
A més a més, el sistema disposa <strong>de</strong> dos LEDs, un que es pot veure <strong>de</strong>s <strong>de</strong> l'exterior i un altre que es<br />
pot veure <strong>de</strong>s <strong>de</strong> l'interior. Aquests dos LEDs es coman<strong>de</strong>n mitjançant dos senyals actius per 0,<br />
NLEDTA i NLEDET, respectivament. La finalitat d'aquests dos LEDs pot variar d'acord a les<br />
especificacions funcionals <strong>de</strong>l sistema. Per exemple, el primer d'ells pot servir per indicar que s'ha<br />
acceptat una tecla que ha estat premuda, mentre que l'altre pot servir per indicar si l'obertura <strong>de</strong> la<br />
porta <strong>de</strong>s <strong>de</strong> l'exterior està habilitada o no.<br />
La figura 5 mostra, a l'esquerra, un <strong>de</strong>tall <strong>de</strong>l teclat i <strong>de</strong>l LED situats a l'exterior <strong>de</strong>l recinte i, a la<br />
dreta, un <strong>de</strong>tall <strong>de</strong>ls polsadors i <strong>de</strong>l LED situats a l'interior <strong>de</strong>l recinte.<br />
Figura 5: A l'esquerra, <strong>de</strong>tall <strong>de</strong>l teclat i LED situats a l'exterior <strong>de</strong>l recinte i, a la dreta,<br />
<strong>de</strong>tall <strong>de</strong>ls polsadors i LED situats a l'interior <strong>de</strong>l recinte.<br />
Totes les interfícies <strong>de</strong>ls elements d'entrada/sortida <strong>de</strong> la maqueta (<strong>de</strong>tectors, teclat, polsadors,<br />
solenoi<strong>de</strong> i LEDs) es troben ubicats en una placa <strong>de</strong> circuit imprès, anomenada placa d'interfícies,<br />
en la que també es troba, en la part esquerra superior, un connector <strong>de</strong> 20 pins per a un cable pla <strong>de</strong><br />
20 senyals que permet interconnectar la maqueta al dispositiu EP3C16F484C6N <strong>de</strong> la placa DE0 a<br />
través <strong>de</strong>ls pins <strong>de</strong>l connector GPIO 1. La figura 6 mostra la placa d'interfícies i la taula 1 <strong>de</strong>talla la<br />
distribució <strong>de</strong> senyals en els connectors indicats i les correspondències amb els pins d'entrada/sortida<br />
<strong>de</strong>l dispositiu EP3C16F484C6N. Finalment, la figura 7 il·lustra la connexió <strong>de</strong> la placa d'interfícies<br />
a la placa DE0.<br />
Figura 6: Placa d'interfícies amb el connector cap a la placa DE0.<br />
3 - 6
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 3<br />
Pin<br />
FPGA<br />
Pin connector<br />
GPIO 1 placa DE0<br />
Línia cable<br />
pla<br />
3 - 7<br />
Pin connector<br />
placa d'interfícies<br />
Senyal<br />
---- 11 1 1 5 V<br />
---- 12 2 2 GND<br />
Y17 13 3 3 ENP<br />
W17 14 4 4 -----<br />
U15 15 5 5 PAI<br />
T15 16 6 6 PIA<br />
W15 17 7 7 FCA<br />
V15 18 8 8 NPOB<br />
AA7 23 9 9 CMD<br />
AB7 24 10 10 FCI<br />
T14 25 11 11 NLEDTA<br />
R14 26 12 12 CET<br />
U12 27 13 13 NDT1<br />
T12 28 14 14 NLEDET<br />
R11 31 15 15 NDT2<br />
R12 32 16 16 NDT0<br />
U10 33 17 17 NST1<br />
T10 34 18 18 NST0<br />
U9 35 19 19 NST3<br />
T9 36 20 20 NST2<br />
Taula 1: Distribució <strong>de</strong> senyals en el cable pla que connecta la placa d'interfícies amb la placa<br />
DE0, en els seus connectors a cada placa i en el dispositiu EP3C16F484C6N.<br />
Placa<br />
DE0<br />
Pin 1<br />
GPIO<br />
0<br />
GPIO<br />
1<br />
5<br />
Pin 1<br />
Placa<br />
d'interfícies<br />
Figura 7: Connexió <strong>de</strong> la placa d'interfícies a la placa DE0.
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 3<br />
4. ESPECIFICACIONS<br />
El sistema <strong>de</strong> comandament per a l'obertura i tancament automatitzats <strong>de</strong> la porta <strong>de</strong> la maqueta<br />
consi<strong>de</strong>rat en aquesta pràctica només ha <strong>de</strong> tenir en compte els senyals FCI, FCA, NPOB, CMD,<br />
ENP, PIA, PAI i NLEDET <strong>de</strong> la maqueta i ha d'emprar, com a rellotge <strong>de</strong> sistema, un senyal <strong>de</strong><br />
freqüència 400 Hz (CLK400). La figura 8 esquematitza el sistema <strong>de</strong> comandament consi<strong>de</strong>rat.<br />
CMD<br />
NLEDET<br />
SISTEMA<br />
DIGITAL DE<br />
COMANDAMENT<br />
CLK400<br />
OSCIL·LADOR<br />
Figura 8: Esquema <strong>de</strong>l sistema <strong>de</strong> comandament consi<strong>de</strong>rat en aquesta pràctica.<br />
El sistema <strong>de</strong> comandament ha <strong>de</strong> verificar els següents requisits:<br />
- La porta s'ha d'alliberar quan, estant immobilitzada, es premi el polsador associat al senyal CMD.<br />
- La porta s'ha d'immobilitzar quan, estant alliberada, es produeixin qualsevol <strong>de</strong> les següents dues<br />
circumstàncies:<br />
a) Transcorreguts cinc segons <strong>de</strong>s <strong>de</strong> l'alliberament <strong>de</strong> la porta, si aquesta ha romàs tancada.<br />
b) Immediatament en tancar-se la porta, si aquesta ha estat oberta.<br />
- L'operació d'immobilització <strong>de</strong> la porta s'ha d'avortar, passant a alliberar-la <strong>de</strong> nou, en cas <strong>de</strong> què<br />
es <strong>de</strong>tecti que la porta es torna a obrir, a fi d'evitar malmetre el sistema d'immobilització. Per tal<br />
que rebots en el <strong>de</strong>tector <strong>de</strong> la porta no donin lloc a funcionaments oscil·lants <strong>de</strong>l sistema, l'estat<br />
<strong>de</strong> la porta ha <strong>de</strong> ser filtrat, no acceptant-se variacions que durin menys <strong>de</strong> 40 mil·lisegons (16<br />
perío<strong>de</strong>s <strong>de</strong>l senyal <strong>de</strong> rellotge).<br />
- En el moment <strong>de</strong> la inicialització, el sistema ha d'alliberar la porta, si aquesta estava oberta, o ha<br />
d'immobilitzar-la, en cas <strong>de</strong> què estigués tancada. Per prendre aquesta <strong>de</strong>cisió, el sistema haurà<br />
d'esperar a disposar <strong>de</strong> l'estat, un cop filtrat, <strong>de</strong> la porta.<br />
- Es recorda que no es pot tenir activat el solenoi<strong>de</strong> durant més <strong>de</strong> tres segons seguits. En cas <strong>de</strong> què<br />
durant aquest temps no s'hagi completat el canvi <strong>de</strong>sitjat en l'estat <strong>de</strong> la porta, el sistema <strong>de</strong><br />
comandament s'ha <strong>de</strong> bloquejar, <strong>de</strong>sactivant el solenoi<strong>de</strong>.<br />
- El LED associat al senyal NLEDET romandrà apagat durant el funcionament normal <strong>de</strong>l sistema i<br />
s'encendrà quan el sistema <strong>de</strong> comandament estigui bloquejat.<br />
3 - 8<br />
PAI<br />
PIA<br />
ENP<br />
FCA<br />
FCI<br />
NPOB<br />
DRIVER<br />
SOLENOIDE<br />
DETECTORS<br />
S
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 3<br />
5. REALITZACIÓ<br />
En primer lloc, cal tenir present que en la placa DE0 no es disposa d'un oscil·lador <strong>de</strong> freqüència<br />
400 Hz, sinó d'un <strong>de</strong> freqüència 50 MHz que es troba connectat al pin G21 <strong>de</strong>l dispositiu lògic<br />
programable EP3C16F484C6N. Si s'anomena CLK50M a aquesta entrada, cal incloure en el vostre<br />
disseny un divisor <strong>de</strong> freqüència per 125.000 que generi el senyal <strong>de</strong> rellotge CLK400 que necessiteu<br />
a partir <strong>de</strong>l senyal CLK50M. Recor<strong>de</strong>u, però, que és convenient eliminar (o, si més no, reduir) aquest<br />
divisor <strong>de</strong> freqüència durant les simulacions a fi <strong>de</strong> reduir llur durada.<br />
Tenint present la consi<strong>de</strong>ració anterior, es proposa implementar el sistema <strong>de</strong> comandament <strong>de</strong> la<br />
porta amb una entitat anomenada csporta que inclogui els següents quatre processos:<br />
- Un procés anomenat divf1, que s'encarregui d'obtenir el senyal clk400 a partir <strong>de</strong> clk50m.<br />
- Un procés anomenat sincr, que s'encarregui d'obtenir imatges síncrones actives per 1 <strong>de</strong> les entra<strong>de</strong>s<br />
fci, fca, npob i cmd (senyals qfci, qfca, qpob i qcmd, respectivament).<br />
- Un procés anomenat filtpob, que s'encarregui d'obtenir una imatge filtrada qpobf <strong>de</strong>l senyal qpob i<br />
<strong>de</strong> generar un senyal anomenat fiinici_qpob indicatiu <strong>de</strong> què la imatge filtrada és vàlida.<br />
- Un procés anomenat porta, que s'encarregui <strong>de</strong> gestionar les sorti<strong>de</strong>s <strong>de</strong>l sistema cap al solenoi<strong>de</strong><br />
(enp, pia i pai) i el LED (nle<strong>de</strong>t).<br />
Seguidament, se subministra el codi VHDL <strong>de</strong> l'entitat csporta, a excepció <strong>de</strong>l procés porta i <strong>de</strong>ls<br />
senyals que aquest requereix.<br />
library ieee;<br />
use ieee.std_logic_1164.all;<br />
entity csporta is<br />
generic<br />
(<br />
versio : string := "simulacio" -- "simulacio" o "experimentacio"<br />
);<br />
port<br />
(<br />
clk50m : in std_logic;<br />
fci, fca, npob, cmd : in std_logic;<br />
pia, pai, enp, nle<strong>de</strong>t : out std_logic<br />
);<br />
end csporta;<br />
architecture funcional of csporta is<br />
signal clk400 : std_logic;<br />
signal qcmd : std_logic;<br />
signal qfci, qfca : std_logic;<br />
signal qpob, qpobf : std_logic;<br />
signal fiinici_qpof : std_logic := '0';<br />
????????????????????????????????????????????????????<br />
????????????????????????????????????????????????????<br />
begin<br />
--<br />
-- divisor <strong>de</strong> frequencia<br />
divf1 : process (clk50m)<br />
constant limit : integer := 125000/2-1;<br />
variable cntdivf1 : integer range limit downto 0 := 0;<br />
begin<br />
if (versio = "experimentacio") then<br />
if clk50m'event and clk50m = '1' then<br />
if cntdivf1 /= limit then<br />
cntdivf1 := cntdivf1+1;<br />
else<br />
3 - 9
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 3<br />
cntdivf1 := 0;<br />
clk400
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 3<br />
o LVTTL <strong>de</strong> 3,3 V). És el cas <strong>de</strong>l senyal NLEDET (pin T2), que també s'haurà d'especificar com <strong>de</strong><br />
tipus LVCMOS <strong>de</strong> 3,3 V.<br />
Creeu un nou projecte <strong>de</strong>l Quartus II, anomenat csporta, que comprengui l'entitat csporta. Completeu<br />
el codi <strong>de</strong> l'entitat csporta per tal <strong>de</strong> complir totes les especificacions <strong>de</strong>l sistema <strong>de</strong> comandament<br />
indica<strong>de</strong>s a l'apartat anterior i en aquest apartat. Introduïu el disseny realitzat emprant un editor <strong>de</strong><br />
textos i compileu-lo sobre un dispositiu lògic programable EP3C16F484C6N <strong>de</strong> la família Cyclone III<br />
d'ALTERA, tot especificant l'assignació <strong>de</strong> pins d'entrada/sortida indicada a la taula 1. Recor<strong>de</strong>u que<br />
també heu d'especificar l'estàndard <strong>de</strong> les sorti<strong>de</strong>s ENP, PIA, PAI i NLEDET (LVCMOS <strong>de</strong> 3,3 V).<br />
No us obli<strong>de</strong>u d'assignar el senyal <strong>de</strong> rellotge clk50m. Verifiqueu el disseny amb el Mo<strong>de</strong>lSim. Un<br />
cop obtingueu una simulació correcta, modifiqueu adientment el procés <strong>de</strong>l divisor <strong>de</strong> freqüència,<br />
torneu a compilar el vostre disseny, programeu el dispositiu EP3C16F484C6N <strong>de</strong> la placa educativa<br />
DE0 d'ALTERA/Terasic que està connectada a la maqueta i verifiqueu el comportament <strong>de</strong>l sistema<br />
mitjançant experimentació.<br />
3 - 11
SISTEMES ELECTRÒNICS<br />
ÍNDEX<br />
DIGITALS<br />
PRÀCTICA 4<br />
DISSENY D'UN AUTÒMAT PER A LA LECTURA<br />
D'UN TECLAT MATRICIAL EMPRANT VHDL<br />
1. OBJECTIUS .................................................................................................................................... 3<br />
2. PREPARACIÓ ................................................................................................................................. 3<br />
3. ESPECIFICACIONS ....................................................................................................................... 3<br />
4. REALITZACIÓ ............................................................................................................................... 6
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 4<br />
4 - 2
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 4<br />
DISSENY D'UN AUTÒMAT PER A LA LECTURA D'UN TECLAT MATRICIAL EMPRANT<br />
VHDL<br />
1. OBJECTIUS<br />
Aquesta pràctica té per objectiu exercitar els coneixements adquirits a classe <strong>de</strong> teoria i a les darreres<br />
pràctiques, emprant-los per dissenyar un autòmat que gestioni la lectura d'un teclat matricial. Aquest<br />
teclat és el <strong>de</strong>scrit a la pràctica 3 com element constituent <strong>de</strong> la maqueta d'una porta amb obertura i<br />
tancament automatitzats.<br />
Aquest autòmat s'ha d'implementar sobre el dispositiu lògic programable EP3C16F484C6N <strong>de</strong> la<br />
família Cyclone III d'ALTERA ubicat a la placa educativa DE0 d'ALTERA/Terasic, fent servir els<br />
paquets <strong>de</strong> CAD electrònic Quartus II i Mo<strong>de</strong>lSim introduïts a la pràctica 1 i emprant el llenguatge<br />
<strong>de</strong> <strong>de</strong>scripció <strong>de</strong> hardware VHDL com a mèto<strong>de</strong> d'entrada <strong>de</strong>l disseny.<br />
2. PREPARACIÓ<br />
Repasseu els enunciats <strong>de</strong> les pràctiques 1, 2 i 3, en les que es varen introduir, respectivament, el<br />
paquet <strong>de</strong> CAD electrònic Quartus II, el llenguatge <strong>de</strong> <strong>de</strong>scripció <strong>de</strong> hardware VHDL i la maqueta<br />
<strong>de</strong> la porta amb obertura i tancament automatitzats. Llegiu-vos <strong>de</strong>tingudament l'enunciat d'aquesta<br />
pràctica, parant especial atenció a les especificacions <strong>de</strong> l'autòmat a dissenyar.<br />
3. ESPECIFICACIONS<br />
Es disposa d'un teclat <strong>de</strong> tipus matricial <strong>de</strong> dotze tecles (*, # i dígits <strong>de</strong>l 0 al 9) distribuï<strong>de</strong>s en quatre<br />
files per tres columnes. Les files es numeren <strong>de</strong> la 0 (superior) a la 3 (inferior) i les columnes <strong>de</strong> la 0<br />
(dreta) a la 2 (esquerra). La figura 1 mostra la distribució <strong>de</strong> tecles en el teclat.<br />
Figura 1: Distribució <strong>de</strong> les tecles en el teclat matricial.<br />
Per accedir al teclat hom disposa <strong>de</strong> set senyals, quatre associats a les files i tres a les columnes.<br />
S'ha triat connectar les files a unes sorti<strong>de</strong>s <strong>de</strong> selecció <strong>de</strong>l sistema <strong>de</strong> control (NST3 a NST0) i les<br />
columnes a unes entra<strong>de</strong>s <strong>de</strong> da<strong>de</strong>s <strong>de</strong>l sistema <strong>de</strong> control (NDT2 a NDT0). A fi d'evitar possibles<br />
curtcircuits entre les sorti<strong>de</strong>s <strong>de</strong> selecció, s'ha <strong>de</strong>cidit emprar sorti<strong>de</strong>s en drenador obert, capaces <strong>de</strong><br />
generar alta impedància o una tensió baixa, i connectar resistències <strong>de</strong> "pull-up" a les entra<strong>de</strong>s <strong>de</strong> da<strong>de</strong>s<br />
per po<strong>de</strong>r forçar en elles una tensió alta. La figura 2 il·lustra les connexions elèctriques <strong>de</strong>l teclat.<br />
4 - 3
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 4<br />
SISTEMA DE<br />
CONTROL<br />
NST0<br />
NST1<br />
NST2<br />
NST3<br />
NDT2<br />
NDT1<br />
NDT0<br />
VDD<br />
R<br />
1<br />
4<br />
7<br />
*<br />
Figura 2: Connexions elèctriques <strong>de</strong>l teclat matricial.<br />
Quan no hi ha cap tecla premuda, s'obtenen tensions altes (1) a les entra<strong>de</strong>s <strong>de</strong> da<strong>de</strong>s, estiguin com<br />
estiguin les sorti<strong>de</strong>s <strong>de</strong> selecció (veure figura 3a, on les sorti<strong>de</strong>s <strong>de</strong> selecció NST1 i NST0 estan a 0 i<br />
les altres a Z). Quan les sorti<strong>de</strong>s <strong>de</strong> selecció estan en alta impedància, s'obtenen tensions altes (1) a les<br />
entra<strong>de</strong>s <strong>de</strong> da<strong>de</strong>s, estiguin com estiguin les tecles (veure figura 3b, on les tecles 1 i 8 estan premu<strong>de</strong>s<br />
i les altres no; noteu que la tensió alta es propaga a les files amb tecles premu<strong>de</strong>s). Només s'obtindrà<br />
una tensió baixa (0) en una entrada <strong>de</strong> da<strong>de</strong>s quan hi hagi una tecla premuda i s'hagi seleccionat la fila<br />
en la que es troba la tecla, és a dir, quan la sortida <strong>de</strong> selecció corresponent subministri una tensió<br />
baixa (veure figura 3c, on la sortida <strong>de</strong> selecció NST0 està a 0, la tecla 1 està premuda i l'entrada <strong>de</strong><br />
da<strong>de</strong>s NDT2 queda forçada a 0). En conseqüència, tant les sorti<strong>de</strong>s <strong>de</strong> selecció, NST3 a NST0, com<br />
les entra<strong>de</strong>s <strong>de</strong> da<strong>de</strong>s, NDT2 a NDT0, són actives per 0. Cal tenir ben present la propagació <strong>de</strong>ls<br />
nivells elèctrics per les files i les columnes quan hi ha vàries tecles premu<strong>de</strong>s (veure figura 3d, on la<br />
sortida <strong>de</strong> selecció NST0 està a 0, les tecles 1, 7 i 9 estan premu<strong>de</strong>s i les entra<strong>de</strong>s <strong>de</strong> da<strong>de</strong>s NDT2 i<br />
NDT0 que<strong>de</strong>n força<strong>de</strong>s a 0). En la figura 3, les files i columnes <strong>de</strong>l teclat s'han pintat <strong>de</strong> blau quan<br />
estan a una tensió baixa (0) i <strong>de</strong> vermell quan estan a una tensió alta (1), mantenint-se les files <strong>de</strong><br />
color negre quan estan en alta impedància (Z). Igualment, les tecles premu<strong>de</strong>s s'han pintat <strong>de</strong> color<br />
blau quan transporten una tensió baixa (0) i <strong>de</strong> color vermell quan transporten una tensió alta (1),<br />
mentre que les tecles no premu<strong>de</strong>s s'han mantingut <strong>de</strong> color negre.<br />
L'autòmat gestor <strong>de</strong> la lectura <strong>de</strong>l teclat ha d'emprar, com a rellotge <strong>de</strong> sistema, un senyal <strong>de</strong><br />
freqüència 400 Hz (CLK400). La seva tasca és inspeccionar el teclat i activar unes indicacions <strong>de</strong><br />
tecla premuda, anomena<strong>de</strong>s IDIG, IAST i ICXT, cada cop que, no havent-hi cap tecla premuda, es<br />
premi, respectivament, un dígit (<strong>de</strong>l 0 al 9), el símbol asterisc (*) o el símbol coixinet (#). A més a<br />
més, en cas d'haver premut un dígit, es vol obtenir el seu codi en BCD natural en altres quatre<br />
sorti<strong>de</strong>s, DIGIT3 a DIGIT0. Les sorti<strong>de</strong>s IDIG, IAST, ICXT i DIGIT3 a DIGIT0 <strong>de</strong> l'autòmat són<br />
4 - 4<br />
VDD<br />
R<br />
2<br />
5<br />
8<br />
0<br />
TECLAT<br />
VDD<br />
R<br />
3<br />
6<br />
9<br />
#
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 4<br />
totes en lògica positiva i només han d'estar actives en un flanc <strong>de</strong> pujada <strong>de</strong>l rellotge CLK400 per<br />
cada premuda vàlida d'una tecla, encara que aquesta tecla es mantingui premuda durant molt <strong>de</strong><br />
temps. En cas <strong>de</strong> prémer-se simultàniament dues o més tecles, cal establir una certa prioritat entre<br />
elles, a fi <strong>de</strong> po<strong>de</strong>r subministrar només la indicació i/o codi <strong>de</strong> la més prioritària. En cas <strong>de</strong> "rollover"<br />
(premuda d'una segona tecla quan en mantenia premuda una primera), només es consi<strong>de</strong>rarà<br />
vàlida la premuda <strong>de</strong> la primera tecla, ja que, com s'ha indicat abans, la premuda d'una tecla només<br />
és vàlida quan no hi havia cap tecla premuda prèviament.<br />
SISTEMA DE<br />
CONTROL<br />
1<br />
1<br />
0<br />
0<br />
SISTEMA DE<br />
CONTROL<br />
1<br />
0<br />
0<br />
0<br />
NST0<br />
NST1<br />
NST2<br />
NST3<br />
NDT2<br />
NDT1<br />
NDT0<br />
NST0<br />
NST1<br />
NST2<br />
NST3<br />
NDT2<br />
NDT1<br />
NDT0<br />
VDD<br />
R<br />
V DD<br />
R<br />
1<br />
4<br />
7<br />
*<br />
1<br />
4<br />
7<br />
*<br />
VDD<br />
R<br />
2<br />
5<br />
8<br />
0<br />
TECLAT<br />
VDD<br />
R<br />
3<br />
6<br />
9<br />
#<br />
Figura 3: Nivells elèctrics en el teclat matricial.<br />
Donat que el teclat pot presentar rebots i no es <strong>de</strong>sitja consi<strong>de</strong>rar aquests com una seqüència <strong>de</strong><br />
tecles premu<strong>de</strong>s, és convenient inspeccionar el teclat a baixa freqüència, acció que té el mateix<br />
4 - 5<br />
SISTEMA DE<br />
CONTROL<br />
0<br />
0<br />
0<br />
0<br />
NST0<br />
NST1<br />
NST2<br />
NST3<br />
NDT2<br />
NDT1<br />
NDT0<br />
V DD<br />
(a) (b)<br />
V DD<br />
R<br />
2<br />
5<br />
8<br />
0<br />
TECLAT<br />
V DD<br />
R<br />
3<br />
6<br />
9<br />
#<br />
SISTEMA DE<br />
CONTROL<br />
1<br />
0<br />
0<br />
0<br />
NST0<br />
NST1<br />
NST2<br />
NST3<br />
NDT2<br />
NDT1<br />
NDT0<br />
R<br />
V DD<br />
(c) (d)<br />
R<br />
1<br />
4<br />
7<br />
*<br />
1<br />
4<br />
*<br />
V DD<br />
R<br />
V DD<br />
2<br />
5<br />
0<br />
TECLAT<br />
R<br />
8<br />
2<br />
5<br />
0<br />
V DD<br />
R<br />
V DD<br />
7 8 9<br />
TECLAT<br />
R<br />
3<br />
6<br />
9<br />
#<br />
3<br />
6<br />
#
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 4<br />
efecte que introduir un filtre en les entra<strong>de</strong>s <strong>de</strong> da<strong>de</strong>s. Es pot tolerar una inspecció cada 40 ms (16<br />
perío<strong>de</strong>s <strong>de</strong> CLK400), ja que aquest temps és superior a la durada <strong>de</strong>ls possibles rebots en el teclat i<br />
prou petit per no haver <strong>de</strong> mantenir premuda massa temps una tecla per garantir la seva <strong>de</strong>tecció.<br />
L'autòmat gestor <strong>de</strong> la lectura <strong>de</strong>l teclat s'inicialitza en prémer el polsador CET, que genera un senyal<br />
d'inicialització síncron actiu per 1. La figura 4 esquematitza l'autòmat gestor <strong>de</strong>l teclat a dissenyar.<br />
NST0<br />
NST1<br />
NST2<br />
NST3<br />
NDT0<br />
NDT1<br />
NDT2<br />
AUTÒMAT<br />
GESTOR<br />
DEL TECLAT<br />
Figura 4: Esquema <strong>de</strong> l'autòmat gestor <strong>de</strong>l teclat.<br />
Davant la dificultat d'observar experimentalment la correctesa <strong>de</strong>l vostre disseny, en ser molt curta<br />
la durada <strong>de</strong>ls senyals subministrats per l'autòmat gestor <strong>de</strong>l teclat, incorporareu al vostre disseny un<br />
mòdul que us permeti <strong>de</strong>tectar el seu comportament i visualitzar-lo per un conjunt <strong>de</strong> set LEDs <strong>de</strong> la<br />
placa DE0 d'ALTERA/Terasic.<br />
D'una banda, pels LEDs LEDG3 a LEDG0 <strong>de</strong> la placa DE0 es visualitzarà, <strong>de</strong> forma permanent i en<br />
binari natural, un enter TECP <strong>de</strong> 4 bits (rang 0 a 15) associat a la darrera tecla premuda. Aquest<br />
enter serà el valor propi 0 a 9 per a les tecles 0 a 9, l'enter 10 per al símbol coixinet i l'enter 11 per al<br />
símbol asterisc. El senyal TECP s'inicialitzarà, per efecte <strong>de</strong>l polsador CET, al valor 15.<br />
D'altra banda, pels LEDs LEDG6 a LEDG4 <strong>de</strong> la placa DE0 es visualitzarà, <strong>de</strong> forma permanent i<br />
en binari natural, un enter CNTTECP <strong>de</strong> 3 bits (rang 0 a 7) associat al nombre <strong>de</strong> tecles, mòdul 8,<br />
que s'han anat prement. El senyal CNTTECP s'inicialitzarà, per efecte <strong>de</strong>l polsador CET, al valor 0.<br />
La figura 5 mostra el disseny complet que heu <strong>de</strong> fer, el qual inclou l'autòmat gestor <strong>de</strong>l teclat i el<br />
mòdul <strong>de</strong>tector <strong>de</strong>l seu comportament.<br />
1 2 3<br />
4 5 6<br />
7 8 9<br />
* 0 #<br />
NST0<br />
NST1<br />
NST2<br />
NST3<br />
NDT0<br />
NDT1<br />
NDT2<br />
1 2 3<br />
4 5 6<br />
7 8 9<br />
* 0 #<br />
CET<br />
AUTÒMAT<br />
GESTOR<br />
DEL TECLAT<br />
CLK400<br />
CET<br />
OSCIL·LADOR<br />
IDIG<br />
IAST<br />
ICXT<br />
DIGIT0<br />
DIGIT1<br />
DIGIT2<br />
DIGIT3<br />
Figura 5: Esquema <strong>de</strong>l disseny complet.<br />
4 - 6<br />
CLK400<br />
OSCIL·LADOR<br />
IDIG<br />
IAST<br />
ICXT<br />
DIGIT0<br />
DIGIT1<br />
DIGIT2<br />
DIGIT3<br />
CET<br />
IDIG<br />
IAST<br />
ICXT<br />
DIGIT0<br />
DIGIT1<br />
DIGIT2<br />
DIGIT3<br />
MÒDUL<br />
DETECTOR<br />
CLK400<br />
TECP<br />
CNTTECP<br />
4<br />
3
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 4<br />
4. REALITZACIÓ<br />
En primer lloc, cal tenir present que en la placa DE0 no es disposa d'un oscil·lador <strong>de</strong> freqüència<br />
400 Hz, sinó d'un <strong>de</strong> freqüència 50 MHz que es troba connectat al pin G21 <strong>de</strong>l dispositiu lògic<br />
programable EP3C16F484C6N. Si s'anomena CLK50M a aquesta entrada, cal incloure en el vostre<br />
disseny un divisor <strong>de</strong> freqüència per 125.000 que generi el senyal <strong>de</strong> rellotge CLK400 que necessiteu<br />
a partir <strong>de</strong>l senyal CLK50M. Recor<strong>de</strong>u, però, que és convenient eliminar (o, si més no, reduir) aquest<br />
divisor <strong>de</strong> freqüència durant les simulacions, a fi <strong>de</strong> reduir llur durada. A tal fi, po<strong>de</strong>u fer servir el<br />
mateix paràmetre genèric versio i el mateix procés divf1 emprats a la pràctica 3.<br />
En segon lloc, a fi <strong>de</strong> fer simulacions realistes <strong>de</strong>l vostre disseny que us permetin garantir la seva<br />
correctesa, cal subministrar a dit disseny uns senyals d'entrada <strong>de</strong> da<strong>de</strong>s NDT2 a NDT0 que siguin<br />
coherents amb les sorti<strong>de</strong>s <strong>de</strong> selecció que genera el propi disseny. Aquesta tasca és força feixuga i,<br />
en conseqüència, és convenient crear un banc <strong>de</strong> proves per fer les simulacions que inclogui un<br />
mòdul que mo<strong>de</strong>li el teclat matricial.<br />
A tal fi, es vol ampliar la biblioteca bibsed amb un nou paquet, anomenat mo<strong>de</strong>ls, que inclogui un<br />
parell <strong>de</strong> components, anomenats, respectivament, interruptor i teclat_4x3.<br />
El component interruptor mo<strong>de</strong>la un interruptor (també un polsador o una tecla) que, quan es tanca,<br />
interconnecta els dos senyals digitals (t1 i t2) <strong>de</strong> tipus std_logic que són presents als seus terminals,<br />
resolent els possibles conflictes elèctrics que puguin aparèixer, com ara quan s'interconnecta un nivell<br />
baix fort (0) generat per un buffer <strong>de</strong> sortida i un nivell alt fluix (H) generat per una resistència <strong>de</strong><br />
"pull-up", i que, quan s'obre, in<strong>de</strong>penditza els dos esmentats senyals digitals (t1 i t2), que passen a<br />
<strong>de</strong>pendre novament <strong>de</strong>l que tinguessin connectat a banda <strong>de</strong> l'interruptor. Per indicar quin és l'estat<br />
<strong>de</strong> l'interruptor es disposa d'una entrada anomenada tancat activa per 1. La longitud màxima d'una<br />
possible ca<strong>de</strong>na d'interruptors s'indica mitjançant el paràmetre genèric lca<strong>de</strong>na. Seguidament trobareu<br />
el codi VHDL <strong>de</strong> l'entitat interruptor, que heu d'incloure en un fitxer anomenat interruptor.vhd.<br />
library ieee;<br />
use ieee.std_logic_1164.all;<br />
entity interruptor is generic (<br />
lca<strong>de</strong>na : positive := 1);<br />
port (<br />
tancat : in std_logic;<br />
t1 : inout std_logic;<br />
t2 : inout std_logic);<br />
end interruptor;<br />
architecture funcional of interruptor is<br />
begin<br />
process<br />
variable valor : std_logic;<br />
variable temps : time;<br />
begin<br />
wait on t1'transaction,t2'transaction,tancat until temps /= now;<br />
temps := now;<br />
t1
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 4<br />
El component teclat_4x3 mo<strong>de</strong>la un teclat matricial integrat per 12 tecles com el que heu <strong>de</strong> controlar.<br />
Es basa en 12 tecles implementa<strong>de</strong>s amb 12 unitats <strong>de</strong>l component interruptor <strong>de</strong>l paquet mo<strong>de</strong>ls <strong>de</strong><br />
la biblioteca bibsed que s'ha <strong>de</strong>scrit abans, les quals estan interconnecta<strong>de</strong>s entre si formant una<br />
matriu <strong>de</strong> 4 files (senyals nst3 a nst0) per 3 columnes (senyals ndt2 a ndt0). El paràmetre genèric<br />
lca<strong>de</strong>na <strong>de</strong> les 12 unitats <strong>de</strong>l component interruptor pren el valor 6 perquè totes les files i columnes<br />
<strong>de</strong>l teclat es po<strong>de</strong>n arribar a interconnectar obtenint un únic punt elèctric amb una ca<strong>de</strong>na <strong>de</strong> 6 tecles<br />
premu<strong>de</strong>s. L'estat <strong>de</strong> les tecles s'indica mitjançant un vector eteclat <strong>de</strong> 12 elements. Els elements 0 a<br />
11 estan associats a les tecles 0 a 9, coixinet i asterisc, respectivament. El component també mo<strong>de</strong>la<br />
l'existència <strong>de</strong> resistències <strong>de</strong> "pull-up" connecta<strong>de</strong>s als senyals ndt2 a ndt0. Seguidament trobareu<br />
el codi VHDL <strong>de</strong> l'entitat teclat_4x3, que heu d'incloure en un fitxer anomenat teclat_4x3.vhd.<br />
library ieee;<br />
use ieee.std_logic_1164.all;<br />
library bibsed;<br />
use bibsed.mo<strong>de</strong>ls.all;<br />
entity teclat_4x3 is port (<br />
eteclat : in std_logic_vector(11 downto 0);<br />
nst : inout std_logic_vector(3 downto 0);<br />
ndt : inout std_logic_vector(2 downto 0));<br />
end teclat_4x3;<br />
architecture estructural of teclat_4x3 is<br />
begin<br />
ndt
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 4<br />
Els tres fitxers mo<strong>de</strong>ls.vhd, interruptor.vhd i teclat_4x3.vhd els heu <strong>de</strong> <strong>de</strong>sar en la biblioteca d'usuari<br />
bibsed, situada al directori .../Altera/10.0sp1/quartus/libraries/vhdl/bibsed. És convenient <strong>de</strong>sar una<br />
còpia al directori .../biblioteques quartus/bibsed que feu servir com a back-up <strong>de</strong> la vostra biblioteca<br />
d'usuari <strong>de</strong>l Quartus II.<br />
A continuació, seguint el procediment <strong>de</strong>scrit a l'apartat 6.2 <strong>de</strong> la pràctica 2, heu d'actualitzar la<br />
biblioteca d'usuari compilada bibsed <strong>de</strong>l Mo<strong>de</strong>lSim. No us obli<strong>de</strong>u <strong>de</strong> <strong>de</strong>sar una còpia <strong>de</strong>ls fitxers<br />
resultants <strong>de</strong> la compilació al directori ...biblioteques mo<strong>de</strong>lsim/bibsed que feu servir com a back-up<br />
<strong>de</strong> la vostra biblioteca d'usuari compilada <strong>de</strong>l Mo<strong>de</strong>lSim.<br />
En tercer lloc, a fi <strong>de</strong> simplificar aquesta pràctica, se subministra el codi en VHDL corresponent al<br />
procés que implementa el mòdul <strong>de</strong>tector <strong>de</strong>l comportament <strong>de</strong> l'autòmat gestor <strong>de</strong>l teclat.<br />
<strong>de</strong>tector : process (clk400)<br />
begin<br />
if clk400'event and clk400 = '1' then<br />
if qcet = '1' then<br />
tecp
SISTEMES ELECTRÒNICS<br />
ÍNDEX<br />
DIGITALS<br />
PRÀCTICA 5<br />
DISSENY D'UN SISTEMA DE COMANDAMENT<br />
PER A L'OBERTURA I TANCAMENT<br />
AUTOMATITZATS D'UNA PORTA<br />
1. OBJECTIUS .................................................................................................................................... 3<br />
2. PREPARACIÓ ................................................................................................................................. 3<br />
3. ESPECIFICACIONS ....................................................................................................................... 3<br />
4. RECOMANACIONS ....................................................................................................................... 4<br />
5. AMPLIACIÓ VOLUNTÀRIA ........................................................................................................ 5
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 5<br />
5 - 2
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 5<br />
DISSENY D'UN SISTEMA DE COMANDAMENT PER A L'OBERTURA I TANCAMENT<br />
AUTOMATITZATS D'UNA PORTA<br />
1. OBJECTIUS<br />
Aquesta pràctica té per objectiu dissenyar un sistema <strong>de</strong> comandament que gestioni l'obertura i<br />
tancament automatitzats d'una porta i verificar el seu funcionament fent servir la maqueta d'una<br />
porta amb un sistema d'obertura i tancament electromecànic presentada a la pràctica 3.<br />
El sistema <strong>de</strong> comandament a dissenyar s'ha d'implementar sobre un dispositiu lògic programable<br />
<strong>de</strong> la família Cyclone III d'ALTERA, concretament l'EP3C16F484C6N ubicat a la placa educativa<br />
DE0 d'ALTERA/Terasic, fent servir els paquets <strong>de</strong> CAD electrònic Quartus II i Mo<strong>de</strong>lSim introduïts<br />
a la pràctica 1. És recomanable emprar el llenguatge <strong>de</strong> <strong>de</strong>scripció <strong>de</strong> hardware VHDL com a mèto<strong>de</strong><br />
d'entrada <strong>de</strong>l disseny a fi d'aprofitar els resultats <strong>de</strong> les pràctiques 3 i 4.<br />
2. PREPARACIÓ<br />
Repasseu els enunciats <strong>de</strong> les pràctiques 1, 2 i 3, en les que es varen introduir, respectivament, el<br />
paquet <strong>de</strong> CAD electrònic Quartus II, el llenguatge <strong>de</strong> <strong>de</strong>scripció <strong>de</strong> hardware VHDL i la maqueta<br />
<strong>de</strong> la porta amb obertura i tancament automatitzats. Repasseu els dissenys en VHDL realitzats a les<br />
pràctiques 3 i 4, ja que podreu aprofitar-los, amb petites modificacions, en la present pràctica.<br />
Llegiu-vos <strong>de</strong>tingudament les especificacions d'aquesta pràctica.<br />
3. ESPECIFICACIONS<br />
Es disposa <strong>de</strong> la maqueta d'una porta dotada amb un sistema d'obertura i tancament electromecànic<br />
controlable digitalment presentada a la pràctica 3.<br />
La porta pot estar immobilitzada (tancada i amb el passador posat) o alliberada (amb el passador<br />
tret). Quan està alliberada, la porta pot estar oberta o tancada.<br />
Es pot or<strong>de</strong>nar l'obertura <strong>de</strong> la porta quan aquesta està immobilitzada mitjançant dos procediments.<br />
D'una banda, es disposa d'un teclat situat a l'exterior <strong>de</strong>l recinte al qual es vol accedir a través <strong>de</strong> la<br />
porta. Aquest teclat serveix per a la introducció d'un codi secret, que permet alliberar la porta <strong>de</strong>s <strong>de</strong><br />
l'exterior. També serveix per a la modificació i verificació d'aquest codi secret. D'altra banda, es<br />
disposa d'un polsador, situat a l'interior <strong>de</strong>l recinte, que genera un senyal en lògica positiva CMD.<br />
Quan es prem aquest polsador i la porta no estava alliberada, la porta s'ha d'alliberar.<br />
La porta s'ha d'immobilitzar quan, estant alliberada, es produeixin qualsevol <strong>de</strong> les següents dues<br />
circumstàncies:<br />
a) Transcorreguts cinc segons <strong>de</strong>s <strong>de</strong> l'alliberament <strong>de</strong> la porta, si aquesta ha romàs tancada durant<br />
tot aquest temps.<br />
b) Immediatament en tancar-se la porta, si aquesta ha estat oberta.<br />
L'operació d'immobilització <strong>de</strong> la porta s'ha d'avortar, passant a alliberar-la <strong>de</strong> nou, en cas <strong>de</strong> què es<br />
<strong>de</strong>tecti que la porta es torna a obrir, a fi d'evitar malmetre el sistema d'immobilització. Per tal que<br />
5 - 3
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 5<br />
rebots en el <strong>de</strong>tector <strong>de</strong> la porta no donin lloc a funcionaments oscil·lants <strong>de</strong>l sistema, l'estat <strong>de</strong> la<br />
porta ha <strong>de</strong> ser filtrat, no acceptant-se variacions que durin menys <strong>de</strong> 40 ms.<br />
En el moment <strong>de</strong> la inicialització, el sistema ha d'alliberar la porta, si aquesta estava oberta, o ha<br />
d'immobilitzar-la, en cas <strong>de</strong> què estigués tancada. Per prendre aquesta <strong>de</strong>cisió haurà d'esperar a<br />
disposar <strong>de</strong> l'estat <strong>de</strong> la porta un cop filtrat.<br />
No es pot tenir activat el solenoi<strong>de</strong> durant més <strong>de</strong> tres segons seguits. En cas <strong>de</strong> què durant aquest<br />
temps no s'hagi completat el canvi <strong>de</strong>sitjat en l'estat <strong>de</strong> la porta, el sistema <strong>de</strong> comandament s'ha <strong>de</strong><br />
bloquejar, <strong>de</strong>sactivant el solenoi<strong>de</strong> i encenent el LED associat al senyal NLEDET. Aquest LED<br />
romandrà apagat durant el funcionament normal <strong>de</strong>l sistema.<br />
El codi secret que permet alliberar la porta <strong>de</strong>s <strong>de</strong> l'exterior estarà compost pel símbol # seguit <strong>de</strong><br />
quatre dígits (p.e. #6238). El símbol # s'utilitzarà com indicador <strong>de</strong> nou codi: la seva introducció<br />
comportarà, en qualsevol punt <strong>de</strong> la seqüència, passar a esperar <strong>de</strong> nou el primer dígit. Es <strong>de</strong>scartarà<br />
qualsevol tecla no esperada (p.e. el símbol *). El sistema quedarà a l'espera <strong>de</strong> la introducció <strong>de</strong><br />
l'indicador <strong>de</strong> nou codi en acabar d'introduir un codi secret, sigui aquest correcte o erroni, i en obrirse<br />
o immobilitzar-se la porta.<br />
La introducció <strong>de</strong>l codi secret quan la porta estigui oberta (òbviament estarà alliberada) permetrà<br />
verificar el codi secret i possibilitarà la seva posterior modificació. El nou codi estarà compost pel<br />
símbol * seguit <strong>de</strong> quatre dígits (p.e. *1239). Es <strong>de</strong>scartarà qualsevol tecla no esperada (p.e. el<br />
símbol #). La introducció <strong>de</strong>l codi o <strong>de</strong>l nou codi s'avortarà si es tanca la porta. El nou codi no serà<br />
aplicable fins a la seva total introducció. El codi secret aplicable inicialment ha <strong>de</strong> ser el #0000.<br />
A fi d'indicar que el codi introduït és el correcte i que es pot procedir a la introducció <strong>de</strong>l nou codi,<br />
s'encendrà el LED associat al senyal NLEDTA, què no s'apagarà fins haver completat la introducció<br />
<strong>de</strong>l nou codi. Aquest LED romandrà apagat en qualsevol altre cas.<br />
El sistema <strong>de</strong> comandament ha <strong>de</strong> funcionar a partir d'un rellotge <strong>de</strong> freqüència 400 Hz. El polsador<br />
associat al senyal CET s'emprarà per reinicialitzar el sistema. La figura 1 esquematitza el sistema <strong>de</strong><br />
comandament per a l'obertura i tancament automatitzats d'una porta objecte d'aquesta pràctica.<br />
4. RECOMANACIONS<br />
En primer lloc, cal tenir present que en la placa DE0 no es disposa d'un oscil·lador <strong>de</strong> freqüència<br />
400 Hz, sinó d'un <strong>de</strong> freqüència 50 MHz que es troba connectat al pin G21 <strong>de</strong>l dispositiu lògic<br />
programable EP3C16F484C6N. Si s'anomena CLK50M a aquesta entrada, cal incloure en el vostre<br />
disseny un divisor <strong>de</strong> freqüència per 125.000 que generi el senyal <strong>de</strong> rellotge CLK400 que necessiteu<br />
a partir <strong>de</strong>l senyal CLK50M. Recor<strong>de</strong>u, però, que és convenient eliminar aquest divisor <strong>de</strong> freqüència<br />
durant les simulacions, a fi <strong>de</strong> reduir llur durada.<br />
Se suggereix que implementeu el sistema <strong>de</strong> comandament amb una entitat que inclogui, entre altres<br />
elements, els següents processos:<br />
- Un procés que s'encarregui d'obtenir el senyal clk400 a partir <strong>de</strong> clk50m. Aquest procés pot ser el<br />
procés divf1 <strong>de</strong> les pràctiques 3 i 4.<br />
- Un procés que s'encarregui d'obtenir un senyal <strong>de</strong> freqüència 25 Hz (perío<strong>de</strong> 40 ms) a partir <strong>de</strong>l<br />
senyal clk400. Aquest senyal pot marcar els instants en què cal inspeccionar el teclat i servir <strong>de</strong><br />
base per altres temporitzacions <strong>de</strong> més durada. Po<strong>de</strong>u aprofitar part d'un procés <strong>de</strong> la pràctica 4.<br />
5 - 4
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 5<br />
1 2 3<br />
4 5 6<br />
7 8 9<br />
* 0 #<br />
NST0<br />
NST1<br />
NST2<br />
NST3<br />
NDT0<br />
NDT1<br />
NDT2<br />
CMD<br />
NLEDTA<br />
CET<br />
NLEDET<br />
Figura 1: Esquema <strong>de</strong>l sistema <strong>de</strong> comandament.<br />
- Un procés que s'encarregui d'obtenir imatges síncrones en lògica positiva <strong>de</strong> les entra<strong>de</strong>s fci, fca,<br />
npob i cmd (senyals qfci, qfca, qpob i qcmd, respectivament). Po<strong>de</strong>u aprofitar el procés sincr <strong>de</strong> la<br />
pràctica 3.<br />
- Un procés que s'encarregui d'obtenir una imatge filtrada qpobf <strong>de</strong>l senyal qpob. Aquest procés<br />
també subministra una indicació fiinici_qpob <strong>de</strong> què la imatge filtrada és vàlida. Po<strong>de</strong>u aprofitar el<br />
procés filtpob <strong>de</strong> la pràctica 3.<br />
- Un procés que s'encarregui d'inspeccionar el teclat a través <strong>de</strong>ls senyals nst3 a nst0 i ndt2 a ndt0 i<br />
<strong>de</strong> generar indicacions <strong>de</strong> tecles premu<strong>de</strong>s (idig, iast, icxt i digit3 a digit0). Po<strong>de</strong>u aprofitar el<br />
procés d'idèntiques prestacions que heu <strong>de</strong>senvolupat a la pràctica 4.<br />
- Un procés que s'encarregui d'analitzar les seqüències <strong>de</strong> tecles premu<strong>de</strong>s a partir <strong>de</strong>ls senyals idig,<br />
iast, icxt i digit3 a digit0 i que actualitzi els registres que contenen el codi secret. Aquest procés<br />
també ha <strong>de</strong> gestionar la sortida cap al LED indicador <strong>de</strong> nova clau i subministrar una indicació <strong>de</strong><br />
què cal alliberar la porta.<br />
- Un procés que s'encarregui <strong>de</strong> gestionar les sorti<strong>de</strong>s <strong>de</strong>l sistema cap al solenoi<strong>de</strong> (enp, pia i pai) i<br />
el LED indicador <strong>de</strong> sistema bloquejat (nle<strong>de</strong>t). Aquest procés pot basar-se en el procés porta que<br />
heu <strong>de</strong>senvolupat a la pràctica 3.<br />
5. AMPLIACIÓ VOLUNTÀRIA<br />
SISTEMA<br />
DIGITAL DE<br />
COMANDAMENT<br />
CLK400<br />
OSCIL·LADOR<br />
Seguidament s'indica una prestació addicional <strong>de</strong>l sistema <strong>de</strong> comandament que gestiona l'obertura i<br />
tancament automatitzats d'una porta. Aquesta prestació només s'ha <strong>de</strong> consi<strong>de</strong>rar com a l'enunciat<br />
d'un exercici extra, in<strong>de</strong>pen<strong>de</strong>nt <strong>de</strong> les pràctiques regla<strong>de</strong>s <strong>de</strong>l curs, la finalitat <strong>de</strong>l qual es permetre<br />
practicar amb el llenguatge <strong>de</strong> <strong>de</strong>scripció <strong>de</strong> hardware VHDL. Aquesta prestació addicional és la<br />
següent:<br />
5 - 5<br />
PAI<br />
PIA<br />
ENP<br />
FCA<br />
FCI<br />
NPOB<br />
DRIVER<br />
SOLENOIDE<br />
DETECTORS<br />
S
SISTEMES ELECTRÒNICS DIGITALS PRÀCTICA 5<br />
La introducció <strong>de</strong> quatre codis (<strong>de</strong> quatre dígits <strong>de</strong>cimals) erronis consecutius ha <strong>de</strong> comportar la<br />
<strong>de</strong>shabilitació <strong>de</strong>l teclat durant dos minuts, tant si la porta estava immobilitzada com si estava<br />
oberta. El nombre <strong>de</strong> codis erronis introduïts s'inicialitzarà a zero en els següents cinc casos:<br />
a) En la inicialització <strong>de</strong>l sistema.<br />
b) Després <strong>de</strong> la <strong>de</strong>shabilitació <strong>de</strong>l teclat, <strong>de</strong> forma que quan s'habiliti <strong>de</strong> nou, transcorreguts els dos<br />
minuts, es trobi a zero.<br />
c) Després <strong>de</strong> transcorreguts dos minuts sense que s'hagi efectuat cap acció sobre el teclat.<br />
d) Quan s'hagi introduït el codi correcte.<br />
e) Quan s'obri la porta <strong>de</strong>s <strong>de</strong> l'interior <strong>de</strong>l recinte mitjançant el polsador a l'efecte.<br />
En tots aquests casos, el sistema quedarà a l'espera <strong>de</strong> la introducció <strong>de</strong> l'indicador <strong>de</strong> nou codi.<br />
5 - 6