Jenereta ya Kiolesura cha Mtihani wa VHDLwhiz UART
Taarifa ya Bidhaa
Vipimo:
- Jina la Bidhaa: VHDL husajili jenereta ya kiolesura cha majaribio ya UART
- Toleo: 1.0.4
- Tarehe: Agosti 18, 2024
- Mwandishi: Jonas Julian Jensen
- Bidhaa URL: Kiungo cha Bidhaa
- Barua pepe ya mawasiliano: jonas@vhdlwhiz.com
Maelezo
Bidhaa hii hukuruhusu kutoa miingiliano maalum ya kusoma na kuandika maadili ya rejista ya FPGA kwa kutumia UART. Moduli ya VHDL iliyotengenezwa na hati ya Python hutoa uwezo wa kuingiliana na aina mbalimbali za rejista katika muundo wako wa FPGA.
Mahitaji
- Mkalimani wa Python 3
- kifurushi cha pyserial
Itifaki
Bidhaa hutumia itifaki ya kutunga data yenye herufi nne za udhibiti:
- Jina: SOMA_REQ, Thamani: 0x0A - Amri kutoka kwa mwenyeji hadi FPGA ili kuanzisha mlolongo wa kuandika kutuma rejista zote nyuma kwenye UART
- Jina: START_ANDIKA, Thamani: 0x0B - Inaashiria mwanzo wa mlolongo wa kuandika katika mwelekeo wowote
- Jina: END_ANDIKA, Thamani: 0x0C - Inaashiria mwisho wa mlolongo wa kuandika katika mwelekeo wowote
- Jina: EPUKA, Thamani: 0x0D - Tabia ya Escape inayotumika kwa kutoroka maneno ya kudhibiti
Maagizo ya Matumizi ya Bidhaa
Kuendesha Maandishi
Ili kutumia bidhaa, hakikisha kuwa Python 3 imewekwa na kifurushi cha Pyserial. Endesha maandishi kupitia mkalimani wa Python 3.
Inazalisha Violesura Maalum
Tumia hati ya gen_uart_regs.py kutengeneza miingiliano maalum ya kusoma na kuandika maadili ya rejista ya FPGA. Unaweza kubainisha muundo wa rejista za pembejeo na pato na aina wakati wa kutoa matokeo files.
Kuingiliana na Wasajili
Unaweza kusoma au kuandika kwa idadi yoyote ya rejista katika muundo wako wa FPGA kwa kutumia moduli ya VHDL na hati ya Python. Rejesta zinazoweza kufikiwa zinaweza kuwa na aina kama vile std_logic, std_logic_vector, zilizotiwa saini au ambazo hazijatiwa saini.
Leseni
- Leseni ya MIT inashughulikia mahitaji ya hakimiliki ya msimbo wa chanzo na masharti ya matumizi. Rejelea LICENSE.txt file katika Zip file kwa maelezo.
Changelog
- Mabadiliko haya yanarejelea mradi files, na hati hii inasasishwa ipasavyo
Toleo | Maoni |
1.0.0 | Kutolewa kwa awali |
1.0.1 | Imerekebisha kosa la kumbukumbu la "binafsi" wakati wa kuingiza kama uart_regs.py kama moduli ya Python. Uchapishaji uliobadilishwa wa maandishi ulishindwa kuwa ubaguzi kwa
epuka kuchapisha kwenye koni wakati unaendesha kama moduli iliyoingizwa. |
1.0.2 | Rekebisha hitilafu ya Vivado [Synth 8-248] wakati hakuna regs za hali ya nje. |
1.0.3 | Rekebisha onyo la Vivado Linter: Rejista imewasha inayoendeshwa na
kuweka upya kwa usawazishaji |
1.0.4 | Rekebisha kipochi cha pembeni unapopokea neno lenye hitilafu na herufi ya kutoroka kama baiti ya mwisho. Neno linalofuata pia lingepotea kwa sababu hatukufuta recv_data_prev_is_esscape wakati wa kurudi kwa IDLE.
Hati ya gen_uart_regs.py sasa inaruhusu tu majina ya kipekee ya reg. |
Maelezo
- Hati hii inaeleza yafuatayo files na folda:
- 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/kibao_kibao/
- demo/xilinx_arty_a7_35/
- demo/xilinx_arty_s7_50/
- Hati ya gen_uart_regs.py na VHDL inayounga mkono files katika mradi huu hukuruhusu kutoa miingiliano maalum ya kusoma na kuandika maadili ya rejista ya FPGA ya aina na upana mbalimbali kwa kutumia UART.
- Unaweza kutumia moduli ya VHDL iliyozalishwa na hati ya Python kusoma au kuandika kwa idadi yoyote ya rejista katika muundo wako. Rejesta zinazoweza kufikiwa za UART zinaweza kuwa na aina std_logic, std_logic_vector, zilizotiwa saini, au ambazo hazijatiwa saini.
- Unaweza kuamua juu ya muundo sahihi wa rejista za pembejeo na pato na aina wakati wa kutoa matokeo files kwa kutumia hati ya gen_uart_regs.py.
- Maandishi ya Python yaliundwa kwa kiasi kwa usaidizi wa zana ya kijasusi bandia ya ChatGPT, huku msimbo wa VHDL ukitengenezwa kwa mikono.
Mahitaji
- Maandishi katika mradi huu lazima yaendeshwe kupitia mkalimani wa Python 3 na kifurushi cha Pyserial lazima kisakinishwe.
- Unaweza kusakinisha pyserial kupitia Pip kwa kutumia amri hii: pip install pyserial
Itifaki
- Sehemu ya VHDL files na hati ya Python hutumia itifaki ya kutunga data na udhibiti nne
Jina | Thamani | Maoni |
SOMA_REQ | 0x0A | Agiza kutoka kwa seva pangishi hadi kwa FPGA ili kuanzisha uandishi
mlolongo wa kutuma rejista zote nyuma kupitia UART |
START_ANDIKA | 0x0B | Huashiria mwanzo wa mfuatano wa uandishi katika mojawapo
mwelekeo |
END_ANDIKA | 0x0C | Huashiria mwisho wa mfuatano wa uandishi katika mwelekeo wowote |
EPUKA | 0x0D | Herufi ya Escape inayotumika kutoroka neno lolote la udhibiti, ikijumuisha herufi ya ESCAPE yenyewe, inapoonekana kama data kati ya vialamisho START_WRITE na END_WRITE. |
Baiti yoyote isiyoweza kuepukika ya READ_REQ iliyotumwa kwa FPGA ni maagizo ya kutuma rejista zake zote zinazoweza kufikiwa na UART (viingizo na matokeo) kwa seva pangishi kupitia UART. Amri hii kawaida hutolewa tu na hati ya uart_regs.py.
Baada ya kupokea amri hii, FPGA itajibu kwa kutuma maudhui ya sajili zote kwa seva pangishi. Kwanza, ishara za pembejeo, kisha ishara za pato. Ikiwa urefu wao haujumuishi hadi biti nyingi 8, biti za chini za baiti ya mwisho zitakuwa sufuri.
Msururu wa uandishi kila mara huanza na baiti ya START_WRITE na kuishia na END_WRITE baiti. Baiti zozote kati ya hizo huchukuliwa kuwa baiti za data. Ikiwa baiti zozote za data zina thamani sawa na herufi ya kudhibiti, byte ya data lazima iepukwe. Hii inamaanisha kutuma herufi ya ziada ya ESCAPE kabla ya data byte ili kuashiria kuwa ni data.
Iwapo START_WRITE ambayo haijatoroka itafika popote katika mtiririko wa baiti, inachukuliwa kuwa mwanzo wa mfuatano wa uandishi. Sehemu ya uart_regs_backend hutumia maelezo haya kusawazisha tena endapo mawasiliano yatakosa kusawazishwa.
gen_uart_regs.py
- Hii ndio hati lazima uanze nayo ili kuunda kiolesura. Ifuatayo ni picha ya skrini ya menyu ya usaidizi ambayo unaweza kupata kwa kukimbia: python gen_uart_regs.py -h
- Ili kuunda kiolesura maalum, lazima uendeshe hati na kila rejista yako ya UART inayoweza kudhibitiwa iliyoorodheshwa kama hoja. Aina zinazopatikana ni std_logic, std_logic_vector, ambazo hazijasainiwa, na zimetiwa saini.
- Hali ya chaguo-msingi (mwelekeo) iko ndani na aina chaguo-msingi ni std_logic_vector isipokuwa rejista ni ya urefu: 1. Kisha, itabadilika kuwa std_logic.
- Kwa hivyo, ikiwa unataka kuunda std_logic ishara ya ingizo, unaweza kutumia yoyote ya hoja hizi:
- my_sl=1
- my_sl=1:katika
- my_sl=1:katika:std_logic
- Lahaja zote hapo juu zitasababisha hati kutoa mawimbi haya yanayoweza kufikiwa na UART:
- Wacha tuendeshe hati kwa hoja ili kutoa kiolesura chenye rejista kadhaa za mwelekeo, urefu na aina tofauti.
Imetolewa files
- Uendeshaji uliofaulu wa hati ya gen_uart_regs.py itatoa folda ya pato inayoitwa inayotokana na hizo tatu. filezimeorodheshwa hapa chini. Ikiwa tayari zipo, zitafutwa.
- generated/uart_regs.vhd
- generated/uart_regs.py
- generated/instantiation_template.vho
- uart_regs.vhd
- Hii ni moduli ya kiolesura maalum inayozalishwa na hati. Unahitaji kuisisitiza katika muundo wako, ambapo inaweza kufikia rejista unazotaka kudhibiti kwa kutumia UART.
- Kila kitu kilicho juu ya sehemu ya “– Rejesta zinazoweza kufikiwa za UART” kitakuwa sawa kwa kila moduli ya uart_regs, huku utungaji wa mawimbi ya bandari chini ya mstari huo unategemea hoja zinazotolewa kwa hati ya jenereta.
- Uorodheshaji hapa chini unaonyesha huluki ya moduli ya uart_regs inayotokana na amri ya kuzalisha exampimeonyeshwa kwenye gen_uart_regs.py secti
- Huna haja ya kulandanisha uart_rx ishara, kama hiyo inashughulikiwa katika uart_rx. moduli.
- Wakati moduli inapokea ombi la kusoma, itachukua maadili ya ishara zote za pembejeo na pato ndani ya mzunguko wa saa wa sasa. Picha ya papo hapo inatumwa kwa mwenyeji kupitia UART.
- Wakati uandishi unafanyika, rejista zote za matokeo husasishwa na maadili mapya ndani ya mzunguko wa saa sawa. Haiwezekani kubadilisha thamani za mawimbi moja kwa moja.
- Walakini, hati ya uart_regs.py inaruhusu mtumiaji kusasisha matokeo yaliyochaguliwa tu kwa kusoma kwanza maadili ya sasa ya rejista zote. Kisha huandika maadili yote, pamoja na yale yaliyosasishwa.
- uart_regs.py
- The generated/uart_regs.py file inatolewa pamoja na moduli ya uart_regs VHDL na ina maelezo ya rejista maalum katika kichwa cha faili file. Kwa hati hii, unaweza kusoma au kuandika kwa rejista zako maalum kwa urahisi.
Menyu ya usaidizi
- Chapa python uart_regs.py -h kuchapisha menyu ya usaidizi:
Kuweka bandari ya UART
- Hati ina chaguzi za kuweka bandari ya UART kwa kutumia -c swichi. Hii inafanya kazi kwenye Windows na Linux. Weka kwenye mojawapo ya milango inayopatikana iliyoorodheshwa kwenye menyu ya usaidizi. Ili kuweka lango chaguo-msingi, unaweza pia kuhariri kigezo cha UART_PORT katika hati ya uart_regs.py.
Orodha ya rejista
- Taarifa kuhusu upangaji ramani ya rejista imewekwa kwenye kichwa cha hati ya uart_regs.py na hati ya gen_uart_regs.py. Unaweza kuorodhesha rejista zinazopatikana na swichi ya -l, kama inavyoonekana hapa chini. Hii ni amri ya ndani na haitaingiliana na FPGA inayolengwa
Kuandika kwa rejista
- Unaweza kuandika kwa rejista yoyote ya hali ya nje kwa kutumia -w swichi. Peana jina la rejista likifuatiwa na "=" na thamani iliyotolewa kama nambari ya binary, heksadesimali, au nambari ya desimali, kama inavyoonyeshwa hapa chini.
- Kumbuka kuwa utekelezaji wa VHDL unahitaji hati kuandika rejista zote za matokeo kwa wakati mmoja. Kwa hivyo, ikiwa hutabainisha seti kamili ya rejista za matokeo, hati kwanza itafanya usomaji kutoka kwa FPGA lengwa na kisha kutumia maadili hayo kwa zile ambazo hazipo. Matokeo yatakuwa kwamba rejista zilizoainishwa tu ndizo zinazobadilika
- Unapoandika, rejista zote zilizobainishwa zitabadilika wakati wa mzunguko wa saa sawa, sio mara tu zinapopokelewa kupitia UART.
Kusoma rejista
- Tumia -r swichi kusoma thamani zote za usajili, kama inavyoonyeshwa hapa chini. Thamani zilizowekwa alama ya manjano ni zile tulizobadilisha katika maandishi ya zamaniample
- Kila usomaji unaonyesha muhtasari wa papo hapo wa rejista zote za ingizo na matokeo. Wote ni sampkuongozwa wakati wa mzunguko huo wa saa
Utatuzi
Tumia -d swichi na swichi zingine zozote ikiwa unahitaji kurekebisha itifaki ya mawasiliano. Kisha, hati itachapisha baiti zote zilizotumwa na kupokea na tag ikiwa ni wahusika wa kudhibiti, kama inavyoonyeshwa hapa chini.
Kutumia kiolesura katika hati zingine za Python
- Hati ya uart_regs.py ina darasa la UartRegs ambalo unaweza kutumia kwa urahisi kama kiolesura cha mawasiliano katika hati zingine maalum za Python. Ingiza tu darasa, unda kitu chake, na anza kutumia njia, kama inavyoonyeshwa hapa chini.
- Rejelea hati katika msimbo wa Python kwa njia na maelezo na aina za thamani za kurudisha.
instantiation_template.vho
- Kiolezo cha papo hapo kinatolewa pamoja na moduli ya uart_regs kwa urahisi wako. Ili kuokoa muda wa usimbaji, unaweza kunakili uanzishaji wa moduli na matamko ya mawimbi kwenye muundo wako.
RTL tuli files
- Unahitaji kujumuisha zifuatazo files kwenye mradi wako wa VHDL ili ziwekwe kwenye maktaba sawa na moduli ya uart_regs:
- rtl/uart_regs_backend.vhd
- rtl/uart_rx.vhd
- rtl/uart_tx.vhd
- Uart_regs_backend moduli hutekeleza mashine za hali ya kikomo ambazo huingia na kutoa data ya rejista. Inatumia uart_rx na uart_tx moduli kushughulikia mawasiliano ya UART na seva pangishi.
Miradi ya onyesho
- Kuna miradi mitatu ya onyesho iliyojumuishwa kwenye Zip file. Wanakuwezesha kudhibiti vifaa vya pembeni kwenye ubao tofauti na vile vile rejista chache kubwa zaidi za ndani.
- Folda za onyesho ni pamoja na uart_regs.vhd iliyotengenezwa awali na uart_regs.py fileimeundwa mahsusi kwa miundo hiyo.
ICEstick ya kimiani
- Folda ya onyesho/icecube2_icestick ina utekelezaji wa onyesho la ufikiaji wa rejista kwa bodi ya Lattice iCEstick FPGA.
- Ili kutekeleza mchakato wa utekelezaji, fungua demo/lattice_icestick/icecube2_proj/uart_regs_sbt.project file katika programu ya kubuni ya Lattice iCEcube2.
- Baada ya kupakia mradi kwenye iCEcube2 GUI, bofya Kutools→Run All ili kutoa bitmap ya programu. file.
- Unaweza kutumia zana ya Kipangaji ya Almasi ya Lattice ili kusanidi FPGA na ramani ndogo iliyotolewa. file. Wakati Kipanga Programu cha Almasi kinafungua, bofya Fungua mradi wa kiprogramu uliopo kwenye kisanduku cha mazungumzo ya kukaribisha.
- Chagua mradi file inapatikana katika Zip: demo/lattice_icestick/diamond_programmer_project.xcf na ubofye Sawa.
- Baada ya upakiaji wa mradi, bofya nukta tatu kwenye kibodi File Safu wima ya jina, kama inavyoonyeshwa hapo juu. Vinjari ili kuchagua bitmap file uliyotengeneza katika iCEcube2
- demo/lattice_icestick/icecube2_proj/uart_regs_Implmnt/sbt/outputs/bitmap/top_icestick_bitmap.bin
- Hatimaye, ubao wa iCEstick ukiwa umechomekwa kwenye mlango wa USB kwenye kompyuta yako, chagua Kubuni→Programu ili kupanga flash ya SPI na kusanidi FPGA.
- Sasa unaweza kuendelea kusoma na kuandika rejista kwa kutumia hati ya demo/lattice_icestick/uart_regs.py kama ilivyofafanuliwa katika sehemu ya uart_regs.py.
Xilinx Digilent Arty A7-35T
- Unaweza kupata utekelezaji wa onyesho la zana ya tathmini ya Artix-7 35T Arty FPGA kwenye folda ya demo/arty_a7_35.
- Fungua Vivado na uende kwa iliyotolewa files kwa kutumia koni ya Tcl inayopatikana chini ya kiolesura cha GUI. Andika amri hii ili kuingiza folda ya mradi wa onyesho:
- cd /demo/arty_a7_35/vivado_proj/
- Tekeleza hati ya create_vivado_proj.tcl Tcl ili kuzalisha upya mradi wa Vivado:
- chanzo ./create_vivado_proj.tcl
- Bofya Tengeneza Bitstream kwenye upau wa kando ili kupitia hatua zote za utekelezaji na utoe mkondo wa programu file.
- Hatimaye, bofya Fungua Kidhibiti cha Vifaa na upange FPGA kupitia GUI.
- Sasa unaweza kuendelea kusoma na kuandika rejista kwa kutumia hati ya demo/arty_a7_35/uart_regs.py kama ilivyofafanuliwa katika sehemu ya uart_regs.py.
Xilinx Digilent Arty S7-50
- Unaweza kupata utekelezaji wa onyesho la bodi ya ukuzaji ya Arty S7: Spartan-7 FPGA kwenye folda ya demo/arty_s7_50.
- Fungua Vivado na uende kwa iliyotolewa files kwa kutumia koni ya Tcl inayopatikana chini ya kiolesura cha GUI. Andika amri hii ili kuingiza folda ya mradi wa onyesho:
- cd /demo/arty_s7_50/vivado_proj/
- Tekeleza hati ya create_vivado_proj.tcl Tcl ili kuzalisha upya mradi wa Vivado:
- chanzo ./create_vivado_proj.tcl
- Bofya Tengeneza Bitstream kwenye upau wa kando ili kupitia hatua zote za utekelezaji na utoe mkondo wa programu file.
- Hatimaye, bofya Fungua Kidhibiti cha Vifaa na upange FPGA kupitia GUI.
- Sasa unaweza kuendelea kusoma na kuandika rejista kwa kutumia hati ya demo/arty_s7_50/uart_regs.py kama ilivyofafanuliwa katika sehemu ya uart_regs.py.
Utekelezaji
- Hakuna mahitaji maalum ya utekelezaji.
Vikwazo
- Hakuna vikwazo mahususi vya muda vinavyohitajika kwa muundo huu kwa sababu kiolesura cha UART ni cha polepole na kinachukuliwa kama kiolesura kisicholingana.
- Ingizo la uart_rx kwa moduli ya uart_regs inalandanishwa ndani ya moduli ya uart_rx. Kwa hivyo, haihitaji kusawazishwa katika moduli ya kiwango cha juu.
Masuala yanayojulikana
- Huenda ukahitaji kuweka upya moduli kabla ya kutumika, kulingana na kama usanifu wako wa FPGA unaauni maadili chaguomsingi ya rejista.
Maelezo zaidi
- Hakimiliki VHDLwhiz.com
Maswali Yanayoulizwa Mara kwa Mara
Swali: Madhumuni ya jenereta ya kiolesura cha majaribio ya UART ni nini?
J: Jenereta ya kiolesura cha majaribio ya UART inaruhusu uundaji wa violesura maalum ili kuingiliana na thamani za rejista za FPGA kwa kutumia mawasiliano ya UART.
Swali: Je, ninawekaje kifurushi cha Pyserial?
A: Unaweza kusakinisha Pyserial kupitia Pip kwa kutumia amri: pip install pyserial
Nyaraka / Rasilimali
![]() |
Jenereta ya Kiolesura cha Mtihani wa VHDLwhiz UART [pdf] Mwongozo wa Mtumiaji Jenereta ya Kiolesura cha UART, Jenereta ya Kiolesura cha Majaribio, Jenereta ya Kiolesura, Jenereta |