κάποια έξυπνη bitmanipulations για VHDL παρακαλώ.

C

completelyuseless

Guest
Hi all,

Έχω να συνθέσουν κάποια VHDL κώδικα που θα χειρίζεται bits σε ένα συγκεκριμένο τρόπο.

σε ένα διάνυσμα του πω 'n' bits, πρέπει να βρει τη θέση της πιο σημαντικής «1» και στο φορέα του ιού και να αντιστραφεί το 0
του ότι είναι προς τα αριστερά του.

π.χ.:
Ας πούμε ai έχουν ένα διανυσματικό ότι είναι 9 δυφία καιρό, και είναι αυθαίρετα πω 000110100

υπάρχουν 3 μηδενικά πριν από την 1 η πιο σημαντική στην obove φορέα, έτσι χρειάζονται ένα είδος μάσκας έξυπνο σύστημα που θα αντιστρέψουμε αυτές μηδενικά,
με αποτέλεσμα να είναι 111.110.100.
Ακόμη και αν η θέση του ότι η πιο σημαντική «1» αλλαγές, η μέθοδος πρέπει να είναι γενικό και το έργο για κάθε περίπτωση,
η (υπό τον όρο ότι το διανυσματικό μέγεθος δεν αλλάζει φυσικά)

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

ευχαριστώ εκ των προτέρων

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

 
Νομίζω ότι μπορείτε είτε να χρησιμοποιήσετε μια περίπτωση δήλωση ή ένα loop ..

 
Αυτό είναι το πώς θα το κάνουμε.

εισόδου και εξόδου των σημάτων είναι το ίδιο μήκος.

Κωδικός:διαδικασία (CLK)

μεταβλητή leading_zeros: boolean?

αρχίζω

αν rising_edge (CLK), τότε

για το input'high dowoto input'low βρόχο

leading_zeros: = αλήθεια?

εισόδου, εφόσον (α) ='0 'και στη συνέχεια leading_zeros

παραγωγής (α) <='1 '?

άλλος

παραγωγής (α) <= εισόδου (α)?

leading_zeros: = false?

τέλος, αν?

τέλος βρόχο?

τέλος, αν?

τέλος της διαδικασίας?

 

Welcome to EDABoard.com

Sponsor

Back
Top