Logo VHDLwhiz

Generator Antarmuka Uji UART VHDLwhiz

Generator Antarmuka Uji UART VHDLwhiz-PRODUK

Informasi Produk

Spesifikasi:

  • Nama Produk: Generator antarmuka pengujian UART register VHDL
  • Versi: 1.0.4
  • Tanggal: 18 Agustus 2024
  • Pengarang: Jonas Julian Jensen
  • Produk URL: Tautan Produk
  • Email kontak: jonas@vhdlwhiz.com

Keterangan

Produk ini memungkinkan Anda membuat antarmuka khusus untuk membaca dan menulis nilai register FPGA menggunakan UART. Modul VHDL dan skrip Python yang dihasilkan memberikan kemampuan untuk berinteraksi dengan berbagai jenis register dalam desain FPGA Anda.

Persyaratan

  • Penerjemah Python 3
  • paket pyserial

Protokol

Produk ini menggunakan protokol pembingkaian data dengan empat karakter kontrol:

  • Nama: BACA_PERMINTAAN, Nilai: 0x0A – Perintah dari host ke FPGA untuk memulai urutan penulisan untuk mengirim semua register kembali melalui UART
  • Nama: MULAI_MENULIS, Nilai: 0x0B – Menandai awal urutan penulisan di kedua arah
  • Nama: AKHIR_TULIS, Nilai: 0x0C – Menandai akhir urutan penulisan di kedua arah
  • Nama: MELARIKAN DIRI, Nilai: 0x0D – Karakter escape yang digunakan untuk escape dari kata kontrol

Petunjuk Penggunaan Produk

Menjalankan Skrip

Untuk menggunakan produk ini, pastikan Anda telah menginstal Python 3 dan paket Pyserial. Jalankan skrip melalui interpreter Python 3.

Membuat Antarmuka Kustom

Gunakan skrip gen_uart_regs.py untuk membuat antarmuka khusus guna membaca dan menulis nilai register FPGA. Anda dapat menentukan komposisi register input dan output serta jenisnya saat membuat output. files.

Berinteraksi dengan Register

Anda dapat membaca atau menulis ke sejumlah register dalam desain FPGA Anda menggunakan modul VHDL yang dihasilkan dan skrip Python. Register yang dapat diakses dapat memiliki tipe seperti std_logic, std_logic_vector, signed, atau unsigned.

Lisensi

  • Lisensi MIT mencakup persyaratan hak cipta kode sumber dan ketentuan penggunaan. Lihat LISENSI.txt file di Zip file untuk rinciannya.

Catatan Perubahan

  • Perubahan ini mengacu pada proyek files, dan dokumen ini diperbarui sesuai dengan itu
Versi Perkataan
1.0.0 Rilis awal
1.0.1 Memperbaiki bug referensi «self» yang hilang saat mengimpor sebagai uart_regs.py sebagai modul Python. Mengubah hasil cetak penulisan gagal menjadi pengecualian

hindari mencetak ke konsol saat dijalankan sebagai modul yang diimpor.

1.0.2 Perbaikan untuk kesalahan Vivado [Synth 8-248] ketika tidak ada reg mode keluar.
1.0.3 Memperbaiki peringatan Vivado Linter: Register telah mengaktifkan yang digerakkan oleh

pengaturan ulang sinkron

1.0.4 Memperbaiki huruf besar kecil saat menerima kata yang salah bentuk dengan karakter escape sebagai byte terakhir. Kata berikutnya juga akan hilang karena kami tidak menghapus recv_data_prev_is_escape saat kembali ke IDLE.

Skrip gen_uart_regs.py sekarang hanya mengizinkan nama reg yang unik.

Keterangan

  • Dokumen ini menjelaskan hal berikut files dan folder:
  • gen_uart_regs.py
  • dihasilkan/uart_regs.vhd
  • dihasilkan/uart_regs.py
  • dihasilkan/instansiasi_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 yang mendukung files dalam proyek ini memungkinkan Anda membuat antarmuka khusus untuk membaca dan menulis nilai register FPGA dari berbagai jenis dan lebar menggunakan UART.
  • Anda dapat menggunakan modul VHDL dan skrip Python yang dihasilkan untuk membaca atau menulis ke sejumlah register dalam desain Anda. Register yang dapat diakses UART dapat memiliki tipe std_logic, std_logic_vector, signed, atau unsigned.
  • Anda dapat memutuskan komposisi dan tipe input dan output yang tepat saat menghasilkan output files menggunakan skrip gen_uart_regs.py.
  • Skrip Python dibuat sebagian dengan bantuan alat kecerdasan buatan ChatGPT, sedangkan kode VHDL dibuat dengan tangan.

Persyaratan

  • Skrip dalam proyek ini harus dijalankan melalui juru bahasa Python 3 dan paket Pyserial harus diinstal.
  • Anda dapat menginstal pyserial melalui Pip menggunakan perintah ini: pip install pyserial

Protokol

  • VHDL files dan skrip Python menggunakan protokol pembingkaian data dengan empat kontrol
Nama Nilai Komentar
BACA_PERMINTAAN 0x0A Perintah dari host ke FPGA untuk memulai penulisan

urutan untuk mengirim semua register kembali melalui UART

START_TULIS 0x0B Menandai awal urutan penulisan di salah satu

arah

END_WRITE 0x0C Menandai akhir urutan penulisan di kedua arah
MELARIKAN DIRI 0x0D Karakter escape digunakan untuk meng-escape setiap kata kontrol, termasuk karakter ESCAPE itu sendiri, ketika karakter tersebut muncul sebagai data antara penanda START_WRITE dan END_WRITE.

Setiap byte READ_REQ yang tidak lolos yang dikirim ke FPGA adalah instruksi untuk mengirim semua register yang dapat diakses UART (input dan output) kembali ke host melalui UART. Perintah ini biasanya hanya dikeluarkan oleh skrip uart_regs.py.
Setelah menerima perintah ini, FPGA akan merespons dengan mengirimkan konten semua register kembali ke host. Pertama, sinyal masukan, kemudian sinyal keluaran. Jika panjangnya tidak berjumlah kelipatan 8 bit, bit terbawah dari byte terakhir akan diberi angka nol.
Urutan penulisan selalu dimulai dengan byte START_WRITE dan diakhiri dengan byte END_WRITE. Setiap byte di antara keduanya dianggap sebagai byte data. Jika ada byte data yang memiliki nilai yang sama dengan karakter kontrol, byte data tersebut harus di-escape. Ini berarti mengirimkan karakter ESCAPE tambahan sebelum byte data untuk menunjukkan bahwa itu sebenarnya adalah data.
Jika START_WRITE yang tidak lolos tiba di mana saja dalam aliran byte, ini dianggap sebagai awal dari urutan penulisan. Modul uart_regs_backend menggunakan informasi ini untuk melakukan sinkronisasi ulang jika komunikasi tidak sinkron.

gen_uart_regs.py

  • Ini adalah skrip yang harus Anda mulai untuk menghasilkan antarmuka. Di bawah ini adalah screenshot menu bantuan yang bisa Anda dapatkan dengan menjalankan: python gen_uart_regs.py -hGenerator Antarmuka Uji VHDLwhiz-UART-Gbr. 1
  • Untuk menghasilkan antarmuka khusus, Anda harus menjalankan skrip dengan masing-masing register terkontrol UART yang Anda inginkan terdaftar sebagai argumen. Tipe yang tersedia adalah std_logic, std_logic_vector, unsigned, dan Signed.
  • Mode (arah) default ada dan tipe defaultnya adalah std_logic_vector kecuali panjang registernya: 1. Kemudian, defaultnya adalah std_logic.
  • Jadi, jika Anda ingin membuat sinyal input std_logic, Anda dapat menggunakan salah satu argumen berikut:
  • sl_saya=1
  • sl_saya=1:masuk
  • my_sl=1:di:std_logic
  • Semua varian di atas akan menghasilkan skrip yang menghasilkan sinyal yang dapat diakses UART ini:Generator Antarmuka Uji VHDLwhiz-UART-Gbr. 2
  • Mari kita jalankan skrip dengan argumen untuk menghasilkan antarmuka dengan beberapa register dengan arah, panjang, dan jenis yang berbedaGenerator Antarmuka Uji VHDLwhiz-UART-Gbr. 3

Dihasilkan files

  • Jika skrip gen_uart_regs.py dijalankan dengan sukses, folder keluaran akan dihasilkan dengan nama yang dihasilkan dengan ketiganya filetercantum di bawah ini. Jika sudah ada, maka akan ditimpa.
  • dihasilkan/uart_regs.vhd
  • dihasilkan/uart_regs.py
  • dihasilkan/instansiasi_template.vho
  • uart_regs.vhd
  • Ini adalah modul antarmuka khusus yang dihasilkan oleh skrip. Anda perlu membuat instance-nya dalam desain Anda, di mana ia dapat mengakses register yang ingin Anda kontrol menggunakan UART.
  • Segala sesuatu di atas bagian “– Register yang dapat diakses UART” akan sama untuk setiap modul uart_regs, sedangkan komposisi sinyal port di bawah baris tersebut bergantung pada argumen yang diberikan pada skrip generator.
  • Daftar di bawah ini menunjukkan entitas untuk modul uart_regs yang dihasilkan dari perintah generate, misample ditampilkan di bagian gen_uart_regs.pyGenerator Antarmuka Uji VHDLwhiz-UART-Gbr. 4
  • Anda tidak perlu menyinkronkan sinyal uart_rx, karena itu ditangani di uart_rx. modul.
  • Ketika modul menerima permintaan baca, modul akan menangkap nilai semua sinyal masukan dan keluaran dalam siklus jam saat ini. Snapshot sesaat kemudian dikirim ke host melalui UART.
  • Ketika penulisan terjadi, semua register keluaran diperbarui dengan nilai baru dalam siklus jam yang sama. Tidak mungkin mengubah nilai sinyal keluaran satu per satu.
  • Namun, skrip uart_regs.py memungkinkan pengguna untuk memperbarui hanya keluaran yang dipilih dengan terlebih dahulu membaca kembali nilai saat ini dari semua register. Ia kemudian menulis kembali semua nilai, termasuk nilai yang diperbarui.
  • uart_regs.py
  • Yang dihasilkan/uart_regs.py file dihasilkan bersama dengan modul uart_regs VHDL dan berisi informasi register khusus di header file. Dengan skrip ini, Anda dapat membaca atau menulis ke register khusus Anda dengan mudah.

Menu bantuan

  • Ketik python uart_regs.py -h untuk mencetak menu bantuan:Generator Antarmuka Uji VHDLwhiz-UART-Gbr. 5

Mengatur port UART

  • Skrip ini memiliki opsi untuk menyetel port UART menggunakan sakelar -c. Ini berfungsi di Windows dan Linux. Setel ke salah satu port yang tersedia yang tercantum di menu bantuan. Untuk menyetel port default, Anda juga dapat mengedit variabel UART_PORT di skrip uart_regs.py.

Daftar register

  • Informasi tentang pemetaan register ditempatkan di header skrip uart_regs.py oleh skrip gen_uart_regs.py. Anda dapat mencantumkan register yang tersedia dengan sakelar -l, seperti yang terlihat di bawah ini. Ini adalah perintah lokal dan tidak akan berinteraksi dengan FPGA targetGenerator Antarmuka Uji VHDLwhiz-UART-Gbr. 6

Menulis ke register

  • Anda dapat menulis ke register mode keluar mana pun dengan menggunakan saklar -w. Berikan nama register diikuti dengan “=” dan nilai yang diberikan dalam bentuk biner, heksadesimal, atau desimal, seperti yang ditunjukkan di bawah ini.Generator Antarmuka Uji VHDLwhiz-UART-Gbr. 7
  • Perhatikan bahwa implementasi VHDL mengharuskan skrip untuk menulis semua register keluaran secara bersamaan. Oleh karena itu, jika Anda tidak menentukan satu set lengkap register keluaran, skrip akan terlebih dahulu melakukan pembacaan dari FPGA target dan kemudian menggunakan nilai tersebut untuk yang hilang. Hasilnya adalah hanya register yang ditentukan yang berubah
  • Saat Anda melakukan penulisan, semua register yang ditentukan akan berubah selama siklus jam yang sama, bukan segera setelah diterima melalui UART.

Membaca register

  • Gunakan saklar -r untuk membaca semua nilai register, seperti yang ditunjukkan di bawah ini. Nilai yang ditandai dengan warna kuning adalah nilai yang kita ubah pada penulisan sebelumnya, misampleGenerator Antarmuka Uji VHDLwhiz-UART-Gbr. 8
  • Setiap pembacaan menunjukkan snapshot instan dari semua register input dan output. Semuanya sampdipimpin selama siklus jam yang sama

Men-debug

Gunakan sakelar -d dengan sakelar lainnya jika Anda perlu men-debug protokol komunikasi. Kemudian, skrip akan mencetak semua byte yang dikirim dan diterima dan tag mereka jika mereka adalah karakter kontrol, seperti yang ditunjukkan di bawah ini.Generator Antarmuka Uji VHDLwhiz-UART-Gbr. 9

Menggunakan antarmuka dalam skrip Python lainnya

  • Skrip uart_regs.py berisi kelas UartRegs yang dapat Anda gunakan dengan mudah sebagai antarmuka komunikasi dalam skrip Python kustom lainnya. Cukup impor kelasnya, buat objeknya, dan mulai gunakan metodenya, seperti yang ditunjukkan di bawah ini.Generator Antarmuka Uji VHDLwhiz-UART-Gbr. 10
  • Lihat dokumen dalam kode Python untuk metode dan deskripsi serta tipe nilai kembalian.

instantiation_template.vho

  • Templat instantiasi dibuat bersama dengan modul uart_regs untuk kenyamanan Anda. Untuk menghemat waktu coding, Anda dapat menyalin instantiasi modul dan deklarasi sinyal ke dalam desain Anda.Generator Antarmuka Uji VHDLwhiz-UART-Gbr. 11Generator Antarmuka Uji VHDLwhiz-UART-Gbr. 12

RTL Statis files

  • Anda perlu menyertakan yang berikut ini files di proyek VHDL Anda sehingga dikompilasi 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 mengimplementasikan mesin keadaan terbatas yang memasukkan dan mengeluarkan data register. Ia menggunakan modul uart_rx dan uart_tx untuk menangani komunikasi UART dengan host.

Proyek demo

  • Ada tiga proyek demo yang disertakan dalam Zip file. Mereka memungkinkan Anda mengontrol periferal pada papan yang berbeda serta beberapa register internal yang lebih besar.
  • Folder demo mencakup uart_regs.vhd dan uart_regs.py yang telah dibuat sebelumnya filedibuat khusus untuk desain tersebut.

Kisi iCEstick

  • Folder demo/icecube2_icestick berisi implementasi demo akses register untuk papan FPGA Lattice iCEstick.
  • Untuk menjalankan proses implementasi, buka demo/lattice_icestick/icecube2_proj/uart_regs_sbt.project file dalam perangkat lunak desain Lattice iCEcube2.
  • Setelah memuat proyek di GUI iCEcube2, klik Tools→Run All untuk menghasilkan bitmap pemrograman file.
  • Anda dapat menggunakan alat Standalone Lattice Diamond Programmer untuk mengonfigurasi FPGA dengan bitmap yang dihasilkan file. Saat Diamond Programmer terbuka, klik Buka proyek pemrogram yang ada di kotak dialog selamat datang.
  • Pilih proyek file ditemukan di Zip: demo/lattice_icestick/diamond_programmer_project.xcf dan klik OK.Generator Antarmuka Uji VHDLwhiz-UART-Gbr. 13
  • Setelah proyek dimuat, klik tiga titik di File Kolom nama, seperti gambar di atas. Telusuri untuk memilih bitmap file yang Anda hasilkan di iCEcube2
  • demo/lattice_icestick/icecube2_proj/uart_regs_Implmnt/sbt/output/bitmap/top_icestick_bitmap.bin
  • Terakhir, dengan papan iCEstick dicolokkan ke port USB di komputer Anda, pilih Desain → Program untuk memprogram flash SPI dan mengkonfigurasi FPGA.
  • Anda sekarang dapat melanjutkan membaca dan menulis register dengan menggunakan skrip demo/lattice_icestick/uart_regs.py seperti yang dijelaskan di bagian uart_regs.py.

Xilinx Digilent Arty A7-35T

  • Anda dapat menemukan implementasi demo untuk kit evaluasi Artix-7 35T Arty FPGA di folder demo/arty_a7_35.
  • Buka Vivado dan arahkan ke hasil ekstrak files menggunakan konsol Tcl yang terdapat di bagian bawah antarmuka GUI. Ketik perintah ini untuk masuk ke folder proyek demo:
  • CD /demo/arty_a7_35/proyek_vivado/
  • Jalankan skrip Tcl create_vivado_proj.tcl untuk membuat ulang proyek Vivado:
  • sumber ./create_vivado_proj.tcl
  • Klik Hasilkan Bitstream di sidebar untuk menjalankan semua langkah implementasi dan menghasilkan bitstream pemrograman file.
  • Terakhir, klik Open Hardware Manager dan program FPGA melalui GUI.
  • Anda sekarang dapat melanjutkan membaca dan menulis register dengan menggunakan skrip demo/arty_a7_35/uart_regs.py seperti yang dijelaskan di bagian uart_regs.py.

Xilinx Digilent Arty S7-50

  • Anda dapat menemukan implementasi demo untuk papan pengembangan Arty S7: Spartan-7 FPGA di folder demo/arty_s7_50.
  • Buka Vivado dan arahkan ke hasil ekstrak files menggunakan konsol Tcl yang terdapat di bagian bawah antarmuka GUI. Ketik perintah ini untuk masuk ke folder proyek demo:
  • CD /demo/arty_s7_50/vivado_proyek/
  • Jalankan skrip Tcl create_vivado_proj.tcl untuk membuat ulang proyek Vivado:
  • sumber ./create_vivado_proj.tcl
  • Klik Hasilkan Bitstream di sidebar untuk menjalankan semua langkah implementasi dan menghasilkan bitstream pemrograman file.
  • Terakhir, klik Open Hardware Manager dan program FPGA melalui GUI.
  • Anda sekarang dapat melanjutkan membaca dan menulis register dengan menggunakan skrip demo/arty_s7_50/uart_regs.py seperti yang dijelaskan di bagian uart_regs.py.

Pelaksanaan

  • Tidak ada persyaratan implementasi khusus.

Batasan

  • Tidak ada batasan waktu khusus yang diperlukan untuk desain ini karena antarmuka UART lambat dan diperlakukan sebagai antarmuka asinkron.
  • Input uart_rx ke modul uart_regs disinkronkan dalam modul uart_rx. Jadi, tidak perlu disinkronkan di modul tingkat atas.

Masalah yang diketahui

  • Anda mungkin perlu mengatur ulang modul sebelum dapat digunakan, tergantung pada apakah arsitektur FPGA Anda mendukung nilai register default.

Info lebih lanjut

Tanya Jawab Umum

T: Apa tujuan dari generator antarmuka pengujian UART?

A: Generator antarmuka pengujian UART memungkinkan pembuatan antarmuka khusus untuk berinteraksi dengan nilai register FPGA menggunakan komunikasi UART.

T: Bagaimana cara menginstal paket Pyserial?

A: Anda dapat menginstal Pyserial melalui Pip menggunakan perintah: pip install pyserial

Dokumen / Sumber Daya

Generator Antarmuka Uji UART VHDLwhiz [Bahasa Indonesia:] Panduan Pengguna
Generator Antarmuka Uji UART, Generator Antarmuka Uji, Generator Antarmuka, Generator

Referensi

Tinggalkan komentar

Alamat email Anda tidak akan dipublikasikan. Bidang yang wajib diisi ditandai *