VHDLwhiz UART Ho'āʻo Interface Generator

ʻIke Huahana
Nā kikoʻī:
- Inoa Huahana: Hoʻopaʻa inoa ʻo VHDL i ka UART hoʻāʻo interface generator
- Manaʻo: 1.0.4
- Lā: ʻAukake 18, 2024
- Mea kākau: Jonas Julian Jensen
- Huahana URL: Huahana Huahana
- Hoʻokaʻaʻike leka uila: jonas@vhdlwhiz.com
wehewehe
Hāʻawi kēia huahana iā ʻoe e hana i nā pilina maʻamau no ka heluhelu ʻana a me ke kākau ʻana i nā waiwai hoʻopaʻa inoa FPGA me ka UART. Hāʻawi ka module VHDL i hana ʻia a me ka palapala Python i ka hiki ke launa pū me nā ʻano papa inoa like ʻole i kāu hoʻolālā FPGA.
Nā koi
- Python 3 unuhi
- pūʻolo pyserial
Kūkākūkā
Hoʻohana ka huahana i kahi protocol framing data me ʻehā mau mana mana:
- inoa: READ_REQ, Waiwai: 0x0A - Kauoha mai ka mea hoʻokipa i ka FPGA e hoʻomaka i kahi kaʻina kākau e hoʻouna i nā papa inoa āpau ma luna o UART
- inoa: START_WRITE, Waiwai: 0x0B - Hōʻailona i ka hoʻomaka o kahi kaʻina kākau ma kēlā me kēia ʻaoʻao
- inoa: END_WRITE, Waiwai: 0x0C – Hōʻailona i ka hopena o kahi kaʻina kākau ma kēlā me kēia ʻaoʻao
- inoa: MAHELE, Waiwai: 0x0D – Hoʻohana ʻia ke ʻano pakele no ka pakele ʻana i nā huaʻōlelo mana
Nā ʻōlelo hoʻohana huahana
Holo i ka Scripts
No ka hoʻohana ʻana i ka huahana, e hōʻoia ua hoʻokomo ʻia ʻo Python 3 a me ka Pyserial package. E holo i nā palapala ma o kahi unuhi unuhi Python 3.
Hana ʻana i nā Interface Maʻamau
E hoʻohana i ka palapala gen_uart_regs.py e hana i nā pilina maʻamau no ka heluhelu ʻana a me ke kākau ʻana i nā waiwai hoʻopaʻa inoa FPGA. Hiki iā ʻoe ke kuhikuhi i ke ʻano o nā papa inoa hoʻokomo a me nā mea hoʻopuka a me nā ʻano i ka wā e hana ai i ka hoʻopuka files.
Ka launa pū me nā kākau inoa
Hiki iā ʻoe ke heluhelu a kākau paha i kekahi helu o nā papa inoa ma kāu hoʻolālā FPGA me ka hoʻohana ʻana i ka module VHDL i hana ʻia a me ka palapala Python. Hiki ke loaʻa nā ʻano o nā papa inoa e like me std_logic, std_logic_vector, pūlima, a ʻaʻole pūlima.
Laikini
- Hoʻopili ka laikini MIT i nā koi kope kope a me nā ʻōlelo o ka hoʻohana. E nānā i ka LICENSE.txt file i ka Zip file no nā kikoʻī.
Changelog
- Pili kēia mau hoʻololi i ka papahana files, a ua hōʻano hou ʻia kēia palapala
| Manao | ʻŌlelo |
| 1.0.0 | Hoʻokuʻu mua |
| 1.0.1 | Hoʻopaʻa i ka nalo ʻana o ka "self" reference bug i ka wā e hoʻokomo ai e like me uart_regs.py ma ke ʻano he module Python. Ua hoʻololi ʻia ka paʻi paʻi ʻole ʻana i ka ʻokoʻa
pale i ka paʻi ʻana i ka console ke holo nei ma ke ʻano he module i lawe ʻia mai. |
| 1.0.2 | Hoʻoponopono no ka hewa Vivado [Synth 8-248] inā ʻaʻohe ʻano regs. |
| 1.0.3 | Hoʻoponopono i ka ʻōlelo aʻoaʻo Vivado Linter: Ua hiki ke hoʻopaʻa inoa i ke alakaʻi ʻia e
hoʻoponopono hou |
| 1.0.4 | E hoʻoponopono i ka hihia kihi i ka wā e loaʻa ai kahi huaʻōlelo hewa me ke ʻano pakele e like me ka byte hope. E nalowale ana ka huaʻōlelo aʻe no ka mea ʻaʻole mākou i holoi i ka recv_data_prev_is_escape ke hoʻi i IDLE.
Hiki i ka gen_uart_regs.py ke ʻae i nā inoa reg kū hoʻokahi wale nō. |
wehewehe
- Hōʻike kēia palapala i kēia mau mea files a me nā waihona:
- gen_uart_regs.py
- hana ʻia/uart_regs.vhd
- haku ʻia/uart_regs.py
- haku ʻia/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/
- ʻO ka palapala gen_uart_regs.py a me ke kākoʻo ʻana iā VHDL files i loko o kēia papahana hiki iā ʻoe ke hana i nā pilina maʻamau no ka heluhelu a kākau ʻana i nā waiwai hoʻopaʻa inoa FPGA o nā ʻano like ʻole a me nā laula me ka UART.
- Hiki iā ʻoe ke hoʻohana i ka module VHDL i hana ʻia a me ka palapala Python e heluhelu ai a kākau paha i kekahi helu o nā papa inoa i kāu hoʻolālā. Hiki ke loaʻa nā ʻano std_logic, std_logic_vector, pūlima, a i ʻole nā mea kākau inoa UART.
- Hiki iā ʻoe ke hoʻoholo i ke ʻano kikoʻī o nā papa inoa hoʻokomo a me nā mea hoʻopuka a me nā ʻano i ka wā e hana ai i ka hoʻopuka filee hoʻohana ana i ka palapala gen_uart_regs.py.
- Ua hana ʻia nā palapala Python me ke kōkua o ka ChatGPT artificial intelligence tool, aʻo ka VHDL code i hana lima ʻia.
Nā koi
- Pono e holo nā palapala i kēia papahana ma o kahi unuhi unuhi Python 3 a pono e hoʻokomo ʻia ka pūʻolo Pyserial.
- Hiki iā ʻoe ke hoʻokomo i ka pyserial ma o Pip me ka hoʻohana ʻana i kēia kauoha: pip install pyserial
Kūkākūkā
- ʻO ka VHDL files a me Python script hoʻohana i ka ʻikepili-framing protocol me ʻehā mana
| inoa | Waiwai | Manaʻo |
| READ_REQ | 0x0A | Kauoha mai ka mea hoʻokipa i ka FPGA e hoʻomaka i kahi kākau
e hoʻouna i nā papa inoa a pau ma luna o UART |
| START_WRITE | 0x0B. | Hōʻailona i ka hoʻomaka ʻana o kahi kaʻina kākau ma kekahi
kuhikuhi |
| END_KULA | 0x0C. | Hōʻailona i ka hopena o kahi kaʻina kākau ma kēlā me kēia ʻaoʻao |
| MAHELE | 0x0D | ʻO ke ʻano pakele i hoʻohana ʻia no ka pakele ʻana i kekahi o nā huaʻōlelo mana, me ke ʻano ESCAPE ponoʻī, ke ʻike ʻia lākou ma ke ʻano he ʻikepili ma waena o nā kaha START_WRITE a me END_WRITE. |
ʻO kēlā me kēia READ_REQ byte i hoʻouna ʻole ʻia i ka FPGA he ʻōlelo ia e hoʻouna i kāna mau papa inoa UART a pau (nā hoʻokomo a me nā mea hoʻopuka) hoʻi i ka host ma luna o UART. Hoʻopuka pinepine ʻia kēia kauoha e ka uart_regs.py script.
Ma ka loaʻa ʻana o kēia kauoha, e pane ka FPGA ma ka hoʻouna ʻana i ka ʻike o nā papa inoa a pau i ka host. ʻO ka mua, nā hōʻailona hoʻokomo, a laila nā hōʻailona puka. Inā ʻaʻole i hoʻohui ʻia ko lākou lōʻihi i ka nui o nā bits 8, e hoʻopaʻa ʻia nā ʻāpana haʻahaʻa o ka byte hope i nā zeros.
Hoʻomaka mau ke kaʻina kākau me ka START_WRITE byte a pau me ka END_WRITE byte. Ua manaʻo ʻia nā byte ma waena o ia mau paita ʻikepili. Inā like ka waiwai o kekahi ʻikepili me ke ʻano mana, pono e pakele ka byte ʻikepili. ʻO ia ke ʻano o ka hoʻouna ʻana i kahi ʻano ESCAPE hou ma mua o ka byte data e hōʻike ai he ʻikepili maoli ia.
Inā hiki mai kahi START_WRITE i pakele ʻole ma nā wahi ʻē aʻe o ke kahawai o nā paita, manaʻo ʻia ʻo ia ka hoʻomaka ʻana o kahi kaʻina kākau. Hoʻohana ka uart_regs_backend module i kēia ʻike no ka hoʻonohonoho hou ʻana i ka wā e pau ai ke kamaʻilio.
gen_uart_regs.py
- ʻO kēia ka palapala e pono ai ʻoe e hoʻomaka me ka hana ʻana i ka interface. Aia ma lalo kahi kiʻi kiʻi o ka papa kuhikuhi kōkua hiki iā ʻoe ke loaʻa ma ka holo ʻana: python gen_uart_regs.py -h

- No ka hana ʻana i kahi kikowaena maʻamau, pono ʻoe e holo i ka palapala me kēlā me kēia o kāu mau papa inoa hoʻopaʻa UART makemake i helu ʻia ma ke ʻano he hoʻopaʻapaʻa. ʻO nā ʻano i loaʻa ʻo std_logic, std_logic_vector, unsigned, a pūlima.
- Aia ke ʻano paʻamau (kuhikuhi) a ʻo ke ʻano paʻamau ʻo std_logic_vector ke ʻole ka lōʻihi o ka papa inoa: 1. A laila, e paʻamau ia i std_logic.
- No laila, inā makemake ʻoe e hana i kahi hōʻailona hoʻokomo std_logic, hiki iā ʻoe ke hoʻohana i kekahi o kēia mau manaʻo:
- my_sl=1
- my_sl=1:ma
- my_sl=1:in:std_logic
- ʻO nā ʻano ʻokoʻa a pau i luna e hopena i ka hōʻailona e hana i kēia hōʻailona hiki ke loaʻa i ka UART:

- E holo kāua i ka palapala me nā manaʻo hoʻopaʻapaʻa e hana i kahi pilina me nā papa inoa o nā ʻaoʻao like ʻole, ka lōʻihi, a me nā ʻano

Hana ʻia files
- ʻO ka holo holomua o ka gen_uart_regs.py script e hoʻopuka i kahi waihona puka i kapa ʻia i hana ʻia me nā ʻekolu files i helu ʻia ma lalo. Inā loaʻa ia mau mea, e kākau ʻia lākou.
- hana ʻia/uart_regs.vhd
- haku ʻia/uart_regs.py
- haku ʻia/instantiation_template.vho
- uart_regs.vhd
- ʻO kēia ka module interface maʻamau i hana ʻia e ka palapala. Pono ʻoe e hoʻomaka koke i kāu hoʻolālā, kahi e hiki ai ke komo i nā papa inoa āu e makemake ai e hoʻokele me ka UART.
- ʻO nā mea a pau ma luna aʻe o ka ʻāpana "- UART hiki ke loaʻa" e like me kēlā me kēia uart_regs module, ʻoiai ke ʻano o nā hōʻailona awa ma lalo o kēlā laina e pili ana i nā manaʻo i hāʻawi ʻia i ka palapala generator.
- Hōʻike ka papa inoa ma lalo nei i ke ʻano no ka uart_regs module i loaʻa mai i ke kauoha hana examphōʻike ʻia ma ka ʻāpana gen_uart_regs.py

- ʻAʻole pono ʻoe e hoʻonohonoho i ka hōʻailona uart_rx, no ka mea i mālama ʻia i ka uart_rx. module.
- Ke loaʻa ka module i kahi noi heluhelu, e hopu ia i nā waiwai o nā hōʻailona hoʻokomo a me nā hōʻailona puka i loko o ka pōʻaiapuni o kēia manawa. Hoʻouna ʻia ke kiʻi koke i ka mea hoʻokipa ma UART.
- Ke hana ʻia kahi kākau, hōʻano hou ʻia nā papa inoa hoʻopuka a pau me nā waiwai hou i loko o ka pōʻai hoʻokahi. ʻAʻole hiki ke hoʻololi i nā waiwai hōʻailona puka i kēlā me kēia.
- Eia naʻe, hiki i ka uart_regs.py ka palapala i ka mea hoʻohana e hōʻano hou i nā mea i koho ʻia ma ka heluhelu mua ʻana i nā waiwai o kēia manawa o nā papa inoa āpau. Hoʻihoʻi ia i nā waiwai a pau, me nā mea hou.
- uart_regs.py
- ʻO ka mea i hana ʻia/uart_regs.py file hana ʻia me ka uart_regs VHDL module a loaʻa i ka ʻike inoa inoa maʻamau ma ke poʻo o ka file. Me kēia palapala, hiki iā ʻoe ke heluhelu a kākau paha i kāu mau papa inoa maʻamau me ka maʻalahi.
Papa kuhikuhi kōkua
- Kākau i ka python uart_regs.py -h e paʻi i ka papa kuhikuhi kōkua:

Hoʻonohonoho i ka awa UART
- Loaʻa i ka palapala nā koho e hoʻonohonoho i ke awa UART me ka hoʻohana ʻana i ka hoʻololi -c. Hana kēia ma Windows a me Linux. E hoʻonoho iā ia i kekahi o nā awa i loaʻa i helu ʻia ma ka papa kuhikuhi kōkua. No ka hoʻonohonoho ʻana i kahi awa paʻamau, hiki iā ʻoe ke hoʻoponopono i ka ʻano UART_PORT ma ka uart_regs.py palapala.
Hoʻopaʻa inoa
- Hoʻokomo ʻia ka ʻike e pili ana i ka palapala palapala inoa ma ke poʻo o ka uart_regs.py script e ka gen_uart_regs.py script. Hiki iā ʻoe ke papa inoa i nā papa inoa i loaʻa me ka hoʻololi -l, e like me ka mea i ʻike ʻia ma lalo nei. He kauoha kūloko kēia a ʻaʻole e launa pū me ka FPGA

Ke kākau ʻana i nā papa inoa
- Hiki iā ʻoe ke kākau i kekahi o nā papa inoa o waho ma ka hoʻohana ʻana i ke kī -w. Hāʻawi i ka inoa inoa a me ka "=" a me ka waiwai i hāʻawi ʻia ma ke ʻano he binary, hexadecimal, a i ʻole decimal, e like me ka hōʻike ʻana ma lalo nei.

- E hoʻomaopopo i ka hoʻokō ʻana o VHDL e koi i ka palapala e kākau i nā papa inoa puka a pau i ka manawa like. No laila, inā ʻaʻole ʻoe e kuhikuhi i kahi pūʻulu piha o nā papa inoa hoʻopuka, e hana mua ka palapala i kahi heluhelu mai ka FPGA i manaʻo ʻia a laila hoʻohana i kēlā mau waiwai no nā mea i nalowale. ʻO ka hopena e hoʻololi wale i nā papa inoa i kuhikuhi ʻia
- Ke hana ʻoe i kahi kākau, e hoʻololi ʻia nā papa inoa i kuhikuhi ʻia i ka pōʻai hoʻokahi, ʻaʻole i ka wā e loaʻa ai ma luna o UART.
Heluhelu kakau
- E hoʻohana i ka hoʻololi -r e heluhelu i nā waiwai inoa a pau, e like me ka hōʻike ʻana ma lalo nei. ʻO nā waiwai i kaha ʻia i ka melemele nā mea a mākou i hoʻololi ai i ka ex kākau muaample

- Hōʻike kēlā me kēia heluhelu i kahi kiʻi koke o nā papa inoa hoʻokomo a me nā mea hoʻopuka. ʻO lākou a pau sampalakaʻi ʻia i ka pōʻaiapuni uaki like
Debugging
E hoʻohana i ka hoʻololi -d me kekahi o nā hoʻololi ʻē aʻe inā pono ʻoe e debug i ka protocol kamaʻilio. A laila, e paʻi ka palapala i nā bytes a pau i hoʻouna ʻia a loaʻa tag inā he mau huapalapala mana, e like me ka mea i hōʻike ʻia ma lalo nei.
Ke hoʻohana nei i ka interface ma nā palapala Python ʻē aʻe
- Aia i loko o ka uart_regs.py kahi papa UartRegs i hiki iā ʻoe ke hoʻohana maʻalahi e like me ke kikowaena kamaʻilio ma nā palapala Python maʻamau. Hoʻokomo wale i ka papa, hana i kahi mea nona, a hoʻomaka e hoʻohana i nā ʻano hana, e like me ka hōʻike ʻana ma lalo nei.

- E nānā i nā docstrings i ka Python code no ke ʻano a me nā wehewehe a me nā ʻano waiwai hoʻihoʻi.
instantiation_template.vho
- Hoʻokumu ʻia ka ʻōkuhi instantiation me ka uart_regs module no kou ʻoluʻolu. No ka mālama ʻana i ka manawa coding, hiki iā ʻoe ke kope i ka instantiation module a me nā hōʻailona hōʻailona i kāu hoʻolālā.


RTL kūmau files
- Pono ʻoe e hoʻokomo i kēia mau mea files i kāu papahana VHDL i hui pū ʻia lākou i loko o ka waihona like me ka uart_regs module:
- rtl/uart_regs_backend.vhd
- rtl/uart_rx.vhd
- rtl/uart_tx.vhd
- Hoʻokomo ka uart_regs_backend module i nā mīkini mokuʻāina palena ʻole e hoʻopaʻa i ka ʻikepili a i waho. Hoʻohana ia i nā modula uart_rx a me uart_tx e mālama i ke kamaʻilio UART me ka mea hoʻokipa.
Nā papahana demo
- Aia ʻekolu mau papahana demo i hoʻokomo ʻia ma ka Zip file. Hāʻawi lākou iā ʻoe e hoʻomalu i nā peripheral ma nā papa like ʻole a me kekahi mau papa inoa o loko.
- Aia nā waihona demo i ka uart_regs.vhd a me uart_regs.py files hana kūikawā no kēlā mau hoʻolālā.
Lattice iCEstick
- Aia i loko o ka waihona demo/icecube2_icestick kahi hoʻokō demo no ka papa Lattice iCEstick FPGA.
- No ka holo ʻana i ke kaʻina hana, wehe i ka demo/lattice_icestick/icecube2_proj/uart_regs_sbt.project file i loko o ka polokalamu hoʻolālā Lattice iCEcube2.
- Ma hope o ka hoʻouka ʻana i ka papahana ma ka iCEcube2 GUI, kaomi i nā hāmeʻa → Holo i nā mea a pau e hana i ka bitmap hoʻonohonoho. file.
- Hiki iā ʻoe ke hoʻohana i ka Lattice Diamond Programmer Standalone mea hana e hoʻonohonoho i ka FPGA me ka bitmap i hana ʻia file. Ke wehe ʻia ʻo Diamond Programmer, kaomi E wehe i kahi papahana programmer e kū nei ma ka pahu kamaʻilio hoʻokipa.
- E koho i ka papahana file loaʻa ma ka Zip: demo/lattice_icestick/diamond_programmer_project.xcf a kaomi OK.

- Ma hope o ka hoʻouka ʻana o ka papahana, kaomi i nā kiko ʻekolu ma ka File Inoa kolamu, e like me ka mea i hoikeia maluna. E ʻimi e koho i ka bitmap file āu i hana ai ma iCEcube2
- demo/lattice_icestick/icecube2_proj/uart_regs_Implmnt/sbt/outputs/bitmap/top_icestick_bitmap.bin
- ʻO ka hope loa, me ka hoʻopili ʻana o ka papa iCEstick i kahi awa USB ma kāu kamepiula, koho i ka Hoʻolālā → Polokalamu e hoʻolālā i ka flash SPI a hoʻonohonoho i ka FPGA.
- Hiki iā ʻoe ke hoʻomau e heluhelu a kākau i nā papa inoa ma ka hoʻohana ʻana i ka palapala demo/lattice_icestick/uart_regs.py e like me ka wehewehe ʻana ma ka ʻāpana uart_regs.py.
Xilinx Digilent Arty A7-35T
- Hiki iā ʻoe ke ʻike i ka hoʻokō demo no ka pahu loiloi Artix-7 35T Arty FPGA ma ka waihona demo/arty_a7_35.
- E wehe iā Vivado a hoʻokele i ka mea i unuhi ʻia files e hoʻohana ana i ka console Tcl i loaʻa ma lalo o ka interface GUI. Kākau i kēia kauoha e komo i ka waihona papahana demo:
- cd /demo/arty_a7_35/vivado_proj/
- E hoʻokō i ka palapala create_vivado_proj.tcl Tcl e hoʻolaʻa hou i ka papahana Vivado:
- kumu ./create_vivado_proj.tcl
- Kaomi i ka Generate Bitstream ma ka ʻaoʻao ʻaoʻao e holo i nā ʻanuʻu hoʻokō āpau a hana i ka bitstream programming file.
- ʻO ka hope, kaomi i ka Open Hardware Manager a hoʻolālā i ka FPGA ma o ka GUI.
- Hiki iā ʻoe ke hoʻomau e heluhelu a kākau i nā papa inoa ma o ka hoʻohana ʻana i ka demo/arty_a7_35/uart_regs.py script e like me ka wehewehe ʻana ma ka ʻāpana uart_regs.py.
Xilinx Digilent Arty S7-50
- Hiki iā ʻoe ke ʻike i ka hoʻokō demo no ka Arty S7: Spartan-7 FPGA development board ma ka waihona demo/arty_s7_50.
- E wehe iā Vivado a hoʻokele i ka mea i unuhi ʻia files e hoʻohana ana i ka console Tcl i loaʻa ma lalo o ka interface GUI. Kākau i kēia kauoha e komo i ka waihona papahana demo:
- cd /demo/arty_s7_50/vivado_proj/
- E hoʻokō i ka palapala create_vivado_proj.tcl Tcl e hoʻolaʻa hou i ka papahana Vivado:
- kumu ./create_vivado_proj.tcl
- Kaomi i ka Generate Bitstream ma ka ʻaoʻao ʻaoʻao e holo i nā ʻanuʻu hoʻokō āpau a hana i ka bitstream programming file.
- ʻO ka hope, kaomi i ka Open Hardware Manager a hoʻolālā i ka FPGA ma o ka GUI.
- Hiki iā ʻoe ke hoʻomau e heluhelu a kākau i nā papa inoa ma ka hoʻohana ʻana i ka palapala demo/arty_s7_50/uart_regs.py e like me ka wehewehe ʻana ma ka ʻāpana uart_regs.py.
Hoʻokō
- ʻAʻohe koi hoʻokō kikoʻī.
Kaohi
- ʻAʻole pono nā palena manawa kikoʻī no kēia hoʻolālā no ka mea lohi ka UART a mālama ʻia ma ke ʻano he interface asynchronous.
- Ua hoʻokomo ʻia ka uart_rx i ka uart_regs module i loko o ka uart_rx module. No laila, ʻaʻole pono e hoʻonohonoho ʻia i ka module kiʻekiʻe.
Nā pilikia i ʻike ʻia
- Pono paha ʻoe e hoʻihoʻi i ka module ma mua o ka hoʻohana ʻia ʻana, ma muli o ke kākoʻo ʻana o kāu hoʻolālā FPGA i nā koina hoʻopaʻa inoa paʻamau.
ʻIke hou aku
- Kuleana kope VHDLwhiz.com
FAQs
Nīnau: He aha ke kumu o ka UART ho'āʻo interface generator?
A: Hiki i ka UART test interface generator ke hana i nā pilina maʻamau e launa pū me nā waiwai hoʻopaʻa inoa FPGA me ka hoʻohana ʻana i ke kamaʻilio UART.
Nīnau: Pehea wau e hoʻokomo ai i ka pūʻolo Pyserial?
A: Hiki iā ʻoe ke hoʻokomo iā Pyserial ma o Pip me ka hoʻohana ʻana i ke kauoha: pip install pyserial
Palapala / Punawai
![]() |
VHDLwhiz UART Ho'āʻo Interface Generator [pdf] Palapala Hoʻohana UART Test Interface Generator, Test Interface Generator, Interface Generator, Generator |

