PRACTICA 1 - mrpss1234/Treball-de-Final-de-Grau GitHub Wiki

Enunciat Pràctica 1:

Mostrar un únic dígit (4 bits en binari) a través del sistema de 4 displays 7-segments multiplexats de la training FPGA-UdL amb selecció de velocitat de refresc /multiplexació dels displays.

Connexions a la placa de training FPGA-UdL:

Introducció del dígit:

Per poder introduir el dígit s'ha de fer mitjançant la placa de training FPGA-UDL. Per això utilitzem el DIP Switch B de forma que el dígit en binari (x3,x2,x1,x0) quedarà en funció del valor que nosaltres assignem als 4 polsadors del DIP Switch B quedant d'aquesta forma (4B,3B,2B,1B). Ara que ja tenim configurada la introducció del dígit, falta connectar els pins (4B,3B,2B,1B) amb les entrades que volem utilitzar a la FPGA que en el nostre cas son (D4,D5,D6,D7).

Les connexions es fan tal i com indica la següent imatge:

  • D4 <-- 4B
  • D5 <-- 3B
  • D6 <-- 2B
  • D7 <-- 1B

Connexions per la selecció del clock:

Per seleccionar les diferents velocitats del rellotge utilitzarem un nombre de 2 bits, que estarà format per els estats en els que estiguin els push_buttons D i C. Aquests dos push_Button podran variar entre el estat 0(ningú l'està polsant) i l'estat 1 (l'estan polsant) i formar quatre possibles combinacions, que ens indicaran quina velocitat volem seleccionar. Un cop tenim connectat els dos push_Buttons, falta portar aquesta senyal de control als pins que nosaltres em indicat que utilitzarem a la nostra FPGA, en aquest cas els pins D12 , D13 i els connectarem amb els push_button tal i com indica la següent imatge.

  • D12 <-- PUSH_D
  • D13 <-- PUSH_C

Selecció del display a mostrar:

Ja que en la pràctica ens demana que anem mostrant el dígit per els diferents displays, haurem de poder controlar quin display volem que estigui actiu. Per poder fer això, la FPGA disposa de 4 entrades (7S_B,7S_C,7S_D,7S_E) on cadascuna d'aquestes entrades controla un transistor que activa o desactiva el seu corresponent display. Per anar variant entre els 4 displays, en aquesta pràctica s'ha optat per controlar quin display s’activarà mitjançant un nombre de 2 bits que estarà generat per un flip-flop D. Aquest nombre podrà ser entre 0 i 3, sent 00-01-10-11 en binari. Aquest nombre anirà canviant entre els seus possibles valors de forma seqüencial amb cada pulsació del clock i a cada possible valor anirà assignat un display que haurà d'encendre. Per generar el numero de selecció de display, s’utilitzarà un flip-flop D, amb el clock que nosaltres haguem seleccionat al apartat anterior. El seu esquema es aquet:

Aquest flip-flop esta dissenyat perquè vagi traient com a sortida la seqüencia 00-01-10-11 amb la velocitat del clock introduït. Un cop tinguem el numero de selecció (Z1,Z0) de display en binari, s'utilitzaran una sèrie de portes lògiques per activar segons cada estat de la seqüencia un display diferent tal i com indica a la següent imatge:

Quan el numero equival al 00 (Z1=0,Z0=0), indicara que volem activar la entrada 7S_E del display, per lo tant necessitarem 2 portes NOT per a transformar el 00 a 11 i activar el transistor amb una porta AND.

Z1 Z0 DISPLAY
0 0 7S_E
0 1 7S_D
1 0 7S_C
1 1 7S_B

Les conexions a la FPGA queden de la seguent forma:

Conexions als displays:

La La sortida O[3..0] es treu pels pins D8, D9, D10 i D11 de la FPGA i llavors es connecten a l'entrada del xip 4511

  • D8 --> B0
  • D9 --> B1
  • D10 --> B2
  • D11 --> B3

Realització de la pràctica:

Primer de tot, per evitar tenir que realitzar tantes connexions, treballarem amb un bus de 4 bits que contindrà el dígit que nosaltres em introduït mitjançant la FPGA. Aquest bus de 4 bits s’obté de la llibreria amb el nom "Agregador Bus" però es pot dissenyar manualment mitjançant codi Verilog. Aquest agregador Bus esta programat de la següent forma:

Selecció del clock:

En aquesta pràctica ens demana mostrar el dígit amb 4 velocitats diferents, es a dir que em de utilitzar 4 clocks diferents i anar variant entre ells. De totes les formes possibles que hi ha per fer això, en aquesta pràctica s'ha optat per seleccionar les diferents velocitats mitjançant un multiplexor de 4 a 1. Per fer-ho, es connecta els 4 clocks a les 4 possibles línies de sortida del multiplexor i es selecciona quina d'aquestes línies es vol treure pel multiplexor mitjançant els dos bits de selecció que s'introdueixen mitjançant la connexió amb la FPGA-UDL amb els pins (D13,D12). D'aquesta manera la sortida quedarà en funció del nombre binari "selecció"= (seleccio1, seleccio0).

Taula de la veritat selecció del clock:

seleccio1 seleccio0 Sortida
0 0 CLK1
0 1 CLK2
1 0 CLK3
1 1 CLK4

Assignació de clocks a les entrades del multiplexor:

CLKx Ix
CLK1 I0
CLK2 I1
CLK3 I2
CLK4 I3

Diagrama conexions Icestudio

Diagrama connexions Icestudio

La part vermella pertany al diagrama de generació de les variables de control Z1,Z0 i el control per seleccionar quin display s'ha d’il·luminar. La part groga pertany al procés per seleccionar el dígit a introduir. El bloc de la imatge esta pensat per poder introduir 4 dígits de 4 números binaris cada un i poder anar-los seleccionant mitjançant les variables de Z1,Z0. Com a l'enunciat ens indica que nomes hem d'introduir un únic dígit de 4 bits, nomes estarà en funcionament un únic bus de dades, el XO[3,0]. Aquest dígit en binari entrarà com a I0 en els 4 multiplexors, de forma que a cada multiplexor hi haurà un únic dígit binari, es a dir, x3-x2-x1-x0 segons el multiplexor que toqui. Amb la senyal de selecció Z1,Z0 com a selecció dels multiplexors, aquests aniran traient els dígits que corresponguin segons quin valor de selecció hi ha en aquell moment. Ja que nomes em introduït un dígit, quan selecció valgui un numero diferent de 00, els displays mostraran 0 ja que no hi ha cap altre numero connectat a les altres Ix del multiplexor. Per tant, quedarà així:

Z1 Z0 Sortida Mux
0 0 x3,x3,x2,x0
0 1 0,0,0,0
1 0 0,0,0,0
1 1 0,0,0,0

Video Funcionament Pràctica 1:

Watch the video