Inhoudsopgave:

Integer_Matrix_Solver_UART_SERIAL_VHDL: 3 stappen
Integer_Matrix_Solver_UART_SERIAL_VHDL: 3 stappen

Video: Integer_Matrix_Solver_UART_SERIAL_VHDL: 3 stappen

Video: Integer_Matrix_Solver_UART_SERIAL_VHDL: 3 stappen
Video: Mark Geisbrecht "Eigenvalues, invariant and random integer matrices" 2024, November
Anonim
Integer_Matrix_Solver_UART_SERIAL_VHDL
Integer_Matrix_Solver_UART_SERIAL_VHDL

Deze instructieve tutorial laat je zien hoe je een 2 bij 2 matrixoplosser kunt maken door de UART seriële terminalmodule en een matrixoplossermodule te implementeren. De gebruiker kan een matrix van 2 bij 2 invoeren en vervolgens zal het geïmplementeerde ontwerp de oplossing uitspugen naar het lineaire systeem.

Om deze code te gebruiken, heb je nodig:

- Een Digilent Basys 3 FPGA-bord

- Computer met de Xilinx Vivado-software (Webpack-editie werkt). Voor deze module hebben we versie 2017.2 gebruikt.

- Een micro-USB-kabel (geschikt voor gegevensoverdracht)

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

- EE/CPE 133 Instructeur: Joseph Callenes

bronnen:

  • UART_TX, UART_RX van:
  • Debounce van:

Functie voor deling van twee niet-ondertekende nummers:

Stap 1: Stap 1: Hoe het werkt

Stap 1: Hoe het werkt
Stap 1: Hoe het werkt
Stap 1: Hoe het werkt
Stap 1: Hoe het werkt

Ingangen: de gebruiker voert een lineair systeem in de computerterminal in en vervolgens converteert een UART-module ze naar een array die de matrixoplossermodule kan manipuleren. De UART-module communiceert met de gebruiker en stelt hen in staat om de juiste matrix in te voeren en hen te begeleiden bij het correct invoeren van gegevens. Het systeem heeft ook een reset/enable-schakelaar die is toegewezen aan de meest linkse schakelaar van het Basys3-bord.

Uitgangen: de resultaten van de matrixoplosser worden door de UART-module-interface geleid en vervolgens weergegeven op de computerterminal met de oplossingen op het scherm. De matrixoplosser voert niet-ondertekende standaard logische vectoren uit naar de UART-module, die ze omzet in gebruiksvriendelijkere outputs die de gebruiker kan waarderen. De huidige matrixoplosser kan alleen getallen tot 15 invoeren en het uitvoerresultaat moet een schoon geheel getal zijn, anders kan het matrixoplosserprogramma niet de juiste oplossing uitvoeren.

"Serial Control"-module op het hoogste niveau: de gebruiker voert zijn gewenste lineaire systeem in deze module in via de UART_TX- en UART_RX-modules en converteert de ingangen van de computerterminal naar een reeks standaard logische vectoren die worden verwerkt door de matrixoplossermodule. De matrixoplossermodule retourneert vervolgens een reeks standaard logische vectoren die vervolgens op het scherm worden weergegeven door de UART seriële interface. Het verzenden en ontvangen van gegevens via de UART-modules wordt bereikt door het gebruik van een zeer lange FSM in deze module.

UART_TX-module: de gebruiker voert een 8-bits standaard logische vector en een verzendsignaal in om gegevens via de USB-interface te verzenden. Terwijl het gegevens verzendt, is het TX_Active-signaal hoog. Nadat het de gegevens heeft verzonden, pulseert het TX_Done-signaal.

UART_RX-module: de gebruiker ontvangt 8 bits aan gegevens tegelijk van de USB-interface. Een puls van RX_DV is een indicatie dat gegevens zijn ontvangen en dat de vectorlogica RX_Byte kan worden gelezen.

Matrix Solver Module: De matrix solver ontvangt een geïmputeerde array van de UART-module die de matrix vertegenwoordigt. De matrixoplosser converteert vervolgens elk getal in het lineaire systeem naar gehele getallen om het gemakkelijker te maken om ermee te werken. Binnen de matrixoplossermodule zijn er verschillende submodules. De eerste submodule is de inverse_matrix_1 die de matrix neemt en vervolgens de inverse van de gegeven matrix geeft. De volgende submodule is de vermenigvuldiger die de totale_matrix vermenigvuldigt met de inverse matrix met behulp van standaardmatrixbewerkingen. Ten slotte brengt de mastermodule ze samen om één enkel antwoord uit te voeren.

Stap 2: Stap 2: Programmeren van het Basys 3-bord

Zodra u de broncode van hieronder hebt verkregen, uploadt u deze naar het basys 3-bord om de interface te gebruiken.

reference.digilentinc.com/basys3/refmanual

Stap 3: Stap 3: Hoe het te gebruiken?

Gebruik een seriële interface op 9600 baud om te communiceren met de Basys3 UART. Ik gebruikte scherm op linux met het volgende commando:

scherm /dev/ttyUSB1 9600

Om dit op linux te doen, moest ik mijn gebruiker toevoegen aan de groep "dialout". Op Windows zou putty moeten werken, en op MacOSX zou het een soortgelijk proces moeten zijn als Linux.

Door de meest linkse schakelaar in de aan-positie te zetten, wordt de matrixoplosser gestart. Als u deze uitschakelt, wordt de matrixoplosser gereset.

Aanbevolen: