Innehållsförteckning:

Integer_Matrix_Solver_UART_SERIAL_VHDL: 3 steg
Integer_Matrix_Solver_UART_SERIAL_VHDL: 3 steg

Video: Integer_Matrix_Solver_UART_SERIAL_VHDL: 3 steg

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

Denna instruerbara handledning visar dig hur du gör en 2 till 2 matrislösare genom att implementera UART -seriell terminalmodul samt en matrislösarmodul. Användaren kommer att kunna mata in en 2 x 2 matris och sedan kommer den implementerade designen att spotta ut lösningen till det linjära systemet.

För att använda den här koden behöver du:

- En Digilent Basys 3 FPGA Board

- Dator med Xilinx Vivado -programvaran (Webpack Edition fungerar). För den här modulen använde vi 2017.2 -versionen.

- En mikro -USB -kabel (dataöverföring)

Författare: Drew Miller, EE Major, Cal Poly SLO, Sukhdeep Singh, EE Major, Cal Poly SLO Class: Digital Design

- EE/CPE 133 Instruktör: Joseph Callenes

Källor:

  • UART_TX, UART_RX från:
  • Debounce från:

Funktion för uppdelning av två osignerade nummer:

Steg 1: Steg 1: Hur det fungerar

Steg 1: Hur det fungerar
Steg 1: Hur det fungerar
Steg 1: Hur det fungerar
Steg 1: Hur det fungerar

Ingångar: Användaren matar in ett linjärt system i datorterminalen och sedan omvandlar en UART -modul dem till en matris för matrislösarmodulen att manipulera. UART -modulen har gränssnitt med användaren och låter dem ange lämplig matris samt vägleda dem till korrekt inmatning av data. Systemet har också en omkopplare för återställning/aktivering som är mappad till basen till vänster på Basys3 -kortet.

Utgångar: Resultaten från matrislösaren skickas genom UART -modulgränssnittet och visas sedan på datorterminalen med lösningarna listade på skärmen. Matrislösaren matar ut osignerade standard logiska vektorer till UART -modulen som omvandlar dem till mer användarvänliga utgångar för användaren att uppskatta. Den nuvarande matrislösaren kan bara ange siffror upp till 15 och utmatningsresultatet måste vara ett rent heltal eller så kan matrislösarprogrammet inte mata ut rätt lösning.

Toppnivå "Seriell kontroll" -modul: Användaren matar in sitt önskade linjära system i denna modul via UART_TX- och UART_RX -modulerna och det konverterar ingångarna från datorterminalen till en rad standard logiska vektorer som behandlas av matrislösarmodulen. Matrislösarmodulen returnerar sedan en uppsättning standard logiska vektorer som sedan visas på skärmen med UART seriellt gränssnitt. Överföring och mottagning av data via UART -modulerna åstadkoms genom användning av en mycket lång FSM i denna modul.

UART_TX -modul: Användaren matar in en 8 -bitars standard logisk vektor och en sändningssignal för att skicka data via USB -gränssnittet. Medan den skickar data är signalen TX_Active hög. När den har skickat data pulserar TX_Done -signalen.

UART_RX -modul: Användaren tar emot 8 bitar data åt gången från USB -gränssnittet. En puls från RX_DV är en indikation på att data har mottagits och att RX_Byte -vektorlogiken kan läsas.

Matrislösarmodul: Matrislösaren tar emot en tillräknad matris från UART -modulen som representerar matrisen. Matrislösaren omvandlar sedan varje tal i det linjära systemet till heltal för att göra det enklare att använda dem. Inuti matrislösarmodulen finns det flera delmoduler. Den första delmodulen är inverse_matrix_1 som tar matrisen och sedan ger inversen av den matris som ges. Nästa delmodul är multiplikatorn som multiplicerar total_matrisen med den inversa matrisen med hjälp av standardmatrisoperationer. Slutligen kartlägger huvudmodulen dem tillsammans för att mata ut ett enda svar.

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

När du har förvärvat källkoden underifrån ladda upp den till basys 3 -kortet för att använda gränssnittet.

reference.digilentinc.com/basys3/refmanual

Steg 3: Steg 3: Så här använder du det

Använd ett seriellt gränssnitt på 9600 baud för att kommunicera med Basys3 UART. Jag använde skärmen på Linux med följande kommando:

skärm /dev /ttyUSB1 9600

För att kunna göra detta på Linux, var jag tvungen att lägga till min användare i gruppen "dialout". På Windows bör kitt fungera, och på MacOSX bör det vara en liknande process som linux.

Matrix -lösaren startar om du vrider den längst till vänster till på -positionen. Om du stänger av den återställs matrislösaren.

Rekommenderad: