VHDLwhiz UART Test Interface Generator
Ozi ngwaahịa
Nkọwapụta:
- Aha ngwaahịa: VHDL na-edebanye aha onye na-emepụta ihe nyocha UART
- Ụdị: 1.0.4
- Ụbọchị: Ọgọst 18, 2024
- Onye edemede: Jonas Julian Jensen
- Ngwaahịa URL: Njikọ ngwaahịa
- Email kọntaktị: jonas@vhdlwhiz.com
Nkọwa
Ngwaahịa a na-enye gị ohere ịmepụta oghere omenala maka ịgụ na ide ụkpụrụ ndekọ FPGA site na iji UART. Modul VHDL emepụtara na edemede Python na-enye ike ịmekọrịta ụdị ndekọ aha dị iche iche na imewe FPGA gị.
Ihe achọrọ
- Python 3 ntụgharị okwu
- pyserial ngwugwu
Protocol
Ngwaahịa a na-eji usoro nhazi data nwere mkpụrụedemede anọ:
- Aha: GỤỌ_REQ, Uru: 0x0A - Iwu si n'aka onye ọbịa nye FPGA ka ịmalite usoro ederede iji zipu ndekọ niile na UART.
- Aha: START_TE, Uru: 0x0B - Na-aka akara mmalite nke usoro ederede n'akụkụ ọ bụla
- Aha: END_DE, Uru: 0x0C - Na-aka akara njedebe nke usoro ederede n'akụkụ ọ bụla
- Aha: Mpụnarịa, Uru: 0x0D - agwa mgbapụ ejiri maka ịgbanarị okwu njikwa
Ntuziaka ojiji ngwaahịa
Na-agba ọsọ Scripts
Iji jiri ngwaahịa a, hụ na etinyere Python 3 yana ngwugwu Pyserial. Gbaa script site na Python 3 ntụgharị okwu.
Na-emepụta interface omenala
Jiri gen_uart_regs.py script mepụta omenala interfaces maka ịgụ na ide ụkpụrụ ndekọ FPGA. Ị nwere ike ịkọwapụta ihe mejupụtara ndenye na ndenye mmepụta na ụdị mgbe ị na-emepụta ihe files.
Mmekọrịta na ndị na-edeba aha
Ị nwere ike ịgụ site na ma ọ bụ degara ọnụ ọgụgụ ndekọ aha ọ bụla na nhazi FPGA gị site na iji modul VHDL na edemede Python emepụtara. Ndebanye aha enwere ike ịnwe ụdị dị ka std_logic, std_logic_vector, bịanyere aka na ya, ma ọ bụ enweghị aha.
Ikikere
- Ikikere MIT na-ekpuchi koodu isi iyi ikike nwebiisinka yana usoro ojiji. Tụtụ aka na LICENSE.txt file na zip file maka nkọwa.
Changelog
- Mgbanwe ndị a na-ezo aka na ọrụ ahụ files, na emelitere akwụkwọ a otu a
Ụdị | Okwu |
1.0.0 | Ntọhapụ mbụ |
1.0.1 | Edoziri mpe mpe mpe akwa «onwe» mgbe ị na-ebubata dị ka uart_regs.py dị ka modul Python. Gbanwee mbipụta edeghị afọ ka ewepu na
zere ibipụta na console mgbe ọ na-agba ọsọ dị ka modul ebubata. |
1.0.2 | Idozi maka njehie Vivado [Synth 8-248] mgbe enweghị ọnọdụ ọnọdụ. |
1.0.3 | Idozi ịdọ aka ná ntị Vivado Linter: Ndebanye aha enyerela aka
nrụpụta mmekọrịta |
1.0.4 | Dozie ihe nkuku mgbe ị na-anata okwu adịghị mma yana agwa mgbapụ dị ka byte ikpeazụ. Okwu na-esote ga-efunahụkwa n'ihi na anyị ekpochapụghị recv_data_prev_is_escape mgbe ịlaghachi na IDLE.
Edemede gen_uart_regs.py na-enye naanị aha ndekọ aha pụrụ iche. |
Nkọwa
- Akwụkwọ a na-akọwa ihe ndị a files na folda:
- gen_uart_regs.py
- emepụtara/uart_regs.vhd
- emepụtara/uart_regs.py
- emepụtara/instantiation_template.vho
- rtl/uart_regs_backend.vhd
- rtl/uart_rx.vhd
- rtl/uart_tx.vhd
- ngosi/lattice_icestick/
- ngosi/xilinx_arty_a7_35/
- ngosi/xilinx_arty_s7_50/
- Edemede gen_uart_regs.py yana VHDL na-akwado files na oru ngo a na-enye gị ohere ịmepụta oghere omenala maka ịgụ na ide ụkpụrụ ndekọ FPGA nke ụdị na obosara dị iche iche site na iji UART.
- Ị nwere ike iji modul VHDL emepụtara na edemede Python gụọ ma ọ bụ dee nọmba ndekọ ọ bụla na nhazi gị. Ndebanye aha nke UART nwere ike ịnwe ụdị std_logic, std_logic_vector, bịanyere aka na ya, ma ọ bụ enweghị aha.
- Ị nwere ike ikpebi nhazi nhazi nke ndenye na ntinye aha na ụdị mgbe ị na-emepụta mmepụta files na-eji gen_uart_regs.py script.
- Emepụtara script Python akụkụ site n'enyemaka nke ChatGPT akụrụngwa ọgụgụ isi, ebe ejiri aka rụọ koodu VHDL.
Ihe achọrọ
- Edemede dị n'ọrụ a ga-emerịrị site na onye ntụgharị okwu Python 3 yana ngwungwu Pyserial ga-etinyerịrị.
- Ị nwere ike iwunye pyserial site na Pip site na iji iwu a: pip install pyserial
Protocol
- Ọnụahịa kasị elu nke VHDL files na Python script na-eji a data-framing protocol nwere njikwa anọ
Aha | Uru | Ikwu |
GỤỌ_REQ | 0x0A | Iwu si n'aka onye ọbịa nye FPGA ka ibido dee
usoro izipu ndekọ niile n'elu UART |
START_DEE | 0X0B | Na-aka akara mmalite nke usoro ide na nke ọ bụla
uzo |
END_DEA | 0C | Na-aka akara njedebe nke usoro ederede n'akụkụ ọ bụla |
Mpụnarịa | 0x0D | Edemede mgbanaka ejiri maka ịgbanarị okwu njikwa ọ bụla, gụnyere agwa ESCAPE n'onwe ya, mgbe ha pụtara dị ka data n'etiti akara START_WRITE na END_WRITE. |
Ihe ọ bụla READ_REQ byte na-enweghị mgbapụ ezigara na FPGA bụ ntụziaka iji zipu akwụkwọ ndekọ aha ya niile nke UART nwere ike ịnweta (ntinye na mmepụta) laghachi na onye ọbịa n'elu UART. A na-enyekarị iwu a naanị site n'edemede uart_regs.py.
Mgbe enwetara iwu a, FPGA ga-azaghachi site na iziga ọdịnaya nke ndekọ niile azụ na onye ọbịa. Nke mbụ, akara ntinye aka, emesia akara ngosi. Ọ bụrụ na ogologo ha agbakwunyeghị na otutu nke 8 bits, ntakịrị ntakịrị nke byte ikpeazụ ga-abụ efu efu.
Usoro ide na-amalite mgbe niile site na START_WRITE byte wee mechie na END_WRITE byte. A na-ewere bytes ọ bụla n'etiti ndị ahụ dị ka data bytes. Ọ bụrụ na ọ bụla data bytes nwere otu uru dị ka agwa njikwa, data byte ga-agbanarị. Nke a pụtara izipu mkpụrụedemede ESCAPE n'ihu data byte iji gosi na ọ bụ data n'ezie.
Ọ bụrụ na START_WRITE anaghị agbanarị abịarute ebe ọ bụla na iyi nke bytes, a na-ewere ya dị ka mmalite nke usoro ide. Modul uart_regs_backend na-eji ozi a megharịa ma ọ bụrụ na nzikọrịta ozi ahụ akwụsị.
gen_uart_regs.py
- Nke a bụ edemede ị ga-amalite na iji mepụta interface. N'okpuru bụ nseta ihuenyo nke menu enyemaka ị nwere ike nweta site na ịgba ọsọ: python gen_uart_regs.py -h
- Iji mepụta interface omenala, ị ga-emerịrị edemede ahụ na akwụkwọ ndekọ aha ọ bụla nke UART ị chọrọ ka edepụtara dị ka arụmụka. Ụdị ndị dịnụ bụ std_logic, std_logic_vector, enweghị aha, na mbinye aka.
- Ụdị ndabara (ntụziaka) dị na ụdị ndabara bụ std_logic_vector ma ọ bụrụ na aha ndekọ ahụ dị ogologo: 1. Mgbe ahụ, ọ ga-adaba na std_logic.
- Ya mere, ọ bụrụ na ịchọrọ ịmepụta mgbama ntinye std_logic, ị nwere ike iji nke ọ bụla n'ime arụmụka ndị a:
- my_sl=1
- my_sl=1:n'ime
- my_sl=1: na:std_logic
- Ụdị dị iche iche a dị n'elu ga-eme ka edemede ahụ mepụta mgbama UART a:
- Ka anyị jiri arụmụka mee edemede ahụ ka iwepụta interface nwere ọtụtụ ndekọ nke ụzọ, ogologo na ụdị dị iche iche.
Emepụtara files
- Edemede gen_uart_regs.py na-aga nke ọma ga-ewepụta folda mmepụta aha ya na atọ. files edepụtara n'okpuru. Ọ bụrụ na ha adịlarị, a ga-edegharị ha.
- emepụtara/uart_regs.vhd
- emepụtara/uart_regs.py
- emepụtara/instantiation_template.vho
- uart_regs.vhd
- Nke a bụ modul interface omenala nke edemede ahụ mepụtara. Ịkwesịrị ịme ya ozugbo na imewe gị, ebe ọ nwere ike ịnweta ndekọ ịchọrọ ijikwa UART.
- Ihe niile dị n'elu ngalaba "- UART accessible registers" ga-abụ otu maka modul uart_regs ọ bụla, ebe ihe mejupụtara akara ọdụ ụgbọ mmiri dị n'okpuru ahịrị ahụ dabere na arụmụka enyere na edemede generator.
- Ndepụta dị n'okpuru na-egosi ihe maka modul uart_regs sitere na n'iwepụta iwu exampegosiri na gen_uart_regs.py secti
- Ịkwesighi ịmekọrịta mgbaàmà uart_rx, dịka a na-edozi nke ahụ na uart_rx. modul.
- Mgbe modul ahụ nwetara arịrịọ ịgụ, ọ ga-ejide ụkpụrụ niile ntinye na akara ngosi n'ime okirikiri elekere ugbu a. A na-ezigara ndị ọbịa ihe onyonyo ozugbo na UART.
- Mgbe ederede mere, a na-eji ụkpụrụ ọhụrụ emelite ndekọ mmepụta niile n'ime otu okirikiri elekere. Ọ gaghị ekwe omume ịgbanwe ụkpụrụ mgbaama mmepụta n'otu n'otu.
- Agbanyeghị, uart_regs.py script na-enye onye ọrụ ohere imelite naanị nsonaazụ ahọpụtara site na mbụ ịgụ azụ ụkpụrụ dị ugbu a nke ndekọ niile. Ọ na-edeghachi ụkpụrụ niile, gụnyere ndị emelitere.
- uart_regs.py
- Emepụtara/uart_regs.py file Emepụtara ya na modul uart_regs VHDL ma nwee ozi ndekọ aha omenala na nkụnye eji isi mee nke file. Site na edemede a, ị nwere ike ịgụ ma ọ bụ degara akwụkwọ ndekọ aha gị n'ụzọ dị mfe.
menu enyemaka
- Pịnye python uart_regs.py -h ka ibipụta menu enyemaka:
Ịtọ n'ọdụ ụgbọ mmiri UART
- Edemede nwere nhọrọ iji tọọ ọdụ ụgbọ mmiri UART site na iji mgba ọkụ -c. Nke a na-arụ ọrụ na Windows na Linux. Tọọ ya n'otu ọdụ ụgbọ mmiri dị na ndepụta enyemaka. Iji tọọ ọdụ ụgbọ mmiri ndabara, ị nwekwara ike dezie mgbanwe UART_PORT na edemede uart_regs.py.
Ndekọ ndekọ
- A na-etinye ozi gbasara eserese ndekọ aha na nkụnye eji isi mee nke uart_regs.py script nke gen_uart_regs.py. Ị nwere ike depụta ndekọ ndị dị na -l switch, dị ka a hụrụ n'okpuru. Nke a bụ iwu mpaghara na agaghị emekọrịta ihe na ebumnuche FPGA
Na-ede na ndekọ
- Ị nwere ike idegara akwụkwọ ndekọ aha ọ bụla site na iji -w switch. Wepụta aha ndebanye aha na-esote "=" yana uru enyere dị ka ọnụọgụ abụọ, hexadecimal, ma ọ bụ ọnụ ọgụgụ iri, dị ka egosiri n'okpuru.
- Rịba ama na mmejuputa VHDL chọrọ ka edemede dee ndekọ mmepụta niile n'otu oge. Ya mere, ọ bụrụ na ị kọwapụtaghị aha ndekọ mmepụta zuru oke, edemede ahụ ga-ebu ụzọ mee agụ site na FPGA lekwasịrị anya wee jiri ụkpụrụ ndị ahụ maka ndị na-efu efu. Nsonaazụ ga-abụ na naanị ndebanye aha akọwapụtara na-agbanwe
- Mgbe ị na-ede akwụkwọ, ndekọ niile akọwapụtara ga-agbanwe n'otu oge elekere, ọ bụghị ozugbo enwetara ha n'elu UART.
Akwụkwọ ndekọ
- Jiri mgba ọkụ -r gụọ ụkpụrụ ndekọ aha niile, dị ka egosiri n'okpuru. Ụkpụrụ akara edo edo bụ nke anyị gbanwere na mbụ dee example
- Ọgụgụ ọ bụla na-egosi nseta foto ozugbo nke ndenye ndenye na mmepụta niile. Ha niile bụ sampedu n'oge otu elekere okirikiri
Ndozigharị
Jiri mgbanwe -d ọ bụla n'ime mgbanwe ndị ọzọ ma ọ bụrụ na ịchọrọ ihichapụ usoro nzikọrịta ozi. Mgbe ahụ, script ga-ebipụta niile ezigara na natara bytes na tag ha ma ọ bụrụ na ha bụ akara njikwa, dị ka egosiri n'okpuru.
Iji interface dị na edemede Python ndị ọzọ
- Edemede uart_regs.py nwere klas UartRegs nke ị nwere ike iji ngwa ngwa dị ka nzikọrịta ozi na script Python ndị ọzọ. Naanị bubata klas ahụ, mepụta ihe ya, wee malite iji usoro ndị a, dị ka egosiri n'okpuru.
- Rụtụ aka na docstrings dị na koodu Eke Ọgba maka usoro na nkọwa na nloghachi ụdị uru.
instantiation_template.vho
- Emepụtara ndebiri ozugbo yana modul uart_regs maka ịdị mma gị. Ka ịchekwaa oge koodu, ị nwere ike idetuo ngwa ngwa ngwa ngwa na nkwupụta mgbaama n'ime imewe gị.
Static RTL files
- Ikwesiri itinye ihe ndia files na ọrụ VHDL gị ka achịkọta ha n'otu ọba akwụkwọ dị ka modul uart_regs:
- rtl/uart_regs_backend.vhd
- rtl/uart_rx.vhd
- rtl/uart_tx.vhd
- Modul uart_regs_backend na-arụ ọrụ igwe nwere oke steeti na-abanye ma wepụta data ndekọ aha. Ọ na-eji modul uart_rx na uart_tx iji jikwaa nkwukọrịta UART na onye ọbịa.
Ihe ngosi ngosi
- Enwere ọrụ ngosi atọ gụnyere na Zip file. Ha na-ahapụ gị ka ị chịkwaa mpụta dị na bọọdụ dị iche iche yana obere akwụkwọ ndekọ nke dị n'ime.
- Mpempe akwụkwọ ngosi ahụ gụnyere uart_regs.vhd ewepụtara na uart_regs.py files mere kpọmkwem maka ndị aghụghọ.
Lattice iCEstick
- Mpempe akwụkwọ ngosi/icecube2_icestick nwere mmejuputa ngosi nweta ndebanye aha maka bọọdụ Lattice iCEstick FPGA.
- Iji mee usoro mmejuputa iwu, mepee demo/lattice_icestick/icecube2_proj/uart_regs_sbt.project file na Lattice iCEcube2 imewe software.
- Mgbe nbudata ọrụ ahụ na iCEcube2 GUI, pịa Ngwaọrụ → Gbaa niile ka ịmepụta bitmap mmemme. file.
- Ị nwere ike iji ngwa Lattice Diamond Programmer Standalone iji hazie FPGA na bitmap emepụtara. file. Mgbe Diamond Programmer mepere, pịa Mepee ihe mmemme dị na igbe nnabata nnabata.
- Họrọ oru ngo file achọtara na Zip: demo/lattice_icestick/diamond_programmer_project.xcf wee pịa OK.
- Mgbe ibu ọrụ ahụ gasịrị, pịa ntụpọ atọ dị na ya File Kọlụm aha, dị ka egosiri n'elu. Chọgharịa ka ịhọrọ bitmap file nke ị mepụtara na iCEcube2
- ngosi/lattice_icestick/icecube2_proj/uart_regs_Implmnt/sbt/outputs/bitmap/top_icestick_bitmap.bin
- N'ikpeazụ, iji bọọdụ iCEstick etinye n'ọdụ ụgbọ mmiri USB na kọmputa gị, họrọ Kere → Mmemme iji hazie SPI flash wee hazie FPGA.
- Ị nwere ike ịga n'ihu ịgụ na dee ndekọ site na iji demo/lattice_icestick/uart_regs.py script dị ka akọwara na uart_regs.py ngalaba.
Xilinx Digilent Arty A7-35T
- Ị nwere ike ịchọta mmejuputa ngosi ngosi maka ngwa nyocha Artix-7 35T Arty FPGA na nchekwa ngosi/arty_a7_35.
- Mepee Vivado wee gaa na nke ewepụtara files iji Tcl console achọtara na ala nke interface GUI. Pịnye iwu a iji tinye nchekwa ihe ngosi ngosi:
- cd /demo/arty_a7_35/vivado_proj/
- Mezue scriptcrea_vivado_proj.tcl Tcl iji megharịa ọrụ Vivado:
- isi mmalite ./create_vivado_proj.tcl
- Pịa n'ịwa Bitstream na sidebar iji na-aga na usoro mmejuputa iwu niile wee mepụta bitstream mmemme file.
- N'ikpeazụ, pịa Mepee Hardware Manager wee hazie FPGA site na GUI.
- Ị nwere ike ịga n'ihu na-agụ ma dee ndekọ site na iji ngosi/arty_a7_35/uart_regs.py script dị ka akọwara na uart_regs.py ngalaba.
Xilinx Digilent Arty S7-50
- Ị nwere ike ịhụ mmejuputa ngosi ngosi maka bọọdụ mmepe Arty S7: Spartan-7 FPGA na nchekwa ngosi/arty_s7_50.
- Mepee Vivado wee gaa na nke ewepụtara files iji Tcl console achọtara na ala nke interface GUI. Pịnye iwu a iji tinye nchekwa ihe ngosi ngosi:
- cd /demo/arty_s7_50/vivado_proj/
- Mezue scriptcrea_vivado_proj.tcl Tcl iji megharịa ọrụ Vivado:
- isi mmalite ./create_vivado_proj.tcl
- Pịa n'ịwa Bitstream na sidebar iji na-aga na usoro mmejuputa iwu niile wee mepụta bitstream mmemme file.
- N'ikpeazụ, pịa Mepee Hardware Manager wee hazie FPGA site na GUI.
- Ị nwere ike ugbu a gaa n'ihu ịgụ na dee ndekọ site na iji ngosi/arty_s7_50/uart_regs.py script dị ka akọwara na uart_regs.py ngalaba.
Mmejuputa
- Enweghị mkpa mmejuputa a kapịrị ọnụ.
Mgbochi
- Ọnweghị ihe mgbochi oge akọwapụtara maka imewe a n'ihi na interface UART adịghị nwayọ ma na-emeso ya dị ka interface asynchronous.
- Ntinye uart_rx na modul uart_regs ka emekọrịtara n'ime modul uart_rx. Ya mere, ọ dịghị mkpa ka emekọrịta ya na modul ọkwa dị elu.
Okwu ama ama
- Ị nwere ike ịtọgharịa modul tupu enwee ike iji ya, dabere ma ụlọ ọrụ FPGA gị na-akwado ụkpụrụ ndebanye aha ndabara.
Ozi ndị ọzọ
- Nwebiisinka VHDLwhiz.com
Ajụjụ
Q: Gịnị bụ nzube nke UART ule interface generator?
A: The UART test interface generator na-enye ohere maka ịmepụta oghere omenala iji soro ụkpụrụ ndekọ FPGA na-emekọrịta ihe site na iji nkwurịta okwu UART.
Ajụjụ: Kedu ka m ga-esi tinye ngwugwu Pyserial?
A: Ị nwere ike iwunye Pyserial site na Pip site na iji iwu: pip install pyserial
Akwụkwọ / akụrụngwa
![]() |
VHDLwhiz UART Test Interface Generator [pdf] Akwụkwọ ntuziaka onye ọrụ UART Test Interface Generator, Test Interface Generator, Interface Generator, Generator |