Pagina 1 di 2

Previsione di un risultato di un moltiplicatore a 8 bit.

MessaggioInviato: 16 nov 2018, 14:11
da blaise92
Buongiorno volevo porre un quesito. Esiste un modo hardware per poter prevedere se una moltiplicaIoni tra 2 vettori di 8 bit, uno rappresentante un numero positivo e l’altro negativo, sia minore di una certa soglia fissata? Per ingressi entrambi positivi o negativi avevo pensato di sommare i leading zero o i leading uno rispettivamente. Ma per ingressi di segno opposto come si potrebbe fare?

Re: Previsione di un risultato di un moltiplicatore a 8 bit.

MessaggioInviato: 17 nov 2018, 0:56
da dadduni
Il circuito é combinatorio, implementa la tabella di verità e l hardware viene di conseguenza. Se sono 8 bit vuol dire che sono 7bit+segno e questo riduce la complessità perche sei sicuro il risultato è negativo e lavori solo sui moduli.
Davide

Re: Previsione di un risultato di un moltiplicatore a 8 bit.

MessaggioInviato: 17 nov 2018, 20:09
da blaise92
Grazie per la risposta Davide. Ma mi potresti spiegare un po' meglio?
Supponendo di escludere il bit di segno come posso impostare la tabella di veritá coi restanti 7 bit?

Re: Previsione di un risultato di un moltiplicatore a 8 bit.

MessaggioInviato: 17 nov 2018, 20:37
da MarcoD
Io purtroppo non so farlo :oops: o forse riuscirei se mi impegnassi :-)
Perché non provi prima a moltiplicare in modo combinatorio due numeri interi positivi di 4 bit .
Una volta risolto, lo estendi ;-) :idea:
Una volta lo avrei forse risolto con una EPROM da 256 byte .

Re: Previsione di un risultato di un moltiplicatore a 8 bit.

MessaggioInviato: 18 nov 2018, 13:56
da dadduni
Come lo vuoi realizzare? Su una FPGA o su un circuito a componenti digitali discreti (chip con and or not ecc...) ? spero che sia la prima scelta: farlo discreto potrebbe essere un... "discreto" casino :mrgreen: :lol:
L'idea dietro la tabella di verità di un circuito combinatorio è quella di stabilire apriori su carta ad ogni possibile ingresso che uscita corrisponde.
\begin{tabular}{|l|l|l|}
\hline
A & B & A and B\\
\hline
0 & 0 & 0\\
\hline
0 & 1 & 0\\
\hline
1 & 0 & 0\\
\hline
1 & 1 & 1\\
\hline
\end{tabular}

questa è la semplice tabella di verità di una and. E' un po' come i requisiti di un circuito: ti dice solo cosa devi fare, non come lo devi fare. Hai una funzione che ad ogni ingresso associa una uscita ma non sai come lo fa. Ci sono più modi per passare da una tabella di verità ad una implementazione circuitale.

Nel tuo caso devi prendere tutti i possibili numeri in ingresso, moltiplicarli a mano e vedere se sono sopra o sotto una certa soglia.
Viene un bell'elenco ed è teoricamente implementabile. D'altra parte due ingressi di 7 bit ciascuno fanno una tabella di verità con 2^{14} = 16384 voci: questo metodo non funziona molto bene.

Un metodo hardware può essere quello di fare effettivamente la moltiplicazione e poi valutare il risultato.
Un altro metodo, magari leggermente più furbo è osservare che la moltiplicazione tra numeri interi e positivi restituisce sicuramente un numero maggiore di entrambi. Stiamo lavorando solo con i moduli perché hai detto che sono un numero positivo e uno negativo quindi abbiamo la certezza che il risultato sia negativo e non resta che valutarne il modulo. Se ad esempio la soglia è 3 basta che un solo ingresso sia un numero maggiore di 3 per essere sicuri che l'uscita della moltiplicazione sia sopra soglia. In questo modo per tanti ingressi puoi non effettuare proprio la moltiplicazione e dare direttamente il risultato molto rapidamente. Per tutte le combinazioni (a questo punto di numero ridotto) che non hanno ingressi maggiori della soglia si ritorna o a fare la moltiplicazione e poi una comparazione, oppure ad un circuito combinatorio che ad ogni ingresso associa il risultato corretto in uscita.

Sarà che sono nato e ho studiato nell'epoca delle FPGA, ma fare un circuito del genere con singole porte logiche per me è inimmaginabile.
Davide

Re: Previsione di un risultato di un moltiplicatore a 8 bit.

MessaggioInviato: 18 nov 2018, 16:15
da blaise92
Si l'idea é quella di implementarlo in VHDL e quindi in FPGA. Ti ringrazio per la dritta. Sei stato molto chiaro.
BLAISE

Re: Previsione di un risultato di un moltiplicatore a 8 bit.

MessaggioInviato: 18 nov 2018, 16:18
da dadduni
se non ti interessa ottimizzare la velocità e l'area, puoi sempre cavartela facendo tutto il calcolo: moltiplicazione tra due numeri a 7 bit, comparazione. Occupi più area e sarai più lento ma in VHDL sono 4 righe e se in libreria hai qualche moltiplicatore ottimizzato per bene hai un risultato sicuramente funzionante.

Re: Previsione di un risultato di un moltiplicatore a 8 bit.

MessaggioInviato: 18 nov 2018, 16:55
da blaise92
dovrei ottimizzare potenza e velocità. Sto facendo un meccanismo per prevedere le moltiplicazioni inutili in modo da evitare di calcolarle. Siccome devo implementare un MAC che implementi tante somme di prodotti, io vorrei che le moltiplicazioni dove un ingresso è nullo oppure tra due valori che producano un risultato molto piccolo le posso evitare in modo da rendere tutto più low power.

Re: Previsione di un risultato di un moltiplicatore a 8 bit.

MessaggioInviato: 18 nov 2018, 16:58
da blaise92
Avevo pensato alla somma dei leading zero per ingressi entrambi positivi oppure a questo punto, considerare l’ingresso negativo nel suo modulo e lavorare sempre con i leading zero. Così le soglie sono solo potenze di 2, ma posso risparmiare tanto.

Re: Previsione di un risultato di un moltiplicatore a 8 bit.

MessaggioInviato: 18 nov 2018, 17:05
da MarcoD
Cosa intendi per MAC ?

Media Access Control – sottostrato del livello datalink secondo il modello ISO/OSI
Indirizzo MAC – codice assegnato in modo univoco ad ogni scheda di rete
Apple Macintosh – serie di computer di Apple Inc.
macOS – sistema operativo di Apple
MAC flooding – tecnica di attacco ad uno switch per bloccarne il corretto funzionamento
Project MAC – famoso principalmente per MACLISP, una vecchia versione del linguaggio di
programmazione LISP
Mandatory Access Control – metodo d'accesso alle informazioni basato su regole
Message authentication code – piccolo blocco di dati utilizzato per autenticare un messaggio digitale

:-)