VHDL υπογράφηκε Επιπλέον δεν παράγει σωστά αποτελέσματα

D

design_engineer

Guest
Γειά,

Έχω ένα κομμάτι VHDL κώδικα που υπέγραψε η προσθήκη ενός unsigned αριθμό και υπογεγραμμένη αριθμό.Ωστόσο, το αποτέλεσμα είναι πάντα το ποσό των δύο μεγεθών, ανεξάρτητα από το πρόσημο της δεύτερης τελεστού (περιμένω μια διαφορά όταν υπογράψουν είναι 1)

Μπορείτε σας παρακαλώ να μου πει τι κάνω λάθος.Εδώ είναι το κωδικό:

περιλαμβάνουν IEEE.numeric_std.all?
OP1: unsigned (7 downto 0)?
OP2: υπογραφεί (7 downto 0)?
op3: υπογραφεί (6 downto 0)?
αποτέλεσμα: υπογραφεί (41 downto 0)?
άθροισμα: υπογραφεί (7 downto 0)?

αποτέλεσμα <= mult3 mult2 Τ1? (αποτέλεσμα είναι αρνητικός αριθμός εκπροσωπήθηκαν ως πλήρωμα 2)

OP2 <= μέγεθος (ως αποτέλεσμα, "8")? - θα πρέπει να έχουν ως αποτέλεσμα μια σειρά αρνητικών (αγνοήσει εισαγωγικά, θα έπρεπε να τεθεί ότι υπάρχει για να νικήσουμε την smiley εμφανίζονται)
op3 <= shift_right (OP2, 1)? - θα πρέπει να έχουν ως αποτέλεσμα μια σειρά αρνητικών
άθροισμα <= OP1 (7) & (υπογραφή (OP1 (6 downto 0)) op3)?

Εάν OP1 = 'h0C και op3 =' h62, έχω ποσό = 'h6E που δεν είναι σωστό γιατί op3 είναι αρνητική.

Ευχαριστώ πολύ για τη βοήθειά σας.

 
Στην προσθήκη και επιμέρους, δεν υπάρχει διαφορά μεταξύ υπεγράφη και unsigned λειτουργία.Δεν καταλαβαίνω, τι αναμένετε διαφορετική εδώ.
0x0c 0x62 = 0x6e είναι σωστή, είτε εάν ερμηνεία 0x62 και 0x6e ως θετικό ή αρνητικό αριθμό.
Στην πρώτη περίπτωση: 12 98 = 110, στο δεύτερο 12 (-30) = -18

Εάν το αποτέλεσμα θα πρέπει να επεκταθεί για να υπογράψουν ένα 8-bit αριθμό, υπάρχει μια διαφορά, αλλά με μηδενικό concenated λίγο προς τα αριστερά.

Τα πρώτα δείγματα δεν είναι κατανοητό γιατί του λείπει ορισμούς για την πρώτη γραμμή.

 
FvM, ευχαριστώ για την απάντηση.Ναι.Συμφωνώ μαζί σας ότι το αποτέλεσμα είναι σωστή και στις δύο υπεγράφη / unsigned καταστάσεις.

Μάλλον μου σύγχυση προκύπτει από το γεγονός ότι είμαι προσπαθώντας να περάσει το αποτέλεσμα στην ενότητα στην άλλη ως ακολούθως:

output_1: out std_logic_vector (7 downto 0)?
output_1 <= std_logic_vector (σύνολο)?

Αλλά στο άλλο τμήμα, τα δεδομένα αντιμετωπίζονται όπως όλα τα θετικά (θετικά 110), επειδή δεν μπορώ να μεταφέρω το σήμα πληροφοριών μέσω των λιμένων.

Πώς μπορώ να αντιμετωπίσουμε αυτή την κατάσταση;Μπορώ να έχω υπογράψει λιμένων σε VHDL με numeric_std βιβλιοθήκη;

Ευχαριστώ.

 
Μπορείτε να έχουν υπογράψει λιμένες.Όμως, στο δικό σας παράδειγμα, το MSB είναι ρητά μηδενίζεται.Θα πρέπει να υπογράψει την επέκταση έχει ως αποτέλεσμα να διαμορφωθεί μια αρνητική αξία 8 bit.

Για άλλη μια φορά, δεν υπάρχουν ενδείξεις ή πληροφορίες διαβιβάζονται απέρριψε χρησιμοποιώντας ένα ή τον άλλο τύπο δεδομένων.Το σήμα κωδικοποιείται στο δυφιορρευματική, πρέπει να
ότι η ορθή φροντίδα bit διάνυσμα είναι συναρμολογημένα κατά την αντιστοίχιση δεδομένων των διαφορετικών bit πλάτος.

Πολλοί πωλητής ΕΠ χρησιμοποιείτε std_logic_vector να περάσει όλα τα υπογεγραμμένα και ανυπόγραφα δεδομένων.Είναι μόνο θέμα για το πώς να το Interprète λίγο φορέων.

 
FvM, ευχαριστώ και πάλι για την απάντησή σας.Θα αφαιρείται το 0 αληλουχία από τον κωδικό και προσπάθησε να περάσει για υπογραφεί στοιχεία αλλά έτρεξε σε ένα διαφορετικό θέμα.

Όταν προσπαθώ να καθορίσει μια σειρά από αριθμούς υπογραφεί, να πάρω ένα λάθος:

τύπος είναι matrix_2_5 array (1 downto 0) της υπογράφηκε (4 downto 0)?
output_1: matrix_2_5 out?

output_1 (0) <= το μέγεθος (άθροισμα, 5)?

Το υποκατάστατο δεν είναι σε θέση να αναθέτει το ποσό που υπεγράφη στο output_1 μολονότι και οι δύο έχουν υπογραφεί.Έχω ένα λάθος λέγοντας "αναμένει μια έκφραση του τύπου ΥΠΕΓΡΑΦΗΣΑΝ 87".
Μήπως δεν υποστηρίζει VHDL 87 υπογράφηκε arrays;Πώς μπορώ να μεταφέρω τα δεδομένα σε αυτή την περίπτωση;Πρέπει να έχω invidual στοιχεία των σημάτων αντί array;

Ευχαριστώ.

 

Welcome to EDABoard.com

Sponsor

Back
Top