Circuiti combinatori

In fase di sviluppo Stesura preliminare In fase di sviluppo

In questa pagina descrivo cosa è un circuito combinatorio.

Definizione formale

Un circuito digitale combinatorio è una rete di porte logiche le cui uscite in un certo istante dipendono esclusivamente dal valore logico presente in quello stesso istante agli ingressi.

Abbiamo già visto che in una porta logica l'uscita dipende esclusivamente dal valore degli ingressi, come mostrato nelle tabelle di verità. Quindi una porta logica è un (piccolo) circuito combinatorio.

Correttezza formale

Quello di seguito rappresentato è un esempio di rete combinatoria formalmente corretta:

Circuito combinatorio formalmente corretto

Osserviamo alcuni aspetti, tutti corretti:

Errori

Vediamo ora alcuni collegamenti errati, tali da non far funzionare il circuito:

Ingresso non collegato

Uscite in corto

 

Nello studio dei circuiti combinatori abbiamo due tipi di problemi, uno il contrario dell'altro:

Analisi: dato lo schema di un circuito, descrivere il suo funzionamento. In genere questo tipo di problema ammette una sola soluzione corretta

Sintesi: data la descrizione del funzionamento di una rete logica, trovare un circuito che la realizza. In genere questo tipo di problema ammette più di una soluzione: qualcuna buona, qualcuna corretta, ma migliorabile, qualcuna... sbagliata

Circuiti ed equazioni booleane

Come per le porte logiche, anche per un intero circuito è possibile scrivere un'espressione algebrica che descrive il circuito (descrizione dettagliata del procedimento)

Consideriamo la seguente rete combinatoria. Si noti come è stata disegnata per mantenere un certo ordine e, quindi, evitare errori (nota 4).

Rete combinatoria generica

L'espressione algebrica corrispondente è:

Espressione booleana

VHDL

Il codice VHDL corrispondente ad una rete data può essere scritto a partire dall'espressione algebrica, in modo simile a quanto già mostrato per le singole porte. In riferimento all'ultimo esempio possiamo per esempio scrivere:

library IEEE;
use IEEE.std_logic_1164.all;

entity CIRCUITO-COMBINATORIO is
port (
A : in std_logic;
B : in std_logic;
C : in std_logic;
Q : out std_logic);
end entity CIRCUITO-COMBINATORIO;

architecture RTL of CIRCUITO-COMBINATORIO is
begin
Q <= (A and not B) or (A and B and C) or (not A and not B and not C);
end architecture RTL;

Note

  1. Contrariamente a quanto potrebbe suggerire l'intuito, un ingresso non collegato NON è zero (e neppure uno)
  2. Esistono componenti speciali (porte open drain oppure 3-state) che permettono questo tipo di collegamento
  3. Traccia per chi è curioso: quanto vale Q? Dipenda da cosa valeva Q "prima"; questo valore viene negato, poi ancora negato ed infine negato per la terza volta e quindi cambia, ed il giro ricomincia...
  4. In realtà quella mostrata è anche la struttura interna di molti circuiti complessi


Pagina creata nel settembre 2020
Ultima modifica: 6 ottobre 2021


Licenza "Creative Commons" - Attribuzione-Condividi allo stesso modo 3.0 Unported


Pagina principaleAccessibilitàNote legaliPosta elettronicaXHTML 1.0 StrictCSS 3

Vai in cima