Domanda

Ho pubblicato questo diagramma logico digitale come rispondi a un'altra domanda stackoverflow . Descrive un sistema logico che sarà codificato in Verilog o VHDL e infine implementato in un FPGA.

alt text http://img145.imageshack.us/img145/5125/bitshifterlogicdiagramkn7 .jpg

Le caselle numerate nel diagramma rappresentano i bit in un campo. Ogni campo ha K bit e i bit per corrente e maschera saranno forniti da un sistema informatico (usando un registro bloccato o equivalente). I bit in next verranno riletti nello stesso sistema informatico.

La soluzione che ho pubblicato funziona fintanto che c'è almeno un bit impostato nel campo maschera e c'è esattamente un bit impostato nel campo corrente . L'idea è che il campo di bit successivo diventerà il campo di bit corrente dopo che il sistema del computer ha eseguito alcune attività (un'operazione di pianificazione, nella domanda originale).

Quindi, la mia domanda è questa: Come modificheresti questo sistema in modo che gestisca correttamente il caso speciale in cui il campo corrente bit è tutto zero (nessun bit impostato)? Allo stato attuale, se tutti i bit in corrente sono zero, anche l'output sarà zero, indipendentemente dai bit impostati nella maschera .

Idealmente, se corrente è tutto azzerato, il bit impostato più basso in maschera dovrebbe essere impostato in successivo . Il sistema dovrebbe anche rimanere scalabile su qualsiasi numero di bit (K) senza dover aggiungere esponenzialmente più porte logiche. Lo spirito della domanda originale era quello di trovare una soluzione che sarebbe stata semplice da implementare per qualsiasi numero di bit.

Vedi anche: questa domanda stackoverflow

È stato utile?

Soluzione

Per me, direi all'utente dell'FPGA che devono avere uno dei bit impostati su 1 all'ingresso.

Tuttavia, se questa non è la tua soluzione preferita, cosa c'è di sbagliato nell'idea di pre-alimentare tutti gli ingressi Current inizialmente in una grande porta NOR (in modo che l'uscita sia vera solo quando tutti gli ingressi sono falsi). Anche tutte le linee Current continuano fino alle loro porte AND, con l'eccezione che Current [1] è OR con l'uscita del nostro gate NOR prima di entrare nel suo gate AND

In questo modo, Current [1] sarebbe vero entrando nel gate AND, se tutte le correnti sono false.

Tieni presente che capisco l'algebra booleana ma non ho mai lavorato su hardware grezzo - Immagino che dovrai bufferizzare tutti i segnali di input nelle porte AND per garantire un tempismo corretto ma sospetto che lo saprai meglio di me

Il seguente diagramma viene lasciato nel caso in cui SO risolva il suo codice / blocchi pre - l'ultimo aggiornamento SO sembra averlo riempito (lasciandoli proporzionali, non a larghezza fissa, font). Ad ogni modo, il diagramma grafico di eJames è migliore.

Ecco il mio diagramma, leggermente meno elegante del tuo :-):

               +-------------------+
               |                   |
               |     +----         |
Current[1]-----+------\   \        |
                       |NOR|o--+   |
Current[2-k]---+------/   /    |   |
               |     +----     |   |
               |              +\   /+
               |              | \_/ |
             +---+            |  OR |
              \ /Buffer        \   /
               +                ---
               |                 |
             +---+             +---+
             |2-k|             | 1 |    <- These signals feed 
             +---+             +---+       into your AND gates.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top