Logo VHDLwhiz

Penjana Antara Muka Ujian VHDLwhiz UART

VHDLwhiz-UART-Test-Interface-Generator-PRODUCT

Maklumat Produk

Spesifikasi:

  • Nama Produk: VHDL mendaftarkan penjana antara muka ujian UART
  • Versi: 1.0.4
  • Tarikh: 18 Ogos 2024
  • Pengarang: Jonas Julian Jensen
  • produk URL: Pautan Produk
  • E-mel hubungan: jonas@vhdlwhiz.com

Penerangan

Produk ini membolehkan anda menjana antara muka tersuai untuk membaca dan menulis nilai daftar FPGA menggunakan UART. Modul VHDL yang dihasilkan dan skrip Python menyediakan keupayaan untuk berinteraksi dengan pelbagai jenis daftar dalam reka bentuk FPGA anda.

Keperluan

  • Jurubahasa Python 3
  • pakej pyserial

Protokol

Produk menggunakan protokol pembingkaian data dengan empat aksara kawalan:

  • nama: READ_REQ, Nilai: 0x0A – Perintah daripada hos kepada FPGA untuk memulakan urutan tulis untuk menghantar semua daftar kembali melalui UART
  • nama: START_WRITE, Nilai: 0x0B – Menandakan permulaan urutan tulis dalam mana-mana arah
  • nama: END_WRITE, Nilai: 0x0C – Menandakan penghujung urutan tulis dalam mana-mana arah
  • nama: Melarikan diri, Nilai: 0x0D – Watak melarikan diri digunakan untuk melarikan diri daripada perkataan kawalan

Arahan Penggunaan Produk

Menjalankan Skrip

Untuk menggunakan produk, pastikan anda memasang Python 3 dan pakej Pyserial. Jalankan skrip melalui penterjemah Python 3.

Menjana Antara Muka Tersuai

Gunakan skrip gen_uart_regs.py untuk menjana antara muka tersuai untuk membaca dan menulis nilai daftar FPGA. Anda boleh menentukan komposisi daftar dan jenis input dan output apabila menjana output files.

Berinteraksi dengan Daftar

Anda boleh membaca daripada atau menulis kepada sebarang bilangan daftar dalam reka bentuk FPGA anda menggunakan modul VHDL dan skrip Python yang dihasilkan. Daftar yang boleh diakses boleh mempunyai jenis seperti std_logic, std_logic_vector, ditandatangani atau tidak ditandatangani.

Lesen

  • Lesen MIT meliputi keperluan hak cipta dan syarat penggunaan kod sumber. Rujuk LICENSE.txt file dalam Zip file untuk butiran.

Changelog

  • Perubahan ini merujuk kepada projek files, dan dokumen ini dikemas kini dengan sewajarnya
Versi Teguran
1.0.0 Keluaran awal
1.0.1 Memperbaiki pepijat rujukan «diri» yang hilang semasa mengimport sebagai uart_regs.py sebagai modul Python. Cetakan gagal tulis ditukar kepada pengecualian kepada

elakkan mencetak ke konsol apabila dijalankan sebagai modul yang diimport.

1.0.2 Betulkan ralat Vivado [Synth 8-248] apabila tiada peraturan mod keluar.
1.0.3 Betulkan amaran Vivado Linter: Daftar telah membolehkan dipacu oleh

tetapan semula segerak

1.0.4 Betulkan kes penjuru apabila menerima perkataan yang cacat dengan aksara melarikan diri sebagai bait terakhir. Perkataan seterusnya juga akan hilang kerana kami tidak mengosongkan recv_data_prev_is_escape apabila kembali ke IDLE.

Skrip gen_uart_regs.py kini hanya membenarkan nama reg unik.

Penerangan

  • Dokumen ini menerangkan perkara berikut files dan folder:
  • gen_uart_regs.py
  • dihasilkan/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/
  • Skrip gen_uart_regs.py dan VHDL sokongan files dalam projek ini membolehkan anda menjana antara muka tersuai untuk membaca dan menulis nilai daftar FPGA pelbagai jenis dan lebar menggunakan UART.
  • Anda boleh menggunakan modul VHDL dan skrip Python yang dihasilkan untuk membaca atau menulis kepada sebarang bilangan daftar dalam reka bentuk anda. Daftar yang boleh diakses UART boleh mempunyai jenis std_logic, std_logic_vector, ditandatangani atau tidak ditandatangani.
  • Anda boleh menentukan komposisi tepat daftar dan jenis input dan output semasa menjana output files menggunakan skrip gen_uart_regs.py.
  • Skrip Python telah dibuat sebahagiannya dengan bantuan alat kecerdasan buatan ChatGPT, manakala kod VHDL dibuat dengan tangan.

Keperluan

  • Skrip dalam projek ini mesti dijalankan melalui penterjemah Python 3 dan pakej Pyserial mesti dipasang.
  • Anda boleh memasang pyserial melalui Pip menggunakan arahan ini: pip install pyserial

Protokol

  • VHDL itu files dan skrip Python menggunakan protokol pembingkaian data dengan empat kawalan
Nama Nilai Komen
READ_REQ 0x0A Perintah daripada hos kepada FPGA untuk memulakan penulisan

urutan untuk menghantar semua daftar kembali melalui UART

START_WRITE 0x0B Menandakan permulaan urutan tulis dalam sama ada

arah

END_WRITE 0x0C Menandai penghujung urutan tulis dalam mana-mana arah
PELARIAN 0x0D Aksara melarikan diri yang digunakan untuk melarikan diri daripada mana-mana perkataan kawalan, termasuk aksara ESCAPE itu sendiri, apabila ia muncul sebagai data antara penanda START_WRITE dan END_WRITE.

Sebarang bait READ_REQ yang tidak dilepaskan dihantar ke FPGA ialah arahan untuk menghantar semua daftar (input dan output) yang boleh diakses UARTnya kembali ke hos melalui UART. Perintah ini biasanya hanya dikeluarkan oleh skrip uart_regs.py.
Setelah menerima arahan ini, FPGA akan bertindak balas dengan menghantar kandungan semua daftar kembali ke hos. Pertama, isyarat input, kemudian isyarat keluaran. Jika panjangnya tidak menambah sehingga gandaan 8 bit, bit bawah bait terakhir akan menjadi sifar berlapik.
Urutan tulis sentiasa bermula dengan START_WRITE bait dan berakhir dengan END_WRITE bait. Sebarang bait antara bait tersebut dianggap sebagai bait data. Jika mana-mana bait data mempunyai nilai yang sama seperti aksara kawalan, bait data mesti dilepaskan. Ini bermakna menghantar aksara ESCAPE tambahan sebelum bait data untuk menunjukkan bahawa ia sebenarnya data.
Jika START_WRITE yang tidak dilepaskan tiba di mana-mana dalam aliran bait, ia dianggap sebagai permulaan bagi urutan tulis. Modul uart_regs_backend menggunakan maklumat ini untuk menyegerakkan semula sekiranya komunikasi tidak disegerakkan.

gen_uart_regs.py

  • Ini ialah skrip yang anda mesti mulakan untuk menjana antara muka. Di bawah ialah tangkapan skrin menu bantuan yang anda boleh dapatkan dengan menjalankan: python gen_uart_regs.py -hVHDLwhiz-UART-Test-Interface-Generator-FIG-1
  • Untuk menjana antara muka tersuai, anda mesti menjalankan skrip dengan setiap daftar terkawal UART yang anda inginkan disenaraikan sebagai argumen. Jenis yang tersedia ialah std_logic, std_logic_vector, unsigned, dan signed.
  • Mod lalai (arah) berada dalam dan jenis lalai ialah std_logic_vector melainkan daftar panjang: 1. Kemudian, ia akan lalai kepada std_logic.
  • Oleh itu, jika anda ingin mencipta isyarat input std_logic, anda boleh menggunakan mana-mana hujah ini:
  • my_sl=1
  • my_sl=1:dalam
  • my_sl=1:in:std_logic
  • Semua varian di atas akan menyebabkan skrip menghasilkan isyarat boleh diakses UART ini:VHDLwhiz-UART-Test-Interface-Generator-FIG-2
  • Mari jalankan skrip dengan argumen untuk menjana antara muka dengan beberapa daftar arah, panjang dan jenis yang berbezaVHDLwhiz-UART-Test-Interface-Generator-FIG-3

Dijana files

  • Larian skrip gen_uart_regs.py yang berjaya akan menghasilkan folder output yang dinamakan dijana dengan ketiga-tiganya files disenaraikan di bawah. Jika ia sudah wujud, ia akan ditimpa.
  • dihasilkan/uart_regs.vhd
  • generated/uart_regs.py
  • generated/instantiation_template.vho
  • uart_regs.vhd
  • Ini ialah modul antara muka tersuai yang dijana oleh skrip. Anda perlu membuat instantiat dalam reka bentuk anda, di mana ia boleh mengakses daftar yang anda mahu kawal menggunakan UART.
  • Segala-galanya di atas bahagian "– daftar boleh diakses UART" akan sama untuk setiap modul uart_regs, manakala komposisi isyarat port di bawah baris itu bergantung pada hujah yang diberikan kepada skrip penjana.
  • Penyenaraian di bawah menunjukkan entiti untuk modul uart_regs yang terhasil daripada perintah jana example ditunjukkan dalam mazhab gen_uart_regs.pyVHDLwhiz-UART-Test-Interface-Generator-FIG-4
  • Anda tidak perlu menyegerakkan isyarat uart_rx, kerana ia dikendalikan dalam uart_rx. modul.
  • Apabila modul menerima permintaan baca, ia akan menangkap nilai semua isyarat input dan output dalam kitaran jam semasa. Gambar serta-merta kemudian dihantar kepada hos melalui UART.
  • Apabila penulisan berlaku, semua daftar keluaran dikemas kini dengan nilai baharu dalam kitaran jam yang sama. Ia tidak mungkin untuk menukar nilai isyarat output secara individu.
  • Walau bagaimanapun, skrip uart_regs.py membenarkan pengguna mengemas kini hanya output terpilih dengan membaca semula nilai semasa semua daftar terlebih dahulu. Ia kemudian menulis semula semua nilai, termasuk yang dikemas kini.
  • uart_regs.py
  • The generated/uart_regs.py file dijana bersama dengan modul VHDL uart_regs dan mengandungi maklumat daftar tersuai dalam pengepala fail file. Dengan skrip ini, anda boleh membaca atau menulis ke daftar tersuai anda dengan mudah.

Menu bantuan

  • Taip python uart_regs.py -h untuk mencetak menu bantuan:VHDLwhiz-UART-Test-Interface-Generator-FIG-5

Menetapkan port UART

  • Skrip mempunyai pilihan untuk menetapkan port UART menggunakan suis -c. Ini berfungsi pada Windows dan Linux. Tetapkannya kepada salah satu port tersedia yang disenaraikan dalam menu bantuan. Untuk menetapkan port lalai, anda juga boleh mengedit pembolehubah UART_PORT dalam skrip uart_regs.py.

Daftar penyenaraian

  • Maklumat tentang pemetaan daftar diletakkan dalam pengepala skrip uart_regs.py oleh skrip gen_uart_regs.py. Anda boleh menyenaraikan daftar yang tersedia dengan suis -l, seperti yang dilihat di bawah. Ini adalah arahan tempatan dan tidak akan berinteraksi dengan sasaran FPGAVHDLwhiz-UART-Test-Interface-Generator-FIG-6

Menulis untuk mendaftar

  • Anda boleh menulis kepada mana-mana daftar mod keluar dengan menggunakan suis -w. Bekalkan nama daftar diikuti dengan “=” dan nilai yang diberikan sebagai nilai perduaan, perenambelasan atau perpuluhan, seperti yang ditunjukkan di bawah.VHDLwhiz-UART-Test-Interface-Generator-FIG-7
  • Ambil perhatian bahawa pelaksanaan VHDL memerlukan skrip untuk menulis semua daftar keluaran secara serentak. Oleh itu, jika anda tidak menentukan set lengkap daftar keluaran, skrip akan melakukan bacaan daripada FPGA sasaran dan kemudian menggunakan nilai tersebut untuk yang hilang. Hasilnya ialah hanya daftar yang ditentukan berubah
  • Apabila anda melakukan penulisan, semua daftar yang ditentukan akan berubah semasa kitaran jam yang sama, bukan sebaik sahaja ia diterima melalui UART.

Membaca daftar

  • Gunakan suis -r untuk membaca semua nilai daftar, seperti yang ditunjukkan di bawah. Nilai yang ditandakan dengan warna kuning ialah nilai yang kami ubah dalam bekas tulis sebelumnyaampleVHDLwhiz-UART-Test-Interface-Generator-FIG-8
  • Setiap bacaan menunjukkan syot kilat semua daftar input dan output. Mereka semua sampdiketuai semasa kitaran jam yang sama

Penyahpepijatan

Gunakan suis -d dengan mana-mana suis lain jika anda perlu menyahpepijat protokol komunikasi. Kemudian, skrip akan mencetak semua bait yang dihantar dan diterima dan tag mereka jika ia adalah watak kawalan, seperti yang ditunjukkan di bawah.VHDLwhiz-UART-Test-Interface-Generator-FIG-9

Menggunakan antara muka dalam skrip Python lain

  • Skrip uart_regs.py mengandungi kelas UartRegs yang anda boleh gunakan dengan mudah sebagai antara muka komunikasi dalam skrip Python tersuai yang lain. Hanya import kelas, cipta objeknya dan mula menggunakan kaedah, seperti yang ditunjukkan di bawah.VHDLwhiz-UART-Test-Interface-Generator-FIG-10
  • Rujuk docstrings dalam kod Python untuk kaedah dan penerangan serta jenis nilai pulangan.

instantiation_template.vho

  • Templat instantiasi dijana bersama modul uart_regs untuk kemudahan anda. Untuk menjimatkan masa pengekodan, anda boleh menyalin instantiasi modul dan pengisytiharan isyarat ke dalam reka bentuk anda.VHDLwhiz-UART-Test-Interface-Generator-FIG-11VHDLwhiz-UART-Test-Interface-Generator-FIG-12

RTL statik files

  • Anda perlu memasukkan perkara berikut files dalam projek VHDL anda supaya ia disusun ke dalam perpustakaan yang sama dengan modul uart_regs:
  • rtl/uart_regs_backend.vhd
  • rtl/uart_rx.vhd
  • rtl/uart_tx.vhd
  • Modul uart_regs_backend melaksanakan mesin keadaan terhingga yang mencatat masuk dan keluar data daftar. Ia menggunakan modul uart_rx dan uart_tx untuk mengendalikan komunikasi UART dengan hos.

Projek demo

  • Terdapat tiga projek demo yang disertakan dalam Zip file. Mereka membenarkan anda mengawal peranti pada papan yang berbeza serta beberapa daftar dalaman yang lebih besar.
  • Folder demo termasuk uart_regs.vhd dan uart_regs.py yang telah dijana sebelumnya files dibuat khusus untuk reka bentuk tersebut.

Kekisi iCEstick

  • Folder demo/icecube2_icestick mengandungi pelaksanaan demo akses daftar untuk papan FPGA iCEstick Lattice.
  • Untuk menjalankan proses pelaksanaan, buka demo/lattice_icestick/icecube2_proj/uart_regs_sbt.project file dalam perisian reka bentuk Lattice iCEcube2.
  • Selepas memuatkan projek dalam GUI iCEcube2, klik Alat → Jalankan Semua untuk menjana bitmap pengaturcaraan file.
  • Anda boleh menggunakan alat Kendiri Pengaturcara Berlian Lattice untuk mengkonfigurasi FPGA dengan peta bit yang dijana file. Apabila Diamond Programmer dibuka, klik Buka projek pengaturcara sedia ada dalam kotak dialog alu-aluan.
  • Pilih projek file ditemui dalam Zip: demo/lattice_icestick/diamond_programmer_project.xcf dan klik OK.VHDLwhiz-UART-Test-Interface-Generator-FIG-13
  • Selepas projek dimuatkan, klik tiga titik dalam File Nama lajur, seperti yang ditunjukkan di atas. Semak imbas untuk memilih peta bit file yang anda hasilkan dalam iCEcube2
  • demo/lattice_icestick/icecube2_proj/uart_regs_Implmnt/sbt/outputs/bitmap/top_icestick_bitmap.bin
  • Akhir sekali, dengan papan iCEstick dipalamkan ke dalam port USB pada komputer anda, pilih Reka Bentuk → Program untuk memprogram denyar SPI dan mengkonfigurasi FPGA.
  • Anda kini boleh meneruskan membaca dan menulis daftar dengan menggunakan skrip demo/lattice_icestick/uart_regs.py seperti yang diterangkan dalam bahagian uart_regs.py.

Xilinx Digilent Arty A7-35T

  • Anda boleh menemui pelaksanaan demo untuk kit penilaian Artix-7 35T Arty FPGA dalam folder demo/arty_a7_35.
  • Buka Vivado dan navigasi ke yang diekstrak files menggunakan konsol Tcl yang terdapat di bahagian bawah antara muka GUI. Taip arahan ini untuk memasuki folder projek demo:
  • cd /demo/arty_a7_35/vivado_proj/
  • Jalankan skrip Tcl create_vivado_proj.tcl untuk menjana semula projek Vivado:
  • sumber ./create_vivado_proj.tcl
  • Klik Jana Aliran Bit dalam bar sisi untuk menjalankan semua langkah pelaksanaan dan menjana aliran bit pengaturcaraan file.
  • Akhir sekali, klik Open Hardware Manager dan atur cara FPGA melalui GUI.
  • Anda kini boleh meneruskan membaca dan menulis daftar dengan menggunakan skrip demo/arty_a7_35/uart_regs.py seperti yang diterangkan dalam bahagian uart_regs.py.

Xilinx Digilent Arty S7-50

  • Anda boleh menemui pelaksanaan demo untuk papan pembangunan FPGA Arty S7: Spartan-7 dalam folder demo/arty_s7_50.
  • Buka Vivado dan navigasi ke yang diekstrak files menggunakan konsol Tcl yang terdapat di bahagian bawah antara muka GUI. Taip arahan ini untuk memasuki folder projek demo:
  • cd /demo/arty_s7_50/vivado_proj/
  • Jalankan skrip Tcl create_vivado_proj.tcl untuk menjana semula projek Vivado:
  • sumber ./create_vivado_proj.tcl
  • Klik Jana Aliran Bit dalam bar sisi untuk menjalankan semua langkah pelaksanaan dan menjana aliran bit pengaturcaraan file.
  • Akhir sekali, klik Open Hardware Manager dan atur cara FPGA melalui GUI.
  • Anda kini boleh meneruskan membaca dan menulis daftar dengan menggunakan skrip demo/arty_s7_50/uart_regs.py seperti yang diterangkan dalam bahagian uart_regs.py.

Perlaksanaan

  • Tiada keperluan pelaksanaan khusus.

Kekangan

  • Tiada kekangan masa khusus diperlukan untuk reka bentuk ini kerana antara muka UART adalah perlahan dan dianggap sebagai antara muka tak segerak.
  • Input uart_rx ke modul uart_regs disegerakkan dalam modul uart_rx. Oleh itu, ia tidak perlu disegerakkan dalam modul peringkat atas.

Isu yang diketahui

  • Anda mungkin perlu menetapkan semula modul sebelum ia boleh digunakan, bergantung pada sama ada seni bina FPGA anda menyokong nilai daftar lalai.

Maklumat lanjut

Soalan Lazim

S: Apakah tujuan penjana antara muka ujian UART?

J: Penjana antara muka ujian UART membolehkan penciptaan antara muka tersuai untuk berinteraksi dengan nilai daftar FPGA menggunakan komunikasi UART.

S: Bagaimanakah cara saya memasang pakej Pyserial?

A: Anda boleh memasang Pyserial melalui Pip menggunakan arahan: pip install pyserial

Dokumen / Sumber

Penjana Antara Muka Ujian VHDLwhiz UART [pdf] Manual Pengguna
UART Test Interface Generator, Test Interface Generator, Interface Generator, Generator

Rujukan

Tinggalkan komen

Alamat e-mel anda tidak akan diterbitkan. Medan yang diperlukan ditanda *