VHDLwhiz-loqosu

VHDLwhiz UART Test interfeysi generatoru

VHDLwhiz-UART-Test-Interfeys-Generator-MƏHSUL

Məhsul haqqında məlumat

Xüsusiyyətlər:

  • Məhsulun adı: VHDL UART test interfeysi generatorunu qeyd edir
  • Versiya: 1.0.4
  • Tarix: 18 avqust 2024-cü il
  • Müəllif: Jonas Julian Jensen
  • Məhsul URL: Məhsul Linki
  • Əlaqə e-poçtu: jonas@vhdlwhiz.com

Təsvir

Bu məhsul UART istifadə edərək FPGA registrinin dəyərlərini oxumaq və yazmaq üçün xüsusi interfeyslər yaratmağa imkan verir. Yaradılmış VHDL modulu və Python skripti FPGA dizaynınızda müxtəlif növ registrlərlə qarşılıqlı əlaqə yaratmaq imkanı verir.

Tələblər

  • Python 3 tərcüməçi
  • pyserial paketi

Protokol

Məhsul dörd nəzarət simvolu olan məlumat çərçivəsi protokolundan istifadə edir:

  • Adı: READ_REQ, Dəyər: 0x0A – Bütün registrləri UART üzərindən geri göndərmək üçün yazma ardıcıllığına başlamaq üçün hostdan FPGA-ya əmr.
  • Adı: START_YAZIN, Dəyər: 0x0B – İstənilən istiqamətdə yazma ardıcıllığının başlanğıcını qeyd edir
  • Adı: END_WRITE, Dəyər: 0x0C – Hər iki istiqamətdə yazma ardıcıllığının sonunu qeyd edir
  • Adı: QAÇMAK, Dəyər: 0x0D – Nəzarət sözlərindən qaçmaq üçün istifadə edilən qaçış simvolu

Məhsuldan İstifadə Təlimatları

Skriptlərin icrası

Məhsuldan istifadə etmək üçün sizdə Python 3 və Pyserial paketinin quraşdırıldığından əmin olun. Skriptləri Python 3 tərcüməçisi vasitəsilə işlədin.

Fərdi İnterfeyslərin yaradılması

FPGA registr dəyərlərini oxumaq və yazmaq üçün fərdi interfeyslər yaratmaq üçün gen_uart_regs.py skriptindən istifadə edin. Çıxışı yaradan zaman giriş və çıxış registrlərinin və növlərinin tərkibini təyin edə bilərsiniz files.

Qeydiyyatçılarla qarşılıqlı əlaqə

Yaradılmış VHDL modulu və Python skriptindən istifadə edərək, FPGA dizaynınızda istənilən sayda registrdən oxuya və ya onlara yaza bilərsiniz. Əlçatan registrlərin std_logic, std_logic_vector, signed və unsigned kimi növləri ola bilər.

Lisenziya

  • MIT lisenziyası mənbə kodunun müəllif hüquqları tələblərini və istifadə şərtlərini əhatə edir. LICENSE.txt-ə baxın file Zip-də file ətraflı məlumat üçün.

Dəyişikliklər jurnalı

  • Bu dəyişikliklər layihəyə aiddir files və bu sənəd müvafiq olaraq yenilənir
Versiya Qeydlər
1.0.0 İlkin buraxılış
1.0.1 Python modulu kimi uart_regs.py olaraq idxal edərkən çatışmayan “öz” istinad səhvi düzəldildi. Dəyişdirilmiş yazma uğursuz çapı istisna olaraq

idxal edilmiş modul kimi işləyərkən konsola çap etməkdən çəkinin.

1.0.2 Çıxış rejimi reqlləri olmadıqda Vivado [Synth 8-248] xətasını düzəldin.
1.0.3 Vivado Linter xəbərdarlığını düzəldin: Qeydiyyatın idarə edilməsini aktivləşdirin

sinxron sıfırlama

1.0.4 Son bayt kimi qaçış simvolu olan səhv tərtib edilmiş sözü qəbul edərkən künc qutusunu düzəldin. Növbəti söz də itəcək, çünki biz IDLE-ə qayıdarkən recv_data_prev_is_escape-i silməmişik.

gen_uart_regs.py skripti indi yalnız unikal req adlarına icazə verir.

Təsvir

  • Bu sənəd aşağıdakıları təsvir edir files və qovluqlar:
  • gen_uart_regs.py
  • yaradılan/uart_regs.vhd
  • yaradıldı/uart_regs.py
  • yaradıldı/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/
  • gen_uart_regs.py skripti və VHDL-ni dəstəkləyir files bu layihədə UART istifadə edərək müxtəlif növ və genişliklərdə FPGA registr dəyərlərini oxumaq və yazmaq üçün xüsusi interfeyslər yaratmağa imkan verir.
  • Yaradılmış VHDL modulu və Python skriptindən dizaynınızdakı istənilən sayda registrdən oxumaq və ya onlara yazmaq üçün istifadə edə bilərsiniz. UART əlçatan registrlərində std_logic, std_logic_vector, signed və unsigned tipləri ola bilər.
  • Siz çıxışı yaradan zaman giriş və çıxış registrlərinin və növlərinin dəqiq tərkibinə qərar verə bilərsiniz filegen_uart_regs.py skriptindən istifadə edir.
  • Python skriptləri qismən ChatGPT süni intellekt alətinin köməyi ilə yaradılıb, VHDL kodu isə əl işidir.

Tələblər

  • Bu layihədəki skriptlər Python 3 tərcüməçisindən istifadə edilməli və Pyserial paketi quraşdırılmalıdır.
  • Bu əmrdən istifadə edərək Pip vasitəsilə pyserial quraşdıra bilərsiniz: pip install pyserial

Protokol

  • VHDL files və Python skripti dörd idarəetmə ilə məlumat çərçivəsi protokolundan istifadə edir
ad Dəyər Şərh
READ_REQ 0x0A Yazmağa başlamaq üçün hostdan FPGA-ya əmr verin

bütün registrləri UART üzərindən geri göndərmək üçün ardıcıllıq

START_YAZIN 0x0B Hər ikisində yazma ardıcıllığının başlanğıcını qeyd edir

istiqamət

END_YAZIN 0x0C Hər iki istiqamətdə yazma ardıcıllığının sonunu qeyd edir
QAÇMAQ 0x0D Escape simvolu START_WRITE və END_WRITE markerləri arasında məlumat kimi göründükdə ESCAPE simvolu da daxil olmaqla hər hansı nəzarət sözlərindən qaçmaq üçün istifadə olunur.

FPGA-ya göndərilən hər hansı çıxmamış READ_REQ baytı UART-a daxil olan bütün registrlərini (giriş və çıxışlarını) UART üzərindən hosta geri göndərmək üçün göstərişdir. Bu əmr adətən yalnız uart_regs.py skripti tərəfindən verilir.
Bu əmri aldıqdan sonra FPGA bütün registrlərin məzmununu hosta geri göndərməklə cavab verəcək. Əvvəlcə giriş siqnalları, sonra çıxış siqnalları. Əgər onların uzunluqları 8 bitin çoxluğuna çatmazsa, sonuncu baytın aşağı bitləri doldurulmuş sıfırlar olacaqdır.
Yazma ardıcıllığı həmişə START_WRITE baytı ilə başlayır və END_WRITE baytı ilə bitir. Bunlar arasında olan hər hansı bayt data baytları hesab olunur. Hər hansı bir məlumat baytı nəzarət simvolu ilə eyni dəyərə malikdirsə, məlumat baytından qaçmaq lazımdır. Bu, məlumat baytından əvvəl onun əslində məlumat olduğunu göstərmək üçün əlavə ESCAPE simvolunun göndərilməsi deməkdir.
Əgər bayt axınının istənilən yerinə çıxmamış START_WRITE çatarsa, bu, yazma ardıcıllığının başlanğıcı hesab olunur. Uart_regs_backend modulu rabitənin sinxronizasiyadan çıxması halında yenidən sinxronizasiya etmək üçün bu məlumatdan istifadə edir.

gen_uart_regs.py

  • Bu interfeys yaratmaq üçün başlamalı olduğunuz skriptdir. Aşağıda işləməklə əldə edə biləcəyiniz yardım menyusunun ekran görüntüsü verilmişdir: python gen_uart_regs.py -hVHDLwhiz-UART-Test-Interfeys-Generator-FIG-1
  • Fərdi interfeys yaratmaq üçün arqumentlər kimi sadalanan istənilən UART idarə olunan registrlərinin hər biri ilə skripti işlətməlisiniz. Mövcud növlər std_logic, std_logic_vector, unsigned və signed.
  • Defolt rejim (istiqamət) içərisindədir və standart tip std_logic_vector-dur, əgər registr uzunluqda deyilsə: 1. Sonra o, standart olaraq std_logic-ə çevriləcək.
  • Beləliklə, std_logic giriş siqnalı yaratmaq istəyirsinizsə, bu arqumentlərdən hər hansı birini istifadə edə bilərsiniz:
  • my_sl=1
  • my_sl=1:in
  • my_sl=1:in:std_logic
  • Yuxarıdakı bütün variantlar skriptin bu UART-a əlçatan siqnal yaratması ilə nəticələnəcək:VHDLwhiz-UART-Test-Interfeys-Generator-FIG-2
  • Müxtəlif istiqamətlərdə, uzunluqlarda və növlərdə bir neçə registr ilə interfeys yaratmaq üçün skripti arqumentlərlə işlədək.VHDLwhiz-UART-Test-Interfeys-Generator-FIG-3

Yaradılmış files

  • gen_uart_regs.py skriptinin uğurlu işləməsi üçü ilə yaradılan çıxış qovluğunu yaradacaq files aşağıda verilmişdir. Əgər onlar artıq mövcuddursa, onların üzərinə yazılacaq.
  • yaradılan/uart_regs.vhd
  • yaradıldı/uart_regs.py
  • yaradıldı/instantiation_template.vho
  • uart_regs.vhd
  • Bu skript tərəfindən yaradılan fərdi interfeys moduludur. Siz UART istifadə edərək idarə etmək istədiyiniz registrlərə daxil ola biləcəyi dizaynınızda bunu tətbiq etməlisiniz.
  • “– UART üçün əlçatan registrlər” bölməsinin yuxarısındakı hər şey hər bir uart_regs modulu üçün eyni olacaq, həmin sətirdən aşağı olan port siqnallarının tərkibi isə generator skriptinə verilən arqumentlərdən asılıdır.
  • Aşağıdakı siyahı yaratmaq əmri ilə nəticələnən uart_regs modulu üçün obyekti göstərirampgen_uart_regs.py bölməsində göstərilirVHDLwhiz-UART-Test-Interfeys-Generator-FIG-4
  • Uart_rx siqnalını sinxronlaşdırmağa ehtiyac yoxdur, çünki bu, uart_rx-də idarə olunur. modul.
  • Modul oxuma sorğusunu aldıqda, cari saat dövrü ərzində bütün giriş və çıxış siqnallarının dəyərlərini tutacaq. Ani snapshot sonra UART vasitəsilə hosta göndərilir.
  • Yazma baş verdikdə, bütün çıxış registrləri eyni saat dövrü ərzində yeni dəyərlərlə yenilənir. Çıxış siqnalının qiymətlərini fərdi olaraq dəyişdirmək mümkün deyil.
  • Bununla belə, uart_regs.py skripti istifadəçiyə əvvəlcə bütün registrlərin cari dəyərlərini oxumaqla yalnız seçilmiş çıxışları yeniləməyə imkan verir. Sonra bütün dəyərləri, o cümlədən yenilənmişləri geri yazır.
  • uart_regs.py
  • Yaradılan/uart_regs.py file uart_regs VHDL modulu ilə birlikdə yaradılır və başlıqda xüsusi registr məlumatlarını ehtiva edir. file. Bu skript ilə siz asanlıqla xüsusi registrlərinizdən oxuya və ya yaza bilərsiniz.

Kömək menyusu

  • Yardım menyusunu çap etmək üçün python uart_regs.py -h yazın:VHDLwhiz-UART-Test-Interfeys-Generator-FIG-5

UART portunun qurulması

  • Skriptdə -c keçidindən istifadə edərək UART portunu təyin etmək üçün seçimlər var. Bu, Windows və Linux-da işləyir. Onu yardım menyusunda sadalanan mövcud portlardan birinə təyin edin. Defolt port təyin etmək üçün siz həmçinin uart_regs.py skriptində UART_PORT dəyişənini redaktə edə bilərsiniz.

Reyestrlərin siyahısı

  • Reyestr xəritələşdirilməsi haqqında məlumat gen_uart_regs.py skripti ilə uart_regs.py skriptinin başlığına yerləşdirilir. Mövcud registrləri aşağıda göstərildiyi kimi -l keçidi ilə sadalaya bilərsiniz. Bu yerli əmrdir və hədəf FPGA ilə qarşılıqlı əlaqədə olmayacaqVHDLwhiz-UART-Test-Interfeys-Generator-FIG-6

Reyestrlərə yazmaq

  • -w keçidindən istifadə edərək hər hansı bir çıxış rejimi registrinə yaza bilərsiniz. Aşağıda göstərildiyi kimi registr adını, ardınca “=” və ikilik, onaltılıq və ya onluq dəyər kimi verilən dəyəri daxil edin.VHDLwhiz-UART-Test-Interfeys-Generator-FIG-7
  • Qeyd edək ki, VHDL tətbiqi skriptin bütün çıxış registrlərini eyni vaxtda yazmasını tələb edir. Buna görə də, siz çıxış registrlərinin tam dəstini göstərməsəniz, skript əvvəlcə hədəf FPGA-dan oxunuşu yerinə yetirəcək və sonra itkin olanlar üçün həmin dəyərləri istifadə edəcək. Nəticə yalnız göstərilən registrlərin dəyişməsi olacaq
  • Yazdığınız zaman bütün qeyd edilmiş registrlər UART vasitəsilə qəbul edilən kimi deyil, eyni saat dövrü ərzində dəyişəcək.

Oxu registrləri

  • Aşağıda göstərildiyi kimi bütün registr dəyərlərini oxumaq üçün -r keçidindən istifadə edin. Sarı ilə işarələnmiş dəyərlər əvvəlki yazıda dəyişdirdiyimiz dəyərlərdirampleVHDLwhiz-UART-Test-Interfeys-Generator-FIG-8
  • Hər oxunuş bütün giriş və çıxış registrlərinin ani görüntüsünü göstərir. Onların hamısı sampeyni saat dövrü ərzində idarə olunur

Sazlama

Rabitə protokolunu sazlamaq lazımdırsa, digər açarlardan hər hansı biri ilə -d keçidindən istifadə edin. Sonra skript bütün göndərilən və qəbul edilən baytları çap edəcək tag onlar aşağıda göstərildiyi kimi nəzarət simvollarıdırsa.VHDLwhiz-UART-Test-Interfeys-Generator-FIG-9

Digər Python skriptlərində interfeysdən istifadə

  • Uart_regs.py skriptində digər xüsusi Python skriptlərində ünsiyyət interfeysi kimi asanlıqla istifadə edə biləcəyiniz UartRegs sinfi var. Sadəcə olaraq sinfi idxal edin, onun obyektini yaradın və aşağıda göstərildiyi kimi metodlardan istifadə etməyə başlayın.VHDLwhiz-UART-Test-Interfeys-Generator-FIG-10
  • Metod və təsvirlər və qaytarılan dəyər növləri üçün Python kodundakı sənəd sətirlərinə baxın.

instantiation_template.vho

  • Rahatlığınız üçün nümunə şablonu uart_regs modulu ilə birlikdə yaradılır. Kodlaşdırma vaxtına qənaət etmək üçün siz modulun yaradılmasını və siqnal bəyannamələrini dizaynınıza köçürə bilərsiniz.VHDLwhiz-UART-Test-Interfeys-Generator-FIG-11VHDLwhiz-UART-Test-Interfeys-Generator-FIG-12

Statik RTL files

  • Aşağıdakıları daxil etməlisiniz files VHDL layihənizdə yerləşdirin ki, onlar uart_regs modulu ilə eyni kitabxanaya yığılsınlar:
  • rtl/uart_regs_backend.vhd
  • rtl/uart_rx.vhd
  • rtl/uart_tx.vhd
  • Uart_regs_backend modulu registr məlumatlarını daxil edən və çıxaran sonlu vəziyyət maşınlarını həyata keçirir. O, host ilə UART rabitəsini idarə etmək üçün uart_rx və uart_tx modullarından istifadə edir.

Demo layihələr

  • Zip-ə daxil edilmiş üç demo layihəsi var file. Onlar sizə müxtəlif lövhələrdəki periferiyaları, eləcə də bir neçə daha böyük, daxili registrləri idarə etməyə imkan verir.
  • Demo qovluqlara əvvəlcədən yaradılmış uart_regs.vhd və uart_regs.py daxildir filebu dizaynlar üçün xüsusi olaraq hazırlanmışdır.

Şəbəkə iCEstick

  • Demo/icecube2_icestick qovluğunda Lattice iCEstick FPGA lövhəsi üçün qeydiyyat girişi demo tətbiqi var.
  • Tətbiq prosesindən keçmək üçün demo/lattice_icestick/icecube2_proj/uart_regs_sbt.project-i açın. file Lattice iCEcube2 dizayn proqramında.
  • Layihəni iCEcube2 GUI-də yüklədikdən sonra proqramlaşdırma bitmapını yaratmaq üçün Alətlər→Hamısını işlət seçiminə klikləyin. file.
  • Siz yaradılan bitmap ilə FPGA-nı konfiqurasiya etmək üçün Lattice Diamond Programmer Standalone alətindən istifadə edə bilərsiniz. file. Diamond Programmer açıldığında, qarşılama informasiya qutusunda mövcud proqramçı layihəsini açın.
  • Layihə seçin file Zip-də tapıldı: demo/lattice_icestick/diamond_programmer_project.xcf və OK düyməsini basın.VHDLwhiz-UART-Test-Interfeys-Generator-FIG-13
  • Layihə yükləndikdən sonra, üç nöqtəyə klikləyin File Yuxarıda göstərildiyi kimi ad sütunu. Bitmapı seçmək üçün gözdən keçirin file iCEcube2-də yaratdığınız
  • demo/lattice_icestick/icecube2_proj/uart_regs_Implmnt/sbt/outputs/bitmap/top_icestick_bitmap.bin
  • Nəhayət, iCEstick lövhəsi kompüterinizdəki USB portuna qoşulmuş halda, SPI flaşını proqramlaşdırmaq və FPGA-nı konfiqurasiya etmək üçün Dizayn→Proqram seçin.
  • İndi uart_regs.py bölməsində təsvir olunduğu kimi demo/lattice_icestick/uart_regs.py skriptindən istifadə edərək registrləri oxumağa və yazmağa davam edə bilərsiniz.

Xilinx Digilent Arty A7-35T

  • Artix-7 35T Arty FPGA qiymətləndirmə dəsti üçün demo tətbiqini demo/arty_a7_35 qovluğunda tapa bilərsiniz.
  • Vivado-nu açın və çıxarılanlara gedin files GUI interfeysinin altındakı Tcl konsolundan istifadə edir. Demo layihə qovluğuna daxil olmaq üçün bu əmri yazın:
  • cd /demo/arty_a7_35/vivado_proj/
  • Vivado layihəsini yenidən yaratmaq üçün create_vivado_proj.tcl Tcl skriptini icra edin:
  • mənbə ./create_vivado_proj.tcl
  • Bütün həyata keçirmə addımlarını keçmək və proqramlaşdırma bit axını yaratmaq üçün yan paneldə Bitstream Yarat üzərinə klikləyin file.
  • Nəhayət, Open Hardware Manager klikləyin və GUI vasitəsilə FPGA proqramlaşdırın.
  • İndi uart_regs.py bölməsində təsvir olunduğu kimi demo/arty_a7_35/uart_regs.py skriptindən istifadə edərək registrləri oxumağa və yazmağa davam edə bilərsiniz.

Xilinx Digilent Arty S7-50

  • Arty S7: Spartan-7 FPGA inkişaf lövhəsi üçün demo tətbiqini demo/arty_s7_50 qovluğunda tapa bilərsiniz.
  • Vivado-nu açın və çıxarılanlara gedin files GUI interfeysinin altındakı Tcl konsolundan istifadə edir. Demo layihə qovluğuna daxil olmaq üçün bu əmri yazın:
  • cd /demo/arty_s7_50/vivado_proj/
  • Vivado layihəsini yenidən yaratmaq üçün create_vivado_proj.tcl Tcl skriptini icra edin:
  • mənbə ./create_vivado_proj.tcl
  • Bütün həyata keçirmə addımlarını keçmək və proqramlaşdırma bit axını yaratmaq üçün yan paneldə Bitstream Yarat üzərinə klikləyin file.
  • Nəhayət, Open Hardware Manager klikləyin və GUI vasitəsilə FPGA proqramlaşdırın.
  • İndi uart_regs.py bölməsində təsvir olunduğu kimi demo/arty_s7_50/uart_regs.py skriptindən istifadə edərək registrləri oxumağa və yazmağa davam edə bilərsiniz.

İcra

  • Xüsusi icra tələbləri yoxdur.

Məhdudiyyətlər

  • Bu dizayn üçün heç bir xüsusi vaxt məhdudiyyəti tələb olunmur, çünki UART interfeysi yavaşdır və asinxron interfeys kimi qəbul edilir.
  • Uart_regs moduluna uart_rx girişi uart_rx modulu daxilində sinxronlaşdırılır. Beləliklə, onun yuxarı səviyyəli modulda sinxronlaşdırılmasına ehtiyac yoxdur.

Məlum məsələlər

  • FPGA arxitekturanızın standart registr dəyərlərini dəstəkləyib-dəstəkləməməsindən asılı olaraq modulu istifadə etməzdən əvvəl onu yenidən qurmağınız lazım ola bilər.

Ətraflı məlumat

Tez-tez verilən suallar

S: UART test interfeysi generatorunun məqsədi nədir?

A: UART test interfeysi generatoru UART rabitəsindən istifadə edərək FPGA registr dəyərləri ilə qarşılıqlı əlaqə yaratmaq üçün xüsusi interfeyslərin yaradılmasına imkan verir.

S: Pyserial paketini necə quraşdıra bilərəm?

A: Pyserial-ı Pip vasitəsilə quraşdıra bilərsiniz: pip install pyserial

Sənədlər / Resurslar

VHDLwhiz UART Test interfeysi generatoru [pdf] İstifadəçi Təlimatı
UART Test İnterfeysi Generatoru, Test İnterfeysi Generatoru, İnterfeys Generatoru, Generator

İstinadlar

Şərh buraxın

E-poçt ünvanınız dərc olunmayacaq. Tələb olunan sahələr qeyd olunub *