Table des matières:

Integer_Matrix_Solver_UART_SERIAL_VHDL : 3 étapes
Integer_Matrix_Solver_UART_SERIAL_VHDL : 3 étapes

Vidéo: Integer_Matrix_Solver_UART_SERIAL_VHDL : 3 étapes

Vidéo: Integer_Matrix_Solver_UART_SERIAL_VHDL : 3 étapes
Vidéo: Mark Geisbrecht "Eigenvalues, invariant and random integer matrices" 2024, Octobre
Anonim
Integer_Matrix_Solver_UART_SERIAL_VHDL
Integer_Matrix_Solver_UART_SERIAL_VHDL

Ce didacticiel instructable vous montre comment créer un solveur matriciel 2 par 2 en implémentant le module terminal série UART ainsi qu'un module solveur matriciel. L'utilisateur pourra entrer une matrice 2 par 2, puis la conception mise en œuvre crachera la solution au système linéaire.

Pour utiliser ce code, vous aurez besoin de:

- Une carte FPGA Digilent Basys 3

- Ordinateur avec le logiciel Xilinx Vivado (Webpack Edition fonctionnera). Pour ce module, nous avons utilisé la version 2017.2.

- Un cordon micro USB (capable de transférer des données)

Auteurs: Drew Miller, EE Major, Cal Poly SLO, Sukhdeep Singh, EE Major, Cal Poly SLO Classe: Digital Design

- Instructeur EE/CPE 133: Joseph Callenes

Sources:

  • UART_TX, UART_RX de:
  • Rebondir de:

Fonction de division de deux nombres non signés:

Étape 1: Étape 1: Comment ça marche

Étape 1: Comment ça marche
Étape 1: Comment ça marche
Étape 1: Comment ça marche
Étape 1: Comment ça marche

Entrées: l'utilisateur entre un système linéaire dans le terminal de l'ordinateur, puis un module UART les convertit en un tableau que le module de résolution matricielle doit manipuler. Le module UART s'interface avec l'utilisateur et lui permet de saisir la matrice appropriée ainsi que de le guider pour saisir correctement les données. Le système dispose également d'un commutateur de réinitialisation/activation mappé sur le commutateur le plus à gauche de la carte Basys3.

Sorties: les résultats du solveur matriciel sont transmis via l'interface du module UART, puis affichés sur le terminal informatique avec les solutions répertoriées à l'écran. Le solveur matriciel génère des vecteurs logiques standard non signés vers le module UART qui les convertit en sorties plus conviviales que l'utilisateur peut apprécier. Le solveur matriciel actuel ne peut avoir que des nombres jusqu'à 15 entrés et le résultat de sortie doit être un entier propre ou le programme de solveur matriciel est incapable de sortir la solution correcte.

Module "Serial Control" de niveau supérieur: l'utilisateur entre le système linéaire souhaité dans ce module via les modules UART_TX et UART_RX et convertit les entrées du terminal informatique en un tableau de vecteurs logiques standard qui sont traités par le module de résolution matricielle. Le module de résolution matricielle renvoie ensuite un tableau de vecteurs logiques standard qui sont ensuite affichés à l'écran par l'interface série UART. La transmission et la réception de données via les modules UART s'effectuent grâce à l'utilisation d'un FSM très long dans ce module.

Module UART_TX: L'utilisateur entre un vecteur logique standard de 8 bits et un signal d'envoi afin d'envoyer des données via l'interface USB. Pendant qu'il envoie des données, le signal TX_Active est haut. Après avoir envoyé les données, le signal TX_Done émet des impulsions.

Module UART_RX: L'utilisateur reçoit 8 bits de données à la fois de l'interface USB. Une impulsion de RX_DV est une indication que des données ont été reçues et que la logique vectorielle RX_Byte peut être lue.

Module solveur matriciel: le solveur matriciel reçoit un tableau imputé du module UART qui représente la matrice. Le solveur matriciel convertit ensuite chaque nombre du système linéaire en nombres entiers pour faciliter leur utilisation. À l'intérieur du module de résolution matricielle, il existe plusieurs sous-modules. Le premier sous-module est l'inverse_matrix_1 qui prend la matrice et donne ensuite l'inverse de la matrice donnée. Le sous-module suivant est le multiplicateur qui multiplie le total_matrix par la matrice inverse à l'aide d'opérations matricielles standard. Enfin, le module maître les mappe ensemble pour produire une seule réponse.

Étape 2: Étape 2: Programmation de la carte Basys 3

Une fois que vous avez acquis le code source ci-dessous, téléchargez-le sur la carte basys 3 pour utiliser l'interface.

reference.digilentinc.com/basys3/refmanual

Étape 3: Étape 3: Comment l'utiliser

Utilisez une interface série à 9600 bauds afin de communiquer avec l'UART Basys3. J'ai utilisé screen sur Linux avec la commande suivante:

écran /dev/ttyUSB1 9600

Pour ce faire sous Linux, j'ai dû ajouter mon utilisateur au groupe "dialout". Sous Windows, putty devrait fonctionner et sous MacOSX, le processus devrait être similaire à celui de Linux.

Basculer le commutateur le plus à gauche sur la position active démarre le solveur matriciel. Le désactiver réinitialise le solveur matriciel.

Conseillé: