Display a 7 segmenti Il display a 7 segmenti è un dispositivo composto da 7 diodi luminosi LED (Light-Emitting Diode) sagomati a forma di rettangolo o meglio a forma di “segmento” appunto. Dunque mediante una opportuna combinazione di LED accesi e LED spenti è possibile visualizzare su un singolo display un singolo carattere. Per convenzione i segmenti del display vengono identificati con le lettere da A a G. Questo è la rappresentazione circuitale del display: ognuno dei 7 led ha due connessioni una è a potenziale costante nullo (è collegato a massa) e l’altra è collegata al segnale che comanda l’accensione. Quindi nello schema a destra, CC è collegato a massa e i segnali da A a G sono i segnali di controllo. Quando un segnale di controllo vale ‘1’ il corrispondente LED (quindi il segmento) si accende. 1 Display a 7 segmenti Supponiamo ora di voler visualizzare, su un display a 7 segmenti, una cifra BCD, definita dai 4 segnali X[3..0] Il problema da risolvere è dunque transcodificare, cioè “tradurre” il codice BCD nel codice a 7 segmenti. Gli ingressi del transcodificatore sono i 4 segnali X[3..0] Le uscite del transcodificatore sono i 7 segmenti a,b,c,d,e,f,g Si considerano lecite solo le 10 configurazioni di ingresso associate alle cifre BCD. BCD X[3..0] ? 7 segmenti abcdefg 2 Transcodificatore BCD 7 segmenti Il primo passo per creare la logica di transcodifica è avere una tabella che descrive il funzionamento del transcodificatore. Dec X3 X2 X1 X0 abcdefg 0 0 0 0 0 1111110 1 0 0 0 1 0110000 2 0 0 1 0 1101101 3 0 0 1 1 1111001 4 0 1 0 0 0110011 5 0 1 0 1 1011011 6 0 1 1 0 1011111 7 0 1 1 1 1110000 8 1 0 0 0 1111111 9 1 0 0 1 1111011 3 Transcodificatore BCD 7 segmenti Prendiamo in considerazione il segnale abcdefg cioè il segnale con codifica 7 segmenti: proviamo a scomporre il problema in 7 sotto-problemi, quindi dobbiamo creare 7 reti per gestire altrettanti segmenti! A questo punto l’ingresso è sempre X, però l’uscita è ad un solo bit, quindi il problema è più semplice… Se prendiamo come esempio il segmento a, questa è la rete che dobbiamo progettare BCD X[3..0] BCD -> 1 segmento a Abbiamo tanti ingressi e una sola uscita… un MUX può esserci utile… Possiamo cioè provare a fare la sintesi con un mux a 16 vie. In realtà, visto che ci sono solo dieci configurazioni di ingresso possibili, solo 10 ingressi dovranno essere fissati a un valore ben preciso. Non ha importanza a quale valore logico verranno fissati gli altri 6 ingressi “inutili”, ma un valore dovrà essere scelto perché nessun ingresso di una RL può essere lasciato non connesso. 4 Astrazione Arrivati a questo punto è necessario richiamare il concetto di astrazione e applicarlo al nostro progetto! Transcodificatore Livelli di Astrazione Bottom-Up Per la realizzazione in Quartus II MUX e DEC Top-Down In fase di progetto Gate elementari Transistor In Quartus II è possibile applicare il concetto di astrazione al progetto grazie alla creazione dei componenti di libreria (file .bsf) 5 Transcodificatore BCD 7 segmenti 1 0 1 1 0 1 1 1 1 1 Non possono Essere lasciati non connessi 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 L’uscita del MUX è ‘a’. ‘a’ varia al variare di X, cioè è X che controlla la rete logica. Quindi possiamo collegare X all’ingresso di selezione del MUX e poi colleghiamo gli ingressi del MUX a dei valori costanti 0 e 1 a seconda dei valori della tabella che descrive il transcodificatore. X è a 4 bit allora gli ingressi del MUX saranno 2^4 cioè 16, quindi ci serve un MUX a 16 vie. a X3 X2 X1 X0 Dec X3 X2 X1 X0 a 0 0 0 0 0 1 1 0 0 0 1 0 2 0 0 1 0 1 3 0 0 1 1 1 4 0 1 0 0 0 5 0 1 0 1 1 6 0 1 1 0 1 7 0 1 1 1 1 8 1 0 0 0 1 9 1 0 0 1 1 6 Creazione dello schema logico A questo punto bisogna effettuare le connessioni con Orthogonal Node Tool prestando molta attenzione ai collegamenti con gli ingressi/uscite dei componenti. Nell’esempio possiamo vedere che il collegamento a destra è stato effettuato correttamente mentre il collegamento a sinistra è errato. Infatti anche se graficamente il “filo” è a contatto con l’ingresso dell’AND, il collegamento reale non c’è!!! Collegamento sbagliato Collegamento corretto Il Graphic Editor evidenzia con una X le terminazioni dei fili volanti 7 Creazione dello schema logico Finito di creare il circuito logico bisogna specificare quali sono i nodi di ingresso e di uscita. Quartus è in grado di riconoscere in automatico solo alcuni nodi di input e output cioè solo quelli non connessi a niente! Nell’esempio riconosce l’uscita dell’OR come output e solo gli ingressi non connessi degli AND come input, mentre non è in grado di riconoscere i due ingressi centrali degli AND in quanto sono connessi tra loro! Per l’assegnazione in automatico bisogna selezionare tutto le schema (o un gate per volta), cliccare con il tasto destro e selezionare l’opzione Generate Pins for Symbol Ports 8 Creazione dello schema logico IN1, IN2 e OUT sono stati aggiunti con il procedimento descritto prima, mentre Input_Symbol_Tool è stato aggiunto con Symbol Tool (Primitives -> Pin) come fosse un normale componente ed è stato collegato al circuito 9