Innholdsfortegnelse:

Integer_Matrix_Solver_UART_SERIAL_VHDL: 3 trinn
Integer_Matrix_Solver_UART_SERIAL_VHDL: 3 trinn

Video: Integer_Matrix_Solver_UART_SERIAL_VHDL: 3 trinn

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

Denne instruktive opplæringen viser deg hvordan du lager en 2 til 2 matriseløser ved å implementere UART Serial terminal modul samt en matrise løsningsmodul. Brukeren vil kunne angi en 2 x 2 matrise, og deretter vil den implementerte designen spytte løsningen til det lineære systemet.

For å bruke denne koden trenger du:

- Et Digilent Basys 3 FPGA -brett

- Datamaskin med Xilinx Vivado -programvaren (Webpack Edition fungerer). For denne modulen brukte vi 2017.2 -versjonen.

- En mikro -USB -kabel (dataoverføring)

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

- EE/CPE 133 Instruktør: Joseph Callenes

Kilder:

  • UART_TX, UART_RX fra:
  • Avvis fra:

Funksjon for deling av to usignerte tall:

Trinn 1: Trinn 1: Slik fungerer det

Trinn 1: Slik fungerer det
Trinn 1: Slik fungerer det
Trinn 1: Slik fungerer det
Trinn 1: Slik fungerer det

Innganger: Brukeren legger inn et lineært system i dataterminalen, og deretter konverterer en UART -modul dem til en matrise som matriseløsningsmodulen kan manipulere. UART -modulen grensesnitt med brukeren og lar dem angi den riktige matrisen, samt veilede dem til riktig inngang av data. Systemet har også en reset/aktiveringsbryter tilordnet til bryteren til venstre på Basys3 -kortet.

Utganger: Resultatene fra matriseoppløseren sendes gjennom UART -modulgrensesnittet og vises deretter på dataterminalen med løsningene oppført på skjermen. Matriseløseren sender ut usignerte standard logiske vektorer til UART -modulen som konverterer dem til mer brukervennlige utganger som brukeren kan sette pris på. Den nåværende matriseoppløseren kan bare ha tall på opptil 15 angitt, og utdataet må være et rent heltall, eller matriseløserprogrammet kan ikke sende den riktige løsningen.

"Seriell kontroll" -modul på toppnivå: Brukeren legger inn det ønskede lineære systemet i denne modulen gjennom modulene UART_TX og UART_RX, og den konverterer inngangene fra dataterminalen til en rekke standard logiske vektorer som behandles av matriseløsningsmodulen. Matriseløser -modulen returnerer deretter en rekke standard logiske vektorer som deretter vises på skjermen av det serielle UART -grensesnittet. Overføring og mottak av data gjennom UART -modulene oppnås ved bruk av en veldig lang FSM i denne modulen.

UART_TX -modul: Brukeren legger inn en 8 -bits standard logisk vektor og et sendesignal for å sende data via USB -grensesnittet. Mens det sender data, er TX_Active -signalet høyt. Etter at den har sendt dataene, pulserer TX_Done -signalet.

UART_RX -modul: Brukeren mottar 8 biter data om gangen fra USB -grensesnittet. En puls fra RX_DV er en indikasjon på at data er mottatt og at RX_Byte -vektorlogikken kan leses.

Matrix Solver Module: Matriseløseren mottar en beregnet matrise fra UART -modulen som representerer matrisen. Matriseløseren konverterer deretter hvert tall i det lineære systemet til heltall for å gjøre det lettere å operere dem. Inne i matriseløsningsmodulen er det flere delmoduler. Den første delmodulen er inverse_matrix_1 som tar matrisen og deretter gir inversen av den angitte matrisen. Den neste delmodulen er multiplikatoren som multipliserer total_matrisen med den inverse matrisen ved hjelp av standardmatriseoperasjoner. Til slutt kartlegger hovedmodulen dem sammen for å levere ett enkelt svar.

Trinn 2: Trinn 2: Programmering av Basys 3 -kortet

Når du har fått kildekoden nedenfra, laster du den opp til basys 3 -kortet for å bruke grensesnittet.

reference.digilentinc.com/basys3/refmanual

Trinn 3: Trinn 3: Slik bruker du det

Bruk et serielt grensesnitt på 9600 baud for å kommunisere med Basys3 UART. Jeg brukte skjermen på linux med følgende kommando:

skjerm /dev /ttyUSB1 9600

For å gjøre dette på linux, måtte jeg legge til brukeren min i gruppen "dialout". På Windows bør kitt fungere, og på MacOSX bør det være en lignende prosess som linux.

Når vipper bryteren til venstre til på -posisjon starter matriseløseren. Hvis du slår den av, tilbakestilles matriseløseren.

Anbefalt: