VHDLwhiz UART Test Interface generator
Émbaran produk
spésifikasi:
- Ngaran produk: VHDL registers UART test panganteur generator
- Vérsi: 1.0.4
- Tanggal: 18 Agustus 2024
- Panulis: Jonas Julian Jensen
- produk URL: Patalina Produk
- Email kontak: jonas@vhdlwhiz.com
Katerangan
Produk ieu ngidinan Anjeun pikeun ngahasilkeun interfaces custom pikeun maca jeung nulis nilai register FPGA maké UART. modul VHDL dihasilkeun sarta Aksara Python nyadiakeun kamampuhan pikeun berinteraksi sareng rupa-rupa registers dina desain FPGA Anjeun.
Sarat
- Python 3 juru
- pakét pyserial
Protokol
Produk ngagunakeun protokol framing data kalayan opat karakter kontrol:
- ngaran: READ_REQ, Nilai: 0x0A - Paréntah ti host ka FPGA pikeun ngamimitian sekuen nulis pikeun ngirim sadaya pendaptaran deui kana UART
- ngaran: START_WRITE, Nilai: 0x0B - Nyirian awal urutan nulis dina dua arah
- ngaran: END_WRITE, Nilai: 0x0C - Nyirian tungtung sekuen nulis dina dua arah
- ngaran: ngewa, Nilai: 0x0D - Karakter kabur dipaké pikeun ngéwa kecap kontrol
Parentah Pamakéan Produk
Ngajalankeun Skrip
Pikeun ngagunakeun produk, pastikeun anjeun parantos dipasang Python 3 sareng pakét Pyserial. Jalankeun naskah ngaliwatan juru Python 3.
Ngahasilkeun Antarmuka Adat
Anggo skrip gen_uart_regs.py pikeun ngahasilkeun antarmuka khusus pikeun maca sareng nyerat nilai register FPGA. Anjeun tiasa netepkeun komposisi input sareng output register sareng jinis nalika ngahasilkeun kaluaran files.
Interaksi jeung Registers
Anjeun tiasa maca tina atanapi nyerat kana sajumlah register dina desain FPGA anjeun nganggo modul VHDL sareng skrip Python anu dihasilkeun. Registri anu tiasa diaksés tiasa gaduh jinis sapertos std_logic, std_logic_vector, ditandatanganan, atanapi henteu ditandatanganan.
Lisensi
- Lisensi MIT nyertakeun syarat hak cipta kode sumber sareng syarat pamakean. Tingal kana LICENSE.txt file dina Zip file pikeun detil.
Changelog
- Parobahan ieu nujul kana proyék files, sarta dokumén ieu diropéa sasuai
Vérsi | Katerangan |
1.0.0 | Pelepasan awal |
1.0.1 | Ngalereskeun bug rujukan «diri» leungit nalika ngimpor salaku uart_regs.py salaku modul Python. Dirobah nulis gagal printout ka iwal ti
ulah nyitak kana konsol nalika ngajalankeun salaku modul diimpor. |
1.0.2 | Ngalereskeun kasalahan Vivado [Synth 8-248] nalika teu aya regs mode kaluar. |
1.0.3 | Fix Vivado Linter warning: Ngadaptar geus ngaktipkeun disetir ku
reset sinkron |
1.0.4 | Ngalereskeun kasus sudut nalika nampi kecap anu salah kalayan karakter kabur salaku bait terakhir. Kecap salajengna ogé bakal leungit sabab kami henteu mupus recv_data_prev_is_escape nalika balik ka IDLE.
Skrip gen_uart_regs.py ayeuna ngan ngamungkinkeun ngaran reg unik. |
Katerangan
- Dokumén ieu ngajelaskeun ieu di handap files sareng polder:
- gen_uart_regs.py
- dihasilkeun / uart_regs.vhd
- dihasilkeun/uart_regs.py
- dihasilkeun / instantiation_template.vho
- rtl/uart_regs_backend.vhd
- rtl/uart_rx.vhd
- rtl/uart_tx.vhd
- demo/kisi_icestick/
- demo/xilinx_arty_a7_35/
- demo/xilinx_arty_s7_50/
- Skrip gen_uart_regs.py sareng VHDL anu ngadukung files dina proyék ieu ngidinan Anjeun pikeun ngahasilkeun interfaces custom pikeun maca jeung nulis nilai register FPGA tina rupa-rupa jenis sarta lega maké UART.
- Anjeun tiasa make modul VHDL dihasilkeun sarta Aksara Python pikeun maca tina atawa nulis kana sagala Jumlah registers dina desain Anjeun. Registers anu tiasa diaksés UART tiasa gaduh jinis std_logic, std_logic_vector, ditandatanganan, atanapi henteu ditandatanganan.
- Anjeun tiasa mutuskeun komposisi tepat input sareng kaluaran register sareng jinis nalika ngahasilkeun kaluaran files ngagunakeun Aksara gen_uart_regs.py.
- Aksara Python dijieun sawaréh kalayan bantuan alat kecerdasan jieunan ChatGPT, sedengkeun kode VHDL dijieun ku leungeun.
Sarat
- Skrip dina proyék ieu kedah dijalankeun ku juru Python 3 sareng pakét Pyserial kedah dipasang.
- Anjeun tiasa masang pyserial ngalangkungan Pip nganggo paréntah ieu: pip install pyserial
Protokol
- VHDL na files jeung Aksara Python ngagunakeun protokol data-framing kalawan opat kontrol
Ngaran | Nilai | mairan |
READ_REQ | 0x0A | Paréntah ti host ka FPGA pikeun ngamimitian nulis
sekuen pikeun ngirim kabeh registers deui leuwih UART |
START_NULIS | 0x0B | Nyirian awal runtuyan nulis dina boh
arah |
END_WRITE | 0 x 0C | Nyirian tungtung runtuyan nulis dina dua arah |
ngewa | 0x0D | Karakter kabur dipaké pikeun ngewa salah sahiji kecap kontrol, kaasup karakter ESCAPE sorangan, nalika aranjeunna muncul salaku data antara spidol START_WRITE jeung END_WRITE. |
Sagala bait READ_REQ unescaped dikirim ka FPGA mangrupa parentah pikeun ngirim sakabéh registers UART-diaksés na (inputs na outputs) deui ka host leuwih UART. Paréntah ieu biasana ngan ukur dikaluarkeun ku skrip uart_regs.py.
Saatos nampi paréntah ieu, FPGA bakal ngabales ku ngirimkeun eusi sadaya pendaptaran deui ka host. Kahiji, sinyal input, lajeng sinyal kaluaran. Lamun panjangna teu nambahan nepi ka sababaraha 8 bit, bit handap bait panungtungan bakal enol nol.
Runtuyan nulis sok dimimitian ku START_WRITE byte jeung ditungtungan ku END_WRITE byte. Sakur bait antara éta dianggap bait data. Upami aya bait data anu gaduh nilai anu sami sareng karakter kontrol, bait data kedah kabur. Ieu hartosna ngirim karakter ESCAPE tambahan sateuacan bait data pikeun nunjukkeun yén éta leres-leres data.
Upami START_WRITE anu henteu kabur dugi ka mana waé dina aliran bait, éta dianggap awal urutan nyerat. Modul uart_regs_backend ngagunakeun inpormasi ieu pikeun nyinkronkeun deui upami komunikasina teu sinkron.
gen_uart_regs.py
- Ieu mangrupikeun skrip anu anjeun kedah ngamimitian pikeun ngahasilkeun antarmuka. Di handap ieu screenshot tina menu pitulung nu bisa Anjeun meunangkeun ku ngajalankeun: python gen_uart_regs.py -h
- Pikeun ngahasilkeun panganteur custom, anjeun kudu ngajalankeun skrip kalawan unggal UART nu dipikahoyong registers controllable Anjeun didaptarkeun salaku argumen. Jenis anu sayogi nyaéta std_logic, std_logic_vector, unsigned, sareng ditandatanganan.
- Mode standar (arah) aya di na tipe standar nyaeta std_logic_vector iwal register panjangna: 1. Lajeng, éta bakal dituna pikeun std_logic.
- Janten, upami anjeun hoyong nyiptakeun sinyal input std_logic, anjeun tiasa nganggo salah sahiji argumen ieu:
- my_sl=1
- my_sl=1: di
- my_sl = 1: di: std_logic
- Sakabéh varian di luhur bakal ngahasilkeun skrip ngahasilkeun sinyal UART-diaksés ieu:
- Hayu urang ngajalankeun skrip kalawan argumen pikeun ngahasilkeun hiji panganteur kalawan sababaraha registers arah béda, panjang, sarta jenis
Dihasilkeun files
- A ngajalankeun suksés skrip gen_uart_regs.py bakal ngahasilkeun folder kaluaran ngaranna dihasilkeun ku tilu files dibéréndélkeun di handap. Mun aranjeunna geus aya, aranjeunna bakal overwritten.
- dihasilkeun / uart_regs.vhd
- dihasilkeun/uart_regs.py
- dihasilkeun / instantiation_template.vho
- uart_regs.vhd
- Ieu modul panganteur custom dihasilkeun ku naskah. Anjeun kudu instantiate eta dina desain Anjeun, dimana eta bisa ngakses registers rék ngadalikeun maké UART.
- Sagalana di luhur bagian "- UART diaksés registers" bakal idéntik pikeun unggal modul uart_regs, bari komposisi sinyal port handap garis gumantung kana argumen dibikeun ka Aksara generator.
- Listing di handap ieu nunjukkeun éntitas pikeun modul uart_regs hasil tina paréntah ngahasilkeun example ditémbongkeun dina gen_uart_regs.py secti
- Anjeun teu kedah nyingkronkeun sinyal uart_rx, sakumaha anu diatur dina uart_rx. modul.
- Nalika modul nampi pamundut dibaca, éta bakal nangkep nilai sadaya sinyal input sareng kaluaran dina siklus jam ayeuna. The snapshot sakedapan lajeng dikirim ka host ngaliwatan UART.
- Nalika nulis kajadian, sadaya registers kaluaran diropéa kalawan nilai anyar dina siklus jam sarua. Teu mungkin ngarobah nilai sinyal kaluaran individual.
- Sanajan kitu, skrip uart_regs.py ngamungkinkeun pamaké pikeun ngapdet hijina kaluaran dipilih ku mimiti maca deui nilai ayeuna sadaya registers. Éta teras nyerat deui sadaya nilai, kalebet anu diropéa.
- uart_regs.py
- The dihasilkeun/uart_regs.py file dihasilkeun bareng jeung modul uart_regs VHDL sarta ngandung émbaran register custom dina lulugu tina file. Kalayan skrip ieu, anjeun tiasa maca atanapi nyerat kana pendaptaran khusus anjeun kalayan gampang.
menu pitulung
- Ketik python uart_regs.py -h pikeun nyitak ménu pitulung:
Nyetél port UART
- Skrip gaduh pilihan pikeun nyetél port UART nganggo saklar -c. Ieu jalan dina Windows jeung Linux. Setel ka salah sahiji palabuhan sadia didaptarkeun dina menu pitulung. Pikeun nyetel port standar, anjeun ogé tiasa ngédit variabel UART_PORT dina naskah uart_regs.py.
Listing registers
- Inpormasi ngeunaan pemetaan register disimpen dina lulugu naskah uart_regs.py ku aksara gen_uart_regs.py. Anjeun tiasa daptar registers sadia kalawan switch -l, sakumaha katingal di handap. Ieu paréntah lokal sareng moal berinteraksi sareng target FPGA
Nulis ka registers
- Anjeun tiasa nulis ka salah sahiji kaluar mode registers ku ngagunakeun switch -w. Nyadiakeun ngaran register dituturkeun ku "=" jeung nilai dibikeun salaku nilai binér, héksadesimal, atawa decimal, sakumaha ditémbongkeun di handap.
- Catet yén palaksanaan VHDL merlukeun naskah pikeun nulis sakabéh kaluaran registers sakaligus. Ku alatan éta, lamun teu nangtukeun hiji set lengkep kaluaran registers, naskah munggaran bakal ngalakukeun bacaan tina target FPGA lajeng nganggo nilai maranéhanana pikeun leungit. Hasilna bakal yén ngan ukur registers anu parantos robih
- Lamun anjeun ngalakukeun nulis, bakal sagala registers dieusian robah salila siklus jam sarua, teu pas aranjeunna nampi leuwih UART.
Ngaregepkeun bacaan
- Paké switch -r pikeun dibaca sadayana nilai register, ditémbongkeun saperti di handap ieu. Nilai-nilai anu ditandaan konéng nyaéta anu urang robih dina tulisan anu sateuacanaample
- Unggal bacaan nembongkeun snapshot sakedapan sadaya input jeung output registers. Aranjeunna sadayana sampdipingpin salila siklus jam sarua
Debugging
Anggo saklar -d sareng saklar anu sanés upami anjeun peryogi debug protokol komunikasi. Teras, naskah bakal nyitak sadaya bait anu dikirim sareng katampi sareng tag aranjeunna upami aranjeunna karakter kontrol, sapertos anu dipidangkeun di handap.
Ngagunakeun panganteur dina Aksara Python séjén
- Skrip uart_regs.py ngandung kelas UartRegs anu anjeun tiasa gampang dianggo salaku panganteur komunikasi dina naskah Python khusus anu sanés. Kantun ngimpor kelas, jieun obyékna, sareng mimitian nganggo metodeu, sapertos anu dipidangkeun di handap.
- Tingal docstrings dina kode Python pikeun métode jeung déskripsi jeung tipe nilai balik.
instantiation_template.vho
- Template instantiation dihasilkeun babarengan jeung modul uart_regs pikeun genah Anjeun. Pikeun ngahemat waktos coding, anjeun tiasa nyalin instansi modul sareng deklarasi sinyal kana desain anjeun.
RTL statik files
- Anjeun kudu kaasup handap files dina proyék VHDL anjeun supados aranjeunna disusun kana perpustakaan anu sami sareng modul uart_regs:
- rtl/uart_regs_backend.vhd
- rtl/uart_rx.vhd
- rtl/uart_tx.vhd
- modul uart_regs_backend implements mesin kaayaan-terhingga nu jam asup jeung kaluar data register. Éta ngagunakeun modul uart_rx sareng uart_tx pikeun nanganan komunikasi UART sareng host.
proyék demo
- Aya tilu proyék demo anu kalebet dina Zip file. Aranjeunna ngantep anjeun ngadalikeun périferal dina papan anu béda ogé sababaraha registers internal anu langkung ageung.
- Polder demo kalebet uart_regs.vhd sareng uart_regs.py files dijieun husus pikeun maranéhanana desain.
Kisi iCEstick
- folder demo / icecube2_icestick ngandung hiji register palaksanaan demo aksés pikeun dewan kisi iCEstick FPGA.
- Pikeun ngajalankeun prosés palaksanaan, buka demo/lattice_icestick/icecube2_proj/uart_regs_sbt.project file dina software desain Lattice iCEcube2.
- Saatos ngamuat proyék dina GUI iCEcube2, klik Alat → Jalankeun Sadaya pikeun ngahasilkeun bitmap pemrograman. file.
- Anjeun tiasa make alat Mandiri Programmer Kisi Inten pikeun ngonpigurasikeun FPGA kalawan bitmap dihasilkeun file. Nalika Inten Programmer muka, klik Buka hiji proyék programmer aya dina kotak dialog wilujeng sumping.
- Pilih proyék file kapanggih dina pos: demo/lattice_icestick/diamond_programmer_project.xcf teras klik OKÉ.
- Saatos beban proyék, klik tilu titik dina File Ngaran kolom, sakumaha ditémbongkeun di luhur. Kotektak pikeun milih bitmap file nu dihasilkeun dina iCEcube2
- demo/lattice_icestick/icecube2_proj/uart_regs_Implmnt/sbt/outputs/bitmap/top_icestick_bitmap.bin
- Tungtungna, sareng papan iCEstick dipasang kana port USB dina komputer anjeun, pilih Desain → Program pikeun program lampu kilat SPI sareng ngonpigurasikeun FPGA.
- Anjeun ayeuna bisa neruskeun maca jeung nulis registers ku ngagunakeun demo/lattice_icestick/uart_regs.py Aksara sakumaha dijelaskeun dina bagian uart_regs.py.
Xilinx Digilent Arty A7-35T
- Anjeun tiasa mendakan palaksanaan demo pikeun Artix-7 35T Arty FPGA kit evaluasi dina folder demo / arty_a7_35.
- Buka Vivado sareng arahkeun ka sasari files ngagunakeun konsol Tcl kapanggih dina handap panganteur GUI. Ketik paréntah ieu pikeun ngasupkeun folder proyék demo:
- cd /demo/arty_a7_35/vivado_proj/
- Laksanakeun skrip create_vivado_proj.tcl Tcl pikeun ngahasilkeun deui proyék Vivado:
- sumber ./create_vivado_proj.tcl
- Klik Generate Bitstream dina sidebar pikeun ngajalankeun sagala léngkah palaksanaan sarta ngahasilkeun bitstream programming file.
- Tungtungna, klik Open Hardware Manager sareng program FPGA ngalangkungan GUI.
- Anjeun ayeuna bisa neruskeun maca jeung nulis registers ku ngagunakeun demo/arty_a7_35/uart_regs.py Aksara sakumaha dijelaskeun dina bagian uart_regs.py.
Xilinx Digilent Arty S7-50
- Anjeun tiasa manggihan palaksanaan demo pikeun Arty S7: Spartan-7 FPGA dewan ngembangkeun dina demo / folder arty_s7_50.
- Buka Vivado sareng arahkeun ka sasari files ngagunakeun konsol Tcl kapanggih dina handap panganteur GUI. Ketik paréntah ieu pikeun ngasupkeun folder proyék demo:
- cd /demo/arty_s7_50/vivado_proj/
- Laksanakeun skrip create_vivado_proj.tcl Tcl pikeun ngahasilkeun deui proyék Vivado:
- sumber ./create_vivado_proj.tcl
- Klik Generate Bitstream dina sidebar pikeun ngajalankeun sagala léngkah palaksanaan sarta ngahasilkeun bitstream programming file.
- Tungtungna, klik Open Hardware Manager sareng program FPGA ngalangkungan GUI.
- Anjeun ayeuna bisa neruskeun maca jeung nulis registers ku ngagunakeun demo/arty_s7_50/uart_regs.py Aksara sakumaha dijelaskeun dina bagian uart_regs.py.
Palaksanaan
- Henteu aya sarat palaksanaan khusus.
Watesan
- Taya konstrain timing husus anu diperlukeun pikeun desain ieu sabab panganteur UART slow sarta diperlakukeun salaku panganteur Asynchronous.
- Input uart_rx kana modul uart_regs disingkronkeun dina modul uart_rx. Janten, éta henteu kedah disingkronkeun dina modul tingkat luhur.
isu dipikawanoh
- Anjeun panginten kedah ngareset modul sateuacan tiasa dianggo, gumantung kana naha arsitéktur FPGA anjeun ngadukung nilai register standar.
Inpo leuwih
- Hak cipta VHDLwhiz.com
FAQs
Q: Naon tujuan tina UART test panganteur generator?
A: UART test panganteur generator ngamungkinkeun pikeun kreasi interfaces custom berinteraksi sareng nilai register FPGA ngagunakeun komunikasi UART.
Q: Kumaha kuring masang pakét Pyserial?
A: Anjeun tiasa install Pyserial ngaliwatan Pip maké paréntah: pip install pyserial
Dokumén / Sumberdaya
![]() |
VHDLwhiz UART Test Interface generator [pdf] Manual pamaké UART Test Interface generator, Test Interface generator, Interface generator, generator |