Gebruik van de juiste bibliotheken

N

neocool

Guest
Hi again,
In het onderstaande voorbeeld, indien mijn vectoren bevatten 2's compliment nummers, wat bibliotheken moet ik gebruiken om de code uit te voeren correct?Ik heb niet echt zorgen over de vraag of het gebruik van TO_SIGNED of CONV_SIGNED.Ik ben gewoon in de war wanneer welke bibliotheek (std_numeric, std_logic_artith, std_logic_unsigned, std_logic_signed) gebruiken?Code:signaal max: sd_logic_vector (9 Downto 0);

een signaal: sd_logic_vector (9 Downto 0);

signaal resultaat: sd_logic_vector (10 Downto 0);resultaat <= std_logic_vector (ondertekend (max.) - ondertekend (a));

 
Voor VHDL, afhankelijk van pakketten die u verklaart, kunt u typen gebruiken:
1.Voor unsigned:
- Numeric_std pakket: gebruik unsigned type
- Std_logic_arith pakket: gebruik unsigned type
- Std_logic_unsigned pakket: gebruik std_logic_vector
2.Voor ondertekend:
- Numeric_std pakket: gebruik ondertekend type
- Std_logic_arith pakket: gebruik ondertekend type
- Std_logic ondertekend pakket: gebruik std_logic_vector

 
kan ik gebruiken std_logic_arith (ondertekend en unsigned) en std_numeric (ondertekend) bibliotheken in dezelfde module of is het beter niet?

De reden waarom ik vraag die vraag is omdat ik hebben ondertekend optellen en aftrekken in een module, en ModelSim geeft een goede simulatie resultaat.Maar de uitvoering ervan op hardware, geeft een aantal fouten - het signaal wordt gesneden en verschoven omdat er een verwarring tussen ondertekend en unsigned types binnen.Daar gebruik ik std_numeric en 1164 alleen bibliotheken.De compiler kan ik ook daar std_logic_unsigned ook, maar dat maakt geen verschil op ofwel (software of hardware) simulaties.Bedankt

 
Ik vind dat je alleen moet std_logic_arith of Numeric_std pakket te gebruiken.
In uw module kan het probleem zijn:
- Wanneer u ondertekend nummers, overflow kan optreden.U moet voorspellen bereik van het resultaat van het aantal bits te kiezen, namelijk een 8-bits getal heeft een bereik van -128 tot 127.
- Als u niet wilt overflow, moet u 1-bit teken verlenging.Het resultaat is altijd correct.

 
bedankt

Dus, die bibliotheek niet kunnen toevoegen van SLV en integer te SLV (te krijgen voor tellers)?

In mijn code, gebruik ik als gevolg vector met lengte van een beetje extra om rekening te houden voor overloop.
Ie (10 Downto 0) <= ('0 '& (9 Downto 0)) - ('1' & (9 Downto 0));
uitgaande eerste getal is positief en de tweede is negatief SLV vertegenwoordigd in 2's compliment.
Ik weet niet waar het probleem vandaan komt als de simulatie met behulp van Modelsim geen fouten laat zien, terwijl de hardware-implementatie doet.Als ik met een andere functie die gebruik maakt van ve /-ve variabele resultaten voor berekeningen en zet ze in ondertekende SLV, zowel hardware-als modelsim testen zijn goed.

nogmaals bedankt

 

Welcome to EDABoard.com

Sponsor

Back
Top