A,B: in std_logic_vector(3 downto 0)
C: out std_logic_vector(3 downto 0)
Consideriamo la rappresentazione relativa dei numeri binari con complemento a 2:
0111=7
0110=6
0101=5
0100=4
0011=3
0010=2
0001=1
0000=0
1111=-1
1110=-2
1101=-3
1100=-4
1011=-5
1010=-6
1001=-7
1000=-8
Supponiamo di eseguire l'operazione A*B con A=0100=4 e B=1111=-1 otterrei come risultato C=1100=-4 e fin qui nessun problema. Adesso supponiamo sempre il prodotto con A=0111=7 e B=0110=6, il risultato che avrò in uscita sarà C=1010=-6, risultato errato poiché il risultato corretto sarebbe uguale a C'=101010 ma ovviamente essendo la risoluzione di 4 bit, mi perdo gli ultimi due bit e vado in overflow, infatti avrei bisogno di più bit per eseguire correttamente l'operazione, ma dichiarando l'uscita come C: out std_logic_vector(7 downto 0) il sintetizzatore mi dà un messaggio di warning con scritto <C> has a width of 8 bits but assigned expression is 4-bit wide. Anche se il prodotto può dare come risultato fino a 8 bit. Il problema l'ho risolto introducendo le variabili e assegnando il prodotto ad una variabile, andando poi a prendere i 4 bit più significativi e meno significativi assegnati alle due variabili su due uscite diverse per avere quindi il risultato completo. Poi ho notato che eseguendo un prodotto che mi dà come risultato 1000=-8 il risultato che ottengo utilizzando quindi le due variabili è1111 1000 invece di 0000 1000, anche se in questo caso non avrei overflow, come mai avviene ciò? Inoltre la somma non può essere salvata come il prodotto utilizzando le variabili poiché mi appare un messaggio di errore quindi deduco che ogni volta che eseguo la somma mi perdo sempre un bit? Cioè ad esempio se faccio 0111+0110=6+7=13 ottengo come risultato a 4 bit
1101=-3, mentre il risultato corretto dovrebbe essere 01101=13. Non so se qualcuno all'interno del forum ne capisce di VHDL però se qualcuno riesce ad aiutarmi lo ringrazio in anticipo!

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)
