Inhaltsverzeichnis:

Integer_Matrix_Solver_UART_SERIAL_VHDL - Gunook
Integer_Matrix_Solver_UART_SERIAL_VHDL - Gunook

Video: Integer_Matrix_Solver_UART_SERIAL_VHDL - Gunook

Video: Integer_Matrix_Solver_UART_SERIAL_VHDL - Gunook
Video: Как спрятать данные в ячейках Excel? 2024, Oktober
Anonim
Integer_Matrix_Solver_UART_SERIAL_VHDL
Integer_Matrix_Solver_UART_SERIAL_VHDL

Dieses anweisbare Tutorial zeigt Ihnen, wie Sie einen 2 x 2-Matrix-Solver erstellen, indem Sie das serielle UART-Terminalmodul sowie ein Matrix-Solver-Modul implementieren. Der Benutzer kann eine 2 x 2 Matrix eingeben und dann wird das implementierte Design die Lösung für das lineare System ausspucken.

Um diesen Code zu verwenden, benötigen Sie:

- Ein Digilent Basys 3 FPGA-Board

- Computer mit der Xilinx Vivado Software (Webpack Edition funktioniert). Für dieses Modul haben wir die Version 2017.2 verwendet.

- Ein Micro-USB-Kabel (Datenübertragungsfähig)

Autoren: Drew Miller, EE Major, Cal Poly SLO, Sukhdeep Singh, EE Major, Cal Poly SLO Klasse: Digital Design

- EE/CPE 133 Ausbilder: Joseph Callenes

Quellen:

  • UART_TX, UART_RX von:
  • Debounce von:

Funktion zur Division von zwei vorzeichenlosen Zahlen:

Schritt 1: Schritt 1: Wie es funktioniert

Schritt 1: Wie es funktioniert
Schritt 1: Wie es funktioniert
Schritt 1: Wie es funktioniert
Schritt 1: Wie es funktioniert

Eingaben: Der Benutzer gibt ein lineares System in das Computerterminal ein und dann wandelt ein UART-Modul sie in ein Array um, damit das Matrix-Solver-Modul manipuliert werden kann. Das UART-Modul verbindet sich mit dem Benutzer und ermöglicht ihm die Eingabe der entsprechenden Matrix sowie die Anleitung zur korrekten Eingabe von Daten. Das System verfügt auch über einen Reset/Enable-Schalter, der dem am weitesten links liegenden Schalter des Basys3-Boards zugeordnet ist.

Ausgaben: Die Ergebnisse des Matrixlösers werden durch die UART-Modulschnittstelle geleitet und dann auf dem Computerterminal mit den auf dem Bildschirm aufgelisteten Lösungen angezeigt. Der Matrix-Solver gibt vorzeichenlose Standard-Logikvektoren an das UART-Modul aus, das sie in benutzerfreundlichere Ausgaben umwandelt, die der Benutzer schätzen kann. Der aktuelle Matrix-Solver kann nur Zahlen bis 15 eingeben und das Ausgabeergebnis muss eine saubere ganze Zahl sein, oder das Matrix-Solver-Programm kann nicht die richtige Lösung ausgeben.

Modul "Serielle Steuerung" der obersten Ebene: Der Benutzer gibt sein gewünschtes lineares System in dieses Modul über die Module UART_TX und UART_RX ein und wandelt die Eingaben vom Computerterminal in ein Array von Standard-Logikvektoren um, die vom Matrix-Solver-Modul verarbeitet werden. Das Matrix-Solver-Modul gibt dann ein Array von Standard-Logikvektoren zurück, die dann von der seriellen UART-Schnittstelle auf dem Bildschirm angezeigt werden. Das Senden und Empfangen von Daten durch die UART-Module wird durch die Verwendung eines sehr langen FSM in diesem Modul erreicht.

UART_TX-Modul: Der Anwender gibt einen 8-Bit-Standard-Logikvektor und ein Sendesignal ein, um Daten über die USB-Schnittstelle zu senden. Während es Daten sendet, ist das Signal TX_Active hoch. Nach dem Senden der Daten pulsiert das Signal TX_Done.

UART_RX-Modul: Der Benutzer empfängt 8 Bit Daten gleichzeitig von der USB-Schnittstelle. Ein Impuls von RX_DV ist ein Hinweis darauf, dass Daten empfangen wurden und dass die RX_Byte-Vektorlogik gelesen werden kann.

Matrix-Solver-Modul: Der Matrix-Solver empfängt ein imputiertes Array vom UART-Modul, das die Matrix darstellt. Der Matrixlöser wandelt dann jede Zahl im linearen System in ganze Zahlen um, um die Bearbeitung zu erleichtern. Innerhalb des Matrix-Solver-Moduls gibt es mehrere Untermodule. Das erste Untermodul ist die inverse_matrix_1, die die Matrix nimmt und dann die Inverse der gegebenen Matrix liefert. Das nächste Untermodul ist der Multiplikator, der die total_matrix mit der inversen Matrix unter Verwendung von Standard-Matrixoperationen multipliziert. Schließlich ordnet das Master-Modul sie zusammen, um eine einzige Antwort auszugeben.

Schritt 2: Schritt 2: Programmierung des Basys 3-Boards

Nachdem Sie den Quellcode von unten erworben haben, laden Sie ihn auf das basys 3-Board hoch, um die Schnittstelle zu verwenden.

reference.digilentinc.com/basys3/refmanual

Schritt 3: Schritt 3: Wie man es verwendet

Verwenden Sie eine serielle Schnittstelle mit 9600 Baud, um mit dem Basys3 UART zu kommunizieren. Ich habe screen unter Linux mit dem folgenden Befehl verwendet:

Bildschirm /dev/ttyUSB1 9600

Um dies unter Linux zu tun, musste ich meinen Benutzer der Gruppe "dialout" hinzufügen. Unter Windows sollte Putty funktionieren und unter MacOSX sollte es ein ähnlicher Prozess wie unter Linux sein.

Wenn Sie den Schalter ganz links in die Ein-Position umlegen, wird der Matrix-Solver gestartet. Durch Ausschalten wird der Matrix-Solver zurückgesetzt.