Gineadair eadar-aghaidh deuchainn VHDLwhiz UART
Fiosrachadh toraidh
Sònrachaidhean:
- Ainm Bathar: Bidh VHDL a’ clàradh gineadair eadar-aghaidh deuchainn UART
- Tionndadh: 1.0.4
- Ceann-latha: 18 Lùnastal, 2024
- Ùghdar: Jonas Julian Jensen
- Bathar URL: Ceangal toraidh
- Post-d fios: jonas@vhdlwhiz.com
Tuairisgeul
Leigidh an toradh seo leat eadar-aghaidh àbhaisteach a ghineadh airson luachan clàr FPGA a leughadh agus a sgrìobhadh a’ cleachdadh UART. Bheir am modal VHDL a chaidh a chruthachadh agus an sgriobt Python comas dhut eadar-obrachadh le diofar sheòrsaichean de chlàran anns an dealbhadh FPGA agad.
Riatanasan
- Eadar-theangair python 3.
- pasgan pyserial
Pròtacal
Bidh an toradh a’ cleachdadh protocol frèam dàta le ceithir caractaran smachd:
- Ainm: READ_REQ, Luach: 0x0A - Òrdugh bhon òstair chun FPGA gus sreath sgrìobhaidh a thòiseachadh gus a h-uile clàr a chuir air ais thairis air UART
- Ainm: START_WRITE, Luach: 0x0B – A’ comharrachadh toiseach sreath sgrìobhaidh gach taobh
- Ainm: END_WRITE, Luach: 0x0C – A’ comharrachadh deireadh sreath sgrìobhaidh gach taobh
- Ainm: Teicheadh, Luach: 0x0D - Caractar teiche air a chleachdadh gus faclan smachd a theicheadh
Stiùireadh airson cleachdadh bathar
A' ruith nan Sgriobturan
Gus an toradh a chleachdadh, dèan cinnteach gu bheil Python 3 agad air a chuir a-steach agus am pasgan Pyserial. Ruith na sgriobtaichean tro eadar-theangair Python 3.
A 'cruthachadh eadar-aghaidh gnàthaichte
Cleachd an sgriobt gen_uart_regs.py gus eadar-aghaidh àbhaisteach a ghineadh airson luachan clàr FPGA a leughadh agus a sgrìobhadh. Faodaidh tu co-dhèanamh chlàran cuir a-steach is toraidh agus seòrsaichean a shònrachadh nuair a bhios tu a’ gineadh an toraidh files.
Ag eadar-obrachadh le Clàran
Faodaidh tu leughadh bho no sgrìobhadh gu àireamh sam bith de chlàran anns an dealbhadh FPGA agad a’ cleachdadh a’ mhodal VHDL gineadh agus sgriobt Python. Faodaidh seòrsaichean leithid std_logic, std_logic_vector, soidhnichte no gun ainm a bhith aig na clàran ruigsinneach.
Ceadachas
- Tha an cead MIT a’ còmhdach riatanasan dlighe-sgrìobhaidh a’ chòd stòr agus teirmean cleachdaidh. Thoir sùil air an LICENSE.txt file anns an zip file airson mion-fhiosrachadh.
Clàr-atharrachaidh
- Tha na h-atharrachaidhean sin a’ toirt iomradh air a’ phròiseact files, agus tha an sgrìobhainn seo air ùrachadh a rèir sin
Tionndadh | Beachdan |
1.0.0 | Sgaoileadh tùsail |
1.0.1 | Bug iomraidh “fèin” a tha a dhìth nuair a thèid a thoirt a-steach mar uart_regs.py mar mhodal Python. Dh'fhàillig an clò-bhualadh sgrìobhaidh atharrachadh gu eisgeachd gu
seachain clò-bhualadh chun consol nuair a bhios tu a’ ruith mar mhodal a chaidh a thoirt a-steach. |
1.0.2 | Ceartaich mearachd Vivado [Synth 8-248] nuair nach eil modh a-muigh ann. |
1.0.3 | Fix Rabhadh Vivado Linter: Tha clàradh air a chomasachadh le
ath-shuidheachadh sioncronaich |
1.0.4 | Ceartaich cùis na h-oisein nuair a gheibh thu facal mì-chruthaichte leis a’ charactar teicheadh mar am byte mu dheireadh. Bhiodh an ath fhacal air chall cuideachd oir cha do ghlan sinn recv_data_prev_is_escape nuair a thill sinn gu IDLE.
Chan eil an sgriobt gen_uart_regs.py a-nis a’ ceadachadh ach ainmean reg gun samhail. |
Tuairisgeul
- Tha an sgrìobhainn seo a’ toirt cunntas air na leanas files agus pasganan:
- gen_uart_regs.py
- ghineadh/uart_regs.vhd
- ghineadh/uart_regs.py
- ginte/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/
- An sgriobt gen_uart_regs.py agus a 'toirt taic do VHDL files sa phròiseact seo a’ toirt cothrom dhut eadar-aghaidh gnàthaichte a ghineadh airson a bhith a’ leughadh agus a’ sgrìobhadh luachan clàr FPGA de dhiofar seòrsa is leud a’ cleachdadh UART.
- Faodaidh tu am modal VHDL gineadh agus sgriobt Python a chleachdadh gus leughadh bho no sgrìobhadh gu àireamh sam bith de chlàran nad dhealbhadh. Faodaidh na seòrsaichean std_logic, std_logic_vector, soidhnichte no gun ainm a bhith air clàran ruigsinneach UART.
- Faodaidh tu co-dhùnadh a dhèanamh air an dearbh cho-dhèanamh de chlàran cuir a-steach is toraidh agus seòrsaichean nuair a bhios tu a’ gineadh an toraidh files a’ cleachdadh an sgriobt gen_uart_regs.py.
- Chaidh na sgriobtaichean Python a chruthachadh gu ìre le cuideachadh bhon inneal fiosrachaidh fuadain ChatGPT, fhad ‘s a tha an còd VHDL air a dhèanamh le làimh.
Riatanasan
- Feumaidh na sgriobtaichean sa phròiseact seo a bhith air an ruith tro eadar-theangair Python 3 agus feumar am pasgan Pyserial a chuir a-steach.
- Faodaidh tu pyserial a stàladh tro Pip leis an àithne seo: stàlaich pìob pyserial
Pròtacal
- An VHDL files agus sgriobt Python a’ cleachdadh protocol frèam dàta le ceithir smachd
Ainm | Luach | Beachd |
READ_REQ | 0x0A | Òrdugh bhon aoigh chun FPGA gus sgrìobhadh a thòiseachadh
sreath gus a h-uile clàr a chuir air ais thairis air UART |
START_WRITE | 0x0B | A’ comharrachadh toiseach sreath sgrìobhaidh anns an dàrna cuid
stiùir |
END_WRITE | 0x0c | A’ comharrachadh deireadh sreath sgrìobhaidh gach taobh |
TEACHADH | 0x0d | Caractar teiche a chleachdar airson teicheadh bho gin dhe na faclan smachd, a' gabhail a-steach an caractar ESCAPE fhèin, nuair a nochdas iad mar dhàta eadar na comharran START_WRITE agus END_WRITE. |
Tha byte READ_REQ sam bith nach deach a chuir chun FPGA na stiùireadh airson a h-uile clàr (cuir a-steach agus toraidhean) ruigsinneach aig UART a chuir air ais chun òstair thairis air UART. Mar as trice cha tèid an àithne seo a thoirt seachad ach leis an sgriobt uart_regs.py.
Nuair a gheibh iad an àithne seo, freagraidh an FPGA le bhith a’ cur susbaint a h-uile clàr air ais chun aoigh. An toiseach, na comharran cuir a-steach, an uairsin na comharran toraidh. Mura h-eil na faid aca a’ cur suas ri iomadaidh de 8 buillean, bidh na pìosan ìosal den byte mu dheireadh air an lìonadh le neoni.
Bidh sreath sgrìobhaidh an-còmhnaidh a’ tòiseachadh leis an START_WRITE byte agus a’ crìochnachadh leis a’ bhiteadh END_WRITE. Thathas den bheachd gu bheil bytes sam bith eadar iad sin mar bytes dàta. Ma tha an aon luach aig bytes dàta sam bith ri caractar smachd, feumaidh am byte dàta a bhith air a theicheadh. Tha seo a’ ciallachadh a bhith a’ cur caractar ESCAPE a bharrachd ron byte dàta gus innse gur e dàta a th’ ann.
Ma ruigeas START_WRITE nach deach a shàbhaladh àite sam bith san t-sruth bytes, thathas den bheachd gur e toiseach sreath sgrìobhaidh a th' ann. Bidh am modal uart_regs_backend a’ cleachdadh an fhiosrachaidh seo gus ath-shioncronachadh air eagal ’s gun tèid an conaltradh a-mach à sioncranachadh.
gen_uart_regs.py
- Is e seo an sgriobt a dh’ fheumas tu tòiseachadh leis gus an eadar-aghaidh a ghineadh. Gu h-ìosal tha dealbh-sgrìn den chlàr cuideachaidh a gheibh thu le bhith a’ ruith: python gen_uart_regs.py -h
- Gus eadar-aghaidh àbhaisteach a ghineadh, feumaidh tu an sgriobt a ruith le gach clàr smachdachaidh UART a tha thu ag iarraidh air a liostadh mar argamaidean. Is e na seòrsaichean a tha rim faighinn std_logic, std_logic_vector, gun ainm-sgrìobhte agus soidhnigeadh.
- Tha am modh bunaiteach (stiùireadh) a-staigh agus 's e std_logic_vector an seòrsa bunaiteach mura h-eil an clàr fada: 1. An uair sin, bidh e bunaiteach gu std_logic.
- Mar sin, ma tha thu airson comharra cuir a-steach std_logic a chruthachadh, faodaidh tu gin de na h-argamaidean sin a chleachdadh:
- mo_sl=1
- my_sl = 1 : a-steach
- my_sl=1: ann an: std_logic
- Mar thoradh air na caochlaidhean gu h-àrd uile bidh an sgriobt a’ gineadh an comharra seo a tha ruigsinneach do UART:
- Feuch an ruith sinn an sgriobt le argamaidean gus eadar-aghaidh a ghineadh le grunn chlàran de dhiofar stiùiridhean, faid, agus seòrsaichean
Gineadh files
- Bheir ruith soirbheachail den sgriobt gen_uart_regs.py pasgan toraidh air ainmeachadh air a chruthachadh leis na trì files air an liostadh gu h-ìosal. Ma tha iad ann mu thràth, thèid an sgrìobhadh thairis orra.
- ghineadh/uart_regs.vhd
- ghineadh/uart_regs.py
- ginte/instantiation_template.vho
- uart_regs.vhd
- Is e seo am modal eadar-aghaidh gnàthaichte a chruthaich an sgriobt. Feumaidh tu a chuir sa bhad anns an dealbhadh agad, far am faigh e cothrom air na clàran a tha thu airson smachd a chumail le bhith a’ cleachdadh UART.
- Bidh a h-uile dad os cionn na h-earrainn “- clàran ruigsinneach UART” co-ionann airson gach modal uart_regs, fhad ‘s a tha co-dhèanamh comharran puirt fon loidhne sin an urra ris na h-argamaidean a chaidh a thoirt don sgriobt gineadair.
- Tha an liostadh gu h-ìosal a’ sealltainn an eintiteas airson a’ mhodal uart_regs mar thoradh air an àithne ghineadh example air a shealltainn anns an gen_uart_regs.py secti
- Chan fheum thu an comharra uart_rx a shioncronachadh, oir tha sin air a làimhseachadh san uart_rx. modal.
- Nuair a gheibh am modal iarrtas leughaidh, glacaidh e luachan gach comharra cuir a-steach is toraidh taobh a-staigh a’ chearcall gleoc gnàthach. Thèid an dealbh sa bhad an uairsin a chuir chun aoigh thairis air UART.
- Nuair a thachras sgrìobhadh, thèid a h-uile clàr toraidh ùrachadh leis na luachan ùra taobh a-staigh an aon chearcall cloc. Chan eil e comasach luachan comharran toraidh atharrachadh leotha fhèin.
- Ach, tha an sgriobt uart_regs.py a’ leigeil leis an neach-cleachdaidh dìreach toraidhean taghte ùrachadh le bhith a’ leughadh air ais luachan gnàthach a h-uile clàr an toiseach. Bidh e an uairsin a’ sgrìobhadh air ais a h-uile luach, a’ toirt a-steach an fheadhainn ùraichte.
- uart_regs.py
- An ginte/uart_regs.py file air a chruthachadh còmhla ris a’ mhodal uart_regs VHDL agus tha am fiosrachadh clàraidh àbhaisteach ann am bann-cinn an file. Leis an sgriobt seo, faodaidh tu leughadh bho no sgrìobhadh gu na clàran àbhaisteach agad gu furasta.
Clàr-taice cuideachaidh
- Taidhp python uart_regs.py -h gus an clàr cuideachaidh a chlò-bhualadh:
A 'suidheachadh port UART
- Tha roghainnean aig an sgriobt gus am port UART a shuidheachadh a’ cleachdadh an tionndadh -c. Bidh seo ag obair air Windows agus Linux. Suidhich e gu aon de na puirt a tha rim faighinn air an liostadh sa chlàr cuideachaidh. Gus port bunaiteach a shuidheachadh, faodaidh tu cuideachd an caochladair UART_PORT a dheasachadh anns an sgriobt uart_regs.py.
A’ clàradh chlàran
- Tha fiosrachadh mu mhapadh a’ chlàir air a chuir ann am bann-cinn an sgriobt uart_regs.py leis an sgriobt gen_uart_regs.py. Faodaidh tu na clàran a tha rim faighinn a liostadh leis an tionndadh -l, mar a chithear gu h-ìosal. Is e àithne ionadail a tha seo agus cha dèan e eadar-obrachadh leis an targaid FPGA
A 'sgrìobhadh gu clàran
- Faodaidh tu sgrìobhadh gu gin de na clàran modh a-muigh le bhith a’ cleachdadh an tionndadh -w. Thoir seachad ainm a’ chlàir air a leantainn le “=” agus an luach air a thoirt seachad mar luach dà-sheaghach, sia-thaobhach no deicheach, mar a chithear gu h-ìosal.
- Thoir an aire gu bheil buileachadh VHDL ag iarraidh air an sgriobt a h-uile clàr toraidh a sgrìobhadh aig an aon àm. Mar sin, mura sònraich thu seata iomlan de chlàran toraidh, nì an sgriobt an toiseach leughadh bhon targaid FPGA agus an uairsin cleachdaidh e na luachan sin airson an fheadhainn a tha a dhìth. Is e an toradh nach atharraich ach na clàran ainmichte
- Nuair a nì thu sgrìobhadh, atharraichidh a h-uile clàr ainmichte san aon chearcall gleoc, chan ann cho luath ‘s a gheibhear iad thairis air UART.
A’ leughadh chlàran
- Cleachd an tionndadh -r gus a h-uile luach clàraidh a leughadh, mar a chithear gu h-ìosal. Is e na luachan a tha comharraichte le buidhe an fheadhainn a dh’ atharraich sinn san sgrìobhadh roimhe example
- Tha a h-uile leughadh a’ sealltainn dealbh sa bhad de gach clàr cuir a-steach is toraidh. Tha iad uile sampair a stiùireadh tron aon chearcall cloc
Debugging
Cleachd an tionndadh -d le gin de na suidsichean eile ma dh'fheumas tu am protocol conaltraidh a dhì-cheadachadh. An uairsin, clò-bhuailidh an sgriobt a h-uile càil a chaidh a chuir agus a fhuaireadh bytes agus tag orra mas e caractaran smachd a th’ annta, mar a chithear gu h-ìosal.
A’ cleachdadh an eadar-aghaidh ann an sgriobtaichean Python eile
- Anns an sgriobt uart_regs.py tha clas UartRegs as urrainn dhut a chleachdadh gu furasta mar an eadar-aghaidh conaltraidh ann an sgriobtaichean Python àbhaisteach eile. Dìreach cuir a-steach a’ chlas, cruthaich rud dheth, agus tòisich a’ cleachdadh nan dòighean, mar a chithear gu h-ìosal.
- Thoir sùil air na docstrings ann an còd Python airson modh agus tuairisgeulan agus seòrsaichean luach tilleadh.
instantiation_template.vho
- Tha an teamplaid instantiation air a chruthachadh còmhla ris a’ mhodal uart_regs airson do ghoireasachd. Gus ùine còdaidh a shàbhaladh, faodaidh tu lethbhreac a dhèanamh den mhodal sa bhad agus dearbhaidhean comharran a-steach don dealbhadh agad.
RTL statach files
- Feumaidh tu na leanas a chur a-steach files sa phròiseact VHDL agad gus am bi iad air an cur ri chèile san aon leabharlann ris a’ mhodal uart_regs:
- rtl/uart_regs_backend.vhd
- rtl/uart_rx.vhd
- rtl/uart_tx.vhd
- Bidh am modal uart_regs_backend a’ buileachadh na h-innealan stàite crìochnachaidh a bhios a’ gleusadh a-steach agus a-mach dàta a’ chlàir. Bidh e a’ cleachdadh nam modalan uart_rx agus uart_tx gus conaltradh UART leis an òstair a làimhseachadh.
Pròiseactan demo
- Tha trì pròiseactan demo air an toirt a-steach don Zip file. Leigidh iad leat smachd a chumail air na h-iomaill air na bùird eadar-dhealaichte a bharrachd air beagan chlàran nas motha, a-staigh.
- Tha na pasganan demo a’ toirt a-steach uart_regs.vhd a chaidh a chruthachadh ro-làimh agus uart_regs.py files air an dèanamh gu sònraichte airson na dealbhaidhean sin.
ICEstick leusair
- Anns a ’phasgan demo / icecube2_icestick tha buileachadh demo ruigsinneachd clàr airson bòrd Lattice iCEstick FPGA.
- Gus ruith tron phròiseas buileachaidh, fosgail an demo/lattice_icestick/icecube2_proj/uart_regs_sbt.project file ann am bathar-bog dealbhaidh Lattice iCEcube2.
- Às deidh dhut am pròiseact a luchdachadh anns an iCEcube2 GUI, cliog Innealan → Ruith na h-uile gus mapa-bit prògramadh a ghineadh file.
- Faodaidh tu an inneal Lattice Diamond Programr Standalone a chleachdadh gus am FPGA a rèiteachadh leis a’ mhapa-bit a chaidh a chruthachadh file. Nuair a dh’ fhosglas Diamond Programmer, cliog Fosgail pròiseact prògramadair a tha ann mu thràth sa bhogsa deasbaid fàilte.
- Tagh pròiseact file lorgar anns an Zip: demo/lattice_icestick/diamond_programmer_project.xcf agus cliog air OK.
- Às deidh am pròiseact a luchdachadh, cliog air na trì dotagan anns an fhaidhle File Colbh ainm, mar a chithear gu h-àrd. Dèan brobhsadh gus am mapa bit a thaghadh file a chruthaich thu ann an iCEcube2
- demo/lattice_icestick/icecube2_proj/uart_regs_Implmnt/sbt/outputs/bitmap/top_icestick_bitmap.bin
- Mu dheireadh, leis a’ bhòrd iCEstick air a phlugadh a-steach do phort USB air a’ choimpiutair agad, tagh Dealbhadh → Prògram gus am flash SPI a phrògramadh agus an FPGA a rèiteachadh.
- Faodaidh tu a-nis a dhol air adhart gu clàran a leughadh agus a sgrìobhadh le bhith a’ cleachdadh an sgriobt demo/lattice_icestick/uart_regs.py mar a chaidh a mhìneachadh san roinn uart_regs.py.
Xilinx Digilent Arty A7-35T
- Gheibh thu am buileachadh demo airson pasgan measaidh Artix-7 35T Arty FPGA anns a’ phasgan demo/arty_a7_35.
- Fosgail Vivado agus gluais chun na chaidh a thoirt a-mach files a’ cleachdadh a’ chonsail Tcl a lorgar aig bonn an eadar-aghaidh GUI. Taidhp an àithne seo gus am pasgan pròiseact demo a chuir a-steach:
- cd /demo/arty_a7_35/vivado_proj/
- Cuir an gnìomh an sgriobt create_vivado_proj.tcl Tcl gus am pròiseact Vivado ath-nuadhachadh:
- stòr ./create_vivado_proj.tcl
- Cliog air Generate Bitstream anns a’ bhàr-thaobh gus ruith tro na ceumannan buileachaidh gu lèir agus cruthaich am prògramadh bitstream file.
- Mu dheireadh, cliog air Manaidsear Bathar-cruaidh Fosgailte agus prògram am FPGA tron GUI.
- Faodaidh tu a-nis a dhol air adhart gu bhith a’ leughadh agus a’ sgrìobhadh chlàran le bhith a’ cleachdadh an sgriobt demo/arty_a7_35/uart_regs.py mar a chaidh a mhìneachadh san roinn uart_regs.py.
Xilinx Digilent Arty S7-50
- Gheibh thu am buileachadh demo airson bòrd leasachaidh Arty S7: Spartan-7 FPGA anns a’ phasgan demo/arty_s7_50.
- Fosgail Vivado agus gluais chun na chaidh a thoirt a-mach files a’ cleachdadh a’ chonsail Tcl a lorgar aig bonn an eadar-aghaidh GUI. Taidhp an àithne seo gus am pasgan pròiseact demo a chuir a-steach:
- cd /demo/arty_s7_50/vivado_proj/
- Cuir an gnìomh an sgriobt create_vivado_proj.tcl Tcl gus am pròiseact Vivado ath-nuadhachadh:
- stòr ./create_vivado_proj.tcl
- Cliog air Generate Bitstream anns a’ bhàr-thaobh gus ruith tro na ceumannan buileachaidh gu lèir agus cruthaich am prògramadh bitstream file.
- Mu dheireadh, cliog air Manaidsear Bathar-cruaidh Fosgailte agus prògram am FPGA tron GUI.
- Faodaidh tu a-nis a dhol air adhart gu bhith a’ leughadh agus a’ sgrìobhadh chlàran le bhith a’ cleachdadh an sgriobt demo/arty_s7_50/uart_regs.py mar a chaidh a mhìneachadh san roinn uart_regs.py.
Buileachadh
- Chan eil riatanasan sònraichte ann airson buileachadh.
Cuingeachaidhean
- Chan eil feum air cuingealachaidhean tìm sònraichte airson an dealbhadh seo oir tha an eadar-aghaidh UART slaodach agus air a làimhseachadh mar eadar-aghaidh asyncronach.
- Tha an cuir a-steach uart_rx don mhodal uart_regs air a shioncronachadh taobh a-staigh modal uart_rx. Mar sin, chan fheum e a bhith air a shioncronachadh sa mhodal àrd-ìre.
Cùisean aithnichte
- Is dòcha gum feum thu am modal ath-shuidheachadh mus gabh a chleachdadh, a rèir a bheil an ailtireachd FPGA agad a’ toirt taic do luachan clàr bunaiteach.
Tuilleadh fiosrachaidh
- Dlighe-sgrìobhaidh VHDLwhiz.com
Ceistean Cumanta
C: Dè an adhbhar a tha aig gineadair eadar-aghaidh deuchainn UART?
A: Tha gineadair eadar-aghaidh deuchainn UART a’ ceadachadh eadar-aghaidh àbhaisteach a chruthachadh gus eadar-obrachadh le luachan clàr FPGA a’ cleachdadh conaltradh UART.
C: Ciamar a stàlaicheas mi am pasgan Pyserial?
A: Faodaidh tu Pyserial a chuir a-steach tro Pip a ’cleachdadh an àithne: pip install pyserial
Sgrìobhainnean/Goireasan
![]() |
Gineadair eadar-aghaidh deuchainn VHDLwhiz UART [pdfLeabhar-làimhe an neach-cleachdaidh Gineadair eadar-aghaidh deuchainn UART, gineadair eadar-aghaidh deuchainn, gineadair eadar-aghaidh, gineadair |