VHDLwhiz - logotipVHDLwhiz.com
Generator preskusnega vmesnika VHDL registrira UART – Uporabniški priročnik

Različica: 1.0.0
Datum: 1. september 2023
Avtor: Jonas Julian Jensen
Izdelek URL: https://vhdlwhiz.com/product/vhdl-registers-uart-test-interfacegenerator
Kontaktni e-poštni naslov: jonas@vhdlwhiz.com
Ta dokument opisuje uporabo generatorja preskusnega vmesnika UART podjetja VHDLwhiz za izdelavo modula VHDL po meri in skripta Python za branje in zapisovanje vrednosti registra FPGA.

Licenca

Licenca MIT pokriva zahteve glede avtorskih pravic in pogoje uporabe izvorne kode.
Glejte LICENSE.txt file v Zip file za podrobnosti.

Dnevnik sprememb

Te spremembe se nanašajo na projekt files, in ta dokument je ustrezno posodobljen.

Različica  Opombe
1.0.0 Začetna izdaja

Opis

Ta dokument opisuje naslednje files in mape:

  • gen_uart_regs.py
  • generirano/uart_regs.vhd
  • created/uart_regs.py
  • generirano/instanciation_template.vho
  • rtl/uart_regs_backend.vhd
  • rtl/uart_rx.vhd
  • rtl/uart_tx.vhd
  • demo/lattice_icestick/
  • demo/xilinx_arty_a7_35/
  • demo/xilinx_arty_s7_50/

The gen_uart_regs.py skript in podpira VHDL files v tem projektu vam omogočajo ustvarjanje vmesnikov po meri za branje in pisanje vrednosti registra FPGA različnih vrst in širin z uporabo UART.
Ustvarjeni modul VHDL in skript Python lahko uporabite za branje ali pisanje v poljubno število registrov v vašem dizajnu. UART dostopni registri so lahko tipov std_logic, std_logic_vector, signed ali unsigned.
Natančno sestavo vhodnih in izhodnih registrov ter vrste lahko določite pri generiranju izhoda files uporabo skripta gen_uart_regs.py.
Python skripte so delno ustvarjene s pomočjo orodja za umetno inteligenco ChatGPT, koda VHDL pa je izdelana ročno.

Zahteve

Skripte v tem projektu je treba izvajati prek tolmača Python 3 in namestiti mora biti paket Pyserial.
Pyserial lahko namestite prek Pipa s tem ukazom: pip install pyserial

Protokol

VHDL files in Python skript uporabljata protokol za uokvirjanje podatkov s štirimi kontrolnimi znaki:

Ime Vrednost Komentiraj
PREBERITE ZAHTEVO OxOA Ukaz od gostitelja do FPGA za začetek zaporedja pisanja za pošiljanje vseh registrov nazaj prek UART
START_PIŠI Ox0B Označuje začetek zaporedja pisanja v obe smeri
END_WRITE OxOC Označuje konec zaporedja pisanja v obe smeri
POBEŽI OxOD Ubežni znak, ki se uporablja za ubežne znake katere koli kontrolne besede, vključno s samim znakom ESCAPE, ko se pojavijo kot podatki med oznakama START_WRITE in END_WRITE.

Vsak neubežni bajt READ_REQ, poslan FPGA, je navodilo za pošiljanje vseh njegovih UART dostopnih registrov (vhodov in izhodov) nazaj gostitelju prek UART. Ta ukaz običajno izda le skript uart_regs.py.
Po prejemu tega ukaza se FPGA odzove tako, da pošlje vsebino vseh registrov nazaj gostitelju. Najprej vhodni signali, nato izhodni signali. Če njihove dolžine niso večkratnik 8 bitov, bodo nižji biti zadnjega bajta dopolnjeni z ničlami.
Zaporedje pisanja se vedno začne z bajtom START_WRITE in konča z bajtom END_WRITE. Vsi bajti med temi se štejejo za podatkovne bajte. Če ima kateri koli podatkovni bajt enako vrednost kot kontrolni znak, je treba podatkovni bajt ubežati. To pomeni pošiljanje dodatnega znaka ESCAPE pred podatkovnim bajtom, ki nakazuje, da gre dejansko za podatke.
Če neubežni START_WRITE prispe kjerkoli v toku bajtov, se šteje za začetek zaporedja pisanja. Modul uart_regs_backend uporablja te informacije za ponovno sinhronizacijo v primeru, da komunikacija ne bo sinhronizirana.

gen_uart_regs.py

To je skript, s katerim morate začeti ustvarjati vmesnik. Spodaj je posnetek zaslona menija pomoči, ki ga lahko dobite tako, da zaženete: python gen_uart_regs.py -hVHDLwhiz Generator testnega vmesnika VHDL Registrs UART - koda

Če želite ustvariti vmesnik po meri, morate zagnati skript z vsemi želenimi registri, ki jih je mogoče nadzorovati UART, navedenimi kot argumenti. Razpoložljive vrste so std_logic, std_logic_vector, unsigned in signed.
Privzeti način (smer) je in privzeti tip je std_logic_vector, razen če ima register dolžino: 1. Potem bo privzeto nastavljen na std_logic.
Če torej želite ustvariti vhodni signal std_logic, lahko uporabite katerega koli od teh argumentov:
moj_sl=1
moj_sl=1:in
my_sl=1:in:std_logic
Vse zgornje različice bodo povzročile, da skript ustvari ta signal, dostopen UART:Generator testnega vmesnika VHDLwhiz VHDL Registrs UART – koda 2

Zaženimo skript z argumenti za ustvarjanje vmesnika z več registri različnih smeri, dolžin in tipov:Generator testnega vmesnika VHDLwhiz VHDL Registrs UART – koda 3

Ustvarjeno files

Uspešen zagon skripta gen_uart_regs.py bo ustvaril izhodno mapo z imenom ustvarjena s tremi fileso navedeni spodaj. Če že obstajajo, bodo prepisani.

  • generirano/uart_regs.vhd
  • created/uart_regs.py
  • generirano/instanciation_template.vho

uart_regs.vhd
To je vmesniški modul po meri, ki ga ustvari skript. Instanciirati ga morate v svoji zasnovi, kjer lahko dostopa do registrov, ki jih želite nadzorovati z uporabo UART.
Vse nad razdelkom »– UART dostopni registri« bo enako za vsak modul uart_regs, medtem ko je sestava signalov vrat pod to vrstico odvisna od argumentov, danih skriptu generatorja.
Spodnji seznam prikazuje entiteto za modul uart_regs, ki izhaja iz ukaza za generiranje exampprikazano v gen_uart_regs.py razdelek.Generator testnega vmesnika VHDLwhiz VHDL Registrs UART – koda 4

Ni vam treba sinhronizirati signala uart_rx, saj se to obravnava v uart_rx. modul.
Ko modul prejme zahtevo za branje, bo zajel vrednosti vseh vhodnih in izhodnih signalov znotraj trenutnega takta. Takojšnji posnetek se nato prek UART pošlje gostitelju.
Ko pride do pisanja, se vsi izhodni registri posodobijo z novimi vrednostmi znotraj istega takta. Posamezne vrednosti izhodnega signala ni mogoče spremeniti.
Vendar pa skript uart_regs.py uporabniku omogoča posodobitev samo izbranih izhodov tako, da najprej prebere trenutne vrednosti vseh registrov. Nato zapiše vse vrednosti, vključno s posodobljenimi.

uart_regs.py
Generated/uart_regs.py file se ustvari skupaj z modulom uart_regs VHDL in vsebuje podatke o registru po meri v glavi file. S tem skriptom lahko brez težav berete ali pišete v svoje registre po meri.
Meni pomoči
Vnesite python uart_regs.py -h, da natisnete meni pomoči:Generator testnega vmesnika VHDLwhiz VHDL Registrs UART – koda 5

Nastavitev vrat UART

Skript ima možnosti za nastavitev vrat UART s stikalom -c. To deluje v sistemih Windows in Linux. Nastavite ga na eno od razpoložljivih vrat, navedenih v meniju pomoči. Če želite nastaviti privzeta vrata, lahko uredite tudi spremenljivko UART_PORT v skriptu uart_regs.py.
Registri kotacij
Informacije o preslikavi registra se s skriptom gen_uart_regs.py postavijo v glavo skripta uart_regs.py. Razpoložljive registre lahko navedete s stikalom -l, kot je prikazano spodaj. To je lokalni ukaz in ne bo deloval s ciljno FPGA. Generator testnega vmesnika VHDLwhiz VHDL Registrs UART – koda 6

Pisanje v registre

Z uporabo stikala -w lahko pišete v kateri koli register izhodnega načina. Vnesite ime registra, ki mu sledi »=«, in vrednost, podano kot binarno, šestnajstiško ali decimalno vrednost, kot je prikazano spodaj.Generator testnega vmesnika VHDLwhiz VHDL Registrs UART – koda 7

Opomba da implementacija VHDL zahteva, da skript zapiše vse izhodne registre hkrati. Če torej ne podate celotnega niza izhodnih registrov, bo skript najprej izvedel branje iz ciljnega FPGA in nato te vrednosti uporabil za manjkajoče. Posledično se bodo spremenili samo določeni registri.
Ko izvedete pisanje, se bodo vsi določeni registri spremenili med istim taktom in ne takoj, ko bodo prejeti prek UART.

Branje registrov
Uporabite stikalo -r za branje vseh vrednosti registra, kot je prikazano spodaj. Rumeno označene vrednosti so tiste, ki smo jih spremenili v prejšnjem zapisu example.Generator testnega vmesnika VHDLwhiz VHDL Registrs UART – koda 8

Vsako branje prikaže trenutni posnetek vseh vhodnih in izhodnih registrov. Vsi so sampvodila v istem ciklu ure.

Odpravljanje napak

Uporabite stikalo -d s katerim koli drugim stikalom, če morate odpraviti napake v komunikacijskem protokolu. Nato bo skript natisnil vse poslane in prejete bajte ter tag če so kontrolni znaki, kot je prikazano spodaj.

Generator testnega vmesnika VHDLwhiz VHDL Registrs UART – koda 9

Uporaba vmesnika v drugih skriptih Python

Skript uart_regs.py vsebuje razred UartRegs, ki ga lahko enostavno uporabite kot komunikacijski vmesnik v drugih skriptih Python po meri. Preprosto uvozite razred, iz njega ustvarite objekt in začnite uporabljati metode, kot je prikazano spodaj.Generator testnega vmesnika VHDLwhiz VHDL Registrs UART – koda 10

Glejte nize dokumentov v kodi Python za metode in opise ter tipe vrnjenih vrednosti.

instantiation_template.vho
Instanciacijska predloga je ustvarjena skupaj z modulom uart_regs za vaše udobje. Če želite prihraniti čas kodiranja, lahko kopirate instanciacijo modula in deklaracije signalov v svojo zasnovo.Generator testnega vmesnika VHDLwhiz VHDL Registrs UART – koda 11Generator testnega vmesnika VHDLwhiz VHDL Registrs UART – koda 12

Statični RTL files

Vključiti morate naslednje filev vašem projektu VHDL, tako da so prevedeni v isto knjižnico kot modul uart_regs:

  • rtl/uart_regs_backend.vhd
  • rtl/uart_rx.vhd
  • rtl/uart_tx.vhd

Modul uart_regs_backend implementira končne avtomate, ki vnašajo in iznašajo podatke registra. Za upravljanje komunikacije UART z gostiteljem uporablja modula uart_rx in uart_tx.

Demo projekti

V Zip so vključeni trije demo projekti file. Omogočajo vam nadzor perifernih naprav na različnih ploščah, kot tudi nekaj večjih notranjih registrov.
Demo mape vključujejo vnaprej ustvarjena uart_regs.vhd in uart_regs.py fileje narejen posebej za te modele.

Rešetkasta iCEstick
Mapa demo/icecube2_icestick vsebuje demo izvedbo dostopa do registra za ploščo Lattice iCEstick FPGA.
Če želite izvesti postopek implementacije, odprite demo/lattice_icestick/icecube2_proj/uart_regs_sbt.project file v programski opremi za načrtovanje Lattice iCEcube2.
Ko naložite projekt v iCEcube2 GUI, kliknite Orodja → Zaženi vse, da ustvarite programsko bitno sliko file.
Za konfiguracijo FPGA z ustvarjeno bitno sliko lahko uporabite samostojno orodje Lattice Diamond Programmer file. Ko se odpre Diamond Programmer, v pozdravnem pogovornem oknu kliknite Odpri obstoječi projekt programerja.
Izberite projekt file najdete v datoteki Zip: demo/lattice_icestick/diamond_programmer_project.xcf in kliknite V redu.Generator testnega vmesnika VHDLwhiz VHDL Registrs UART – koda 13

Ko se projekt naloži, kliknite tri pike v File Stolpec z imeni, kot je prikazano zgoraj. Prebrskajte, da izberete bitno sliko file ki ste jih ustvarili v iCEcube2: demo/lattice_icestick/icecube2_proj/uart_regs_Implmnt/sbt/outputs/bitmap/top_ice stick_bitmap.bin
Končno, ko je plošča iCEstick priključena na vrata USB na vašem računalniku, izberite Design→Program za programiranje bliskavice SPI in konfiguracijo FPGA.
Zdaj lahko nadaljujete z branjem in pisanjem registrov z uporabo skripta demo/lattice_icestick/uart_regs.py, kot je opisano v razdelku uart_regs.py.

Xilinx Digilent Arty A7-35T

Predstavitveno izvedbo za ocenjevalni komplet Artix-7 35T Arty FPGA najdete v mapi demo/arty_a7_35.
Odprite Vivado in se pomaknite do ekstrahiranega files pomočjo konzole Tcl, ki jo najdete na dnu vmesnika GUI. Vnesite ta ukaz za vstop v mapo demo projekta: cd /demo/arty_a7_35/vivado_proj/
Izvedite skript create_vivado_proj.tcl Tcl, da ponovno ustvarite projekt Vivado: izvor ./create_vivado_proj.tcl
V stranski vrstici kliknite Generate Bitstream, da preletite vse korake implementacije in ustvarite programski bitni tok file.
Na koncu kliknite Odpri upravitelja strojne opreme in programirajte FPGA prek GUI.
Zdaj lahko nadaljujete z branjem in pisanjem registrov z uporabo skripta demo/arty_a7_35/uart_regs.py, kot je opisano v razdelku uart_regs.py.

Xilinx Digilent Arty S7-50
Demo izvedbo za razvojno ploščo Arty S7: Spartan-7 FPGA najdete v mapi demo/arty_s7_50.
Odprite Vivado in se pomaknite do ekstrahiranega files pomočjo konzole Tcl, ki jo najdete na dnu vmesnika GUI. Vnesite ta ukaz za vstop v mapo demo projekta: cd /demo/arty_s7_50/vivado_proj/
Izvedite skript create_vivado_proj.tcl Tcl, da ponovno ustvarite projekt Vivado: izvor ./create_vivado_proj.tcl
V stranski vrstici kliknite Generate Bitstream, da preletite vse korake implementacije in ustvarite programski bitni tok file.
Na koncu kliknite Odpri upravitelja strojne opreme in programirajte FPGA prek GUI.
Zdaj lahko nadaljujete z branjem in pisanjem registrov z uporabo skripta demo/arty_s7_50/uart_regs.py, kot je opisano v razdelku uart_regs.py.

Izvedba

Posebnih zahtev za izvedbo ni.
Omejitve
Za to zasnovo niso potrebne posebne časovne omejitve, ker je vmesnik UART počasen in se obravnava kot asinhroni vmesnik.
Vhod uart_rx v modul uart_regs je sinhroniziran znotraj modula uart_rx. Zato ga ni treba sinhronizirati v modulu najvišje ravni.
Znane težave

  • Morda boste morali ponastaviti modul, preden ga lahko uporabite, odvisno od tega, ali vaša arhitektura FPGA podpira privzete vrednosti registra.

Avtorske pravice VHDLwhiz.com

Dokumenti / Viri

VHDLwhiz Generator testnega vmesnika VHDL registrira UART [pdfUporabniški priročnik
VHDL, VHDL Registri UART Test Interface Generator, Registri UART Test Interface Generator, UART Test Interface Generator, Test Interface Generator, Interface Generator, Generator

Reference

Pustite komentar

Vaš elektronski naslov ne bo objavljen. Obvezna polja so označena *