Memoria Practica 2 (2014)

Trabajo Español
Universidad Universidad Politécnica de Cataluña (UPC)
Grado Ingeniería Telemática - 2º curso
Asignatura Disseny Digital
Año del apunte 2014
Páginas 25
Fecha de subida 30/12/2014
Descargas 26
Subido por

Vista previa del texto

Pràctica 2 - Isaac Sené i Marc Peig. Grup 32 Joan Pons Diego Mateo Daniel Bardés Josep Altet Versió 3.8 - Octubre 2014 Pràctica 2 - Isaac Sené i Marc Peig. Grup 32 Introducció a la pràctica En aquesta segona pràctica hem ampliat els recursos emprats a la pràctica anterior fent ús de la mateixa placa de desenvolupament DE2 mitjançant components seqüencials per tal de complir les especificacions requerides: dissenyar un sistema multiplicador de dos xifres introduïdes per teclat a través dels displays de 7 segments situats a la part inferior de la placa.
Per a explicar el disseny realitzat cal entendre bé el funcionament del multiplicador, que és el següent: 1) Al prémer ‘*’ s’apaguen els 7S on es mostra el resultat i es poden introduir els nombres a multiplicar.
2) Al prémer nombres compresos del 0 al 9 el sistema els emmagatzema i els mostra als displays HEX4 i HEX6. Per exemple, si premem la seqüència ‘*’,’1’,’2’,’3’ veurem ‘3’ i ‘2’ als displays HEX6 i HEX4 respectivament.
3) Al prémer ‘#’ s’executa la operació producte i el resultat es mostra als displays HEX0 i HEX1 de la placa (en aquest moment no es poden introduir més nombres).
4) Mentre es poden introduir nombres mitjançant el teclat, el sistema ho comunica il·luminant 4 leds verds, del contrari s’il·luminen 4 leds vermells.
El disseny del sistema s’ha basat en els següents blocs: el AperB fa la multiplicació de dos operands de 4 bits en BCD que es proporcionen a l’entrada mitjançant el teclat (opA[3..0] i opB[3..0]), donant com a resultat 8 bits en BCD (res[7..0]), que pot arribar al valor de 81 (9 per 9).
El bloc sel rep com a entrades el resultat de AperB (res[7..0]) i show, provinent del bloc de control. El funcionament és senzill, si la variable de selecció show té un valor de ‘0’, el resultat del bloc sel dóna un vector de 8 bits format tot per uns, fet que provoca que s’apaguin els displays de 7 segments de resultat. En canvi, si show te un valor ‘1’, a la sortida es veu el resultat de AperB (res[7..0]).
A més a més hi ha el bloc keygroup, que és un bloc combinacional amb entrades key i keycode[3..0]. La primera és la indicació de tecla premuda i la segona és el valor de la primera. El bloc s’encarrega de generar una sortida que definirà si la tecla premuda és un dígit decimal (bcd=’1’), un asterisc (ast=’1’) o un coixinet (alm=’1’). Si la sortida no es correspon a cap de les possibles anteriors, totes les tres sortides tindran un valor ‘0’.
Les sortides provinents de keygroup van al bloc control que s’encarrega de gestionar el disseny per tal que funcioni tal com hem descrit anteriorment.
Pràctica 2 - Isaac Sené i Marc Peig. Grup 32 El bloc regs també ha estat proporcionat i es tracta d’un bloc seqüencial síncron que memoritza els dos operands, opA[3..0] i opB[3..0] emprats al bloc AperB. El bloc està adjuntat a l’apartat i el seu funcionament es basa en què cada registre carrega el valor que té a l’entrada cada cop que intro (entrada provinent de control) té un valor de ‘1’ i el rellotge fa un flanc de pujada (valor ‘1’). Altrament manté el valor anterior.
Tots els blocs mencionats anteriorment s’han unit en un bloc general anomenat ppal, el qual té com a entrades el rellotge (clk), el reset (nrst), l’indicador de tecla premuda (key) i el tipus d’aquesta (keycode). Com a sortida dóna els dos operands opA[3..0], opB[3..0] i el resultat d’aquests res[7..0]. Aquest bloc ha estat unit en un bloc general calc que s’ha unit a la placa de desenvolupament mitjançant les directrius proporcionades a la pràctica. Tot i així s’ha hagut de crear un bloc en vhdl, l’encarregat de gestionar l’encesa i apagada dels leds, tant verds com vermells i també un bloc conversor de binari a BCD de 8 bits (conversorIM) tot i que aquest disseny es pot trobar realitzat en la pràctica anterior.
Així doncs el bloc leds rep ‘show’ com a entrada provinent de ppal (recordem que ve regulat pel bloc control) i depenent del seu valor encén els 4 leds verds (LED_GREEN[7..0] = ‘11110000’) o els 4 vermells (LED_RED[17..0]= ‘11110000000000000’).
Per últim el bloc conversor_BIN_BCD_8B és l’encarregat de passar els 8 bits en binari de resultat res[7..0] a bcd, per tal de poder mostrar el resultat als displays de 7 segments mitjançant el bloc bcd7seg.
Així doncs les entrades generals del sistema són les proporcionades al pdf de la pràctica: OSC_50 (divisor de la freqüència de la placa per adaptar el clk), KEY[0] que és l’indicador de tecla premuda i COL[3..0]. Les sortides de la calculadora seran els leds: LED_GREEN[7..0] i LED_RED[17..0] i el resultat res[7..0] que havent passat pel conversor de binari a BCD entra al bloc hex_disps, el qual s’encarrega de passar el resultat de bcd a 7 segments per tal de mostrar en els displays el nombre corresponent.
Recordem que els operands opA i opB es mostren també com a sortides als HEX6 i HEX4 i el resultat als pins HEX1 i HEX0.
Pràctica 2 - Isaac Sené i Marc Peig. Grup 32 BLOCS DE LA PRÀCTICA En aquesta part de la memòria s’exposaran els diferents VHDL’s treballats mitjançant el programa utilitzat al laboratori ‘Quartus II’ i s’explicarà la seva funció, així com la seva relació amb els mòduls inclosos. Per a definir i comprendre millor la tasca que duen a terme cadascun d’aquests blocs, es mostraran els símbols creats per a representar-los i per als circuits més importants es mostraran les simulacions per a poder veure la resposta que dona el programa als nostres dissenys.
Multiplicador binari de 4 per 4 bits (AperB) El multiplicador AperB és l’encarregat de multiplicar les dues entrades A[3..0] i B[3..0] mitjançant el bloc multiplicador i acumulador MULT_ACC creat i realitzat en la pràctica anterior (Aquest ha estat adaptat a 4 bits per tal de multiplicar els 4 bits dels operands).
Pràctica 2 - Isaac Sené i Marc Peig. Grup 32 Multiplicador i acumulador de 4 bits Aquest és el disseny adaptat de la pràctica anterior des dels 8 bits als 4 bits per tal d’assolir la multiplicació de dos nombres binaris de 4 bits.
Multiplicador de 4 per 1 bits Pràctica 2 - Isaac Sené i Marc Peig. Grup 32 Disseny del multiplicador de 4 per 1 bits adaptat des del multiplicador de 8 bits emprat a la pràctica 1 Sumador de 4 bits Disseny adaptat del sumador de 4 bits per tal d’aconseguir el resultat desitjat al bloc AperB.
Un cop descrits els blocs i esquemàtics que formen el bloc AperB, mostrem el seu símbol a utilitzar posteriorment en el disseny de la pràctica.
Pràctica 2 - Isaac Sené i Marc Peig. Grup 32 Sumador de 1 bit Sumador utilitzat per composar les diferents estructures del bloc sumador de 4 bits.
Símbol del bloc AperB Símbol emprat per a definir el bloc multiplicador binari de 4 bits, donant com a resultat 8 bits fins a un màxim de 81 (9 per 9) Pràctica 2 - Isaac Sené i Marc Peig. Grup 32 Selecció de visualització de resultat (sel) Com s’ha explicat a la introducció aquest bloc habilita la visualització del resultat de AperB. Si show te un valor de ‘1’, el resultat serà AperB[7..0] ja que show es nega, tenint un valor nshow = ‘0’. En el cas contrari, si show té un valor de ‘0’, al negar-se tindrà com a valor ‘1’ i la seva suma parcial amb cada bit de AperB donarà ‘1’, fet que farà que s’apaguin els displays de 7 segments, ja que al rebre un vector de 8 bits equivalent a ‘11111111’ es desconnecten.
Símbol Símbol emprat per a descriure el bloc que habilita la visualització del senyal de sortida resultat de AperB Pràctica 2 - Isaac Sené i Marc Peig. Grup 32 Indicació de tecla premuda (keygroup) Pràctica 2 - Isaac Sené i Marc Peig. Grup 32 El bloc keygroup s’encarrega de proporcionar al bloc de control quin tipus de tecla ha estat premuda des del teclat, donant el valor ‘1’ a l’asterisc ‘*’ (ast), coixinet ‘#’ (alm) o bcd ‘0-9’ quan pertoqui. Quan l’entrada del teclat és ‘1100’, ast rep ‘1’ i quan l’entrada (keycode) es ‘1111’ el coixinet (alm) rep el valor ‘1’. Per als valors de ‘0000’ a ‘1100’ l’output bcd rep ‘1’. Altrament els valors valen ‘0’.
Símbol Símbol emprat per a representar l’indicador de tecla premuda Mòdul de registres Pràctica 2 - Isaac Sené i Marc Peig. Grup 32 El bloc seqüencial síncron ve ja donat, simplement s’han afegit els pins d’input i output.
El funcionament d’aquest bloc ja resumit a la introducció de la memòria es basa en carregar el valor de l’entrada cada cop que hi ha un flanc de pujada (clock = ‘1’) i la entrada intro donada pel control també te el valor ‘1’. Sinó es compleixen aquestes condicions manté el valor anterior, per tant memoritza el valor que ja tenia. Cal tenir en compte que cada cop que nrst (reset asíncron) té un valor de ‘0’ el registre es posa a ‘0000’ tant el opA[3..0] i opB[3..0], és a dir, només memoritza i carrega valors mitjançant les pujades de flanc del rellotge quan el nrst té un valor de ‘1’, és a dir, que actua com a reset.
Símbol Símbol emprat per a representar en futurs b locs l’esquemàtic dels registres Pràctica 2 - Isaac Sené i Marc Peig. Grup 32 Bloc controlador (control) El bloc controlador donat que rep com a entrades el tipus de tecla premut (ast, alm, bcd), el rellotge (clk) i el reset (nrst) dóna com a sortides show i intro. Aquestes regularan el funcionament del calculador ja que només mostrarà el resultat de AperB quan es premi coixinet ‘#’ (show = 1) i permetrà carregar i memoritzar els valors dels operands al bloc de registres quan es premi asterisc ‘*’ des del teclat (intro = 1).
D’aquesta manera el bloc control regula el canvi als dos estats del calculador, intro_data (introduir nombre des del teclat) i stop_show on es mostra el resultat de la multiplicació dels nombres opA i opB que en el cas inicial son 0 i 0, per tant es mostra com a resultat als HEX1 i HEX0 el ‘0’.
Símbol Figura emprada per a representar el bloc del controlador del sistema Pràctica 2 - Isaac Sené i Marc Peig. Grup 32 Disseny del multiplicador bàsic: ppal (pàgina següent) Pràctica 2 - Isaac Sené i Marc Peig. Grup 32 Pràctica 2 - Isaac Sené i Marc Peig. Grup 32 El bloc aquí descrit és el del multiplicador bàsic. Tot i això el treball encara no està fet ja que per a poder-hi operar des de la placa de desenvolupament DE2 haurem de generar un nou esquemàtic per connectar-hi les entrades referides als PINs de la placa mitjançant els assignments. Tot i així tenim el multiplicador amb les entrades ja mencionades amb anterioritat: el rellotge (clk), el reset (nrst), l’indicador de tecla premuda (key) i el tipus d’aquesta (keycode). A través dels blocs realitzats per individual el sistema genera una senyal (show) mitjançant el controlador. Aquest indicarà si mostrar o no el resultat de la multiplicació al bloc general.
També hi ha com a outputs de ppal els dos operands a mostrar als HEX6 i HEX4 (opA i opB, ambdós de 4 bits). El producte d’ambdós operands donarà el resultat en un vector de 8 bits, que també formarà part dels outputs.
Símbol Símbol emprat per a representar el multiplicador bàsic ppal Pràctica 2 - Isaac Sené i Marc Peig. Grup 32 Calculador adaptat a la placa DE2 Pràctica 2 - Isaac Sené i Marc Peig. Grup 32 El calculador adaptat a la placa està format pel bloc descrit anteriorment (ppal) i també pels blocs següents: Keypad, que llegeix i indica si s’ha premut alguna tecla (input KEY[0]) i si és així indica el tipus mitjançant la sortida keycode[3..0].
F_div que és un mòdul seqüencial síncron que s’encarrega de dividir la freqüència d’entrada per 216 .
Hex_disps que s’encarrega de passar les entrades a 7 segments per tal de mostrar-ho als diferents displays.
Leds, aquest bloc és l’encarregat d’executar l’encesa o apagada dels leds verds i vermells segons pertoqui. El funcionament es veurà al següent apartat (VHDL) on està descrit. Bàsicament els leds vermells (output LED_RED) s’engegaran al rebre de controlador un valor de show de ‘1’. ). Això és així ja que al mostrar el resultat s’haurà d’aturar l’entrada de dades per teclat, i per tant s’engegaràn els leds vermells. Altrament, s’engegaràn els leds verds (output LED_GREEN).
Conversor_BIN_BCD_8B (conversorIM en l’esquemàtic) és un conversor de binari de 8 bits a bcd 8 bits necessari per a que el bloc hex_disps pugui passar a 7 segments el resultat del producte per tal de mostrar el resultat als displays (codi vhdl adjuntat al següent apartat).
Pràctica 2 - Isaac Sené i Marc Peig. Grup 32 Simulacions dels blocs Aquí es mostren les simulacions dels blocs passats a VHDL per a veure el seu correcte funcionament.
Simulació del bloc AperB El funcionament esperat (com el de l’esquemàtic).
Simulació del bloc sel Com veiem, mateix funcionament que l’esquemàtic.
Simulació del bloc de registres Com s’observa, el bloc en vhdl funciona correctament, donant el mateix resultat que el bloc d’esquemàtic.
Pràctica 2 - Isaac Sené i Marc Peig. Grup 32 Simulació del bloc keygroup Com veiem funciona exactament igual que el keygroup en esquemàtic sense cap problema.
Simulació del calculador bàsic ppal Com veiem el funcionament del calculador és correcte, quan show rep un ‘0’ el resultat apaga els 7S. Els operands s’actualitzen sempre que el reset (nrst) estigui a ‘1’ i hi hagi un flanc de rellotge (clk).
Pràctica 2 - Isaac Sené i Marc Peig. Grup 32 Treball Opcional 1. Ampliació operands i resultat amb signe En aquest treball opcional s’ha proposat la implantació de més opcions al calculador en binari que hem treballat fins ara, el qual nomes feia el producte de dos nombres del 0 al 9 amb signe positiu en tot cas. Així doncs, es demana realitzar un seguit de canvis al projecte per tal d’obtenir un multiplicador que tingui en compte el signe de cadascun dels operands A i B entrats pel teclat.
Teclat emprat per a comunicar -nos amb la placa El que es vol aconseguir és que es mostri als displays de l’esquerra de cada operand el signe d’aquest, així com el resultat. D’aquesta manera, si l’operand o resultat és de signe positiu, el display de l’esquerra d’aquest apareixerà apagat. Altrament apareixerà el signe “-“.
Així, el signe de l’operand A es mostrarà al display HEX7. El signe de l’operand B pel display HEX5 i el signe del resultat es mostrarà al display HEX2.
Pràctica 2 - Isaac Sené i Marc Peig. Grup 32 Per a poder ampliar el disseny i que reconegui els signes hem hagut d’introduir canvis als blocs keygroup, ppal i calc. El que s’ha fet es atribuir a dos dels quatre botons inutilitzats fins ara del teclat dos funcions noves. És la de canviar el signe de l’operand A (prement A) i canviar el signe de l’operand B (prement B).
Així s’han afegit tres outputs a keygroup, el signe de l’operand A, el signe de l’operand B i el signe del resultat. Per poder visualitzar als displays de 7 segments els signes proporcionats s’ha passat mitjançant un convertidor del bit 0 o 1 que indicava el signe a la visualització del signe negatiu (-) i positiu (display apagat). Per comoditat, s’ha passat del bit de resultat del producte a 7 segments al bloc ppal_opcional, tot i que el funcionament és bàsicament el mateix.
Pràctica 2 - Isaac Sené i Marc Peig. Grup 32 D’aquesta manera, així queden els canvis efectuats: Disseny de ppal un cop adaptat Com veiem s’han afegit els tres outputs dels signes per tal de poder-los veure a través dels displays.
Pràctica 2 - Isaac Sené i Marc Peig. Grup 32 Disseny de calc un cop adaptat Pràctica 2 - Isaac Sené i Marc Peig. Grup 32 Com veiem al bloc calc, s’han afegit els outputs dels signes d’ambdós operands i s’han mostrat als HEX7 i HEX5 respectivament, tal i com volíem al principi. D’altra banda, el display HEX2 correspon al signe del resultat, el qual s’ha passat a 7 segments mitjançant el convertidor adjuntat en VHDL: Com veiem, aquest convertidor passa el resultat ‘0’ de l’entrada a ‘0000001’ que en 7 segments equival a il·luminar la component g, és a dir, el signe ‘-‘. D’altra banda es passa un vector amb set uns ‘1111111’ que en 7 segments equival a mostrar tots els components del display.
2. Anàlisi del mòdul Keypad El mòdul keypad se’ns proporciona per a la resolució de la pràctica i la seva integració en el bloc final calc. Es composa de 4 sortides cap al teclat de la placa DE2 (1 per fila) i 4 entrades provinents d’aquest (1 per columna). Aquest, és un mòdul seqüencial síncron i que per tant depèn en tot moment del seu estat. El keypad interpreta la informació del teclat i indica si s’ha premut o no una tecla i així, també quina és.
El teclat el que fa simplement es connectar les files amb les columnes quan es prem una tecla (suposarem només una a la vegada).
Així, keypad en cadascun dels seus estats entremitjos, realitza un sondeig en cada fila (envia ‘0’ a aquesta i ‘z’ a la resta) per determinar quina tecla ha estat premuda.
Pràctica 2 - Isaac Sené i Marc Peig. Grup 32 Exemple de sondeig: Row [3..0] Col[3..0] 0 1 2 3 0 1 2 3 0 z z z 1 1 1 1 z 0 z z 1 1 1 1 z z 0 z 1 1 1 0 z z z 0 1 1 1 1 On aquí la tecla premuda és -> col=3, row= 2 = ‘C’ ...