VHDLwhiz-логотип

VHDLwhiz UART Test Interface Generator

VHDLwhiz-UART-Тест-интерфейс-генератор-ПРОДУКЦИЯ

Продукт маалыматы

Өзгөчөлүктөрү:

  • Продукт аты: VHDL UART тест интерфейсинин генераторун каттайт
  • Версия: 1.0.4
  • Дата: 18-август, 2024-жыл
  • Author: Jonas Julian Jensen
  • Продукт URL: Продукт шилтемеси
  • Байланыш электрондук почтасы: jonas@vhdlwhiz.com

Description

Бул продукт UART аркылуу FPGA реестринин маанилерин окуу жана жазуу үчүн ыңгайлаштырылган интерфейстерди түзүүгө мүмкүндүк берет. Түзүлгөн VHDL модулу жана Python скрипти сиздин FPGA дизайныңыздагы регистрлердин ар кандай түрлөрү менен өз ара аракеттенүү мүмкүнчүлүгүн берет.

Талаптар

  • Python 3 котормочу
  • pyserial пакети

Протокол

Продукт төрт башкаруу символу бар маалымат рамкалоо протоколун колдонот:

  • Аты-жөнү: READ_REQ, Маани: 0x0A – бардык регистрлерди UART аркылуу кайра жөнөтүү үчүн жазуу ырааттуулугун баштоо үчүн хосттон FPGAга буйрук
  • Аты-жөнү: START_WRITE, Маани: 0x0B - эки багытта жазуу ырааттуулугунун башталышын белгилейт
  • Аты-жөнү: END_WRITE, Маани: 0x0C – эки тарапка тең жазуу ырааттуулугунун соңун белгилейт
  • Аты-жөнү: КАЧУУ, Маани: 0x0D – Башкаруу сөздөрүнөн качуу үчүн колдонулган Escape символу

Продукт колдонуу нускамалары

Скрипттерди иштетүү

Продуктту колдонуу үчүн сизде Python 3 орнотулган жана Pyserial пакети бар экенин текшериңиз. Python 3 котормочу аркылуу скрипттерди иштетиңиз.

Ыңгайлаштырылган интерфейстерди түзүү

FPGA реестр маанилерин окуу жана жазуу үчүн ыңгайлаштырылган интерфейстерди түзүү үчүн gen_uart_regs.py скриптин колдонуңуз. Чыгарууну генерациялоодо киргизүү жана чыгаруу регистрлеринин жана түрлөрүнүн курамын көрсөтүүгө болот files.

Регистрлер менен өз ара аракеттенүү

Түзүлгөн VHDL модулун жана Python скриптин колдонуп, FPGA дизайныңыздагы каалаган сандагы регистрлерден окуп же жаза аласыз. Жеткиликтүү регистрлерде std_logic, std_logic_vector, кол коюлган же кол коюлбаган сыяктуу түрлөрү болушу мүмкүн.

Лицензия

  • MIT лицензиясы баштапкы коддун автордук укук талаптарын жана колдонуу шарттарын камтыйт. LICENSE.txt дарегин караңыз file Zipде file чоо-жайы үчүн.

Changelog

  • Бул өзгөртүүлөр долбоорго тиешелүү fileс, жана бул документ тиешелүү түрдө жаңыртылды
Версия Эскертүү
1.0.0 Алгачкы чыгаруу
1.0.1 Python модулу катары uart_regs.py катары импорттоодо жок болгон "өзүнчө" шилтеме катасы оңдолду. Жазылбай калган басып чыгаруу өзгөчөлүгүнө өзгөртүлдү

импорттолгон модуль катары иштеп жатканда консолго басып чыгаруудан качыңыз.

1.0.2 Vivado [Synth 8-248] катасын оңдоо режими жок болгондо оңдоо.
1.0.3 Vivado Linter эскертүүсүн оңдоо: Каттоо иштетилген

синхрондуу калыбына келтирүү

1.0.4 Акыркы байт катары качуу белгиси менен туура эмес түзүлгөн сөздү кабыл алууда бурчтук регистрди оңдоңуз. Кийинки сөз да жоголуп кетет, анткени IDLEге кайтууда recv_data_prev_is_escape өчүрүлгөн жок.

gen_uart_regs.py скрипти эми уникалдуу рег аттарын гана берет.

Description

  • Бул документ төмөнкүлөрдү сүрөттөйт files жана папкалар:
  • gen_uart_regs.py
  • genered/uart_regs.vhd
  • genered/uart_regs.py
  • genered/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 скрипти жана VHDLди колдойт files бул долбоордо UART аркылуу ар кандай типтеги жана кеңдиктеги FPGA реестр маанилерин окуу жана жазуу үчүн ыңгайлаштырылган интерфейстерди түзүүгө мүмкүндүк берет.
  • Түзүлгөн VHDL модулун жана Python скриптин дизайныңыздагы каалаган сандагы регистрлерден окуу же жазуу үчүн колдоно аласыз. UART жеткиликтүү регистрлеринин std_logic, std_logic_vector, кол коюлган же кол коюлбаган түрлөрү болушу мүмкүн.
  • Киргизүү жана чыгаруу регистрлеринин жана түрлөрүнүн так курамын чыгарууну түзүүдө чече аласыз filegen_uart_regs.py скриптин колдонуу.
  • Python скрипттери жарым-жартылай ChatGPT жасалма интеллект куралынын жардамы менен түзүлгөн, ал эми VHDL коду колго жасалган.

Талаптар

  • Бул долбоордогу скрипттер Python 3 котормочу аркылуу иштетилип, Pyserial пакети орнотулушу керек.
  • Сиз бул буйрукту колдонуп Pip аркылуу pyserial орното аласыз: pip install pyserial

Протокол

  • VHDL files жана Python скрипти төрт көзөмөлү бар маалымат рамкалоо протоколун колдонушат
аты Нарк Комментарий
READ_REQ 0x0A Жазууну баштоо үчүн хосттон FPGAга буйрук

бардык регистрлерди кайра UART аркылуу жөнөтүү ырааттуулугу

START_ЖАЗ 0x0B Эч биринде жазуу ырааттуулугунун башталышын белгилейт

багыт

END_WRITE 0x0C Жазуу ырааттуулугунун соңун эки тарапка тең белгилейт
КАЧУУ 0x0D Escape символу START_WRITE жана END_WRITE маркерлеринин ортосунда маалымат катары көрүнгөндө, башкаруу сөздөрүнүн каалаганынан, анын ичинде ESCAPE символунун өзүнөн качуу үчүн колдонулат.

FPGAга жөнөтүлгөн ар кандай чыгарылбаган READ_REQ байт анын бардык UART жеткиликтүү регистрлерин (киргизүүлөр жана чыгуулар) UART аркылуу хостко кайра жөнөтүү боюнча нускама болуп саналат. Бул буйрук адатта uart_regs.py скрипти тарабынан гана чыгарылат.
Бул буйрукту алгандан кийин, FPGA бардык регистрлердин мазмунун кайра хостко жөнөтүү менен жооп берет. Биринчиден, кириш сигналдары, андан кийин чыгуу сигналдары. Эгерде алардын узундугу 8 биттин эселенген санын кошпосо, акыркы байттын төмөнкү биттери толтурулган нөлдөр болот.
Жазуу ырааттуулугу ар дайым START_WRITE байт менен башталып, END_WRITE байт менен аяктайт. Алардын ортосундагы бардык байттар маалымат байты болуп эсептелет. Кандайдыр бир маалымат байты башкаруу символу менен бирдей мааниге ээ болсо, маалымат байты качып кетиши керек. Бул маалымат байтынын алдында кошумча ESCAPE символун жөнөтүүнү билдирет, бул анын чындыгында маалымат экенин көрсөтүү.
Эгер качпаган START_WRITE байт агымынын каалаган жерине келсе, ал жазуу ырааттуулугунун башталышы болуп эсептелет. uart_regs_backend модулу бул маалыматты байланыш синхрондоштуруудан чыгып кеткен учурда кайра синхрондоштуруу үчүн колдонот.

gen_uart_regs.py

  • Бул интерфейсти түзүү үчүн баштоо керек скрипт. Төмөндө сиз иштетүү аркылуу ала турган жардам менюсунун скриншоту келтирилген: python gen_uart_regs.py -hVHDLwhiz-UART-Тест-интерфейс-генератор-FIG-1
  • Ыңгайлаштырылган интерфейсти түзүү үчүн, аргумент катары тизмеленген ар бир каалаган UART башкарылуучу регистрлери менен скриптти иштетишиңиз керек. Жеткиликтүү түрлөрү std_logic, std_logic_vector, unsigned жана signed.
  • Демейки режим (багыт) ичинде жана демейки түрү std_logic_vector, эгерде регистр узундугу болбосо: 1. Андан кийин, std_logic демейки болуп калат.
  • Ошентип, сиз std_logic киргизүү сигналын түзгүңүз келсе, бул аргументтердин каалаганын колдоно аласыз:
  • my_sl=1
  • my_sl=1:in
  • my_sl=1:in:std_logic
  • Жогорудагы варианттардын бардыгы скрипттин ушул UART жеткиликтүү сигналын жаратуусуна алып келет:VHDLwhiz-UART-Тест-интерфейс-генератор-FIG-2
  • Келгиле, ар кандай багыттагы, узундуктагы жана типтеги бир нече регистрлер менен интерфейсти түзүү үчүн скриптти аргументтер менен иштетелиVHDLwhiz-UART-Тест-интерфейс-генератор-FIG-3

Түзүлгөн files

  • gen_uart_regs.py скриптинин ийгиликтүү иштетилиши үчөө менен түзүлгөн чыгаруу папкасын жаратат fileлар төмөндө келтирилген. Алар мурунтан эле бар болсо, алардын үстүнө жазылат.
  • genered/uart_regs.vhd
  • genered/uart_regs.py
  • genered/instantiation_template.vho
  • uart_regs.vhd
  • Бул скрипт тарабынан түзүлгөн ыңгайлаштырылган интерфейс модулу. Сиз аны UART аркылуу башкаргыңыз келген регистрлерге кире турган дизайныңызда түзүшүңүз керек.
  • “– UART жеткиликтүү регистрлери” бөлүмүнүн үстүндөгү бардыгы ар бир uart_regs модулу үчүн бирдей болот, ал эми ошол саптын астындагы порт сигналдарынын курамы генератор скриптине берилген аргументтерге көз каранды.
  • Төмөнкү тизмеде uart_regs модулунун объектиси, мисалы, түзүү буйругунан келип чыкканample gen_uart_regs.py бөлүмүндө көрсөтүлгөнVHDLwhiz-UART-Тест-интерфейс-генератор-FIG-4
  • Сизге uart_rx сигналын синхрондоштуруунун кереги жок, анткени ал uart_rxте иштетилет. модулу.
  • Модуль окуу өтүнүчүн алганда, ал учурдагы саат циклинин ичиндеги бардык кириш жана чыгуу сигналдарынын маанилерин басып алат. Көз ирмемдик сүрөт андан кийин UART аркылуу хостко жөнөтүлөт.
  • Жазуу болгондо, бардык чыгуу регистрлери бир эле саат циклинин ичинде жаңы маанилер менен жаңыланат. Чыгуу сигналынын маанилерин өз алдынча өзгөртүү мүмкүн эмес.
  • Бирок, uart_regs.py скрипти колдонуучуга адегенде бардык регистрлердин учурдагы маанилерин кайра окуу менен тандалган жыйынтыктарды жаңылоого мүмкүндүк берет. Андан кийин ал бардык баалуулуктарды, анын ичинде жаңылангандарды кайра жазат.
  • uart_regs.py
  • genered/uart_regs.py file uart_regs VHDL модулу менен бирге түзүлөт жана аталышындагы жеке реестр маалыматын камтыйт. file. Бул скрипт менен сиз ыңгайлаштырылган регистрлериңизден оңой эле окуп же жаза аласыз.

Жардам менюсу

  • Жардам менюсун басып чыгаруу үчүн python uart_regs.py -h териңиз:VHDLwhiz-UART-Тест-интерфейс-генератор-FIG-5

UART портун орнотуу

  • Скриптте -c которгучу аркылуу UART портун орнотуу параметрлери бар. Бул Windows жана Linux менен иштейт. Аны жардам менюсунда тизмеленген жеткиликтүү порттордун бирине коюңуз. Демейки портту коюу үчүн, сиз ошондой эле uart_regs.py скриптинде UART_PORT өзгөрмөсүн түзөтө аласыз.

Листинг регистрлери

  • Реестрди картага түшүрүү жөнүндө маалымат gen_uart_regs.py скрипти аркылуу uart_regs.py скриптинин башына жайгаштырылат. Төмөндө көрүнүп тургандай -l которуштуруусу менен жеткиликтүү регистрлерди тизмелей аласыз. Бул жергиликтүү буйрук жана максаттуу FPGA менен иштешпейтVHDLwhiz-UART-Тест-интерфейс-генератор-FIG-6

Регистрлерге жазуу

  • -w которуштурууну колдонуу менен сиз каалаган режим регистрине жаза аласыз. Төмөндө көрсөтүлгөндөй, регистрдин атын, андан кийин “=” жана экилик, он алтылык же ондук маани катары берилген маанини бериңиз.VHDLwhiz-UART-Тест-интерфейс-генератор-FIG-7
  • VHDL ишке ашыруу скрипттин бардык чыгуу регистрлерин бир убакта жазууну талап кылаарын эске алыңыз. Ошондуктан, эгерде сиз чыгаруу регистрлеринин толук топтомун көрсөтпөсөңүз, скрипт адегенде максаттуу FPGAдан окууну аткарып, андан кийин жетишпегендер үчүн ошол маанилерди колдонот. Натыйжада көрсөтүлгөн регистрлер гана өзгөрөт
  • Сиз жазууну аткарганыңызда, бардык көрсөтүлгөн регистрлер UART аркылуу кабыл алынар замат эмес, ошол эле саат циклинин ичинде өзгөрөт.

Регистрлерди окуу

  • Төмөндө көрсөтүлгөндөй, бардык реестр маанилерин окуу үчүн -r которгучту колдонуңуз. Сары менен белгиленген баалуулуктар мурунку жазууда биз өзгөрткөн баалуулуктарampleVHDLwhiz-UART-Тест-интерфейс-генератор-FIG-8
  • Ар бир окуу бардык киргизүү жана чыгаруу регистрлеринин көз ирмемдик сүрөтүн көрсөтөт. Алардын бардыгы сampошол эле саат циклинин ичинде жетектеген

Мүчүлүштүктөрдү оңдоо

Байланыш протоколунун мүчүлүштүктөрүн оңдоо керек болсо, башка которгучтар менен -d которгучун колдонуңуз. Андан кийин, скрипт бардык жөнөтүлгөн жана кабыл алынган байттарды басып чыгарат tag алар төмөндө көрсөтүлгөндөй, башкаруу символдору болсо.VHDLwhiz-UART-Тест-интерфейс-генератор-FIG-9

Башка Python скрипттеринде интерфейсти колдонуу

  • uart_regs.py скриптинде UartRegs классы бар, аны сиз башка ыңгайлаштырылган Python скрипттеринде байланыш интерфейси катары оңой колдоно аласыз. Жөн гана классты импорттоо, анын объектин түзүү жана төмөндө көрсөтүлгөндөй ыкмаларды колдонууну баштоо.VHDLwhiz-UART-Тест-интерфейс-генератор-FIG-10
  • Метод жана сыпаттамалар жана кайтаруу маанилеринин түрлөрү үчүн Python кодундагы документ саптарына кайрылыңыз.

instantiation_template.vho

  • Инстанция үлгүсү сизге ыңгайлуу болушу үчүн uart_regs модулу менен бирге түзүлөт. Коддоо убактысын үнөмдөө үчүн сиз модулдун инстанциясын жана сигнал декларациясын дизайныңызга көчүрө аласыз.VHDLwhiz-UART-Тест-интерфейс-генератор-FIG-11VHDLwhiz-UART-Тест-интерфейс-генератор-FIG-12

Статикалык RTL files

  • Сиз төмөнкүлөрдү камтуу керек files VHDL долбооруңузда, алар uart_regs модулу менен бир китепканага топтолушу үчүн:
  • rtl/uart_regs_backend.vhd
  • rtl/uart_rx.vhd
  • rtl/uart_tx.vhd
  • uart_regs_backend модулу регистр маалыматтарын киргизген жана чыгарган чектүү абалдагы машиналарды ишке ашырат. Ал хост менен UART байланышын башкаруу үчүн uart_rx жана uart_tx модулдарын колдонот.

Демо долбоорлор

  • Zip камтылган үч демо долбоорлор бар file. Алар ар кандай такталардагы перифериялык түзүлүштөрдү, ошондой эле бир нече чоңураак, ички регистрлерди башкарууга мүмкүнчүлүк берет.
  • Демо папкаларга алдын ала түзүлгөн uart_regs.vhd жана uart_regs.py кирет fileбул дизайн үчүн атайын жасалган.

Тор iCEstick

  • Demo/icecube2_icestick папкасында Lattice iCEstick FPGA тактасы үчүн реестрге кирүү демо ишке ашыруу камтылган.
  • Ишке ашыруу процессин иштетүү үчүн demo/lattice_icestick/icecube2_proj/uart_regs_sbt.project файлын ачыңыз file Lattice iCEcube2 дизайн программасында.
  • Долбоорду iCEcube2 GUIге жүктөгөндөн кийин, программалоонун бит картасын түзүү үчүн Tools→Run All чыкылдатыңыз file.
  • Сиз FPGAны түзүлгөн битмап менен конфигурациялоо үчүн Lattice Diamond Programmer Standalone куралын колдоно аласыз file. Алмаз Программист ачылганда, саламдашуу диалог кутусунда Учурдагы программисттин долбоорун ачуу баскычын чыкылдатыңыз.
  • Долбоорду тандоо file Zipде табылган: demo/lattice_icestick/diamond_programmer_project.xcf жана OK басыңыз.VHDLwhiz-UART-Тест-интерфейс-генератор-FIG-13
  • Долбоор жүктөлгөндөн кийин, үч чекитти чыкылдатыңыз File Жогоруда көрсөтүлгөндөй аталыш тилкеси. Битмапты тандоо үчүн карап чыгыңыз file iCEcube2де сиз жараткан
  • demo/lattice_icestick/icecube2_proj/uart_regs_Implmnt/sbt/outputs/bitmap/top_icestick_bitmap.bin
  • Акырында, iCEstick тактасы компьютериңиздин USB портуна сайылып, SPI жарыгын программалоо жана FPGA конфигурациялоо үчүн Дизайн→ Программаны тандаңыз.
  • Эми uart_regs.py бөлүмүндө сүрөттөлгөндөй demo/lattice_icestick/uart_regs.py скриптин колдонуу менен регистрлерди окуу жана жазууну уланта аласыз.

Xilinx Digilent Arty A7-35T

  • Artix-7 35T Arty FPGA баалоо комплектинин демо ишке ашыруусун demo/arty_a7_35 папкасынан таба аласыз.
  • Vivado ачыңыз жана алынганга өтүңүз fileGUI интерфейсинин ылдый жагында жайгашкан Tcl консолун колдонуу. Демо долбоордун папкасына кирүү үчүн бул буйрукту териңиз:
  • CD /demo/arty_a7_35/vivado_proj/
  • Vivado долбоорун кайра жаратуу үчүн create_vivado_proj.tcl Tcl скриптин аткарыңыз:
  • булак ./create_vivado_proj.tcl
  • Бардык ишке ашыруу кадамдарын аткаруу жана программалоонун бит агымын түзүү үчүн каптал тилкесинде Bitstream түзүү баскычын чыкылдатыңыз file.
  • Акыр-аягы, Open Hardware Manager чыкылдатуу жана GUI аркылуу FPGA программалоо.
  • Эми uart_regs.py бөлүмүндө сүрөттөлгөндөй demo/arty_a7_35/uart_regs.py скриптин колдонуу менен регистрлерди окуу жана жазууну уланта аласыз.

Xilinx Digilent Arty S7-50

  • Arty S7: Spartan-7 FPGA өнүктүрүү тактасынын демо ишке ашыруусун demo/arty_s7_50 папкасынан таба аласыз.
  • Vivado ачыңыз жана алынганга өтүңүз fileGUI интерфейсинин ылдый жагында жайгашкан Tcl консолун колдонуу. Демо долбоордун папкасына кирүү үчүн бул буйрукту териңиз:
  • CD /demo/arty_s7_50/vivado_proj/
  • Vivado долбоорун кайра жаратуу үчүн create_vivado_proj.tcl Tcl скриптин аткарыңыз:
  • булак ./create_vivado_proj.tcl
  • Бардык ишке ашыруу кадамдарын аткаруу жана программалоонун бит агымын түзүү үчүн каптал тилкесинде Bitstream түзүү баскычын чыкылдатыңыз file.
  • Акыр-аягы, Open Hardware Manager чыкылдатуу жана GUI аркылуу FPGA программалоо.
  • Эми uart_regs.py бөлүмүндө сүрөттөлгөндөй demo/arty_s7_50/uart_regs.py скриптин колдонуу менен регистрлерди окуу жана жазууну уланта аласыз.

Ишке ашыруу

  • Конкреттүү ишке ашыруу талаптары жок.

Чектөөлөр

  • Бул дизайн үчүн атайын убакыт чектөөлөрү талап кылынбайт, анткени UART интерфейси жай жана асинхрондук интерфейс катары каралат.
  • uart_regs модулуна uart_rx киргизүү uart_rx модулунун ичинде синхрондоштурулган. Ошентип, аны жогорку деңгээлдеги модулда синхрондоштуруунун кереги жок.

Белгилүү маселелер

  • Сиздин FPGA архитектураңыз демейки регистр маанилерин колдогонуна жараша модулду колдонуудан мурун баштапкы абалга келтиришиңиз керек болушу мүмкүн.

Көбүрөөк маалымат

Көп берилүүчү суроолор

С: UART тест интерфейсинин генераторунун максаты эмнеде?

A: UART тест интерфейсинин генератору UART байланышын колдонуу менен FPGA реестринин маанилери менен өз ара аракеттенүү үчүн ыңгайлаштырылган интерфейстерди түзүүгө мүмкүндүк берет.

С: Pyserial пакетин кантип орнотом?

A: Сиз Pyserialды Pip аркылуу орното аласыз: pip install pyserial

Документтер / Ресурстар

VHDLwhiz UART Test Interface Generator [pdf] Колдонуучунун колдонмосу
UART Test Interface Generator, Test Interface Generator, Interface Generator, Generator

Шилтемелер

Комментарий калтырыңыз

Сиздин электрондук почта дарегиңиз жарыяланбайт. Талап кылынган талаалар белгиленген *