QNA > C > Come Creare Grandi Decoder Usando Un Certo Numero Di Codec Più Piccoli

Come creare grandi decoder usando un certo numero di codec più piccoli

Amr Amr, sembra che tu sia piuttosto interessato a come usare i decoder binari. Almeno, presumo che sia quello che stai chiedendo, date queste altre domande.

I decoder binari sono blocchi che prendono un input codificato a n bit, e producono uno dei [math]2^n[/math] output. Il decodificatore più semplice è un decodificatore [math]1:2[/math]: prende un singolo bit in ingresso, e genera due bit di uscita che indicano se l'ingresso era 0 o 1.

Vuoi costruire un grande decodificatore con decodificatori più piccoli. Pensate a questo come ad un problema di divide et impera.

Vi mostrerò una struttura di dati che all'inizio potreste non pensare sia correlata, ma vi assicuro che lo è. Ho disegnato io stesso questi diagrammi, solo per voi.

main-qimg-12477dbce621507ba407a74d12d2d0c9

Questo è un albero binario completo. L'ho etichettato in un modo particolare. Come puoi vedere, tutti i rami che vanno a sinistra sono etichettati 0, e tutti i rami che vanno a destra sono etichettati 1.

Se ti do una stringa di 3 bit, e ti dico di seguire i rami secondo i valori dei bit mentre leggi i bit dalla stringa, finirai in uno degli 8 nodi in basso. Congratulazioni! Hai appena decodificato la stringa di 3 bit con un albero binario.

Ad ogni passo, escludi metà dell'albero. Continui a escludere metà dell'albero rimanente man mano che scendi, finché non rimane solo un nodo in fondo che corrisponde alla stringa originale a 3 bit.

Questo si ricollega al grande suggerimento che ti ho lasciato in una risposta precedente: puoi aumentare il decoder più semplice aggiungendo alcune porte AND per creare un ingresso di abilitazione, e questa è la chiave per scalare.

In generale, quando l'ingresso di abilitazione di un decoder è 1, il decoder emette un 1 nella posizione che corrisponde al valore di ingresso, e 0 nelle altre posizioni. Quando l'abilitazione è 0, il decoder emette degli zeri in tutte le posizioni.*

Una volta che hai un ingresso di abilitazione sul tuo decoder, puoi costruire un decoder binario di qualsiasi dimensione da quel blocco di base.

Ora guarda di nuovo quell'albero.

  • Quando sei al primo livello dell'albero, guardi il primo bit dell'ingresso.
  • Indipendentemente dal fatto che tu vada a sinistra o a destra, finirai in un nodo del secondo livello dell'albero. Quando sei al secondo livello, guardi sempre il secondo bit di input.
  • E, indipendentemente dal fatto che tu vada a sinistra o a destra da lì, finirai in un nodo nel terzo livello dell'albero. Quando sei al terzo livello, guardi il terzo bit di input.

Nota uno schema?

Si potrebbe dire che i nodi a un livello dell'albero abilitano o disabilitano i nodi immediatamente sotto di loro sull'albero.

Se tu avessi 15 decoder [math]1:2[/math] con ingressi di abilitazione, dovresti essere in grado di strutturarli in un modo simile a quell'albero, e finire con un singolo decoder [math]3:8[/math].

Ma se tu iniziassi con un decoder più grande? Nessun problema. Strutturate ancora il problema in modo simile: Lo scomponi in un albero. Ogni livello dell'albero guarda un sottoinsieme di bit, e abilita o disabilita i sottoalberi sottostanti di conseguenza.

Ecco un albero radix-4. Guarda 2 bit per livello, facendo una delle quattro scelte. Corrisponde ad una struttura di decodifica [math]2:4[/math].

main-qimg-fc16861d8970c32c6e9491c8f852a9cc

Il primo livello dell'albero guarda i primi due bit per decidere cosa fare. I nodi del secondo livello dell'albero guardano i due bit successivi. L'ultimo livello dell'albero fornisce l'output finale decodificato.

E, giusto perché tu lo sappia: Puoi usare decodificatori di dimensioni diverse ad ogni livello. Niente dice che debbano essere tutti uguali.

Il punto, però, è che saranno strutturati come un albero.

Ora sta a voi capire esattamente come collegare le cose. Finché si capisce la struttura, però, non dovrebbe essere un grande mistero.

*Assumendo una logica attiva-alta. Con la logica active-low come la vecchia scuola 74xx serie TTL, invertite gli 1 e gli 0 in quel paragrafo.

Di Center

Quanti testi in latino e greco antico non sono ancora stati tradotti? :: Come scaricare l'app APK Mobile Android
Link utili