VHDL podpisan dodatek ne donos pravilen rezultat

  • Thread starter design_engineer
  • Start date
D

design_engineer

Guest
Zdravo,

Imam kup VHDL kodo, da ne podpisan dodatek za nepodpisane številko in podpisan številko.Vendar pa je rezultat vedno vsota dveh veličin ne glede na znak drugega operanda (pričakujem razliko, če je znak 1)

Strjena lava vi prosim povejte mi, kaj jaz delam narobe.Tukaj je moja koda:

vključujejo IEEE.numeric_std.all;
op1: nepotpisani (7 downto 0);
OP2: podpisana (7 downto 0);
op3: podpisana (6 downto 0);
Rezultati: podpisana (41 downto 0);
Vsota: podpisana (7 downto 0);

rezultat <= mult3 mult2 T1 (rezultat negativen številko zastopana kot 2
je dopolnilo)

OP2 <= velikost (rezultat, "8"); - naj bi prinesla negativne številke (ignore navednice, sem se, da je za poraz Smeškov prikazujejo)
op3 <= shift_right (OP2, 1); - naj bi prinesla negativne številke
vsota <= op1 (7)
in (podpisana (op1 (6 downto 0)) op3);

Če op1 = 'h0C in op3 =' h62, dobim vsota = 'h6E, ki ni pravica op3, ker je negativna.

Hvala za vašo veliko pomoč.

 
Smartfon, pendrive lub laptop odmówił posłuszeństwa? Straciłeś ważne dane, kontakty, filmy, zdjęcia? Jest sposób, by łatwo je odzyskać. Wystarczy jeden sprytny gadżet lub szybka i profesjonalna pomoc.

Read more...
 
V Dodajanje in podporečja, ne obstaja razlika med podpisano in nepodpisanih delovanje.Ne razumem, kaj si pričakoval drugačen tukaj.
0x0c 0x62 = 0x6e je pravilna, če je bodisi tolmačenja 0x62 in 0x6e kot pozitivne ali negativne številke.
V prvem primeru: 12 98 = 110, v drugo 12 (-30) = -18

Če bi bilo treba podpisati podaljšan do 8-bitno številko, obstaja razlika, ampak ti concenated ničelni bit na levi strani.

Prvi primeri niso razumljivi, ker manjka opredelitev za prvo linijo.

 
FVM, hvala za odgovor.Da.Strinjam se s tabo, da je rezultat v obeh pravilno podpisan / nepotpisani situacijah.

Mislim, moj zmede, ki izhaja iz dejstva, da sem poskušal prenesti na rezultat na drugi modul, kakor sledi:

output_1: ven std_logic_vector (7 downto 0);
output_1 <= std_logic_vector (vsota);

Toda v drugem modulu, se podatki obravnavajo kot vsi pozitivni (pozitivna 110), ker ne morem prenesti na podpis podatkov prek pristanišč.

Kako se lahko ukvarjajo s to situacijo?Lahko so podpisale pristanišči v VHDL s numeric_std knjižnico?

Hvala.

 
Lahko so podpisale pristaniščih.Ampak v vašem primeru je MSB explicitely se nastavi na ničlo.Se morate prijaviti razširiti rezultat dobite negativnega 8 bitni vrednosti.

Še enkrat, ne podpiše informacije je opravil ali zavrne z uporabo ene ali druge vrste podatkov.Znak je kodirana v bitnega toka,
morateoskrbe, da se pravilno bitni vektor se pri razvrščanju podatkov, sestavljenih iz različnih bitno širino.

Veliko prodajalca IP uporabljate std_logic_vector prenesti vse podpisane in nepodpisane podatkov.To je samo vprašanje, kako je Interprete bitni vektorji.

 
FVM, še enkrat hvala za vaš odgovor.I odstranjeni 0 Ulančavanje s kodo in poskušal prenesti na podpisanih podatkov pa je trajalo v drugo vprašanje.

Ko sem poskusil opredeliti niz podpisan številke, dobim napako:

Vrsta matrix_2_5 je array (1 downto 0) od podpisanega (4 downto 0);
output_1: ven matrix_2_5;

output_1 (0) <= velikost (vsota, 5);

Simulator se ne more dodeliti podpisan vsota za output_1 čeprav sta oba podpisana.Dobim napako pravim "Expecting izraz tipa PODPIS 87".
Ali VHDL 87 ne podpirajo podpisan nizi?Kako prenesti podatke v tem primeru?Ali moram imeti invidual podatkov signali namesto array?

Hvala.

 

Welcome to EDABoard.com

Sponsor

Back
Top