VHDLwhiz logosu

VHDLwhiz UART Test Arayüzü Oluşturucu

VHDLwhiz-UART-Test-Arayüz-Oluşturucu-ÜRÜN

Ürün Bilgileri

Özellikler:

  • Ürün Adı: VHDL kayıtları UART test arayüzü üreteci
  • Sürüm: 1.0.4
  • Tarih: 18 Ağustos 2024
  • Yazar: Jonas Julian Jensen
  • Ürün URL: Ürün Bağlantısı
  • İletişim e-postası: jonas@vhdlwhiz.com

Tanım

Bu ürün, UART kullanarak FPGA kayıt değerlerini okumak ve yazmak için özel arayüzler oluşturmanıza olanak tanır. Oluşturulan VHDL modülü ve Python betiği, FPGA tasarımınızdaki çeşitli kayıt türleriyle etkileşim kurma yeteneği sağlar.

Gereksinimler

  • Python 3 yorumlayıcısı
  • pyserial paketi

Protokol

Ürün, dört kontrol karakterine sahip bir veri çerçeveleme protokolü kullanır:

  • İsim: OKU_İSTEĞİ, Değer: 0x0A – Tüm kayıtları UART üzerinden geri göndermek için bir yazma dizisi başlatmak üzere ana bilgisayardan FPGA'ya komut
  • İsim: BAŞLAT_YAZ, Değer: 0x0B – Her iki yönde de bir yazma dizisinin başlangıcını işaretler
  • İsim: SON_YAZ, Değer: 0x0C – Her iki yönde de bir yazma dizisinin sonunu işaretler
  • İsim: KAÇMAK, Değer: 0x0D – Kontrol sözcüklerinden kaçmak için kullanılan kaçış karakteri

Ürün Kullanım Talimatları

Komut Dosyalarını Çalıştırma

Ürünü kullanmak için Python 3'ün ve Pyserial paketinin yüklü olduğundan emin olun. Komut dosyalarını bir Python 3 yorumlayıcısı aracılığıyla çalıştırın.

Özel Arayüzler Oluşturma

FPGA kayıt değerlerini okumak ve yazmak için özel arayüzler oluşturmak üzere gen_uart_regs.py betiğini kullanın. Çıkışı oluştururken giriş ve çıkış kayıtlarının ve türlerinin bileşimini belirtebilirsiniz files.

Kayıtlarla Etkileşim

Oluşturulan VHDL modülünü ve Python betiğini kullanarak FPGA tasarımınızdaki herhangi bir sayıda kayıttan okuyabilir veya yazabilirsiniz. Erişilebilir kayıtlar std_logic, std_logic_vector, signed veya unsigned gibi türlere sahip olabilir.

Lisans

  • MIT lisansı, kaynak kodunun telif hakkı gereksinimlerini ve kullanım koşullarını kapsar. LICENSE.txt dosyasına bakın file Zip'te file Ayrıntılar için.

Değişiklik Günlüğü

  • Bu değişiklikler projeyle ilgilidir files ve bu belge buna göre güncellenmektedir
Sürüm Notlar
1.0.0 İlk sürüm
1.0.1 Python modülü olarak uart_regs.py olarak içe aktarırken eksik «self» referans hatası düzeltildi. Yazma başarısız çıktı istisnasına değiştirildi

İçeri aktarılmış bir modül olarak çalıştırıldığında konsola yazdırmayı önleyin.

1.0.2 Vivado [Synth 8-248] çıkış modu düzenleyicileri olmadığında oluşan hata için düzeltme.
1.0.3 Vivado Linter uyarısını düzeltin: Kayıt, tarafından etkinleştirildi

senkron sıfırlama

1.0.4 Kaçış karakteri son bayt olarak kötü biçimlendirilmiş bir sözcük alındığında köşe durumunu düzeltin. IDLE'a dönerken recv_data_prev_is_escape'i temizlemediğimiz için bir sonraki sözcük de kaybolacaktı.

gen_uart_regs.py betiği artık yalnızca benzersiz kayıt adlarına izin veriyor.

Tanım

  • Bu belge aşağıdakileri açıklar filee-postalar ve klasörler:
  • gen_uart_regs.py
  • oluşturulan/uart_regs.vhd
  • oluşturulan/uart_regs.py
  • oluşturulan/örnekleme_şablonu.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/
  • gen_uart_regs.py betiği ve VHDL'yi destekleme fileBu projedeki arayüzler, UART kullanarak çeşitli tip ve genişlikteki FPGA kayıt değerlerini okumak ve yazmak için özel arayüzler oluşturmanıza olanak tanır.
  • Oluşturulan VHDL modülünü ve Python betiğini, tasarımınızdaki herhangi bir sayıda kayıttan okumak veya yazmak için kullanabilirsiniz. UART erişilebilir kayıtları std_logic, std_logic_vector, signed veya unsigned türlerine sahip olabilir.
  • Çıkışı oluştururken giriş ve çıkış kayıtlarının ve türlerinin kesin bileşimine karar verebilirsiniz filegen_uart_regs.py betiğini kullanarak.
  • Python betikleri kısmen ChatGPT yapay zeka aracının yardımıyla oluşturulurken, VHDL kodları elle oluşturuldu.

Gereksinimler

  • Bu projedeki scriptlerin Python 3 yorumlayıcısı ile çalıştırılması ve Pyserial paketinin kurulu olması gerekmektedir.
  • Bu komutu kullanarak Pip üzerinden pyserial'ı yükleyebilirsiniz: pip install pyserial

Protokol

  • VHDL files ve Python betiği, dört kontrol içeren bir veri çerçeveleme protokolü kullanır
İsim Değer Yorum
OKU_İSTEĞİ 0x0A Ana bilgisayardan FPGA'ya yazma işlemini başlatma komutu

tüm kayıtları UART üzerinden geri gönderme sırası

BAŞLAT_YAZ 0x0B Bir yazma dizisinin başlangıcını işaretler

yön

SON_YAZ 0x0C Her iki yönde de bir yazma dizisinin sonunu işaretler
KAÇMAK 0x0D START_WRITE ve END_WRITE işaretçileri arasında veri olarak göründüklerinde, ESCAPE karakteri de dahil olmak üzere kontrol sözcüklerinden herhangi birini kaçırmak için kullanılan kaçış karakteri.

FPGA'ya gönderilen herhangi bir kaçışsız READ_REQ baytı, tüm UART erişilebilir kayıtlarını (girişler ve çıkışlar) UART üzerinden ana bilgisayara geri gönderme talimatıdır. Bu komut genellikle yalnızca uart_regs.py betiği tarafından verilir.
Bu komutu aldıktan sonra, FPGA tüm kayıtların içeriğini ana bilgisayara geri göndererek yanıt verecektir. Önce giriş sinyalleri, sonra çıkış sinyalleri. Uzunlukları 8 bitin katına ulaşmıyorsa, son baytın alt bitleri sıfırlarla doldurulacaktır.
Bir yazma dizisi her zaman START_WRITE baytıyla başlar ve END_WRITE baytıyla biter. Bu baytlar arasındaki tüm baytlar veri baytı olarak kabul edilir. Herhangi bir veri baytı bir kontrol karakteriyle aynı değere sahipse, veri baytı kaçırılmalıdır. Bu, aslında veri olduğunu belirtmek için veri baytından önce fazladan bir ESCAPE karakteri göndermek anlamına gelir.
Kaçmayan bir START_WRITE bayt akışında herhangi bir yere gelirse, bir yazma dizisinin başlangıcı olarak kabul edilir. uart_regs_backend modülü, iletişimin senkronizasyonu bozulduğunda yeniden senkronizasyon yapmak için bu bilgiyi kullanır.

gen_uart_regs.py

  • Arayüzü oluşturmak için başlamanız gereken betik budur. Aşağıda, python gen_uart_regs.py -h komutunu çalıştırarak elde edebileceğiniz yardım menüsünün ekran görüntüsü bulunmaktadır.VHDLwhiz-UART-Test-Arayüz-Oluşturucu-ŞEKİL-1
  • Özel bir arayüz oluşturmak için, betiği, argüman olarak listelenen istediğiniz UART kontrol edilebilir kayıtlarının her biriyle çalıştırmalısınız. Kullanılabilir türler std_logic, std_logic_vector, unsigned ve signed'dır.
  • Varsayılan mod (yön) in'dir ve varsayılan tür std_logic_vector'dür, kayıt uzunluğu 1 olmadığı sürece. O zaman, varsayılan olarak std_logic olur.
  • Dolayısıyla, bir std_logic giriş sinyali oluşturmak istiyorsanız, şu argümanlardan herhangi birini kullanabilirsiniz:
  • benim_sl=1
  • benim_sl=1:içinde
  • my_sl=1:in:std_mantığı
  • Yukarıdaki tüm varyantlar, betiğin bu UART erişilebilir sinyali üretmesiyle sonuçlanacaktır:VHDLwhiz-UART-Test-Arayüz-Oluşturucu-ŞEKİL-2
  • Farklı yönlere, uzunluklara ve türlere sahip birkaç kayıt içeren bir arayüz oluşturmak için betiği argümanlarla çalıştıralımVHDLwhiz-UART-Test-Arayüz-Oluşturucu-ŞEKİL-3

Oluşturuldu files

  • gen_uart_regs.py betiğinin başarılı bir şekilde çalıştırılması, üçüyle oluşturulan adlı bir çıktı klasörü üretecektir. fileAşağıda listelenmiştir. Zaten mevcutlarsa, üzerine yazılacaktır.
  • oluşturulan/uart_regs.vhd
  • oluşturulan/uart_regs.py
  • oluşturulan/örnekleme_şablonu.vho
  • uart_regs.vhd
  • Bu, betik tarafından oluşturulan özel arayüz modülüdür. Bunu, UART kullanarak kontrol etmek istediğiniz kayıtlara erişebileceği tasarımınızda örneklendirmeniz gerekir.
  • “– UART erişilebilir kayıtları” bölümünün üstündeki her şey her uart_regs modülü için aynı olacakken, bu satırın altındaki port sinyallerinin bileşimi, üreteç betiğine verilen argümanlara bağlıdır.
  • Aşağıdaki liste, uart_regs modülü için generate komutundan kaynaklanan varlığı gösterir.ampgen_uart_regs.py bölümünde gösterilen dosyaVHDLwhiz-UART-Test-Arayüz-Oluşturucu-ŞEKİL-4
  • Uart_rx sinyalini senkronize etmenize gerek yok, bu işlem uart_rx. modülünde işleniyor.
  • Modül bir okuma isteği aldığında, geçerli saat döngüsü içindeki tüm giriş ve çıkış sinyallerinin değerlerini yakalayacaktır. Anlık anlık görüntü daha sonra UART üzerinden ana bilgisayara gönderilir.
  • Bir yazma gerçekleştiğinde, tüm çıkış kayıtları aynı saat döngüsü içinde yeni değerlerle güncellenir. Çıkış sinyali değerlerini tek tek değiştirmek mümkün değildir.
  • Ancak, uart_regs.py betiği, kullanıcının önce tüm kayıtların geçerli değerlerini geri okuyarak yalnızca seçili çıktıları güncellemesine izin verir. Daha sonra güncellenenler de dahil olmak üzere tüm değerleri geri yazar.
  • uart_regs.py
  • Oluşturulan/uart_regs.py file uart_regs VHDL modülüyle birlikte üretilir ve başlığında özel kayıt bilgilerini içerir fileBu betikle, özel kayıtlarınızdan kolaylıkla okuyabilir veya yazabilirsiniz.

Yardım menüsü

  • Yardım menüsünü yazdırmak için python uart_regs.py -h yazın:VHDLwhiz-UART-Test-Arayüz-Oluşturucu-ŞEKİL-5

UART portunun ayarlanması

  • Komut dosyasında -c anahtarını kullanarak UART portunu ayarlama seçenekleri vardır. Bu Windows ve Linux'ta çalışır. Yardım menüsünde listelenen kullanılabilir portlardan birine ayarlayın. Varsayılan bir port ayarlamak için uart_regs.py komut dosyasında UART_PORT değişkenini de düzenleyebilirsiniz.

Listeleme kayıtları

  • Kayıt eşlemesi hakkında bilgi, gen_uart_regs.py betiği tarafından uart_regs.py betiğinin başlığına yerleştirilir. Aşağıda görüldüğü gibi, kullanılabilir kayıtları -l anahtarıyla listeleyebilirsiniz. Bu yerel bir komuttur ve hedef FPGA ile etkileşime girmeyecektirVHDLwhiz-UART-Test-Arayüz-Oluşturucu-ŞEKİL-6

Kayıtlara yazma

  • -w anahtarını kullanarak herhangi bir çıkış modu kayıt defterine yazabilirsiniz. Kayıt defteri adını “=” ve aşağıda gösterildiği gibi ikili, onaltılık veya ondalık değer olarak verilen değeri sağlayın.VHDLwhiz-UART-Test-Arayüz-Oluşturucu-ŞEKİL-7
  • VHDL uygulamasının betiğin tüm çıktı kayıtlarını aynı anda yazmasını gerektirdiğini unutmayın. Bu nedenle, çıktı kayıtlarının tam bir setini belirtmezseniz, betik önce hedef FPGA'dan bir okuma gerçekleştirir ve ardından eksik olanlar için bu değerleri kullanır. Sonuç olarak yalnızca belirtilen kayıtlar değişir
  • Bir yazma işlemi gerçekleştirdiğinizde, belirtilen tüm kayıtlar UART üzerinden alındıkları anda değil, aynı saat döngüsü sırasında değişecektir.

Kayıtları okumak

  • Aşağıda gösterildiği gibi tüm kayıt değerlerini okumak için -r anahtarını kullanın. Sarı ile işaretlenen değerler, önceki yazma örneğinde değiştirdiğimiz değerlerdir.ampleVHDLwhiz-UART-Test-Arayüz-Oluşturucu-ŞEKİL-8
  • Her okuma, tüm giriş ve çıkış kayıtlarının anlık bir görüntüsünü gösterir. Hepsi sampaynı saat döngüsü sırasında yönlendirildi

Hata ayıklama

İletişim protokolünü hata ayıklamanız gerekiyorsa, diğer anahtarlardan herhangi biriyle -d anahtarını kullanın. Ardından, betik gönderilen ve alınan tüm baytları yazdıracaktır ve tag Aşağıda gösterildiği gibi, kontrol karakterleriyse bunları değiştirin.VHDLwhiz-UART-Test-Arayüz-Oluşturucu-ŞEKİL-9

Arayüzü diğer Python betiklerinde kullanma

  • uart_regs.py betiği, diğer özel Python betiklerinde iletişim arayüzü olarak kolayca kullanabileceğiniz bir UartRegs sınıfı içerir. Basitçe sınıfı içe aktarın, bir nesnesini oluşturun ve aşağıda gösterildiği gibi yöntemleri kullanmaya başlayın.VHDLwhiz-UART-Test-Arayüz-Oluşturucu-ŞEKİL-10
  • Metot ve açıklamalar ile dönüş değeri tipleri için Python kodundaki dokümanlara bakın.

örnekleme_şablonu.vho

  • Örnekleme şablonu, kolaylığınız için uart_regs modülüyle birlikte üretilir. Kodlama süresinden tasarruf etmek için, modül örneklemesini ve sinyal bildirimlerini tasarımınıza kopyalayabilirsiniz.VHDLwhiz-UART-Test-Arayüz-Oluşturucu-ŞEKİL-11VHDLwhiz-UART-Test-Arayüz-Oluşturucu-ŞEKİL-12

Statik RTL files

  • Aşağıdakileri eklemeniz gerekir fileVHDL projenizde uart_regs modülüyle aynı kütüphaneye derlenmeleri için:
  • rtl/uart_regs_backend.vhd
  • rtl/uart_rx.vhd
  • rtl/uart_tx.vhd
  • uart_regs_backend modülü, kayıt verilerini kaydeden ve kaydeden sonlu durum makinelerini uygular. Ana bilgisayarla UART iletişimini yönetmek için uart_rx ve uart_tx modüllerini kullanır.

Demo projeler

  • Zip'te üç adet demo proje bulunmaktadır file. Farklı kartlardaki çevre birimlerini ve birkaç büyük dahili kayıt defterini kontrol etmenize olanak tanırlar.
  • Demo klasörleri önceden oluşturulmuş uart_regs.vhd ve uart_regs.py'yi içerir fileBu tasarımlar için özel olarak üretilmiştir.

Kafes iCEstick

  • demo/icecube2_icestick klasörü, Lattice iCEstick FPGA kartı için bir kayıt erişimli demo uygulamasını içerir.
  • Uygulama sürecini çalıştırmak için demo/lattice_icestick/icecube2_proj/uart_regs_sbt.project dosyasını açın file Lattice iCEcube2 tasarım yazılımında.
  • Projeyi iCEcube2 GUI'ye yükledikten sonra, programlama bitmap'ini oluşturmak için Araçlar → Tümünü Çalıştır'a tıklayın. file.
  • Oluşturulan bitmap ile FPGA'yı yapılandırmak için Lattice Diamond Programmer Standalone aracını kullanabilirsiniz file. Diamond Programmer açıldığında, hoş geldiniz iletişim kutusunda Mevcut bir programcı projesini aç öğesine tıklayın.
  • Proje seç file Zip dosyasında bulunan: demo/lattice_icestick/diamond_programmer_project.xcf ve Tamam'a tıklayın.VHDLwhiz-UART-Test-Arayüz-Oluşturucu-ŞEKİL-13
  • Proje yüklendikten sonra penceredeki üç noktaya tıklayın. File Yukarıda gösterildiği gibi ad sütunu. Bitmap'i seçmek için göz atın file iCEcube2'de ürettiğiniz
  • demo/lattice_icestick/icecube2_proj/uart_regs_Implmnt/sbt/çıktılar/bitmap/top_icestick_bitmap.bin
  • Son olarak, iCEstick kartı bilgisayarınızdaki bir USB bağlantı noktasına takılıyken, SPI flaşını programlamak ve FPGA'yı yapılandırmak için Tasarım → Program seçeneğini seçin.
  • Artık uart_regs.py bölümünde anlatıldığı gibi demo/lattice_icestick/uart_regs.py betiğini kullanarak kayıtları okumaya ve yazmaya başlayabilirsiniz.

Xilinx Digilent Arty A7-35T

  • Artix-7 35T Arty FPGA değerlendirme kiti için demo uygulamasını demo/arty_a7_35 klasöründe bulabilirsiniz.
  • Vivado'yu açın ve çıkarılan dosyaya gidin fileGUI arayüzünün altında bulunan Tcl konsolunu kullanıyor. Demo proje klasörüne girmek için bu komutu yazın:
  • CD /demo/arty_a7_35/vivado_proj/
  • Vivado projesini yeniden oluşturmak için create_vivado_proj.tcl Tcl betiğini yürütün:
  • kaynak ./create_vivado_proj.tcl
  • Tüm uygulama adımlarını gerçekleştirmek ve programlama bit akışını oluşturmak için kenar çubuğunda Bit Akışı Oluştur'a tıklayın. file.
  • Son olarak, Donanım Yöneticisini Aç'a tıklayın ve FPGA'yı GUI aracılığıyla programlayın.
  • Artık uart_regs.py bölümünde anlatıldığı gibi demo/arty_a7_35/uart_regs.py betiğini kullanarak kayıtları okumaya ve yazmaya başlayabilirsiniz.

Xilinx Digilent Arty S7-50

  • Arty S7: Spartan-7 FPGA geliştirme kartına ait demo uygulamasını demo/arty_s7_50 klasöründe bulabilirsiniz.
  • Vivado'yu açın ve çıkarılan dosyaya gidin fileGUI arayüzünün altında bulunan Tcl konsolunu kullanıyor. Demo proje klasörüne girmek için bu komutu yazın:
  • CD /demo/arty_s7_50/vivado_proj/
  • Vivado projesini yeniden oluşturmak için create_vivado_proj.tcl Tcl betiğini yürütün:
  • kaynak ./create_vivado_proj.tcl
  • Tüm uygulama adımlarını gerçekleştirmek ve programlama bit akışını oluşturmak için kenar çubuğunda Bit Akışı Oluştur'a tıklayın. file.
  • Son olarak, Donanım Yöneticisini Aç'a tıklayın ve FPGA'yı GUI aracılığıyla programlayın.
  • Artık uart_regs.py bölümünde anlatıldığı gibi demo/arty_s7_50/uart_regs.py betiğini kullanarak kayıtları okumaya ve yazmaya başlayabilirsiniz.

Uygulama

  • Belirli bir uygulama gerekliliği yoktur.

Kısıtlamalar

  • Bu tasarım için belirli bir zamanlama kısıtlamasına gerek yoktur çünkü UART arayüzü yavaştır ve asenkron bir arayüz olarak ele alınır.
  • uart_regs modülüne ait uart_rx girişi uart_rx modülü içerisinde senkronize edilir. Bu nedenle, en üst düzey modülde senkronize edilmesi gerekmez.

Bilinen sorunlar

  • FPGA mimarinizin varsayılan kayıt değerlerini destekleyip desteklemediğine bağlı olarak, modülü kullanmadan önce sıfırlamanız gerekebilir.

Daha fazla bilgi

SSS

S: UART test arayüzü oluşturucusunun amacı nedir?

A: UART test arayüzü oluşturucusu, UART iletişimini kullanarak FPGA kayıt değerleriyle etkileşim kurmak için özel arayüzlerin oluşturulmasına olanak tanır.

S: Pyserial paketini nasıl kurarım?

A: Pyserial'ı şu komutu kullanarak Pip üzerinden yükleyebilirsiniz: pip install pyserial

Belgeler / Kaynaklar

VHDLwhiz UART Test Arayüzü Oluşturucu [pdf] Kullanıcı Kılavuzu
UART Test Arayüzü Oluşturucu, Test Arayüzü Oluşturucu, Arayüz Oluşturucu, Oluşturucu

Referanslar

Yorum bırakın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar işaretlenmiştir *