VHDLwhiz UART Test Interface Ġeneratur
Informazzjoni dwar il-Prodott
Speċifikazzjonijiet:
- Isem tal-Prodott: VHDL jirreġistra l-ġeneratur tal-interface tat-test UART
- Verżjoni: 1.0.4
- Data: 18 ta’ Awwissu, 2024
- Awtur: Jonas Julian Jensen
- Prodott URL: Link tal-Prodott
- Imejl ta' kuntatt: jonas@vhdlwhiz.com
Deskrizzjoni
Dan il-prodott jippermettilek li tiġġenera interfaces tad-dwana għall-qari u l-kitba tal-valuri tar-reġistru FPGA bl-użu ta 'UART. Il-modulu VHDL iġġenerat u l-iskrittura Python jipprovdu l-abbiltà li jinteraġixxu ma 'diversi tipi ta' reġistri fid-disinn FPGA tiegħek.
Rekwiżiti
- Interpretu Python 3
- pakkett pyserial
Protokoll
Il-prodott juża protokoll tal-qafas tad-dejta b'erba 'karattri ta' kontroll:
- Isem: READ_REQ, Valur: 0x0A – Kmand mill-host għall-FPGA biex tibda sekwenza ta’ kitba biex tibgħat ir-reġistri kollha lura fuq UART
- Isem: START_EWITE, Valur: 0x0B – Jimmarka l-bidu ta’ sekwenza ta’ kitba f’kull direzzjoni
- Isem: END_WITE, Valur: 0x0C – Jimmarka t-tmiem ta’ sekwenza ta’ kitba f’kull direzzjoni
- Isem: ĦARBA, Valur: 0x0D – Karattru ta’ ħarba użat biex jaħrab kliem ta’ kontroll
Istruzzjonijiet għall-Użu tal-Prodott
Tmexxi l-Iskripts
Biex tuża l-prodott, kun żgur li għandek Python 3 installat u l-pakkett Pyserial. Mexxi l-iskripts permezz ta’ interpretu Python 3.
Ġenerazzjoni ta 'Interfaces Custom
Uża l-iskrittura gen_uart_regs.py biex tiġġenera interfaces tad-dwana għall-qari u l-kitba tal-valuri tar-reġistru FPGA. Tista' tispeċifika l-kompożizzjoni tar-reġistri u t-tipi ta' input u output meta tiġġenera l-output files.
Interazzjoni mar-Reġistri
Tista 'taqra minn jew tikteb fi kwalunkwe numru ta' reġistri fid-disinn FPGA tiegħek billi tuża l-modulu VHDL iġġenerat u l-iskrittura Python. Ir-reġistri aċċessibbli jista' jkollhom tipi bħal std_logic, std_logic_vector, iffirmati, jew mhux iffirmati.
Liċenzja
- Il-liċenzja tal-MIT tkopri r-rekwiżiti tad-drittijiet tal-awtur u t-termini tal-użu tal-kodiċi tas-sors. Irreferi għal LICENSE.txt file fil-Zip file għad-dettalji.
Changelog
- Dawn il-bidliet jirreferu għall-proġett files, u dan id-dokument huwa aġġornat kif xieraq
Verżjoni | Rimarki |
1.0.0 | Rilaxx inizjali |
1.0.1 | Iffissat il-bug ta' referenza "awto" nieqes meta jimporta bħala uart_regs.py bħala modulu Python. Inbidel l-istampar fallut tal-kitba għal eċċezzjoni għal
evita li tipprintja fuq il-console meta taħdem bħala modulu importat. |
1.0.2 | Waħħal għall-iżball ta' Vivado [Synth 8-248] meta ma jkunx hemm regs tal-modalità barra. |
1.0.3 | Waħħal Vivado Linter twissija: Reġistru għandha ppermettiet misjuqa minn
reset sinkroniku |
1.0.4 | Waħħal il-każ tal-kantuniera meta tirċievi kelma ħażina bil-karattru escape bħala l-aħħar byte. Il-kelma li jmiss tintilef ukoll għaliex aħna ma ċċaratx recv_data_prev_is_escape meta rritornaw għal IDLE.
L-iskrittura gen_uart_regs.py issa tippermetti biss ismijiet reg uniċi. |
Deskrizzjoni
- Dan id-dokument jiddeskrivi dan li ġej files u folders:
- gen_uart_regs.py
- generated/uart_regs.vhd
- generated/uart_regs.py
- generated/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/
- L-iskrittura gen_uart_regs.py u VHDL ta' appoġġ files f'dan il-proġett jippermettilek li tiġġenera interfaces tad-dwana għall-qari u l-kitba tal-valuri tar-reġistru FPGA ta 'diversi tipi u wisgħat bl-użu ta' UART.
- Tista 'tuża l-modulu VHDL iġġenerat u l-iskrittura Python biex taqra minn jew tikteb fi kwalunkwe numru ta' reġistri fid-disinn tiegħek. Ir-reġistri aċċessibbli għall-UART jista' jkollhom it-tipi std_logic, std_logic_vector, iffirmati, jew mhux iffirmati.
- Tista' tiddeċiedi dwar il-kompożizzjoni preċiża tar-reġistri u t-tipi ta' input u output meta tiġġenera l-output files tuża l-iskrittura gen_uart_regs.py.
- L-iskripts Python inħolqu parzjalment bl-għajnuna tal-għodda tal-intelliġenza artifiċjali ChatGPT, filwaqt li l-kodiċi VHDL huwa magħmul bl-idejn.
Rekwiżiti
- L-iskripts f'dan il-proġett iridu jitmexxew permezz ta' interpretu Python 3 u l-pakkett Pyserial irid jiġi installat.
- Tista' tinstalla pyserial permezz ta' Pip billi tuża dan il-kmand: pip install pyserial
Protokoll
- Il-VHDL files u l-iskrittura Python jużaw protokoll tad-data-framing b'erba 'kontroll
Isem | Valur | Ikkummenta |
READ_REQ | 0x0A | Kmand mill-host lill-FPGA biex tibda kitba
sekwenza biex tibgħat ir-reġistri kollha lura fuq UART |
START_EWITE | 0x0B | Jimmarka l-bidu ta’ sekwenza ta’ kitba fi kwalunkwe waħda
direzzjoni |
END_WITE | 0x0C | Jimmarka t-tmiem ta' sekwenza ta' kitba f'kull direzzjoni |
ĦARBA | 0x0D | Karattru Escape użat biex jaħrab kwalunkwe kliem ta' kontroll, inkluż il-karattru ESCAPE innifsu, meta jidher bħala data bejn il-markaturi START_WRITE u END_WRITE. |
Kwalunkwe byte READ_REQ mhux maħruba mibgħut lill-FPGA hija istruzzjoni biex tibgħat ir-reġistri kollha tagħha aċċessibbli għall-UART (inputs u outputs) lura lill-host fuq UART. Dan il-kmand normalment jinħareġ biss mill-iskript uart_regs.py.
Malli tirċievi dan il-kmand, l-FPGA se tirrispondi billi tibgħat il-kontenut tar-reġistri kollha lura lill-ospitant. L-ewwel, is-sinjali tad-dħul, imbagħad is-sinjali tal-ħruġ. Jekk it-tulijiet tagħhom ma jammontawx għal multiplu ta' 8 bits, il-bits t'isfel tal-aħħar byte se jkunu żerijiet ikkuttunati.
Sekwenza ta' kitba dejjem tibda bil-byte START_WRITE u tispiċċa bil-byte END_WRITE. Kwalunkwe bytes bejn dawk huma kkunsidrati bħala bytes tad-dejta. Jekk xi bytes tad-dejta għandhom l-istess valur bħal karattru ta' kontroll, il-byte tad-dejta għandu jinħarab. Dan ifisser li tibgħat karattru ESCAPE żejda qabel il-byte tad-data biex tindika li fil-fatt hija data.
Jekk START_WRITE mhux maħruba jasal kullimkien fil-fluss ta' bytes, jitqies bħala l-bidu ta' sekwenza ta' kitba. Il-modulu uart_regs_backend juża din l-informazzjoni biex jerġa 'jissinkronizza f'każ li l-komunikazzjoni toħroġ mis-sinkronizzazzjoni.
gen_uart_regs.py
- Din hija l-iskrittura li trid tibda biha biex tiġġenera l-interface. Hawn taħt hawn screenshot tal-menu tal-għajnuna li tista' tikseb billi tħaddem: python gen_uart_regs.py -h
- Biex tiġġenera interface tad-dwana, trid tmexxi l-iskript ma 'kull wieħed mir-reġistri kontrollabbli UART mixtieq tiegħek elenkati bħala argumenti. It-tipi disponibbli huma std_logic, std_logic_vector, unsigned, u signed.
- Il-mod (direzzjoni) default huwa u t-tip default huwa std_logic_vector sakemm ir-reġistru ma jkunx ta 'tul: 1. Imbagħad, se default għal std_logic.
- Għalhekk, jekk trid toħloq sinjal ta' input std_logic, tista' tuża kwalunkwe minn dawn l-argumenti:
- my_sl=1
- my_sl=1:in
- my_sl=1:in:std_logic
- Il-varjanti kollha ta 'hawn fuq se jirriżultaw fl-iskrittura li tiġġenera dan is-sinjal aċċessibbli mill-UART:
- Ejja nħaddmu l-iskript b'argumenti biex niġġenera interface b'diversi reġistri ta' direzzjonijiet, tulijiet u tipi differenti
Ġenerat files
- Tmexxija b'suċċess tal-iskrittura gen_uart_regs.py se tipproduċi folder tal-output jismu ġġenerat bit-tliet files elenkati hawn taħt. Jekk diġà jeżistu, se jiġu miktuba fuqhom.
- generated/uart_regs.vhd
- generated/uart_regs.py
- generated/instantiation_template.vho
- uart_regs.vhd
- Dan huwa l-modulu tal-interface tad-dwana ġġenerat mill-iskritt. Ikollok bżonn tistjanzjaha fid-disinn tiegħek, fejn tista 'taċċessa r-reġistri li trid tikkontrolla billi tuża UART.
- Kollox fuq is-sezzjoni “– UART access records” se jkun identiku għal kull modulu uart_regs, filwaqt li l-kompożizzjoni tas-sinjali tal-port taħt dik il-linja tiddependi fuq l-argumenti mogħtija lill-iskrittura tal-ġeneratur.
- Il-lista hawn taħt turi l-entità għall-modulu uart_regs li tirriżulta mill-kmand tal-ġenerazzjoni example murija fil-gen_uart_regs.py sezzjoni
- M'għandekx bżonn tissinkronizza s-sinjal uart_rx, peress li dak huwa ttrattat fl-uart_rx. modulu.
- Meta l-modulu jirċievi talba ta 'qari, se jaqbad il-valuri tas-sinjali kollha ta' input u output fiċ-ċiklu tal-arloġġ kurrenti. L-istampa istantanja mbagħad tintbagħat lill-host fuq UART.
- Meta sseħħ kitba, ir-reġistri kollha tal-ħruġ jiġu aġġornati bil-valuri l-ġodda fl-istess ċiklu tal-arloġġ. Mhuwiex possibbli li jinbidel il-valuri tas-sinjal tal-ħruġ individwalment.
- Madankollu, l-iskrittura uart_regs.py jippermetti lill-utent jaġġorna biss outputs magħżula billi l-ewwel jaqra lura l-valuri attwali tar-reġistri kollha. Imbagħad jikteb lura l-valuri kollha, inklużi dawk aġġornati.
- uart_regs.py
- Il-ġenerat/uart_regs.py file huwa ġġenerat flimkien mal-modulu VHDL uart_regs u fih l-informazzjoni tar-reġistru tad-dwana fl-intestatura tal- file. B'din l-iskrittura, tista 'taqra minn jew tikteb fir-reġistri tad-dwana tiegħek b'faċilità.
Għajnuna menu
- Ittajpja python uart_regs.py -h biex tipprintja l-menu tal-għajnuna:
L-issettjar tal-port UART
- L-iskrittura għandha għażliet biex tissettja l-port UART billi tuża l-iswiċċ -c. Dan jaħdem fuq Windows u Linux. Issettjah għal wieħed mill-portijiet disponibbli elenkati fil-menu tal-għajnuna. Biex tissettja port default, tista' wkoll teditja l-varjabbli UART_PORT fl-iskrittura uart_regs.py.
Elenkar ta' reġistri
- Informazzjoni dwar l-immappjar tar-reġistru titqiegħed fl-intestatura tal-iskrittura uart_regs.py mill-iskrittura gen_uart_regs.py. Tista' telenka r-reġistri disponibbli bis-swiċċ -l, kif jidher hawn taħt. Dan huwa kmand lokali u mhux se jinteraġixxi mal-FPGA fil-mira
Kitba fir-reġistri
- Tista' tikteb lil kwalunkwe reġistri tal-modalità out billi tuża l-iswiċċ -w. Ipprovdi l-isem tar-reġistru segwit minn “=” u l-valur mogħti bħala valur binarju, eżadeċimali jew deċimali, kif muri hawn taħt.
- Innota li l-implimentazzjoni tal-VHDL teħtieġ li l-iskript jikteb ir-reġistri tal-output kollha simultanjament. Għalhekk, jekk ma tispeċifikax sett komplut ta 'reġistri tal-output, l-iskrittura l-ewwel se twettaq qari mill-FPGA fil-mira u mbagħad tuża dawk il-valuri għal dawk neqsin. Ir-riżultat ikun li jinbidlu biss ir-reġistri speċifikati
- Meta twettaq kitba, ir-reġistri speċifikati kollha jinbidlu matul l-istess ċiklu tal-arloġġ, mhux hekk kif jiġu riċevuti fuq UART.
Qari ta' reġistri
- Uża l-iswiċċ -r biex taqra l-valuri kollha tar-reġistru, kif muri hawn taħt. Il-valuri mmarkati bl-isfar huma dawk li bdilna fil-kitba preċedenti example
- Kull qari juri stampa istantanja tar-reġistri kollha ta' input u output. Huma kollha sampmmexxija matul l-istess ċiklu tal-arloġġ
Debugging
Uża l-iswiċċ -d ma 'kwalunkwe swiċċijiet l-oħra jekk għandek bżonn tiddibaggja l-protokoll ta' komunikazzjoni. Imbagħad, l-iskrittura se tipprintja l-bytes kollha mibgħuta u riċevuti u tag minnhom jekk huma karattri ta' kontroll, kif muri hawn taħt.
Uża l-interface fi skripts Python oħra
- L-iskrittura uart_regs.py fih klassi UartRegs li tista' tuża faċilment bħala l-interface ta' komunikazzjoni fi skripts Python personalizzati oħra. Sempliċement jimporta l-klassi, oħloq oġġett minnha, u ibda tuża l-metodi, kif muri hawn taħt.
- Irreferi għad-docstrings fil-kodiċi Python għal metodu u deskrizzjonijiet u tipi ta 'valur ta' ritorn.
instantiation_template.vho
- Il-mudell tal-instanzjazzjoni huwa ġġenerat flimkien mal-modulu uart_regs għall-konvenjenza tiegħek. Biex tiffranka l-ħin tal-kodifikazzjoni, tista 'tikkopja l-istanzijazzjoni tal-modulu u d-dikjarazzjonijiet tas-sinjali fid-disinn tiegħek.
RTL statiku files
- Trid tinkludi dan li ġej files fil-proġett VHDL tiegħek sabiex ikunu kkompilati fl-istess librerija bħall-modulu uart_regs:
- rtl/uart_regs_backend.vhd
- rtl/uart_rx.vhd
- rtl/uart_tx.vhd
- Il-modulu uart_regs_backend jimplimenta l-magni ta 'stat finit li jċekknu u joħorġu d-data tar-reġistru. Juża l-moduli uart_rx u uart_tx biex jimmaniġġja l-komunikazzjoni UART mal-host.
Proġetti Demo
- Hemm tliet proġetti demo inklużi fil-Zip file. Huma jħalluk tikkontrolla l-periferali fuq il-bordijiet differenti kif ukoll ftit reġistri interni akbar.
- Il-folders demo jinkludu uart_regs.vhd u uart_regs.py ġenerati minn qabel files magħmula speċifikament għal dawk id-disinji.
ICEstick tal-kannizzata
- Il-folder demo/icecube2_icestick fih implimentazzjoni demo ta 'aċċess għar-reġistru għall-bord Lattice iCEstick FPGA.
- Biex tmexxi l-proċess ta' implimentazzjoni, iftaħ id-demo/lattice_icestick/icecube2_proj/uart_regs_sbt.project file fis-softwer tad-disinn Lattice iCEcube2.
- Wara li tgħabbi l-proġett fil-GUI tal-iCEcube2, ikklikkja Għodda→Run All biex tiġġenera l-bitmap tal-ipprogrammar file.
- Tista 'tuża l-għodda Standalone Lattice Diamond Programmer biex tikkonfigura l-FPGA bil-bitmap iġġenerat file. Meta Diamond Programmer jiftaħ, ikklikkja Iftaħ proġett ta 'programmatur eżistenti fil-kaxxa tad-djalogu ta' merħba.
- Agħżel il-proġett file misjuba fil-Zip: demo/lattice_icestick/diamond_programmer_project.xcf u kklikkja OK.
- Wara li l-proġett jgħabbi, ikklikkja t-tliet tikek fil- File Kolonna tal-isem, kif muri hawn fuq. Fittex biex tagħżel il-bitmap file li ġġenerajt f'iCEcube2
- demo/lattice_icestick/icecube2_proj/uart_regs_Implmnt/sbt/outputs/bitmap/top_icestick_bitmap.bin
- Fl-aħħarnett, bil-bord iCEstick imwaħħal f'port USB fuq il-kompjuter tiegħek, agħżel Disinn→Programm biex tipprogramma l-flash SPI u kkonfigura l-FPGA.
- Issa tista' tipproċedi biex taqra u tikteb ir-reġistri billi tuża l-iskript demo/lattice_icestick/uart_regs.py kif deskritt fit-taqsima uart_regs.py.
Xilinx Digilent Arty A7-35T
- Tista 'ssib l-implimentazzjoni demo għall-kit ta' evalwazzjoni Artix-7 35T Arty FPGA fil-folder demo/arty_a7_35.
- Iftaħ Vivado u naviga lejn l-estratt files bl-użu tal-console Tcl misjuba fil-qiegħ ta ' l-interface GUI. Ittajpja dan il-kmand biex tidħol fil-folder tal-proġett demo:
- cd /demo/arty_a7_35/vivado_proj/
- Esegwi l-iskrittura create_vivado_proj.tcl Tcl biex tirriġenera l-proġett Vivado:
- sors ./create_vivado_proj.tcl
- Ikklikkja Iġġenera Bitstream fil-sidebar biex tgħaddi mill-passi kollha tal-implimentazzjoni u tiġġenera l-bitstream tal-ipprogrammar file.
- Fl-aħħarnett, ikklikkja Open Hardware Manager u pprogramma l-FPGA permezz tal-GUI.
- Issa tista' tipproċedi biex taqra u tikteb reġistri billi tuża l-iskript demo/arty_a7_35/uart_regs.py kif deskritt fit-taqsima uart_regs.py.
Xilinx Digilent Arty S7-50
- Tista 'ssib l-implimentazzjoni demo għall-Bord ta' żvilupp Arty S7: Spartan-7 FPGA fil-folder demo/arty_s7_50.
- Iftaħ Vivado u naviga lejn l-estratt files bl-użu tal-console Tcl misjuba fil-qiegħ ta ' l-interface GUI. Ittajpja dan il-kmand biex tidħol fil-folder tal-proġett demo:
- cd /demo/arty_s7_50/vivado_proj/
- Esegwi l-iskrittura create_vivado_proj.tcl Tcl biex tirriġenera l-proġett Vivado:
- sors ./create_vivado_proj.tcl
- Ikklikkja Iġġenera Bitstream fil-sidebar biex tgħaddi mill-passi kollha tal-implimentazzjoni u tiġġenera l-bitstream tal-ipprogrammar file.
- Fl-aħħarnett, ikklikkja Open Hardware Manager u pprogramma l-FPGA permezz tal-GUI.
- Issa tista' tipproċedi biex taqra u tikteb reġistri billi tuża l-iskript demo/arty_s7_50/uart_regs.py kif deskritt fit-taqsima uart_regs.py.
Implimentazzjoni
- M'hemm l-ebda rekwiżiti speċifiċi ta' implimentazzjoni.
Limitazzjonijiet
- L-ebda restrizzjonijiet ta 'żmien speċifiċi huma meħtieġa għal dan id-disinn minħabba li l-interface UART hija bil-mod u ttrattat bħala interface mhux sinkroniku.
- L-input uart_rx għall-modulu uart_regs huwa sinkronizzat fi ħdan il-modulu uart_rx. Għalhekk, m'għandux għalfejn jiġi sinkronizzat fil-modulu tal-ogħla livell.
Kwistjonijiet magħrufa
- Jista 'jkollok bżonn tirrisettja l-modulu qabel ma jkun jista' jintuża, skont jekk l-arkitettura FPGA tiegħek tappoġġjax valuri ta 'reġistru default.
Aktar informazzjoni
- Copyright VHDLwhiz.com
FAQs
Q: X'inhu l-iskop tal-ġeneratur tal-interface tat-test UART?
A: Il-ġeneratur tal-interface tat-test UART jippermetti l-ħolqien ta 'interfaces tad-dwana biex jinteraġixxu mal-valuri tar-reġistru FPGA bl-użu ta' komunikazzjoni UART.
Q: Kif ninstalla l-pakkett Pyserial?
A: Tista 'tinstalla Pyserial permezz ta' Pip billi tuża l-kmand: pip install pyserial
Dokumenti / Riżorsi
![]() |
VHDLwhiz UART Test Interface Ġeneratur [pdfManwal tal-Utent Ġeneratur tal-Interface tat-Test UART, Ġeneratur tal-Interface tat-Test, Ġeneratur tal-Interface, Ġeneratur |