VHDLwhiz UART сынақ интерфейсінің генераторы
Өнім туралы ақпарат
Техникалық сипаттамалар:
- Өнім атауы: VHDL UART сынақ интерфейсінің генераторын тіркейді
- Нұсқа: 1.0.4
- Күні: 18 тамыз 2024 ж
- Авторы: Джонас Джулиан Дженсен
- Өнім URL: Өнім сілтемесі
- Байланыс электрондық поштасы: jonas@vhdlwhiz.com
Сипаттама
Бұл өнім 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, signed немесе unsigned сияқты түрлері болуы мүмкін.
Лицензия
- MIT лицензиясы бастапқы кодтың авторлық құқық талаптары мен пайдалану шарттарын қамтиды. LICENSE.txt файлын қараңыз file Zip ішінде file мәліметтер үшін.
Өзгеріс журналы
- Бұл өзгерістер жобаға қатысты files, және бұл құжат сәйкесінше жаңартылады
Нұсқа | Ескертулер |
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 сценарийі енді тек бірегей рег атауларына рұқсат береді. |
Сипаттама
- Бұл құжат келесілерді сипаттайды 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 қолдауы fileБұл жобадағы s UART көмегімен әртүрлі типтегі және ендегі FPGA регистр мәндерін оқу және жазу үшін теңшелетін интерфейстерді жасауға мүмкіндік береді.
- Жасалған VHDL модулін және дизайндағы регистрлердің кез келген санынан оқу немесе жазу үшін Python сценарийін пайдалануға болады. UART қол жетімді регистрлерінде std_logic, std_logic_vector, signed немесе unsigned түрлері болуы мүмкін.
- Шығаруды генерациялау кезінде кіріс және шығыс регистрлерінің және түрлерінің нақты құрамы туралы шешім қабылдауға болады filegen_uart_regs.py сценарийін пайдалану.
- Python сценарийлері ішінара ChatGPT жасанды интеллект құралының көмегімен жасалған, ал VHDL коды қолдан жасалған.
Талаптар
- Бұл жобадағы сценарийлер Python 3 интерпретаторы арқылы іске қосылуы және Pyserial бумасы орнатылуы керек.
- Pyserial пәрменін Pip арқылы орнатуға болады: pip install pyserial
Протокол
- VHDL files және Python сценарийі төрт басқаруы бар деректерді жақтау протоколын пайдаланады
Аты | Мән | Түсініктеме |
READ_REQ | 0х0А | Жазуды бастау үшін хосттан FPGA пәрмені
барлық регистрлерді UART арқылы кері жіберу реті |
START_ЖАЗУ | 0x0B | Кез келгенінде жазу ретінің басын белгілейді
бағыт |
END_WRITE | 0х0С | Кез келген бағытта жазу тізбегінің соңын белгілейді |
ҚАШУ | 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 -h
- Теңшелетін интерфейсті жасау үшін сценарийді аргументтер ретінде тізімделген қалаған 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 қол жетімді сигналды жасайтын сценарийге әкеледі:
- Әртүрлі бағыттар, ұзындықтар және түрлердің бірнеше регистрлері бар интерфейсті жасау үшін сценарийді аргументтермен іске қосайық
Жасалған 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 модуліне арналған нысанды көрсетеді exampgen_uart_regs.py бөлімінде көрсетілген
- uart_rx сигналын синхрондау қажет емес, себебі ол uart_rx жүйесінде өңделеді. модуль.
- Модуль оқу сұранысын алған кезде, ол ағымдағы тактілік цикл ішінде барлық кіріс және шығыс сигналдарының мәндерін түсіреді. Содан кейін лездік сурет UART арқылы хостқа жіберіледі.
- Жазу орын алған кезде барлық шығыс регистрлері бір тактілік цикл ішінде жаңа мәндермен жаңартылады. Шығыс сигнал мәндерін жеке өзгерту мүмкін емес.
- Дегенмен, uart_regs.py сценарийі пайдаланушыға алдымен барлық регистрлердің ағымдағы мәндерін оқу арқылы тек таңдалған шығыстарды жаңартуға мүмкіндік береді. Содан кейін ол барлық мәндерді, соның ішінде жаңартылғандарды жазады.
- uart_regs.py
- Жасалған/uart_regs.py file uart_regs VHDL модулімен бірге жасалады және тақырыпта пайдаланушы тіркелім ақпаратын қамтиды file. Бұл сценарий арқылы сіз өзіңіздің реттелетін регистрлерден оңай оқи аласыз немесе жаза аласыз.
Анықтама мәзірі
- Анықтама мәзірін басып шығару үшін python uart_regs.py -h теріңіз:
UART портын орнату
- Сценарийде -c қосқышын пайдаланып UART портын орнату опциялары бар. Бұл Windows және Linux жүйелерінде жұмыс істейді. Оны анықтама мәзірінде тізімделген қолжетімді порттардың біріне орнатыңыз. Әдепкі портты орнату үшін uart_regs.py сценарийінде UART_PORT айнымалы мәнін де өңдеуге болады.
Листинг регистрлері
- Тізілімді салыстыру туралы ақпарат gen_uart_regs.py сценарийі арқылы uart_regs.py сценарийінің тақырыбына орналастырылады. Төменде көрсетілгендей -l қосқышы арқылы қолжетімді регистрлерді тізімдей аласыз. Бұл жергілікті пәрмен және мақсатты FPGA-мен әрекеттеспейді
Регистрлерге жазу
- Шығу режимінің регистрлерінің кез келгеніне -w қосқышын пайдаланып жазуға болады. Төменде көрсетілгендей тізілім атауын, одан кейін «=» және екілік, он алтылық немесе ондық мән ретінде берілген мәнді енгізіңіз.
- VHDL іске асыру сценарийдің барлық шығыс регистрлерін бір уақытта жазуын талап ететінін ескеріңіз. Сондықтан, шығыс регистрлерінің толық жинағын көрсетпесеңіз, сценарий алдымен мақсатты FPGA-дан оқуды орындайды, содан кейін жетіспейтіндер үшін сол мәндерді пайдаланады. Нәтиже тек көрсетілген регистрлер өзгереді
- Жазуды орындаған кезде барлық көрсетілген регистрлер UART арқылы қабылданғаннан кейін емес, бір тактілік цикл ішінде өзгереді.
Регистрлерді оқу
- Төменде көрсетілгендей барлық регистр мәндерін оқу үшін -r қосқышын пайдаланыңыз. Сары түспен белгіленген мәндер алдыңғы жазу кезінде өзгертілген мәндерample
- Әрбір оқу барлық кіріс және шығыс регистрлерінің лездік суретін көрсетеді. Олардың барлығы сampсол сағат циклі кезінде басқарылады
Түзету
Байланыс протоколын жөндеу қажет болса, -d қосқышын басқа қосқыштардың кез келгенімен бірге пайдаланыңыз. Содан кейін сценарий барлық жіберілген және қабылданған байттарды және басып шығарады tag олар төменде көрсетілгендей басқару таңбалары болса.
Басқа Python сценарийлерінде интерфейсті пайдалану
- uart_regs.py сценарийінде басқа пайдаланушы Python сценарийлерінде байланыс интерфейсі ретінде оңай пайдалануға болатын UartRegs сыныбы бар. Жай ғана сыныпты импорттаңыз, оның нысанын жасаңыз және төменде көрсетілгендей әдістерді пайдалана бастаңыз.
- Әдіс пен сипаттамалар және қайтарылатын мән түрлері үшін Python кодындағы құжат жолдарын қараңыз.
instantiation_template.vho
- Ыңғайлы болу үшін үлгі үлгісі uart_regs модулімен бірге жасалады. Кодтау уақытын үнемдеу үшін модуль данасын және сигналдық мәлімдемелерді дизайнға көшіруге болады.
Статикалық 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 графикалық интерфейсіне жүктегеннен кейін бағдарламалау нүктелік кескінін жасау үшін Құралдар→Барлығын іске қосу түймешігін басыңыз. file.
- Жасалған нүктелік кескінмен FPGA конфигурациялау үшін Lattice Diamond Programmer Standalone құралын пайдалануға болады. file. Diamond Programmer ашылғанда, сәлемдесу тілқатысу терезесінде Бар бағдарламашы жобасын ашу түймешігін басыңыз.
- Жобаны таңдаңыз file Zip ішінен табылған: demo/lattice_icestick/diamond_programmer_project.xcf және OK түймесін басыңыз.
- Жобаны жүктегеннен кейін ішіндегі үш нүктені басыңыз 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 ашыңыз және шығарылғанға өтіңіз files GUI интерфейсінің төменгі жағында орналасқан Tcl консолін пайдаланып. Демонстрациялық жоба қалтасына кіру үшін мына пәрменді теріңіз:
- CD /demo/arty_a7_35/vivado_proj/
- Vivado жобасын қайта құру үшін create_vivado_proj.tcl Tcl сценарийін орындаңыз:
- көзі ./create_vivado_proj.tcl
- Барлық іске асыру қадамдарын орындау және бағдарламалау бит ағынын жасау үшін бүйірлік тақтадағы Бит ағынын жасау түймесін басыңыз file.
- Соңында «Аппараттық құрал менеджерін ашу» түймесін басып, 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 ашыңыз және шығарылғанға өтіңіз files GUI интерфейсінің төменгі жағында орналасқан Tcl консолін пайдаланып. Демонстрациялық жоба қалтасына кіру үшін мына пәрменді теріңіз:
- CD /demo/arty_s7_50/vivado_proj/
- Vivado жобасын қайта құру үшін create_vivado_proj.tcl Tcl сценарийін орындаңыз:
- көзі ./create_vivado_proj.tcl
- Барлық іске асыру қадамдарын орындау және бағдарламалау бит ағынын жасау үшін бүйірлік тақтадағы Бит ағынын жасау түймесін басыңыз file.
- Соңында «Аппараттық құрал менеджерін ашу» түймесін басып, GUI арқылы FPGA бағдарламасын бағдарламалаңыз.
- Енді uart_regs.py бөлімінде сипатталғандай demo/arty_s7_50/uart_regs.py сценарийін пайдалану арқылы регистрлерді оқу және жазуды жалғастыруға болады.
Іске асыру
- Нақты іске асыру талаптары жоқ.
Шектеулер
- Бұл дизайн үшін арнайы уақыт шектеулері қажет емес, себебі UART интерфейсі баяу және асинхронды интерфейс ретінде қарастырылады.
- uart_regs модуліне uart_rx кірісі uart_rx модулі ішінде үндестіріледі. Осылайша, оны жоғарғы деңгейлі модульде синхрондаудың қажеті жоқ.
Белгілі мәселелер
- FPGA архитектурасының әдепкі регистр мәндерін қолдайтынына байланысты модульді қолданар алдында оны қалпына келтіру қажет болуы мүмкін.
Қосымша ақпарат
- Авторлық құқық VHDLwhiz.com
Жиі қойылатын сұрақтар
Q: UART сынақ интерфейсінің генераторының мақсаты қандай?
A: UART сынақ интерфейсінің генераторы UART байланысын пайдаланып FPGA регистр мәндерімен әрекеттесу үшін пайдаланушы интерфейстерін жасауға мүмкіндік береді.
С: Pserial бумасын қалай орнатуға болады?
A: Pyserial бағдарламасын Pip арқылы орнатуға болады: pip install pyserial
Құжаттар / Ресурстар
![]() |
VHDLwhiz UART сынақ интерфейсінің генераторы [pdf] Пайдаланушы нұсқаулығы UART сынақ интерфейсінің генераторы, сынақ интерфейсінің генераторы, интерфейс генераторы, генератор |