Generadur Rhyngwyneb Prawf VHDLwhiz UART
Gwybodaeth Cynnyrch
Manylebau:
- Enw'r Cynnyrch: VHDL yn cofrestru generadur rhyngwyneb prawf UART
- Fersiwn: 1.0.4
- Dyddiad: Awst 18, 2024
- Awdur: Jonas Julian Jensen
- Cynnyrch URL: Cyswllt Cynnyrch
- E-bost cyswllt: jonas@vhdlwhiz.com
Disgrifiad
Mae'r cynnyrch hwn yn caniatáu ichi gynhyrchu rhyngwynebau arfer ar gyfer darllen ac ysgrifennu gwerthoedd cofrestr FPGA gan ddefnyddio UART. Mae'r modiwl VHDL a gynhyrchir a'r sgript Python yn darparu'r gallu i ryngweithio â gwahanol fathau o gofrestrau yn eich dyluniad FPGA.
Gofynion
- Dehonglydd Python 3
- pecyn pyserial
Protocol
Mae'r cynnyrch yn defnyddio protocol fframio data gyda phedwar nod rheoli:
- Enw: READ_REQ, Gwerth: 0x0A - Gorchymyn gan y gwesteiwr i'r FPGA i gychwyn dilyniant ysgrifennu i anfon pob cofrestr yn ôl dros UART
- Enw: START_WRITE, Gwerth: 0x0B – Yn nodi dechrau dilyniant ysgrifennu i'r naill gyfeiriad neu'r llall
- Enw: END_WRITE, Gwerth: 0x0C – Marcio diwedd dilyniant ysgrifennu i'r naill gyfeiriad neu'r llall
- Enw: DIANC, Gwerth: 0x0D - Cymeriad dianc a ddefnyddir ar gyfer dianc rhag geiriau rheoli
Cyfarwyddiadau Defnydd Cynnyrch
Rhedeg y Sgriptiau
I ddefnyddio'r cynnyrch, sicrhewch fod Python 3 wedi'i osod a'r pecyn Pyserial gennych. Rhedeg y sgriptiau trwy ddehonglydd Python 3.
Cynhyrchu Rhyngwynebau Personol
Defnyddiwch y sgript gen_uart_regs.py i gynhyrchu rhyngwynebau arfer ar gyfer darllen ac ysgrifennu gwerthoedd cofrestr FPGA. Gallwch nodi cyfansoddiad cofrestri mewnbwn ac allbwn a mathau wrth gynhyrchu'r allbwn files.
Rhyngweithio â Chofrestrau
Gallwch ddarllen neu ysgrifennu at unrhyw nifer o gofrestrau yn eich dyluniad FPGA gan ddefnyddio'r modiwl VHDL a gynhyrchir a sgript Python. Gall y cofrestri hygyrch fod â mathau megis std_logic, std_logic_vector, wedi'u llofnodi, neu heb eu llofnodi.
Trwydded
- Mae'r drwydded MIT yn cwmpasu gofynion hawlfraint a thelerau defnyddio'r cod ffynhonnell. Cyfeirier at y TRWYDDED.txt file yn y Zip file am fanylion.
Newidlog
- Mae'r newidiadau hyn yn cyfeirio at y prosiect files, a chaiff y ddogfen hon ei diweddaru yn unol â hynny
Fersiwn | Sylwadau |
1.0.0 | Rhyddhad cychwynnol |
1.0.1 | Bug cyfeirio «hunan" sefydlog ar goll wrth fewnforio fel uart_regs.py fel modiwl Python. Wedi newid allbrint methu ysgrifennu i eithriad i
osgoi argraffu i'r consol wrth redeg fel modiwl wedi'i fewnforio. |
1.0.2 | Trwsiwch am wall Vivado [Synth 8-248] pan nad oes rheoliadau modd allan. |
1.0.3 | Trwsio rhybudd Vivado Linter: Cofrestr wedi galluogi gyrru gan
ailosod cydamserol |
1.0.4 | Trwsiwch y cas gornel wrth dderbyn gair wedi'i gamffurfio gyda'r nod dianc fel y beit olaf. Byddai'r gair nesaf hefyd yn cael ei golli oherwydd ni wnaethom glirio recv_data_prev_is_escape wrth ddychwelyd i IDLE.
Mae'r sgript gen_uart_regs.py bellach yn caniatáu dim ond enwau reg unigryw. |
Disgrifiad
- Mae'r ddogfen hon yn disgrifio'r canlynol files a ffolderi:
- gen_uart_regs.py
- generated/uart_regs.vhd
- generated/uart_regs.py
- Cynhyrchwyd/instantiation_template.vho
- rtl/uart_regs_backend.vhd
- rtl/uart_rx.vhd
- rtl/uart_tx.vhd
- demo/lattice_stick/
- demo/xilinx_arty_a7_35/
- demo/xilinx_arty_s7_50/
- Y sgript gen_uart_regs.py a VHDL ategol files yn y prosiect hwn yn eich galluogi i gynhyrchu rhyngwynebau arfer ar gyfer darllen ac ysgrifennu gwerthoedd cofrestr FPGA o wahanol fathau a lled gan ddefnyddio UART.
- Gallwch ddefnyddio'r modiwl VHDL a gynhyrchir a'r sgript Python i ddarllen neu ysgrifennu at unrhyw nifer o gofrestrau yn eich dyluniad. Gall cofrestri hygyrch UART gynnwys y mathau std_logic, std_logic_vector, wedi'u llofnodi, neu heb eu llofnodi.
- Gallwch benderfynu ar union gyfansoddiad cofrestri mewnbwn ac allbwn a mathau wrth gynhyrchu'r allbwn files defnyddio'r sgript gen_uart_regs.py.
- Crëwyd y sgriptiau Python yn rhannol gyda chymorth offeryn deallusrwydd artiffisial ChatGPT, tra bod y cod VHDL wedi'i grefftio â llaw.
Gofynion
- Rhaid rhedeg y sgriptiau yn y prosiect hwn trwy ddehonglydd Python 3 a rhaid gosod y pecyn Pyserial.
- Gallwch chi osod pyserial trwy Pip gan ddefnyddio'r gorchymyn hwn: pip install pyserial
Protocol
- Y VHDL fileMae sgript s a Python yn defnyddio protocol fframio data gyda phedwar rheolaeth
Enw | Gwerth | Sylw |
READ_REQ | 0x0A | Gorchymyn gan y gwesteiwr i'r FPGA i gychwyn ysgrifennu
dilyniant i anfon pob cofrestr yn ôl dros UART |
START_WRITE | 0x0B | Yn nodi dechrau dilyniant ysgrifennu yn y naill neu'r llall
cyfeiriad |
END_WRITE | 0x0c | Yn marcio diwedd dilyniant ysgrifennu i'r naill gyfeiriad neu'r llall |
DIANC | 0x0D | Nod dianc a ddefnyddir ar gyfer dianc unrhyw un o'r geiriau rheoli, gan gynnwys y nod ESCAPE ei hun, pan fyddant yn ymddangos fel data rhwng y marcwyr START_WRITE a END_WRITE. |
Mae unrhyw beit READ_REQ sydd heb ei ddianc a anfonir i'r FPGA yn gyfarwyddyd i anfon ei holl gofrestrau hygyrch UART (mewnbynnau ac allbynnau) yn ôl i'r gwesteiwr dros UART. Fel arfer dim ond y sgript uart_regs.py sy'n cyhoeddi'r gorchymyn hwn.
Ar ôl derbyn y gorchymyn hwn, bydd yr FPGA yn ymateb trwy anfon cynnwys pob cofrestr yn ôl i'r gwesteiwr. Yn gyntaf, y signalau mewnbwn, yna'r signalau allbwn. Os nad yw eu hyd yn adio i luosrif o 8 did, bydd darnau isaf y beit olaf yn sero wedi'u padio.
Mae dilyniant ysgrifennu bob amser yn dechrau gyda'r START_WRITE beit ac yn gorffen gyda'r END_WRITE beit. Mae unrhyw beit rhwng y rhain yn cael eu hystyried yn beit data. Os oes gan unrhyw beit data yr un gwerth â nod rheoli, rhaid dianc rhag y beit data. Mae hyn yn golygu anfon nod ESCAPE ychwanegol cyn y beit data i ddangos mai data ydyw mewn gwirionedd.
Os bydd START_WRITE sydd heb ei ddianc yn cyrraedd unrhyw le yn y llif o beit, fe'i hystyrir yn ddechrau dilyniant ysgrifennu. Mae'r modiwl uart_regs_backend yn defnyddio'r wybodaeth hon i ail-gydamseru rhag ofn i'r cyfathrebiad fynd allan o gysoni.
gen_uart_regs.py
- Dyma'r sgript y mae'n rhaid i chi ddechrau ag ef i gynhyrchu'r rhyngwyneb. Isod mae llun o'r ddewislen help y gallwch ei chael trwy redeg: python gen_uart_regs.py -h
- I gynhyrchu rhyngwyneb wedi'i deilwra, rhaid i chi redeg y sgript gyda phob un o'ch cofrestri rheoladwy UART dymunol wedi'u rhestru fel dadleuon. Y mathau sydd ar gael yw std_logic, std_logic_vector, heb eu llofnodi, a'u llofnodi.
- Mae'r modd rhagosodedig (cyfeiriad) i mewn a'r math rhagosodedig yw std_logic_vector oni bai bod y gofrestr o hyd: 1. Yna, bydd yn rhagosod i std_logic.
- Felly, os ydych am greu signal mewnbwn std_logic, gallwch ddefnyddio unrhyw un o'r dadleuon hyn:
- fy_sl=1
- my_sl=1 : i mewn
- my_sl=1: yn: std_logic
- Bydd pob un o'r amrywiadau uchod yn arwain at y sgript yn cynhyrchu'r signal hwn sy'n hygyrch i UART:
- Gadewch i ni redeg y sgript gyda dadleuon i gynhyrchu rhyngwyneb gyda sawl cofrestr o wahanol gyfeiriadau, hyd a mathau
Cynhyrchwyd files
- Bydd rhediad llwyddiannus o'r sgript gen_uart_regs.py yn cynhyrchu ffolder allbwn a enwir a gynhyrchir gyda'r tri files a restrir isod. Os ydynt yn bodoli eisoes, byddant yn cael eu trosysgrifo.
- generated/uart_regs.vhd
- generated/uart_regs.py
- Cynhyrchwyd/instantiation_template.vho
- uart_regs.vhd
- Dyma'r modiwl rhyngwyneb personol a gynhyrchir gan y sgript. Mae angen i chi ei roi ar unwaith yn eich dyluniad, lle gall gael mynediad i'r cofrestrau rydych chi am eu rheoli gan ddefnyddio UART.
- Bydd popeth uwchben yr adran “– cofrestri hygyrch UART” yn union yr un fath ar gyfer pob modiwl uart_regs, tra bod cyfansoddiad signalau porthladd o dan y llinell honno yn dibynnu ar y dadleuon a roddir i'r sgript generadur.
- Mae'r rhestriad isod yn dangos yr endid ar gyfer y modiwl uart_regs sy'n deillio o'r gorchymyn cynhyrchu example a ddangosir yn y gen_uart_regs.py secti
- Nid oes angen i chi gydamseru'r signal uart_rx, gan fod hynny'n cael ei drin yn yr uart_rx. modiwl.
- Pan fydd y modiwl yn derbyn cais darllen, bydd yn dal gwerthoedd yr holl signalau mewnbwn ac allbwn o fewn y cylch cloc cyfredol. Yna anfonir y ciplun ar unwaith at y gwesteiwr dros UART.
- Pan fydd ysgrifen yn digwydd, mae pob cofrestr allbwn yn cael ei diweddaru gyda'r gwerthoedd newydd o fewn yr un cylch cloc. Nid yw'n bosibl newid gwerthoedd signal allbwn yn unigol.
- Fodd bynnag, mae'r sgript uart_regs.py yn caniatáu i'r defnyddiwr ddiweddaru allbynnau dethol yn unig trwy ddarllen yn ôl yn gyntaf werthoedd cyfredol pob cofrestr. Yna mae'n ysgrifennu'r holl werthoedd yn ôl, gan gynnwys y rhai wedi'u diweddaru.
- uart_regs.py
- Mae'r generated/uart_regs.py file yn cael ei gynhyrchu ynghyd â'r modiwl VHDL uart_regs ac mae'n cynnwys y wybodaeth gofrestr arferol ym mhennyn y file. Gyda'r sgript hon, gallwch ddarllen neu ysgrifennu at eich cofrestri arfer yn rhwydd.
Dewislen cymorth
- Teipiwch python uart_regs.py -h i argraffu'r ddewislen help:
Gosod y porthladd UART
- Mae gan y sgript opsiynau i osod y porthladd UART gan ddefnyddio'r switsh -c. Mae hyn yn gweithio ar Windows a Linux. Gosodwch ef i un o'r porthladdoedd sydd ar gael a restrir yn y ddewislen cymorth. I osod porth rhagosodedig, gallwch hefyd olygu'r newidyn UART_PORT yn y sgript uart_regs.py.
Rhestru cofrestrau
- Rhoddir gwybodaeth am fapio'r gofrestr ym mhennyn y sgript uart_regs.py gan y sgript gen_uart_regs.py. Gallwch restru'r cofrestrau sydd ar gael gyda'r switsh -l, fel y gwelir isod. Gorchymyn lleol yw hwn ac ni fydd yn rhyngweithio â'r FPGA targed
Ysgrifennu i gofrestri
- Gallwch ysgrifennu at unrhyw un o'r cofrestrau modd allan trwy ddefnyddio'r switsh -w. Rhowch enw'r gofrestr ac yna “=” a'r gwerth a roddir fel gwerth deuaidd, hecsadegol neu ddegol, fel y dangosir isod.
- Sylwch fod gweithrediad VHDL yn ei gwneud yn ofynnol i'r sgript ysgrifennu'r holl gofrestrau allbwn ar yr un pryd. Felly, os na fyddwch yn nodi set gyflawn o gofrestrau allbwn, bydd y sgript yn perfformio darlleniad o'r FPGA targed yn gyntaf ac yna'n defnyddio'r gwerthoedd hynny ar gyfer y rhai coll. Y canlyniad fydd mai dim ond y cofrestrau penodedig sy'n newid
- Pan fyddwch yn perfformio ysgrifen, bydd yr holl gofrestrau penodedig yn newid yn ystod yr un cylch cloc, nid cyn gynted ag y cânt eu derbyn dros UART.
Darllen cofrestri
- Defnyddiwch y switsh -r i ddarllen holl werthoedd y gofrestr, fel y dangosir isod. Y gwerthoedd sydd wedi'u marcio mewn melyn yw'r rhai y gwnaethom eu newid yn yr ysgrifen flaenorolample
- Mae pob darlleniad yn dangos ciplun ar unwaith o'r holl gofrestrau mewnbwn ac allbwn. Maent i gyd yn samparwain yn ystod yr un cylch cloc
Dadfygio
Defnyddiwch y switsh -d gydag unrhyw un o'r switshis eraill os oes angen dadfygio'r protocol cyfathrebu. Yna, bydd y sgript yn argraffu'r holl bytes a anfonwyd ac a dderbyniwyd tag nhw os ydyn nhw'n nodau rheoli, fel y dangosir isod.
Defnyddio'r rhyngwyneb mewn sgriptiau Python eraill
- Mae'r sgript uart_regs.py yn cynnwys dosbarth UartRegs y gallwch ei ddefnyddio'n hawdd fel y rhyngwyneb cyfathrebu mewn sgriptiau Python arferol eraill. Yn syml, mewnforiwch y dosbarth, crëwch wrthrych ohono, a dechreuwch ddefnyddio'r dulliau, fel y dangosir isod.
- Cyfeiriwch at y docstrings yn y cod Python ar gyfer dull a disgrifiadau a mathau o werth dychwelyd.
instantiation_template.vho
- Mae'r templed instantiation yn cael ei gynhyrchu ynghyd â'r modiwl uart_regs er hwylustod i chi. Er mwyn arbed amser codio, gallwch gopïo'r datganiadau amrantiad modiwl a signal i'ch dyluniad.
RTL statig files
- Mae angen i chi gynnwys y canlynol files yn eich prosiect VHDL fel eu bod yn cael eu crynhoi yn yr un llyfrgell â'r modiwl uart_regs:
- rtl/uart_regs_backend.vhd
- rtl/uart_rx.vhd
- rtl/uart_tx.vhd
- Mae'r modiwl uart_regs_backend yn gweithredu'r peiriannau cyflwr meidraidd sy'n clocio i mewn ac allan o ddata'r gofrestr. Mae'n defnyddio'r modiwlau uart_rx ac uart_tx i drin y cyfathrebu UART gyda'r gwesteiwr.
Prosiectau demo
- Mae tri phrosiect demo wedi'u cynnwys yn y Zip file. Maent yn gadael i chi reoli'r perifferolion ar y gwahanol fyrddau yn ogystal ag ychydig o gofrestrau mewnol mwy.
- Mae'r ffolderi demo yn cynnwys uart_regs.vhd a gynhyrchwyd ymlaen llaw ac uart_regs.py files gwneud yn benodol ar gyfer y dyluniadau hynny.
icestick delltog
- Mae'r ffolder demo/icecube2_icestick yn cynnwys gweithrediad demo mynediad cofrestr ar gyfer bwrdd FPGA Lattice ICEstick.
- I redeg drwy'r broses weithredu, agorwch y demo/lattice_icestick/icecube2_proj/uart_regs_sbt.project file yn y meddalwedd dylunio Lattice ICEcube2.
- Ar ôl llwytho'r prosiect yn y GUI iCEcube2, cliciwch Offer→Rhedeg Pawb i gynhyrchu'r map didau rhaglennu file.
- Gallwch ddefnyddio offeryn Standalone Rhaglennydd Lattice Diamond i ffurfweddu'r FPGA gyda'r map didau a gynhyrchir file. Pan fydd Rhaglennydd Diamond yn agor, cliciwch Agor prosiect rhaglennydd presennol yn y blwch deialog croeso.
- Dewiswch brosiect file a geir yn y Zip: demo/lattice_icestick/diamond_programmer_project.xcf a chliciwch ar OK.
- Ar ôl llwythi'r prosiect, cliciwch ar y tri dot yn y File Colofn enw, fel y dangosir uchod. Pori i ddewis y map didau file a gynhyrchwyd gennych yn ICEcube2
- demo/lattice_icestick/icecube2_proj/uart_regs_Implmnt/sbt/outputs/bitmap/top_icestick_bitmap.bin
- Yn olaf, gyda'r bwrdd ICEstick wedi'i blygio i mewn i borth USB ar eich cyfrifiadur, dewiswch Dylunio → Rhaglen i raglennu'r fflach SPI a ffurfweddu'r FPGA.
- Gallwch nawr fynd ymlaen i ddarllen ac ysgrifennu cofrestri trwy ddefnyddio'r sgript demo/lattice_icestick/uart_regs.py fel y disgrifir yn yr adran uart_regs.py.
Xilinx Arty Digil A7-35T
- Gallwch ddod o hyd i'r gweithrediad demo ar gyfer pecyn gwerthuso Artix-7 35T Arty FPGA yn y ffolder demo/arty_a7_35.
- Agor Vivado a llywio i'r echdynnwyd files defnyddio'r consol Tcl a geir ar waelod y rhyngwyneb GUI. Teipiwch y gorchymyn hwn i fynd i mewn i'r ffolder prosiect demo:
- cd /demo/arty_a7_35/vivado_proj/
- Gweithredwch y sgript Tcl create_vivado_proj.tcl i adfywio'r prosiect Vivado:
- ffynhonnell ./create_vivado_proj.tcl
- Cliciwch Generate Bitstream yn y bar ochr i redeg trwy'r holl gamau gweithredu a chynhyrchu'r llif did rhaglennu file.
- Yn olaf, cliciwch Rheolwr Caledwedd Agored a rhaglennu'r FPGA trwy'r GUI.
- Gallwch nawr fynd ymlaen i ddarllen ac ysgrifennu cofrestri trwy ddefnyddio'r sgript demo/arty_a7_35/uart_regs.py fel y disgrifir yn yr adran uart_regs.py.
Xilinx Arty Ddiwyd S7-50
- Gallwch ddod o hyd i'r gweithrediad demo ar gyfer bwrdd datblygu Arty S7: Spartan-7 FPGA yn y ffolder demo/arty_s7_50.
- Agor Vivado a llywio i'r echdynnwyd files defnyddio'r consol Tcl a geir ar waelod y rhyngwyneb GUI. Teipiwch y gorchymyn hwn i fynd i mewn i'r ffolder prosiect demo:
- cd /demo/arty_s7_50/vivado_proj/
- Gweithredwch y sgript Tcl create_vivado_proj.tcl i adfywio'r prosiect Vivado:
- ffynhonnell ./create_vivado_proj.tcl
- Cliciwch Generate Bitstream yn y bar ochr i redeg trwy'r holl gamau gweithredu a chynhyrchu'r llif did rhaglennu file.
- Yn olaf, cliciwch Rheolwr Caledwedd Agored a rhaglennu'r FPGA trwy'r GUI.
- Gallwch nawr fynd ymlaen i ddarllen ac ysgrifennu cofrestri trwy ddefnyddio'r sgript demo/arty_s7_50/uart_regs.py fel y disgrifir yn yr adran uart_regs.py.
Gweithredu
- Nid oes unrhyw ofynion gweithredu penodol.
Cyfyngiadau
- Nid oes angen unrhyw gyfyngiadau amser penodol ar gyfer y dyluniad hwn oherwydd bod y rhyngwyneb UART yn araf ac yn cael ei drin fel rhyngwyneb asyncronig.
- Mae mewnbwn uart_rx i'r modiwl uart_regs wedi'i gysoni o fewn y modiwl uart_rx. Felly, nid oes angen ei gysoni yn y modiwl lefel uchaf.
Materion hysbys
- Efallai y bydd angen i chi ailosod y modiwl cyn y gellir ei ddefnyddio, yn dibynnu a yw eich pensaernïaeth FPGA yn cefnogi gwerthoedd cofrestr rhagosodedig.
Mwy o wybodaeth
- Hawlfraint VHDLwhiz.com
Cwestiynau Cyffredin
C: Beth yw pwrpas y generadur rhyngwyneb prawf UART?
A: Mae'r generadur rhyngwyneb prawf UART yn caniatáu ar gyfer creu rhyngwynebau arferiad i ryngweithio â gwerthoedd cofrestr FPGA gan ddefnyddio cyfathrebu UART.
C: Sut mae gosod y pecyn Pyserial?
A: Gallwch chi osod Pyserial trwy Pip gan ddefnyddio'r gorchymyn: pip install pyserial
Dogfennau / Adnoddau
![]() |
Generadur Rhyngwyneb Prawf VHDLwhiz UART [pdfLlawlyfr Defnyddiwr Generadur Rhyngwyneb Prawf UART, Generadur Rhyngwyneb Prawf, Generadur Rhyngwyneb, Generadur |