VHDLwhiz-logo

VHDLwhiz UART Su'ega Fa'afeso'ota'i Fa'atupu

VHDLwhiz-UART-Test-Interface-Generator-PRODUCT

Fa'amatalaga o oloa

Fa'amatalaga:

  • Igoa Oloa: VHDL resitara UART su'ega atina'e generator
  • Fa'aliliuga: 1.0.4
  • Aso: Aokuso 18, 2024
  • Tusitala: Jonas Julian Jensen
  • Oloa URL: So'oga oloa
  • Fa'afeso'ota'i imeli: jonas@vhdlwhiz.com

Fa'amatalaga

O lenei oloa e mafai ai ona e fa'atupuina feso'ota'iga aganu'u mo le faitau ma le tusiaina o fa'amaumauga a le resitala FPGA e fa'aaoga ai le UART. O le VHDL module ma le Python script e maua ai le tomai e fegalegaleai ai ma ituaiga eseese o resitala i lau mamanu FPGA.

Manaoga

  • Python 3 fa'aliliu
  • pusa pyserial

Polokalama

O lo'o fa'aogaina e le oloa se fa'asologa fa'asologa o fa'amaumauga fa'atasi ai ma mataitusi fa'atonutonu e fa:

  • Igoa: READ_REQ, Taua: 0x0A - Poloaiga mai le talimalo i le FPGA e amata se faasologa tusitusi e toe lafo uma resitala i luga ole UART
  • Igoa: START_TUSI, Taua: 0x0B - Faailoga le amataga o se faasologa tusitusi i itu uma e lua
  • Igoa: END_TUSI, Taua: 0x0C – Faailoga le faaiuga o se faasologa tusitusi i itu uma e lua
  • Igoa: SOLA, Taua: 0x0D - Sola ese uiga faʻaaogaina mo le sola ese mai upu pulea

Fa'atonuga o le Fa'aaogaina o Mea

Fa'agaoioi o Tusitusiga

Ina ia faʻaogaina le oloa, faʻamautinoa ua e faʻapipiʻi le Python 3 ma le pusa Pyserial. Fa'asolo tusitusiga e ala i se fa'aliliu upu Python 3.

Fa'atupuina Faiga Fa'asinomaga

Fa'aoga le gen_uart_regs.py script e fa'atupu ai feso'ota'iga fa'aaganu'u mo le faitau ma le tusiaina o fa'atauga resitala o le FPGA. E mafai ona e fa'ama'oti le tu'ufa'atasiga o tusi resitala o mea e sao ai ma galuega fa'atino ma ituaiga pe a fa'atupuina le galuega files.

Fegalegaleai ma Resitala

E mafai ona e faitau mai pe tusi i so'o se numera o resitala i lau mamanu FPGA e fa'aaoga ai le VHDL module ma le Python script. O resitala avanoa e mafai ona iai ituaiga e pei ole std_logic, std_logic_vector, sainia, pe le'i sainia.

Laisene

  • O le laisene MIT e aofia ai mana'oga o le puletaofia ma aiaiga o le fa'aoga. Va'ai ile LICENSE.txt file i le Zip file mo fa'amatalaga.

Changelog

  • O nei suiga e faasino i le poloketi files, ma o lenei pepa ua faafou e tusa ai
Fa'aliliuga Fa'amatalaga
1.0.0 Fa'asalalauga muamua
1.0.1 Fa'amauina le misi o le "self" reference bug pe a fa'aulufale mai o le uart_regs.py o se Python module. Suia le tusitusi ua le mafai ona lolomi i se tuusaunoaga i

aloese mai le lolomiina i le faʻamafanafanaga pe a taʻavale e pei o se faʻapipiʻi mai fafo.

1.0.2 Faʻamau mo le Vivado [Synth 8-248] sese pe a leai ni faʻasalalauga faʻapitoa.
1.0.3 Fix Vivado Linter lapataiga: Resitala ua mafai ona faʻauluina e

toe setiina fa'atasi

1.0.4 Fa'asa'o le pusa tulimanu pe a maua se upu fa'aletonu o lo'o iai le uiga sola ese o le byte mulimuli. O le isi upu o le a leiloa foi ona matou te leʻi kilia recv_data_prev_is_escape pe a toe foʻi i IDLE.

O le gen_uart_regs.py script ua fa'atagaina nei na'o igoa fa'apitoa.

Fa'amatalaga

  • O lenei pepa o lo'o fa'amatalaina mea nei files ma faila:
  • gen_uart_regs.py
  • gaosia/uart_regs.vhd
  • gaosia/uart_regs.py
  • gaosia/instantiation_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/
  • Le tusitusiga gen_uart_regs.py ma lagolago VHDL files i lenei poloketi fa'atagaina oe e fa'atupuina feso'ota'iga aganu'u mo le faitau ma le tusiaina o fa'atauga resitala o FPGA o ituaiga eseese ma lautele e fa'aaoga ai le UART.
  • E mafai ona e faʻaogaina le VHDL module ma le Python script e faitau mai pe tusi i soʻo se numera o resitala i lau mamanu. O resitara fa'aoga UART e mafai ona iai ituaiga std_logic, std_logic_vector, saini, pe le'i sainia.
  • E mafai ona e filifili i le tu'ufa'atasiga sa'o o tusi resitala o mea e sao ai ma galuega fa'atino ma ituaiga pe a fa'atupuina le galuega files fa'aogaina le gen_uart_regs.py script.
  • O tusitusiga a le Python na faia i se vaega faʻatasi ma le fesoasoani a le ChatGPT mea faigaluega faʻapitoa, ae o le VHDL code o loʻo faia i lima.

Manaoga

  • O tusitusiga i lenei poloketi e tatau ona faʻatautaia e ala i le Python 3 faʻaliliu ma e tatau ona faʻapipiʻi le pusa Pyserial.
  • E mafai ona e faʻapipiʻi le pyserial e ala i le Pip e faʻaaoga ai lenei poloaiga: pip install pyserial

Polokalama

  • Ole VHDL files ma le Python script faʻaaogaina se faʻamaumauga faʻapipiʻi faʻamaumauga ma faʻatonuga
Igoa Taua Faamatalaga
READ_REQ 0x0A Poloaiga mai le talimalo i le FPGA e amata ai se tusi

fa'asologa e toe lafo uma resitala ile UART

START_TUSI 0x0B Faailoga le amataga o se faasologa tusitusia i se tasi

faasinomaga

END_TUSI 0x0c Faailoga le faaiuga o se faasologa tusitusi i itu uma e lua
SOLA 0x0D Sola ese uiga fa'aaoga mo le sola ese mai so'o se upu fa'atonutonu, e aofia ai le ESCAPE uiga lava ia, pe a fa'aalia o fa'amaumauga i le va o maka START_WRITE ma END_WRITE.

So'o se READ_REQ byte e le'i sao mai e lafo i le FPGA o se fa'atonuga e lafo uma ana tusi resitala e mafai ona maua e le UART (fa'auiga ma mea e fai) toe fo'i atu i le talimalo ile UART. O lenei poloaiga e masani lava ona tuʻuina mai e le uart_regs.py script.
I le mauaina o lenei poloaiga, o le a tali atu le FPGA e ala i le auina atu o mea o loʻo i ai tusi resitala uma i tua i le talimalo. Muamua, o faʻailoga faʻapipiʻi, ona sosoo ai lea ma faʻailoga o le gaosiga. Afai e le fa'aopoopo o latou umi i le tele o 8 bits, o pito pito i lalo o le byte mulimuli o le a fa'atumuina zeros.
Ole fa'asologa tusitusi e amata i le START_WRITE byte ae fa'ai'u ile END_WRITE byte. So'o se paita i le va o na mea e ta'ua o fa'amaumauga. Afai o so'o se fa'amaumauga fa'amaumauga e tutusa lona tau ma se tagata e pulea, e tatau ona sola ese mai le fa'amaumauga. O lona uiga o le tu'uina atu o se uiga ESCAPE fa'aopoopo a'o le'i o'o i le byte fa'amaumauga e fa'ailoa ai o fa'amatalaga moni.
Afai e o'o mai se START_WRITE e le'i sola ese i so'o se mea i totonu o le tafega o bytes, e fa'apea o le amataga lea o se fa'asologa tusitusi. O le uart_regs_backend module e fa'aogaina nei fa'amatalaga e toe fa'afetaui ai ina ne'i le toe fetaui le feso'ota'iga.

gen_uart_regs.py

  • O le tusitusiga lea e tatau ona e amata ai e fa'atupu ai le fa'aoga. Lalo o se faʻamalama o le lisi fesoasoani e mafai ona e maua e ala i le tamoe: python gen_uart_regs.py -hVHDLwhiz-UART-Test-Interface-Generator-FIG-1
  • Mo le fa'atupuina o se fa'ata'ita'iga fa'aaganu'u, e tatau ona e fa'agasolo le fa'amaumauga ma au resitala ta'itasi e mana'omia e le UART o lo'o lisiina e fai ma finauga. O ituaiga avanoa o le std_logic, std_logic_vector, le saini, ma saini.
  • O le tulaga faaletonu (direction) o loʻo i totonu ma o le tulaga faaletonu o le std_logic_vector seivagana ua umi le resitala: 1. Ona, o le a le mafai ona faʻaogaina std_logic.
  • O lea, afai e te manaʻo e fai se faʻailoga std_logic, e mafai ona e faʻaogaina soʻo se tasi o nei finauga:
  • my_sl=1
  • my_sl=1:i totonu
  • my_sl=1:i:std_logic
  • O suiga uma o loʻo i luga o le a iʻu ai i le tusitusiga e faʻatupuina ai lenei faʻailoga e mafai ona maua e le UART:VHDLwhiz-UART-Test-Interface-Generator-FIG-2
  • Se'i o tatou fa'agasolo le tusitusiga ma fa'aupuga e fa'atupu ai se atina'e ma le tele o tusi resitala o itu eseese, umi, ma ituaigaVHDLwhiz-UART-Test-Interface-Generator-FIG-3

Fausia files

  • O le manuia o le fa'asologa o le gen_uart_regs.py script o le a maua ai se faila fa'aigoaina e fa'aigoaina ma le tolu files lisiina i lalo. Afai ua uma ona i ai, o le a suia.
  • gaosia/uart_regs.vhd
  • gaosia/uart_regs.py
  • gaosia/instantiation_template.vho
  • uart_regs.vhd
  • O le fa'aoga masani lea e fa'atupuina e le tusitusiga. E te manaʻomia le faʻapipiʻiina i lau mamanu, lea e mafai ai ona maua tusi resitala e te manaʻo e pulea e faʻaaoga ai le UART.
  • O mea uma i luga a'e o le vaega "- UART accessible registers" o le a tutusa mo uart_regs module uma, ae o le tu'ufa'atasiga o fa'ailoga uafu i lalo ifo o lena laina e fa'alagolago i finauga na tu'uina atu i le generator script.
  • O le lisi o loʻo i lalo o loʻo faʻaalia ai le vaega mo le uart_regs module e mafua mai i le faʻatonuina o le faʻatonugaampLe faʻaalia i le gen_uart_regs.py vaegaVHDLwhiz-UART-Test-Interface-Generator-FIG-4
  • E te le manaʻomia le faʻamaopoopoina o le uart_rx faailo, aua o loʻo taulimaina i le uart_rx. module.
  • A maua e le module se talosaga faitau, o le a pu'eina le taua o fa'ailo uma o lo'o i totonu ma fa'ailoga i totonu o le taamilosaga o lo'o iai nei. O le ata fa'afuase'i e lafo i le 'au'aunaga i luga ole UART.
  • A tupu se tusi, e fa'afou uma tusi resitala fa'atasi ma tau fou i totonu o le taamilosaga e tasi. E le mafai ona suia ta'ito'atasi fa'ailoga fa'ailoga.
  • Ae ui i lea, o le uart_regs.py script e mafai ai e le tagata faʻaoga ona faʻafouina naʻo mea na filifilia e ala i le faitauina muamua o tau o loʻo iai nei o resitala uma. Ona toe tusi uma ai lea o tulaga faatauaina, e aofia ai ma mea ua faafou.
  • uart_regs.py
  • Le gaosia/uart_regs.py file o lo'o gaosia fa'atasi ma le uart_regs VHDL module ma o lo'o i ai fa'amatalaga resitala masani i le ulutala o le file. Faatasi ai ma lenei tusitusiga, e mafai ona e faitau mai pe tusi i au resitala masani ma faigofie.

Fesoasoani lisi

  • Tusa python uart_regs.py -h e lolomi le lisi fesoasoani:VHDLwhiz-UART-Test-Interface-Generator-FIG-5

Fa'atulaga le uafu UART

  • O loʻo i ai i le tusitusiga ni filifiliga e seti ai le UART port e faʻaaoga ai le -c ki. E galue lenei mea ile Windows ma Linux. Seti i se tasi o ports avanoa o loʻo lisiina i le lisi fesoasoani. Ina ia setiina se uafu faaletonu, e mafai foi ona e faasa'oina le fesuiaiga UART_PORT i le uart_regs.py script.

Lisi tusi resitala

  • O fa'amatalaga e uiga i le fa'afanua tusi resitala o lo'o tu'u i le ulutala o le uart_regs.py script e le gen_uart_regs.py script. E mafai ona e lisiina tusi resitala avanoa i le -l ki, e pei ona vaʻaia i lalo. O se fa'atonuga fa'apitonu'u ma e le fegalegaleai ma le fa'amoemoe FPGAVHDLwhiz-UART-Test-Interface-Generator-FIG-6

Tusi i tusi resitala

  • E mafai ona e tusi i soʻo se tasi o le out mode registers e ala i le faʻaogaina o le -w ki. Tu'u le igoa resitala soso'o ai ma le “=” ma le tau o lo'o tu'uina atu e pei o le numera binary, hexadecimal, po'o le decimal, e pei ona fa'aalia i lalo.VHDLwhiz-UART-Test-Interface-Generator-FIG-7
  • Manatua o le VHDL faʻatinoga e manaʻomia ai le tusitusiga e tusi uma tusi resitala i le taimi e tasi. O le mea lea, afai e te le faʻamaonia se seti atoa o tusi resitala, o le tusitusiga o le a muamua faia se faitauga mai le FPGA faʻamoemoeina ona faʻaaoga lea o na tau mo mea o loʻo misi. O le i'uga e na'o tusi resitala fa'amaonia e sui
  • A e faia se tusi, o le a suia uma tusi resitala i le taamilosaga e tasi, ae le o le taimi lava e maua ai i luga ole UART.

Tusi resitala

  • Fa'aoga le -r ki e faitau uma ai fa'amaumauga resitala, e pei ona fa'aalia i lalo. O tau o lo'o fa'ailogaina i le samasama o mea ia na matou suia i le tusitusiga muamuaampleVHDLwhiz-UART-Test-Interface-Generator-FIG-8
  • O faitauga uma e fa'aalia ai se ata fa'atopetope o tusi resitala uma o mea e fa'aoga ma galuega. O i latou uma o sampta'ita'iina i le taamilosaga o le uati lava e tasi

Debugging

Fa'aoga le -d ki ma so'o se isi ki pe afai e te mana'omia le debug ole feso'ota'iga. Ona, o le tusitusiga o le a lolomi uma auina atu ma maua bytes ma tag latou pe a fai o ni tagata e pulea, e pei ona faaalia i lalo.VHDLwhiz-UART-Test-Interface-Generator-FIG-9

Faʻaaogaina le faʻaoga i isi tusitusiga Python

  • O le uart_regs.py tusitusiga o loʻo i ai se vasega UartRegs e faigofie ona e faʻaogaina e fai ma fesoʻotaʻiga fesoʻotaʻiga i isi tusitusiga Python masani. Na'o le fa'aulufale mai o le vasega, fai se mea, ma amata fa'aaoga metotia, e pei ona fa'aalia i lalo.VHDLwhiz-UART-Test-Interface-Generator-FIG-10
  • Vaʻai i le docstrings i le Python code mo metotia ma faʻamatalaga ma toe faafoi ituaiga tau.

instantiation_template.vho

  • O le faʻataʻitaʻiga faʻataʻitaʻiga e gaosia faʻatasi ma le uart_regs module mo lou faʻaogaina. Ina ia fa'asaoina le taimi fa'ailoga, e mafai ona e kopiina le fa'asologa o le module ma fa'ailoga fa'ailoga i lau mamanu.VHDLwhiz-UART-Test-Interface-Generator-FIG-11VHDLwhiz-UART-Test-Interface-Generator-FIG-12

RTL tumau files

  • E tatau ona e aofia ai mea nei files i lau galuega VHDL ina ia tuʻufaʻatasia i totonu o le faletusi tutusa ma le uart_regs module:
  • rtl/uart_regs_backend.vhd
  • rtl/uart_rx.vhd
  • rtl/uart_tx.vhd
  • O le uart_regs_backend module e faʻaaogaina masini faʻatapulaʻa o loʻo loka i totonu ma fafo atu o faʻamaumauga resitala. E fa'aogaina le uart_rx ma uart_tx modules e fa'atautaia ai feso'ota'iga UART ma le 'au.

Fa'ata'ita'iga poloketi

  • E tolu fa'ata'ita'iga poloketi o lo'o aofia i le Zip file. Latou te faʻatagaina oe e pulea peripherals i luga o laupapa eseese faʻapea foʻi ma nai tusi resitala tetele i totonu.
  • O fa'ailoga fa'aaliga e aofia ai le uart_regs.vhd ma le uart_regs.py files faia faapitoa mo na mamanu.

Lattice iCEstick

  • O le fa'ailoga/icecube2_icestick folder o lo'o iai le fa'atinoina o le fa'atinoina o le fa'atinoga mo le Lattice iCEstick FPGA laupapa.
  • Ina ia faʻatautaia le faʻatinoga o le faʻatinoga, tatala le demo/lattice_icestick/icecube2_proj/uart_regs_sbt.project file i le Lattice iCEcube2 mamanu polokalama.
  • A maeʻa ona utaina le poloketi i le iCEcube2 GUI, kiliki Tools → Run All e faʻatupu ai le polokalame bitmap file.
  • E mafai ona e fa'aogaina le Lattice Diamond Programmer Standalone meafaigaluega e fa'atulaga ai le FPGA fa'atasi ai ma le bitmap ua gaosia file. A matala le Diamond Programmer, kiliki Tatala se poloketi polokalame o loʻo i ai i le pusa faʻafeiloaʻi.
  • Filifili galuega file maua i le Zip: demo/lattice_icestick/diamond_programmer_project.xcf ma kiliki OK.VHDLwhiz-UART-Test-Interface-Generator-FIG-13
  • A uma ona uta le poloketi, kiliki togi tolu i le File Igoa koluma, e pei ona faaalia i luga. Su'esu'e e filifili le faafanua file na e faia i le iCEcube2
  • demo/lattice_icestick/icecube2_proj/uart_regs_Implmnt/sbt/outputs/bitmap/top_icestick_bitmap.bin
  • Mulimuli ane, faʻatasi ai ma le laupapa iCEstick faʻapipiʻi i totonu o le USB port i luga o lau komepiuta, filifili Design → Polokalama e faʻapipiʻi le SPI flash ma faʻapipiʻi le FPGA.
  • E mafai nei ona e faitau ma tusi tusi resitala e ala i le faʻaaogaina o le demo/lattice_icestick/uart_regs.py script e pei ona faamatalaina i le uart_regs.py vaega.

Xilinx Digilent Arty A7-35T

  • E mafai ona e mauaina le faʻatinoga faʻataʻitaʻiga mo le Artix-7 35T Arty FPGA pusa suʻesuʻe i le demo/arty_a7_35 folder.
  • Tatala Vivado ma faʻafeiloaʻi i le mea na maua mai files faʻaaogaina le Tcl faʻamafanafanaga o loʻo maua i le pito i lalo ole GUI interface. Fa'aigoa le fa'atonuga lenei e ulufale ai i le fa'ailoga fa'ata'ita'iga:
  • cd /demo/arty_a7_35/vivado_proj/
  • Fa'atino le create_vivado_proj.tcl Tcl script e toe fa'afouina ai le poloketi Vivado:
  • puna ./create_vivado_proj.tcl
  • Kiliki Fausia Bitstream i le itu itu e faʻataʻitaʻi ai i laasaga uma o faʻatinoga ma faʻatupuina le bitstream polokalame file.
  • Mulimuli, kiliki Open Hardware Manager ma polokalame le FPGA e ala i le GUI.
  • E mafai nei ona e faitau ma tusi resitala e ala i le faʻaaogaina o le demo/arty_a7_35/uart_regs.py script e pei ona faʻamatalaina i le uart_regs.py vaega.

Xilinx Digilent Arty S7-50

  • E mafai ona e mauaina le faʻatinoga faʻataʻitaʻiga mo le Arty S7: Spartan-7 FPGA atinaʻe laupapa i le demo/arty_s7_50 folder.
  • Tatala Vivado ma faʻafeiloaʻi i le mea na maua mai files faʻaaogaina le Tcl faʻamafanafanaga o loʻo maua i le pito i lalo ole GUI interface. Fa'aigoa le fa'atonuga lenei e ulufale ai i le fa'ailoga fa'ata'ita'iga:
  • cd /demo/arty_s7_50/vivado_proj/
  • Fa'atino le create_vivado_proj.tcl Tcl script e toe fa'afouina ai le poloketi Vivado:
  • puna ./create_vivado_proj.tcl
  • Kiliki Fausia Bitstream i le itu itu e faʻataʻitaʻi ai i laasaga uma o faʻatinoga ma faʻatupuina le bitstream polokalame file.
  • Mulimuli, kiliki Open Hardware Manager ma polokalame le FPGA e ala i le GUI.
  • E mafai nei ona e faitau ma tusi tusi resitala e ala i le faʻaaogaina o le demo/arty_s7_50/uart_regs.py script e pei ona faʻamatalaina i le uart_regs.py vaega.

Fa'atinoga

  • E leai ni mana'oga fa'atino fa'apitoa.

Fa'agata

  • Leai se taimi fa'atapula'aina e mana'omia mo lenei mamanu ona o le UART fa'afeso'ota'i e telegese ma fa'aogaina e pei o se feso'ota'iga asynchronous.
  • O le uart_rx fa'aoga i le uart_regs module e fa'amaopoopo i totonu o le uart_rx module. O le mea lea, e le manaʻomia le faʻaogaina i le pito i luga o le module.

Mataupu lauiloa

  • Atonu e te mana'omia le toe setiina o le module a'o le'i mafai ona fa'aoga, e fa'atatau pe lagolagoina e lau fa'ailoga FPGA le fa'aogaina o le resitalaina.

Fa'amatalaga atili

FAQs

Q: O le a le faʻamoemoega o le faʻaogaina o suʻega a le UART?

A: Ole su'ega ole su'ega ole su'ega UART e mafai ai ona fausia ni feso'ota'iga masani e fegalegaleai ai ma fa'atauga resitala FPGA e fa'aaoga ai feso'ota'iga UART.

Q: E faʻafefea ona ou faʻapipiʻi le pusa Pyserial?

A: E mafai ona e faʻapipiʻi Pyserial e ala i Pip e faʻaaoga ai le poloaiga: pip install pyserial

Pepa / Punaoa

VHDLwhiz UART Su'ega Fa'afeso'ota'i Fa'atupu [pdf] Tusi Taiala
UART Test Interface Generator, Suʻega Faʻamatalaga Faʻamatalaga, Faʻamatalaga Faʻamatalaga, Faʻatupu

Fa'asinomaga

Tuu se faamatalaga

E le fa'asalalauina lau tuatusi imeli. Fa'ailogaina fanua mana'omia *