VHDLwhiz UART Su'ega Fa'afeso'ota'i Fa'atupu
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 -h
- 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:
- 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 ituaiga
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 vaega
- 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:
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 FPGA
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.
- 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 muamuaample
- 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.
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.
- 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.
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.
- 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
- Puletaofia VHDLwhiz.com
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 |