26.04.2013 Views

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

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!