និមិត្តសញ្ញា VHDLwhiz

ម៉ាស៊ីនបង្កើតចំណុចប្រទាក់សាកល្បង VHDLwhiz UART

VHDLwhiz-UART-Test-Interface-Generator-PRODUCT

ព័ត៌មានអំពីផលិតផល

លក្ខណៈ​ពិសេស៖

  • ឈ្មោះផលិតផល៖ VHDL ចុះឈ្មោះម៉ាស៊ីនបង្កើតចំណុចប្រទាក់តេស្ត UART
  • កំណែ៖ 1.0.4
  • កាលបរិច្ឆេទ៖ ថ្ងៃទី ១៩ ខែ សីហា ឆ្នាំ ២០២៣
  • អ្នកនិពន្ធ: Jonas Julian Jensen
  • ផលិតផល URL: តំណភ្ជាប់ផលិតផល
  • អ៊ីមែលទំនាក់ទំនង៖ jonas@vhdlwhiz.com

ការពិពណ៌នា

ផលិតផលនេះអនុញ្ញាតឱ្យអ្នកបង្កើតចំណុចប្រទាក់ផ្ទាល់ខ្លួនសម្រាប់ការអាន និងសរសេរតម្លៃចុះឈ្មោះ FPGA ដោយប្រើ UART ។ ម៉ូឌុល VHDL និងស្គ្រីប Python ដែលបង្កើតបានផ្តល់នូវសមត្ថភាពក្នុងការធ្វើអន្តរកម្មជាមួយប្រភេទផ្សេងៗនៃការចុះឈ្មោះនៅក្នុងការរចនា FPGA របស់អ្នក។

តម្រូវការ

  • អ្នកបកប្រែ Python 3
  • កញ្ចប់ pyserial

ពិធីការ

ផលិតផលប្រើពិធីការស៊ុមទិន្នន័យដែលមានតួអក្សរត្រួតពិនិត្យចំនួនបួន៖

  • ឈ្មោះ៖ READ_REQ, តម្លៃ៖ 0x0A - ពាក្យបញ្ជាពីម៉ាស៊ីនទៅ FPGA ដើម្បីចាប់ផ្តើមលំដាប់សរសេរដើម្បីផ្ញើការចុះឈ្មោះទាំងអស់ត្រឡប់មកវិញនៅលើ UART
  • ឈ្មោះ៖ START_WRITE, តម្លៃ៖ 0x0B - សម្គាល់ការចាប់ផ្តើមនៃលំដាប់សរសេរក្នុងទិសដៅណាមួយ។
  • ឈ្មោះ៖ END_WRITE, តម្លៃ៖ 0x0C - សម្គាល់ចុងបញ្ចប់នៃលំដាប់សរសេរក្នុងទិសដៅណាមួយ។
  • ឈ្មោះ៖ គេច, តម្លៃ៖ 0x0D - តួអក្សរគេចដែលប្រើសម្រាប់គេចពាក្យបញ្ជា

ការណែនាំអំពីការប្រើប្រាស់ផលិតផល

កំពុងដំណើរការស្គ្រីប

ដើម្បីប្រើផលិតផល សូមប្រាកដថាអ្នកបានដំឡើង Python 3 និងកញ្ចប់ Pyserial។ ដំណើរការស្គ្រីបតាមរយៈអ្នកបកប្រែ Python 3 ។

ការបង្កើតចំណុចប្រទាក់ផ្ទាល់ខ្លួន

ប្រើស្គ្រីប gen_uart_regs.py ដើម្បីបង្កើតចំណុចប្រទាក់ផ្ទាល់ខ្លួនសម្រាប់ការអាន និងសរសេរតម្លៃចុះឈ្មោះ FPGA ។ អ្នកអាចបញ្ជាក់សមាសភាពនៃបញ្ជីបញ្ចូល និងទិន្នផល និងប្រភេទនៅពេលបង្កើតលទ្ធផល files.

អន្តរកម្មជាមួយការចុះឈ្មោះ

អ្នកអាចអានពី ឬសរសេរទៅកាន់លេខចុះឈ្មោះណាមួយនៅក្នុងការរចនា FPGA របស់អ្នកដោយប្រើម៉ូឌុល VHDL និងអក្សរ Python ដែលបានបង្កើត។ ការចុះឈ្មោះដែលអាចចូលប្រើបានអាចមានប្រភេទដូចជា std_logic, std_logic_vector, បានចុះហត្ថលេខា ឬមិនបានចុះហត្ថលេខា។

អាជ្ញាប័ណ្ណ

  • អាជ្ញាប័ណ្ណ MIT គ្របដណ្តប់លើតម្រូវការរក្សាសិទ្ធិ និងលក្ខខណ្ឌប្រើប្រាស់របស់កូដប្រភព។ យោងទៅ LICENSE.txt file នៅក្នុង Zip file សម្រាប់ព័ត៌មានលម្អិត។

កំណត់ហេតុផ្លាស់ប្តូរ

  • ការផ្លាស់ប្តូរទាំងនេះសំដៅទៅលើគម្រោង files ហើយឯកសារនេះត្រូវបានធ្វើបច្ចុប្បន្នភាពទៅតាមនោះ។
កំណែ សុន្ទរកថា
1.0.0 ការចេញផ្សាយដំបូង
1.0.1 បានជួសជុលកំហុសឯកសារយោង «ខ្លួនឯង» ដែលបាត់នៅពេលនាំចូលជា uart_regs.py ជាម៉ូឌុល Python ។ ការ​សរសេរ​ដែល​បាន​ផ្លាស់​ប្តូ​រ​បាន​បរាជ័យ​ការ​បោះពុម្ព​ទៅ​ជា​ករណី​លើកលែង​ទៅ​

ជៀសវាងការបោះពុម្ពទៅកុងសូលនៅពេលដំណើរការជាម៉ូឌុលដែលបាននាំចូល។

1.0.2 ជួសជុលកំហុស Vivado [Synth 8-248] នៅពេលដែលមិនមាន regs របៀបចេញ។
1.0.3 ជួសជុលការព្រមាន Vivado Linter: ចុះឈ្មោះបានបើកដំណើរការដោយ

កំណត់ឡើងវិញសមកាលកម្ម

1.0.4 ជួសជុលករណីជ្រុងនៅពេលទទួលពាក្យមិនប្រក្រតីជាមួយនឹងតួអក្សរគេចចេញជាបៃចុងក្រោយ។ ពាក្យបន្ទាប់ក៏នឹងត្រូវបាត់បង់ដែរ ដោយសារយើងមិនបានសម្អាត recv_data_prev_is_escape នៅពេលត្រឡប់ទៅ IDLE វិញ។

ឥឡូវនេះស្គ្រីប gen_uart_regs.py អនុញ្ញាតតែឈ្មោះ reg តែមួយគត់។

ការពិពណ៌នា

  • ឯកសារនេះពិពណ៌នាដូចខាងក្រោម files និងថតឯកសារ៖
  • gen_uart_regs.py
  • generated/uart_regs.vhd
  • generated/uart_regs.py
  • generated/instantiation_template.vho
  • rtl/uart_regs_backend.vhd
  • rtl/uart_rx.vhd
  • rtl/uart_tx.vhd
  • ការបង្ហាញ/បន្ទះឈើ_ទឹកកក/
  • demo/xilinx_arty_a7_35/
  • demo/xilinx_arty_s7_50/
  • ស្គ្រីប gen_uart_regs.py និងគាំទ្រ VHDL files នៅក្នុងគម្រោងនេះអនុញ្ញាតឱ្យអ្នកបង្កើតចំណុចប្រទាក់ផ្ទាល់ខ្លួនសម្រាប់ការអាន និងសរសេរតម្លៃចុះឈ្មោះ FPGA នៃប្រភេទ និងទទឹងផ្សេងៗដោយប្រើ UART ។
  • អ្នកអាចប្រើម៉ូឌុល VHDL និងស្គ្រីប Python ដែលបានបង្កើតដើម្បីអាន ឬសរសេរទៅកាន់ចំនួនចុះឈ្មោះណាមួយនៅក្នុងការរចនារបស់អ្នក។ ការចុះឈ្មោះដែលអាចចូលប្រើ UART អាចមានប្រភេទ std_logic, std_logic_vector បានចុះហត្ថលេខា ឬមិនបានចុះហត្ថលេខា។
  • អ្នកអាចសម្រេចចិត្តលើសមាសភាពច្បាស់លាស់នៃបញ្ជីបញ្ចូល និងទិន្នផល និងប្រភេទនៅពេលបង្កើតលទ្ធផល files ដោយប្រើស្គ្រីប gen_uart_regs.py ។
  • ស្គ្រីប Python ត្រូវ​បាន​បង្កើត​ឡើង​ដោយ​ផ្នែក​ដោយ​មាន​ជំនួយ​ពី​ឧបករណ៍​ឆ្លាតវៃ​សិប្បនិម្មិត ChatGPT ខណៈ​ដែល​កូដ VHDL ត្រូវ​បាន​បង្កើត​ដោយ​ដៃ។

តម្រូវការ

  • ស្គ្រីបនៅក្នុងគម្រោងនេះត្រូវតែដំណើរការតាមរយៈអ្នកបកប្រែ Python 3 ហើយកញ្ចប់ Pyserial ត្រូវតែត្រូវបានដំឡើង។
  • អ្នកអាចដំឡើង pyserial តាមរយៈ Pip ដោយប្រើពាក្យបញ្ជានេះ៖ pip install pyserial

ពិធីការ

  • VHDL files និង Python script ប្រើ data-framing protocol ជាមួយនឹង control 4
ឈ្មោះ តម្លៃ មតិយោបល់
READ_REQ 0x0A ពាក្យបញ្ជាពីម៉ាស៊ីនទៅ FPGA ដើម្បីចាប់ផ្តើមការសរសេរ

លំដាប់ដើម្បីផ្ញើការចុះឈ្មោះទាំងអស់ត្រឡប់មកវិញនៅលើ UART

START_WRITE ០x១ ប៊ី សម្គាល់​ការចាប់ផ្តើម​នៃ​លំដាប់​សរសេរ​ក្នុង​ទាំង​មួយ​

ទិសដៅ

END_WRITE ០x៤ ស៊ី សម្គាល់ចុងបញ្ចប់នៃលំដាប់សរសេរក្នុងទិសដៅណាមួយ។
រត់គេចខ្លួន 0x0D តួអក្សរ Escape ដែលប្រើសម្រាប់ការគេចចេញពីពាក្យបញ្ជាណាមួយ រួមទាំងតួអក្សរ ESCAPE ខ្លួនវា នៅពេលដែលពួកវាលេចឡើងជាទិន្នន័យរវាងសញ្ញាសម្គាល់ START_WRITE និង END_WRITE ។

រាល់បៃ READ_REQ ដែលមិនបានគេចផុតដែលបានផ្ញើទៅ FPGA គឺជាការណែនាំដើម្បីផ្ញើការចុះឈ្មោះដែលអាចចូលប្រើ 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-Test-Interface-Generator-FIG-1
  • ដើម្បីបង្កើតចំណុចប្រទាក់ផ្ទាល់ខ្លួន អ្នកត្រូវតែដំណើរការស្គ្រីបជាមួយនឹងការចុះឈ្មោះដែលអាចគ្រប់គ្រង UART ដែលអ្នកចង់បាននីមួយៗដែលបានរាយបញ្ជីជាអាគុយម៉ង់។ ប្រភេទដែលមានគឺ std_logic, std_logic_vector, unsigned និងចុះហត្ថលេខា។
  • របៀបលំនាំដើម (ទិសដៅ) គឺនៅក្នុង ហើយប្រភេទលំនាំដើមគឺ std_logic_vector លុះត្រាតែការចុះឈ្មោះមានប្រវែង៖ 1. បន្ទាប់មក វានឹងមានលំនាំដើមទៅជា std_logic។
  • ដូច្នេះ ប្រសិនបើអ្នកចង់បង្កើតសញ្ញាបញ្ចូល std_logic អ្នកអាចប្រើអាគុយម៉ង់ណាមួយទាំងនេះ៖
  • my_sl=1
  • my_sl=1: ក្នុង
  • my_sl=1: ក្នុង: std_logic
  • វ៉ារ្យ៉ង់ខាងលើទាំងអស់នឹងនាំឱ្យស្គ្រីបបង្កើតសញ្ញាដែលអាចចូលប្រើ UART នេះ៖VHDLwhiz-UART-Test-Interface-Generator-FIG-2
  • តោះដំណើរការស្គ្រីបជាមួយអាគុយម៉ង់ដើម្បីបង្កើតចំណុចប្រទាក់ជាមួយនឹងការចុះឈ្មោះជាច្រើននៃទិសដៅ ប្រវែង និងប្រភេទផ្សេងៗគ្នាVHDLwhiz-UART-Test-Interface-Generator-FIG-3

បង្កើត files

  • ការដំណើរការដោយជោគជ័យនៃស្គ្រីប gen_uart_regs.py នឹងបង្កើតថតលទ្ធផលដែលមានឈ្មោះដែលបានបង្កើតជាមួយទាំងបី files បានរាយខាងក្រោម។ ប្រសិនបើពួកគេមានរួចហើយ ពួកគេនឹងសរសេរជាន់ពីលើ។
  • generated/uart_regs.vhd
  • generated/uart_regs.py
  • generated/instantiation_template.vho
  • uart_regs.vhd
  • នេះគឺជាម៉ូឌុលចំណុចប្រទាក់ផ្ទាល់ខ្លួនដែលបង្កើតដោយស្គ្រីប។ អ្នកត្រូវបង្កើតវាភ្លាមៗនៅក្នុងការរចនារបស់អ្នក ដែលវាអាចចូលប្រើការចុះឈ្មោះដែលអ្នកចង់គ្រប់គ្រងដោយប្រើ UART ។
  • អ្វីគ្រប់យ៉ាងនៅខាងលើផ្នែក "– UART អាចចូលដំណើរការបានចុះឈ្មោះ" នឹងដូចគ្នាបេះបិទសម្រាប់ម៉ូឌុល uart_regs ទាំងអស់ ខណៈដែលសមាសភាពនៃសញ្ញាច្រកខាងក្រោមបន្ទាត់នោះអាស្រ័យលើអាគុយម៉ង់ដែលបានផ្តល់ឱ្យស្គ្រីបម៉ាស៊ីនភ្លើង។
  • បញ្ជីខាងក្រោមបង្ហាញពីអង្គភាពសម្រាប់ម៉ូឌុល uart_regs ដែលកើតចេញពីពាក្យបញ្ជាបង្កើត exampបានបង្ហាញនៅក្នុង gen_uart_regs.py sectiVHDLwhiz-UART-Test-Interface-Generator-FIG-4
  • អ្នកមិនចាំបាច់ធ្វើសមកាលកម្មសញ្ញា uart_rx ដូចដែលវាត្រូវបានគ្រប់គ្រងនៅក្នុង uart_rx នោះទេ។ ម៉ូឌុល។
  • នៅពេលដែលម៉ូឌុលទទួលបានសំណើអាន វានឹងចាប់យកតម្លៃនៃសញ្ញាបញ្ចូល និងទិន្នផលទាំងអស់នៅក្នុងវដ្តនាឡិកាបច្ចុប្បន្ន។ បន្ទាប់មករូបថតភ្លាមៗត្រូវបានផ្ញើទៅម៉ាស៊ីនតាមរយៈ UART ។
  • នៅពេលដែលការសរសេរកើតឡើង ការចុះឈ្មោះលទ្ធផលទាំងអស់ត្រូវបានធ្វើបច្ចុប្បន្នភាពជាមួយនឹងតម្លៃថ្មីក្នុងរង្វង់នាឡិកាដូចគ្នា។ វាមិនអាចទៅរួចទេក្នុងការផ្លាស់ប្តូរតម្លៃសញ្ញាទិន្នផលជាលក្ខណៈបុគ្គល។
  • ទោះយ៉ាងណាក៏ដោយ ស្គ្រីប uart_regs.py អនុញ្ញាតឱ្យអ្នកប្រើធ្វើបច្ចុប្បន្នភាពតែលទ្ធផលដែលបានជ្រើសរើសដោយអានឡើងវិញនូវតម្លៃបច្ចុប្បន្ននៃការចុះឈ្មោះទាំងអស់។ បន្ទាប់មកវាសរសេរមកវិញនូវតម្លៃទាំងអស់ រួមទាំងតម្លៃដែលបានធ្វើបច្ចុប្បន្នភាពផងដែរ។
  • uart_regs.py
  • បង្កើត/uart_regs.py file ត្រូវបានបង្កើតរួមគ្នាជាមួយម៉ូឌុល uart_regs VHDL និងមានព័ត៌មានចុះឈ្មោះផ្ទាល់ខ្លួននៅក្នុងបឋមកថានៃ file. ជាមួយនឹងស្គ្រីបនេះ អ្នកអាចអានពី ឬសរសេរទៅកាន់ការចុះឈ្មោះផ្ទាល់ខ្លួនរបស់អ្នកបានយ៉ាងងាយស្រួល។

ម៉ឺនុយជំនួយ

  • វាយ python uart_regs.py -h ដើម្បីបោះពុម្ពម៉ឺនុយជំនួយ៖VHDLwhiz-UART-Test-Interface-Generator-FIG-5

កំណត់ច្រក UART

  • ស្គ្រីបមានជម្រើសដើម្បីកំណត់ច្រក UART ដោយប្រើកុងតាក់ -c ។ វាដំណើរការលើ Windows និង Linux ។ កំណត់វាទៅច្រកដែលមានរាយក្នុងបញ្ជីជំនួយ។ ដើម្បីកំណត់ច្រកលំនាំដើម អ្នកក៏អាចកែសម្រួលអថេរ UART_PORT នៅក្នុងស្គ្រីប uart_regs.py ផងដែរ។

ការចុះបញ្ជីការចុះបញ្ជី

  • ព័ត៌មានអំពីការគូសផែនទីចុះឈ្មោះត្រូវបានដាក់ក្នុងបឋមកថានៃស្គ្រីប uart_regs.py ដោយស្គ្រីប gen_uart_regs.py ។ អ្នកអាចរាយបញ្ជីបញ្ជីដែលមានជាមួយកុងតាក់ -l ដូចដែលបានឃើញខាងក្រោម។ នេះគឺជាពាក្យបញ្ជាក្នុងស្រុក ហើយនឹងមិនធ្វើអន្តរកម្មជាមួយ FPGA គោលដៅទេ។VHDLwhiz-UART-Test-Interface-Generator-FIG-6

សរសេរទៅចុះឈ្មោះ

  • អ្នក​អាច​សរសេរ​ទៅ​បញ្ជី​ចេញ​ណា​មួយ​ដោយ​ប្រើ​កុងតាក់ -w ។ ផ្តល់ឈ្មោះចុះឈ្មោះតាមដោយ “=” និងតម្លៃដែលបានផ្តល់ជាគោលពីរ គោលដប់ប្រាំមួយ ឬតម្លៃទសភាគ ដូចបង្ហាញខាងក្រោម។VHDLwhiz-UART-Test-Interface-Generator-FIG-7
  • ចំណាំថាការអនុវត្ត VHDL ទាមទារស្គ្រីបដើម្បីសរសេរការចុះឈ្មោះលទ្ធផលទាំងអស់ក្នុងពេលដំណាលគ្នា។ ដូច្នេះ ប្រសិនបើអ្នកមិនបញ្ជាក់សំណុំពេញលេញនៃការចុះឈ្មោះលទ្ធផលទេ ស្គ្រីបនឹងអនុវត្តការអានពីគោលដៅ FPGA ជាមុនសិន ហើយបន្ទាប់មកប្រើតម្លៃទាំងនោះសម្រាប់តម្លៃដែលបាត់។ លទ្ធផលនឹងគឺថាមានតែការចុះឈ្មោះដែលបានបញ្ជាក់ផ្លាស់ប្តូរ
  • នៅពេលអ្នកធ្វើការសរសេរ ការចុះឈ្មោះដែលបានបញ្ជាក់ទាំងអស់នឹងផ្លាស់ប្តូរក្នុងអំឡុងពេលវដ្តនាឡិកាដូចគ្នា មិនមែនភ្លាមៗនៅពេលដែលពួកគេបានទទួល UART នោះទេ។

ការចុះឈ្មោះការអាន

  • ប្រើកុងតាក់ -r ដើម្បីអានតម្លៃចុះឈ្មោះទាំងអស់ ដូចបានបង្ហាញខាងក្រោម។ តម្លៃដែលបានសម្គាល់ជាពណ៌លឿងគឺជាតម្លៃដែលយើងបានផ្លាស់ប្តូរនៅក្នុងការសរសេរពីមុនampleVHDLwhiz-UART-Test-Interface-Generator-FIG-8
  • រាល់ការអានបង្ហាញរូបថតភ្លាមៗនៃបញ្ជីបញ្ចូល និងលទ្ធផលទាំងអស់។ ពួកគេទាំងអស់គឺ sampដឹកនាំក្នុងអំឡុងពេលវដ្តនាឡិកាដូចគ្នា។

ការបំបាត់កំហុស

ប្រើកុងតាក់ -d ជាមួយកុងតាក់ផ្សេងទៀត ប្រសិនបើអ្នកត្រូវការបំបាត់កំហុសពិធីការទំនាក់ទំនង។ បន្ទាប់មក ស្គ្រីបនឹងបោះពុម្ពចេញរាល់បៃដែលបានផ្ញើ និងទទួល និង tag ពួកវា ប្រសិនបើពួកវាជាតួអក្សរគ្រប់គ្រង ដូចបានបង្ហាញខាងក្រោមVHDLwhiz-UART-Test-Interface-Generator-FIG-9

ការប្រើប្រាស់ចំណុចប្រទាក់នៅក្នុងស្គ្រីប Python ផ្សេងទៀត។

  • ស្គ្រីប uart_regs.py មានថ្នាក់ UartRegs ដែលអ្នកអាចប្រើយ៉ាងងាយស្រួលជាចំណុចប្រទាក់ទំនាក់ទំនងនៅក្នុងស្គ្រីប Python ផ្ទាល់ខ្លួនផ្សេងទៀត។ គ្រាន់តែនាំចូលថ្នាក់ បង្កើតវត្ថុរបស់វា ហើយចាប់ផ្តើមប្រើវិធីសាស្រ្ត ដូចបានបង្ហាញខាងក្រោម។VHDLwhiz-UART-Test-Interface-Generator-FIG-10
  • យោងទៅ docstrings ក្នុងកូដ Python សម្រាប់វិធីសាស្រ្ត និងការពិពណ៌នា និងប្រភេទតម្លៃត្រឡប់។

instantiation_template.vho

  • គំរូ instantiation ត្រូវបានបង្កើតរួមជាមួយនឹងម៉ូឌុល uart_regs សម្រាប់ភាពងាយស្រួលរបស់អ្នក។ ដើម្បីសន្សំពេលវេលាសរសេរកូដ អ្នកអាចចម្លងការបញ្ជាក់ម៉ូឌុល និងការប្រកាសសញ្ញាទៅក្នុងការរចនារបស់អ្នក។VHDLwhiz-UART-Test-Interface-Generator-FIG-11VHDLwhiz-UART-Test-Interface-Generator-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_rx និង uart_tx ដើម្បីគ្រប់គ្រងទំនាក់ទំនង UART ជាមួយម៉ាស៊ីន។

គម្រោងសាកល្បង

  • មានគម្រោងសាកល្បងចំនួន XNUMX រួមបញ្ចូលនៅក្នុង 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 ដើម្បីបង្កើត bitmap កម្មវិធី file.
  • អ្នក​អាច​ប្រើ​ឧបករណ៍ Lattice Diamond Programmer Standalone ដើម្បី​កំណត់​រចនាសម្ព័ន្ធ FPGA ជាមួយ​នឹង​ផែនទី​ប៊ីត​ដែល​បាន​បង្កើត file. នៅពេល Diamond Programmer បើក សូមចុច Open an programmer program ដែលមានស្រាប់ក្នុងប្រអប់ស្វាគមន៍។
  • ជ្រើសរើសគម្រោង file រកឃើញនៅក្នុង Zip: demo/lattice_icestick/diamond_programmer_project.xcf ហើយចុច OK ។VHDLwhiz-UART-Test-Interface-Generator-FIG-13
  • បន្ទាប់​ពី​គម្រោង​ផ្ទុក​ឡើង សូម​ចុច​ចំណុច​បី​ក្នុង​ប្រអប់ File ឈ្មោះជួរឈរដូចបានបង្ហាញខាងលើ។ រកមើលដើម្បីជ្រើសរើសផែនទីប៊ីត file ដែលអ្នកបានបង្កើតនៅក្នុង iCEcube2
  • demo/lattice_icestick/icecube2_proj/uart_regs_Implmnt/sbt/outputs/bitmap/top_icestick_bitmap.bin
  • ជាចុងក្រោយ ជាមួយនឹងបន្ទះ iCEstick ដែលបានដោតចូលទៅក្នុងរន្ធ USB នៅលើកុំព្យូទ័ររបស់អ្នក សូមជ្រើសរើស រចនា → កម្មវិធី ដើម្បីសរសេរកម្មវិធី SPI flash និងកំណត់រចនាសម្ព័ន្ធ FPGA ។
  • ឥឡូវនេះ អ្នកអាចបន្តអាន និងសរសេរការចុះឈ្មោះដោយប្រើស្គ្រីប demo/lattice_icestick/uart_regs.py ដូចដែលបានពិពណ៌នានៅក្នុងផ្នែក uart_regs.py ។

Xilinx Digilent Arty A7-35T

  • អ្នកអាចស្វែងរកការអនុវត្តសាកល្បងសម្រាប់ឧបករណ៍វាយតម្លៃ Artix-7 35T Arty FPGA នៅក្នុងថត demo/arty_a7_35។
  • បើក Vivado ហើយរុករកទៅការស្រង់ចេញ fileប្រើកុងសូល Tcl ដែលរកឃើញនៅខាងក្រោមនៃចំណុចប្រទាក់ GUI ។ វាយពាក្យបញ្ជានេះដើម្បីបញ្ចូលថតគម្រោងសាកល្បង៖
  • ស៊ីឌី /demo/arty_a7_35/vivado_proj/
  • ប្រតិបត្តិស្គ្រីប create_vivado_proj.tcl Tcl ដើម្បីបង្កើតគម្រោង Vivado ឡើងវិញ៖
  • ប្រភព ./create_vivado_proj.tcl
  • ចុចបង្កើត Bitstream នៅក្នុងរបារចំហៀងដើម្បីដំណើរការតាមជំហានអនុវត្តទាំងអស់ និងបង្កើត bitstream កម្មវិធី file.
  • ជាចុងក្រោយ ចុចបើកកម្មវិធីគ្រប់គ្រងផ្នែករឹង ហើយសរសេរកម្មវិធី FPGA តាមរយៈ GUI ។
  • ឥឡូវនេះ អ្នកអាចបន្តអាន និងសរសេរការចុះឈ្មោះដោយប្រើ demo/arty_a7_35/uart_regs.py script ដូចដែលបានពិពណ៌នានៅក្នុងផ្នែក uart_regs.py ។

Xilinx Digilent Arty S7-50

  • អ្នកអាចស្វែងរកការអនុវត្តការបង្ហាញសម្រាប់ Arty S7: Spartan-7 FPGA development board នៅក្នុង demo/arty_s7_50 folder។
  • បើក Vivado ហើយរុករកទៅការស្រង់ចេញ fileប្រើកុងសូល Tcl ដែលរកឃើញនៅខាងក្រោមនៃចំណុចប្រទាក់ GUI ។ វាយពាក្យបញ្ជានេះដើម្បីបញ្ចូលថតគម្រោងសាកល្បង៖
  • ស៊ីឌី /demo/arty_s7_50/vivado_proj/
  • ប្រតិបត្តិស្គ្រីប create_vivado_proj.tcl Tcl ដើម្បីបង្កើតគម្រោង Vivado ឡើងវិញ៖
  • ប្រភព ./create_vivado_proj.tcl
  • ចុចបង្កើត Bitstream នៅក្នុងរបារចំហៀងដើម្បីដំណើរការតាមជំហានអនុវត្តទាំងអស់ និងបង្កើត bitstream កម្មវិធី file.
  • ជាចុងក្រោយ ចុចបើកកម្មវិធីគ្រប់គ្រងផ្នែករឹង ហើយសរសេរកម្មវិធី FPGA តាមរយៈ GUI ។
  • ឥឡូវនេះ អ្នកអាចបន្តអាន និងសរសេរការចុះឈ្មោះដោយប្រើស្គ្រីប demo/arty_s7_50/uart_regs.py ដូចដែលបានពិពណ៌នានៅក្នុងផ្នែក uart_regs.py ។

ការអនុវត្ត

  • មិនមានតម្រូវការអនុវត្តជាក់លាក់ទេ។

ឧបសគ្គ

  • មិនចាំបាច់មានការកំណត់ពេលវេលាជាក់លាក់សម្រាប់ការរចនានេះទេ ដោយសារចំណុចប្រទាក់ UART មានភាពយឺតយ៉ាវ និងត្រូវបានចាត់ទុកជាចំណុចប្រទាក់អសមកាល។
  • ការបញ្ចូល uart_rx ទៅម៉ូឌុល uart_regs ត្រូវបានធ្វើសមកាលកម្មនៅក្នុងម៉ូឌុល uart_rx ។ ដូច្នេះ វាមិនចាំបាច់ធ្វើសមកាលកម្មនៅក្នុងម៉ូឌុលកម្រិតកំពូលទេ។

បញ្ហាដែលគេស្គាល់

  • អ្នកប្រហែលជាត្រូវកំណត់ម៉ូឌុលឡើងវិញមុនពេលវាអាចប្រើបាន អាស្រ័យលើថាតើស្ថាបត្យកម្ម FPGA របស់អ្នកគាំទ្រតម្លៃចុះឈ្មោះលំនាំដើមឬអត់។

ព័ត៌មានបន្ថែម

សំណួរគេសួរញឹកញាប់

សំណួរ៖ តើអ្វីជាគោលបំណងនៃម៉ាស៊ីនបង្កើតចំណុចប្រទាក់តេស្ត UART?

A: ឧបករណ៍បង្កើតចំណុចប្រទាក់សាកល្បង UART អនុញ្ញាតឱ្យបង្កើតចំណុចប្រទាក់ផ្ទាល់ខ្លួនដើម្បីធ្វើអន្តរកម្មជាមួយតម្លៃចុះឈ្មោះ FPGA ដោយប្រើទំនាក់ទំនង UART ។

សំណួរ៖ តើខ្ញុំត្រូវដំឡើងកញ្ចប់ Pyserial យ៉ាងដូចម្តេច?

A: អ្នកអាចដំឡើង Pyserial តាមរយៈ Pip ដោយប្រើពាក្យបញ្ជា: pip install pyserial

ឯកសារ/ធនធាន

ម៉ាស៊ីនបង្កើតចំណុចប្រទាក់សាកល្បង VHDLwhiz UART [pdf] សៀវភៅណែនាំអ្នកប្រើប្រាស់
ឧបករណ៍បង្កើតចំណុចប្រទាក់សាកល្បង UART, ម៉ាស៊ីនភ្លើងចំណុចប្រទាក់សាកល្បង, ម៉ាស៊ីនបង្កើតចំណុចប្រទាក់, ម៉ាស៊ីនភ្លើង

ឯកសារយោង

ទុកមតិយោបល់

អាសយដ្ឋានអ៊ីមែលរបស់អ្នកនឹងមិនត្រូវបានផ្សព្វផ្សាយទេ។ វាលដែលត្រូវការត្រូវបានសម្គាល់ *