Indholdsfortegnelse:

Integer_Matrix_Solver_UART_SERIAL_VHDL: 3 trin
Integer_Matrix_Solver_UART_SERIAL_VHDL: 3 trin

Video: Integer_Matrix_Solver_UART_SERIAL_VHDL: 3 trin

Video: Integer_Matrix_Solver_UART_SERIAL_VHDL: 3 trin
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 tutorial viser dig, hvordan du laver en 2 til 2 matrix solver ved at implementere UART Serial terminal modul samt et matrix solver modul. Brugeren vil kunne indtaste en 2 til 2 matrix, og derefter vil det implementerede design spytte løsningen ud til det lineære system.

For at bruge denne kode skal du bruge:

- Et Digilent Basys 3 FPGA -bord

- Computer med Xilinx Vivado -softwaren (Webpack Edition fungerer). Til dette modul brugte vi 2017.2 -versionen.

- Et mikro -USB -kabel (dataoverførsel)

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

- EE/CPE 133 Instruktør: Joseph Callenes

Kilder:

  • UART_TX, UART_RX fra:
  • Afvis fra:

Funktion til opdeling af to usignerede numre:

Trin 1: Trin 1: Sådan fungerer det

Trin 1: Sådan fungerer det
Trin 1: Sådan fungerer det
Trin 1: Sådan fungerer det
Trin 1: Sådan fungerer det

Indgange: Brugeren indlæser et lineært system i computerterminalen, og derefter konverterer et UART -modul dem til en matrix, som matrixopløsermodulet kan manipulere. UART -modulet grænseflader med brugeren og giver dem mulighed for at indtaste den relevante matrix samt guide dem til korrekt indtastning af data. Systemet har også en nulstilling/aktiveringsafbryder tilknyttet kontakten til venstre på Basys3 -kortet.

Outputs: Resultaterne fra matrixopløseren føres gennem UART -modulgrænsefladen og vises derefter på computerterminalen med løsningerne på skærmen. Matrixløseren udsender usignerede standard logiske vektorer til UART -modulet, som konverterer dem til mere brugervenlige output, som brugeren kan sætte pris på. Den nuværende matrixopløser er kun i stand til at have tal op til 15 indtastet, og outputresultatet skal være et rent heltal, eller matrixopløseren kan ikke sende den korrekte løsning.

Topniveau "seriel kontrol" -modul: Brugeren indsætter det ønskede lineære system i dette modul via UART_TX- og UART_RX -modulerne, og det konverterer input fra computerterminalen til en række standard logiske vektorer, der behandles af matrixopløsermodulet. Matrixopløsermodulet returnerer derefter en række standard logiske vektorer, der derefter vises på skærmen ved hjælp af den serielle UART -grænseflade. Overførsel og modtagelse af data via UART -modulerne opnås ved brug af en meget lang FSM i dette modul.

UART_TX -modul: Brugeren indlæser en 8 bit standard logisk vektor og et sendesignal for at sende data via USB -interfacet. Mens det sender data, er TX_Active -signalet højt. Efter at det har sendt dataene, pulserer TX_Done -signalet.

UART_RX -modul: Brugeren modtager 8 bits data ad gangen fra USB -grænsefladen. En puls fra RX_DV er en indikation på, at data er modtaget, og at RX_Byte -vektorlogikken kan læses.

Matrix Solver Module: Matrix solver modtager et imputeret array fra UART -modulet, der repræsenterer matrixen. Matrixopløseren konverterer derefter hvert tal i det lineære system til heltal for at gøre det lettere at betjene dem. Inde i matrixopløsermodulet er der flere delmoduler. Det første delmodul er inverse_matrix_1, som tager matricen og derefter giver inversen af den givne matrix. Det næste delmodul er multiplikatoren, der multiplicerer total_matrix med den inverse matrix ved hjælp af standardmatrixoperationer. Endelig kortlægger mastermodulet dem sammen for at udsende et enkelt svar.

Trin 2: Trin 2: Programmering af Basys 3 -kortet

Når du har erhvervet kildekoden nedenunder, skal du uploade den til basys 3 -kortet for at bruge grænsefladen.

reference.digilentinc.com/basys3/refmanual

Trin 3: Trin 3: Sådan bruges den

Brug en seriel grænseflade på 9600 baud for at kommunikere med Basys3 UART. Jeg brugte skærm på linux med følgende kommando:

skærm /dev /ttyUSB1 9600

For at gøre dette på linux, var jeg nødt til at tilføje min bruger til gruppen "dialout". På Windows burde spartel fungere, og på MacOSX burde det være en lignende proces som linux.

Ved at vende kontakten til venstre til positionen tændt starter matrixopløseren. Hvis den slås fra, nulstilles matrixopløseren.

Anbefalede: