VHDLwhiz-logo

Generadur Rhyngwyneb Prawf VHDLwhiz UART

VHDLwhiz-UART-Prawf-Rhyngwyneb-Generator-CYNNYRCH

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 -hVHDLwhiz-UART-Prawf-Rhyngwyneb-Generator-FIG-1
  • 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:VHDLwhiz-UART-Prawf-Rhyngwyneb-Generator-FIG-2
  • Gadewch i ni redeg y sgript gyda dadleuon i gynhyrchu rhyngwyneb gyda sawl cofrestr o wahanol gyfeiriadau, hyd a mathauVHDLwhiz-UART-Prawf-Rhyngwyneb-Generator-FIG-3

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 sectiVHDLwhiz-UART-Prawf-Rhyngwyneb-Generator-FIG-4
  • 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:VHDLwhiz-UART-Prawf-Rhyngwyneb-Generator-FIG-5

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 targedVHDLwhiz-UART-Prawf-Rhyngwyneb-Generator-FIG-6

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.VHDLwhiz-UART-Prawf-Rhyngwyneb-Generator-FIG-7
  • 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 flaenorolampleVHDLwhiz-UART-Prawf-Rhyngwyneb-Generator-FIG-8
  • 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.VHDLwhiz-UART-Prawf-Rhyngwyneb-Generator-FIG-9

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.VHDLwhiz-UART-Prawf-Rhyngwyneb-Generator-FIG-10
  • 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.VHDLwhiz-UART-Prawf-Rhyngwyneb-Generator-FIG-11VHDLwhiz-UART-Prawf-Rhyngwyneb-Generator-FIG-12

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.VHDLwhiz-UART-Prawf-Rhyngwyneb-Generator-FIG-13
  • 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

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

Cyfeiriadau

Gadael sylw

Ni fydd eich cyfeiriad e-bost yn cael ei gyhoeddi. Mae meysydd gofynnol wedi'u marcio *