Πίνακας περιεχομένων:

Integer_Matrix_Solver_UART_SERIAL_VHDL: 3 βήματα
Integer_Matrix_Solver_UART_SERIAL_VHDL: 3 βήματα

Βίντεο: Integer_Matrix_Solver_UART_SERIAL_VHDL: 3 βήματα

Βίντεο: Integer_Matrix_Solver_UART_SERIAL_VHDL: 3 βήματα
Βίντεο: Mark Geisbrecht "Eigenvalues, invariant and random integer matrices" 2024, Νοέμβριος
Anonim
Integer_Matrix_Solver_UART_SERIAL_VHDL
Integer_Matrix_Solver_UART_SERIAL_VHDL

Αυτό το διδακτικό σεμινάριο σάς δείχνει πώς να φτιάξετε ένα επίλυμα μήτρας 2 με 2 υλοποιώντας τη μονάδα τερματικού UART Serial καθώς και μια ενότητα επίλυσης μήτρας. Ο χρήστης θα μπορεί να εισάγει μια μήτρα 2 επί 2 και στη συνέχεια ο εφαρμοσμένος σχεδιασμός θα φτύσει τη λύση στο γραμμικό σύστημα.

Για να χρησιμοποιήσετε αυτόν τον κωδικό, θα χρειαστείτε:

- A Digilent Basys 3 FPGA Board

- Υπολογιστής με το λογισμικό Xilinx Vivado (η έκδοση Webpack θα λειτουργήσει). Για αυτήν την ενότητα, χρησιμοποιήσαμε την έκδοση 2017.2.

- Καλώδιο Micro USB (δυνατότητα μεταφοράς δεδομένων)

Συγγραφείς: Drew Miller, EE Major, Cal Poly SLO, Sukhdeep Singh, EE Major, Cal Poly SLO Class: Digital Design

- EE/CPE 133 Εκπαιδευτής: Joseph Callenes

Πηγές:

  • UART_TX, UART_RX από:
  • Κατάργηση από:

Λειτουργία για διαίρεση δύο ανυπόγραφων αριθμών:

Βήμα 1: Βήμα 1: Πώς λειτουργεί

Βήμα 1: Πώς λειτουργεί
Βήμα 1: Πώς λειτουργεί
Βήμα 1: Πώς λειτουργεί
Βήμα 1: Πώς λειτουργεί

Είσοδοι: Ο χρήστης εισάγει ένα γραμμικό σύστημα στο τερματικό του υπολογιστή και στη συνέχεια μια μονάδα UART τα μετατρέπει σε έναν πίνακα για να χειριστεί η μονάδα επίλυσης μήτρας. Η μονάδα UART διασυνδέεται με τον χρήστη και του επιτρέπει να εισάγει την κατάλληλη μήτρα καθώς και να τον καθοδηγήσει για την σωστή εισαγωγή δεδομένων. Το σύστημα διαθέτει επίσης έναν διακόπτη επαναφοράς/ενεργοποίησης που αντιστοιχεί στον αριστερότερο διακόπτη της πλακέτας Basys3.

Έξοδος: Τα αποτελέσματα από τον επιλυτή μήτρας μεταφέρονται μέσω της διεπαφής μονάδας UART και στη συνέχεια εμφανίζονται στο τερματικό του υπολογιστή με τις λύσεις που αναφέρονται στην οθόνη. Ο επιλυτής μήτρας εξάγει μη υπογεγραμμένα τυπικά λογικά διανύσματα στη μονάδα UART που τα μετατρέπει σε πιο φιλικές προς τον χρήστη εξόδους για να εκτιμήσει ο χρήστης. Ο τρέχων επιλυτής μήτρας μπορεί να έχει μόνο αριθμούς έως 15 και το αποτέλεσμα εξόδου πρέπει να είναι ένας καθαρός ακέραιος αριθμός ή το πρόγραμμα επίλυσης μήτρας δεν μπορεί να εξάγει τη σωστή λύση.

Ενότητα "Σειριακός έλεγχος" Ανώτατου επιπέδου: Ο χρήστης εισάγει το επιθυμητό γραμμικό σύστημα σε αυτό το δομοστοιχείο μέσω των μονάδων UART_TX και UART_RX και μετατρέπει τις εισόδους από το τερματικό του υπολογιστή σε μια σειρά τυπικών λογικών διανυσμάτων που επεξεργάζονται από την ενότητα επίλυσης μήτρας. Στη συνέχεια, η μονάδα επίλυσης μήτρας επιστρέφει μια σειρά τυπικών λογικών διανυσμάτων που στη συνέχεια εμφανίζονται στην οθόνη από τη σειριακή διεπαφή UART. Η μετάδοση και λήψη δεδομένων μέσω των μονάδων UART επιτυγχάνεται με τη χρήση ενός πολύ μακρού FSM σε αυτήν την ενότητα.

Ενότητα UART_TX: Ο χρήστης εισάγει ένα τυπικό λογικό διάνυσμα 8 bit και ένα σήμα αποστολής για να στείλει δεδομένα μέσω της διεπαφής USB. Ενώ στέλνει δεδομένα, το σήμα TX_Active είναι υψηλό. Αφού στείλει τα δεδομένα, το σήμα TX_Done χτυπά.

Ενότητα UART_RX: Ο χρήστης λαμβάνει 8 bit δεδομένων κάθε φορά από τη διεπαφή USB. Ο παλμός από το RX_DV είναι ένδειξη ότι έχουν ληφθεί δεδομένα και ότι μπορεί να διαβαστεί η λογική του διανύσματος RX_Byte.

Μονάδα επίλυσης μήτρας: Ο επιλυτής μήτρας λαμβάνει μια τεκμαρτή συστοιχία από τη μονάδα UART που αντιπροσωπεύει τη μήτρα. Ο επιλυτής μήτρας μετατρέπει κάθε αριθμό στο γραμμικό σύστημα σε ακέραιους αριθμούς για να διευκολύνει τη λειτουργία τους. Μέσα στη μονάδα επίλυσης μήτρας υπάρχουν πολλές υποενότητες. Η πρώτη υποενότητα είναι η inverse_matrix_1 η οποία παίρνει τον πίνακα και στη συνέχεια δίνει το αντίστροφο του δεδομένου πίνακα. Η επόμενη υποενότητα είναι ο πολλαπλασιαστής που πολλαπλασιάζει το total_matrix με τον αντίστροφο πίνακα χρησιμοποιώντας τυπικές πράξεις πίνακα. Τελικά, η κύρια ενότητα τα χαρτογραφεί μαζί για να βγάλει μία μόνο απάντηση.

Βήμα 2: Βήμα 2: Προγραμματισμός του πίνακα Basys 3

Μόλις αποκτήσετε τον πηγαίο κώδικα από κάτω, ανεβάστε τον στον πίνακα basys 3 για να χρησιμοποιήσετε τη διεπαφή.

reference.digilentinc.com/basys3/refmanual

Βήμα 3: Βήμα 3: Πώς να το χρησιμοποιήσετε

Χρησιμοποιήστε μια σειριακή διεπαφή στα 9600 baud για να επικοινωνήσετε με το Basys3 UART. Χρησιμοποίησα οθόνη στο linux με την ακόλουθη εντολή:

οθόνη /dev /ttyUSB1 9600

Για να το κάνω αυτό στο linux, έπρεπε να προσθέσω τον χρήστη μου στην ομάδα "dialout". Στα Windows, ο στόκος πρέπει να λειτουργεί και στο MacOSX, θα πρέπει να είναι παρόμοια διαδικασία με το linux.

Αναποδογυρίζοντας τον αριστερότερο διακόπτη στη θέση ενεργοποίησης ξεκινά ο επιλυτής μήτρας. Η απενεργοποίησή του επαναφέρει τον επιλυτή μήτρας.

Συνιστάται: