Obsah:

Integer_Matrix_Solver_UART_SERIAL_VHDL: 3 kroky
Integer_Matrix_Solver_UART_SERIAL_VHDL: 3 kroky

Video: Integer_Matrix_Solver_UART_SERIAL_VHDL: 3 kroky

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

Tento instruktážní tutoriál vám ukáže, jak vyrobit maticový řešič 2 na 2 implementací sériového koncového modulu UART a modulu maticového řešiče. Uživatel bude moci zadat matici 2 na 2 a poté implementovaný návrh vyplivne řešení lineárního systému.

K použití tohoto kódu budete potřebovat:

- Deska FPGA A Digilent Basys 3

- Počítač se softwarem Xilinx Vivado (Webpack Edition bude fungovat). Pro tento modul jsme použili verzi 2017.2.

- Micro USB kabel (možnost přenosu dat)

Autoři: Drew Miller, EE Major, Cal Poly SLO, Sukhdeep Singh, EE Major, Cal Poly SLO Třída: Digitální design

- EE/CPE 133 Instruktor: Joseph Callenes

Prameny:

  • UART_TX, UART_RX od:
  • Debounce od:

Funkce pro dělení dvou nepodepsaných čísel:

Krok 1: Krok 1: Jak to funguje

Krok 1: Jak to funguje
Krok 1: Jak to funguje
Krok 1: Jak to funguje
Krok 1: Jak to funguje

Vstupy: Uživatel zadá lineární systém do počítačového terminálu a poté jej modul UART převede na pole, se kterým může modul maticového solveru manipulovat. Modul UART komunikuje s uživatelem a umožňuje mu zadat příslušnou matici a navádět jej ke správnému zadávání dat. Systém má také přepínač reset/povolení namapovaný na spínač úplně vlevo na desce Basys3.

Výstupy: Výsledky z maticového řešiče jsou předány přes rozhraní modulu UART a poté zobrazeny na počítačovém terminálu s řešeními uvedenými na obrazovce. Řešič matice odesílá nepodepsané standardní logické vektory do modulu UART, který je převádí na uživatelsky přívětivější výstupy, které uživatel ocení. Aktuální maticový řešič může mít zadaná čísla pouze do 15 a výstupní výsledek musí být čisté celé číslo, jinak program maticového řešiče nedokáže vydat správné řešení.

Modul nejvyšší úrovně „Serial Control“: Uživatel zadá do tohoto modulu svůj požadovaný lineární systém prostřednictvím modulů UART_TX a UART_RX a převede vstupy z počítačového terminálu na řadu standardních logických vektorů, které jsou zpracovávány modulem maticového solveru. Modul maticového řešiče poté vrací řadu standardních logických vektorů, které jsou poté zobrazeny na obrazovce sériovým rozhraním UART. Přenos a příjem dat prostřednictvím modulů UART se dosahuje použitím velmi dlouhého FSM v tomto modulu.

Modul UART_TX: Uživatel zadává 8bitový standardní logický vektor a vysílací signál, aby mohl odesílat data přes rozhraní USB. Zatímco odesílá data, signál TX_Active je vysoký. Poté, co odešle data, pulzuje signál TX_Done.

Modul UART_RX: Uživatel přijímá z rozhraní USB 8 bitů dat najednou. Pulz z RX_DV je indikací, že byla přijata data a že lze přečíst vektorovou logiku RX_Byte.

Modul maticového solveru: Maticový solver přijímá imputované pole z modulu UART, který představuje matici. Maticový řešič poté převede každé číslo v lineárním systému na celá čísla, aby se s nimi snáze pracovalo. Uvnitř modulu maticového řešiče je několik dílčích modulů. První dílčí modul je inverse_matrix_1, který vezme matici a poté dá inverzní hodnotu dané matice. Dalším dílčím modulem je multiplikátor, který vynásobí total_matrix inverzní maticí pomocí standardních maticových operací. FInally, hlavní modul je mapuje dohromady a vydává jednu jedinou odpověď.

Krok 2: Krok 2: Programování desky Basys 3

Jakmile získáte zdrojový kód zespodu, nahrajte jej na základní desku 3 a použijte rozhraní.

reference.digilentinc.com/basys3/refmanual

Krok 3: Krok 3: Jak jej používat

Ke komunikaci s Basys3 UART použijte sériové rozhraní s rychlostí 9600 baudů. Použil jsem obrazovku na linuxu s následujícím příkazem:

obrazovka /dev /ttyUSB1 9600

Abych to mohl udělat na linuxu, musel jsem přidat svého uživatele do skupiny „dialout“. Na Windows by měl tmel fungovat a na MacOSX by to měl být podobný proces jako linux.

Přepnutím spínače úplně vlevo do polohy zapnuto spustí maticový řešič. Vypnutím resetujete maticový řešič.

Doporučuje: