Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
Capitolo 5: A MOD B
1. Handshaking tra il sistema esterno e la UO, in questo caso è necessario comunicare all'unità di controllo del corretto svolgimento dell'handshaking e quindi della possibilità di poter prendere gli ingressi, richiedendo quindi la modifica dell'unità operativa;
2. Handshaking tra il sistema esterno e la UC, il quale risulta essere più semplice da realizzare. In questo caso, vengono aggiunti dei segnali di ingresso e di uscita alla parte di controllo utili alla corretta esecuzione dell'handshake con il sistema esterno.
Per realizzare l'esercizio è stata implementata la seconda modalità.
5.3 Schematici
L'unità operativa consente il trattamento dei dati. In figura 5.1 viene mostrata l'architettura della UO. Per calcolare A mod B vengono adoperati un addizionatore e due registri da 8 bit, con i rispettivi segnali di selezione. Il sistema legge due numeri, A e B codificati su 8 bit,
caricati nei due registri, ecalcola A mod B restituendolo sul bus d'uscita, Bout. L'addizionatore è fonda-mentale nell'operazione di modulo, poiché consente di sottrarre B tante voltead A fino a quando l'operazione di sottrazione non mi dà un valore negativo.Inoltre, per continuare a fare sottrazioni progressive su B sono stati inseriti nelsistema due multiplexer 2:1, uno che ha la selezione del caricamento del busBinA o ha la selezione del caricamento dal bus d'uscita dell'addizionatore e unaltro che carica o dal bus BinB o carica un valore pari a 0.
Figura 5.1: Unità operativa AmodB
L'unità di controllo risulta essere decisiva per il corretto funzionamento dellaparte operativa, in quanto abilita A, abilita B e seleziona il bus da cui prendere69CAPITOLO 5. A MOD Bil dato. La UC riceve in ingresso due segnali, start e cout; il segnale di startpermette di avviare il sistema; il segnale cout, invece, indica se
c'è un riporto negativo nell'operazione di A mod B, poiché in caso di riporto negativo non devono essere più inviati segnali di abilitazione. Quindi, la parte di controllo garantisce tante sottrazioni finché non si trova un valore negativo, il quale indica che il risultato precedente risulta essere il risultato finale dell'operazione A mod B. L'unità di controllo è stata realizzata prima in logica cablata e poi in logica microprogrammata.
La sintesi in logica cablata è stata realizzata tramite un automa a stati finiti, riportato in figura 5.2. Esso prevede:
- uno stato idle, dove permane fin quando non giunge il segnale di start;
- uno stato ricA, in cui la parte di controllo richiede il dato A al sistema esterno;
- uno stato waitA, in cui rimane fin quando non riceve il dato A dal sistema esterno;
- uno stato inA, che consente di...
memorizzare il valore di A;
- uno stato ricB, dove viene richiesto il dato B al sistema esterno;
- uno stato waitB, in cui rimane fino alla ricezione di B;
- uno stato inB, in cui viene memorizzato il valore di B;
- uno stato op di elaborazione, in cui vengono effettuate le operazioni per il calcolo di A mod B. La macchina rimane in tale stato fin quando non si ha un riporto negativo.
La logica cablata consente di avere un sistema veloce, ma poco flessibile, in quanto la modifica o l'estensione della logica di controllo richiederebbe la rielaborazione dell'automa.
Per quanto riguarda la sintesi della UC in logica microprogrammata si fa ricorso ad una memoria ROM, la quale contiene tutte le sequenze con cui l'unità di controllo pilota l'unità operativa. Queste sequenze abilitano l'enable per selezionare A, l'enable per selezionare B, la selezione di A, la selezione
di B, la richiesta di A e la richiesta di B. Il sistema, il cui schema viene presentato in figura 5.3, parte quando arriva il segnale di start, tuttavia il suo funzionamento viene anche condizionato dal segnale cout. L'indirizzo della prossima parola da trarre dalla ROM viene determinato dal PC, un registro sempre presente, che mantiene l'indirizzo della parola correntemente attiva. La logica di controllo, in relazione ai segnali di cout e a seconda dei segnali che escono dalla memoria, decide qual è la prossima istruzione da prelevare. Il segnale PC next indica l'indirizzo della prossima microistruzione, mentre il segnale JCout indica di prendere in considerazione il valore cout nel determinare il prossimo stato, esso sarà alto durante il ciclo di sottrazioni e sarà basso quando non bisogna più sottrarre. A differenza della logica cablata, la logica microprogrammata permette di avere un modello programmabile, quindi l'aggiunta di uno stato
Il sistema esterno, la cui architettura viene riportata in figura 5.4, comunica con l'unità di controllo mediante l'utilizzo di un protocollo, di fondamentale importanza per decidere quando prendere A e quando prendere B. Tale sistema riceve la richiesta del dato A e del dato B dalla UC ed ha il compito di inoltrare opportunamente questi due valori secondo le modalità definite dal protocollo.
L'entità esterna è costituita da due registri interni di 8 bit, che memorizzano i valori di A e B, e da un'unità di controllo che regola il corretto funzionamento del sistema nell'interfacciamento con il microcontrollore.
La UC del sistema esterno, è stata sintetizzata mediante un automa a stati finiti, figura 5.5. Esso prevede:
- uno stato idle, dove permane fin quando non
Figura 5.4: Architettura sistema esterno
Figura 5.5: Automi a stati finiti
giunge il segnale di start;
- uno stato waitA, in cui il sistema permane fin quando non giunge la richiesta del dato A da parte del microcontrollore;
- uno stato sendA, che prevede l'invio di A;
- uno stato waitB, dove rimane fin quando non riceve la richiesta del dato B;
- uno stato sendB, in cui viene inviato il dato B.
Figura 5.5: Automa descrittivo del sistema esterno
L'architettura del sistema completo viene mostrata in figura 5.6. 72
Figura 5.6: Sistema complessivo AmodB
5.4 Codice
La traccia richiede l'implementazione in VHDL di un sistema complesso che sia in grado di calcolare A mod B. Come già detto precedentemente, tale sistema è stato decomposto in funzionalità più semplici da risolvere. In questo paragrafo viene mostrata la realizzazione in VHDL della parte operativa, della parte di controllo (sia in logica cablata sia in logica microprogrammata) e il sistema esterno con cui la macchina progettata
<std_logic_vector downtoout_add : (7 0) := (others=>'0');signal std_logic_vector downtocarry_S : :='1';signal std_logic<!-- Definizione componenti -->component mux2_1 is port ( x1 : in std_logic_vector(7 downto 0); x0 : in std_logic_vector(7 downto 0); load : in std_logic; y2_1 : out std_logic_vector(7 downto 0) ); end component; component registro is port ( D : in std_logic_vector(7 downto 0); clk : in std_logic; rst : in std_logic; en : in std_logic; o : out std_logic_vector(7 downto 0) ); end component; component Sottrattore is port ( A : in std_logic_vector(7 downto 0); B : in std_logic_vector(7 downto 0); carry : in std_logic := '1'; ris : out std_logic_vector(7 downto 0); cout : out std_logic ); end component; begin -- Instanzio i due multiplexer A e B mux2_1_A : mux2_1 port map ( x1 => BinA, x0 => out_add, load => selA, y2_1 => out_muxA ); mux2_1_B : mux2_1 port map ( x1 => BinB, x0 => (others=>'0'), load => selB, y2_1 => out_muxB ); -- Istanzio i due
<registro_A : registro(port mapD => out_muxA,clk => clock,rst => reset,en => enA,o => out_regA);
<registro_B : registro(port mapD => out_muxB,clk => clock,rst => reset,en => enB,o => out_regB);
<-- Istanzio Sottrattore
<sottrazione : Sottrattore(port mapA => out_regA,B => out_regB,carry => carry_S,ris => out_add,cout => cout);
<Bout<=out_add;
<end Structural;
<Nell’entity è possibile visualizzare gli ingressi e le uscite della parte operativa,75CAPITOLO 5. A MOD Bin particolare riceve in ingresso due stringhe da 8 bit e riporta in uscita unastringa da 8 bit; un segnale di reset viene utilizzato per riportare la macchina inuno stato noto, poi ci sono il clock e dei segnali di abilitazione e di selezione utiliper la gestione delle operazioni. Nell’architecture sono stati dichiarati i compo-nenti presenti all’interno della macchina. Per l’implementazione dei multiplexerè stata adoperata una descrizione
B. Per implementare il sottrattore, è stato utilizzato un circuito di somma completo, in cui l'operazione di sottrazione è ottenuta invertendo il bit di carry in ingresso e sommando 1 al risultato. Questo circuito è stato implementato utilizzando porte logiche di tipo NAND e NOR.
Per quanto riguarda l'implementazione dei multiplexer, è stato utilizzato un multiplexer a 4 vie, in cui il selettore è controllato da un segnale di controllo. In base al valore del selettore, il multiplexer seleziona uno dei quattro ingressi e lo invia all'uscita. Questo componente è stato utilizzato per selezionare l'input corretto per l'operazione di sottrazione.
Per quanto riguarda i registri, è stata adoperata una descrizione di tipo comportamentale, in cui il valore del registro viene aggiornato in base ai segnali di controllo. Questo permette di memorizzare e leggere i dati in modo sequenziale.
In conclusione, l'implementazione del sottrattore utilizza un circuito di somma completo e un multiplexer a 4 vie, mentre l'implementazione dei registri utilizza una descrizione di tipo comportamentale.