ម៉ាស៊ីនបង្កើតចំណុចប្រទាក់សាកល្បង VHDLwhiz UART
ព័ត៌មានអំពីផលិតផល
លក្ខណៈពិសេស៖
- ឈ្មោះផលិតផល៖ 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 -h
- ដើម្បីបង្កើតចំណុចប្រទាក់ផ្ទាល់ខ្លួន អ្នកត្រូវតែដំណើរការស្គ្រីបជាមួយនឹងការចុះឈ្មោះដែលអាចគ្រប់គ្រង 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 នេះ៖
- តោះដំណើរការស្គ្រីបជាមួយអាគុយម៉ង់ដើម្បីបង្កើតចំណុចប្រទាក់ជាមួយនឹងការចុះឈ្មោះជាច្រើននៃទិសដៅ ប្រវែង និងប្រភេទផ្សេងៗគ្នា
បង្កើត 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 secti
- អ្នកមិនចាំបាច់ធ្វើសមកាលកម្មសញ្ញា 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
- ស្គ្រីបមានជម្រើសដើម្បីកំណត់ច្រក UART ដោយប្រើកុងតាក់ -c ។ វាដំណើរការលើ Windows និង Linux ។ កំណត់វាទៅច្រកដែលមានរាយក្នុងបញ្ជីជំនួយ។ ដើម្បីកំណត់ច្រកលំនាំដើម អ្នកក៏អាចកែសម្រួលអថេរ UART_PORT នៅក្នុងស្គ្រីប uart_regs.py ផងដែរ។
ការចុះបញ្ជីការចុះបញ្ជី
- ព័ត៌មានអំពីការគូសផែនទីចុះឈ្មោះត្រូវបានដាក់ក្នុងបឋមកថានៃស្គ្រីប uart_regs.py ដោយស្គ្រីប gen_uart_regs.py ។ អ្នកអាចរាយបញ្ជីបញ្ជីដែលមានជាមួយកុងតាក់ -l ដូចដែលបានឃើញខាងក្រោម។ នេះគឺជាពាក្យបញ្ជាក្នុងស្រុក ហើយនឹងមិនធ្វើអន្តរកម្មជាមួយ FPGA គោលដៅទេ។
សរសេរទៅចុះឈ្មោះ
- អ្នកអាចសរសេរទៅបញ្ជីចេញណាមួយដោយប្រើកុងតាក់ -w ។ ផ្តល់ឈ្មោះចុះឈ្មោះតាមដោយ “=” និងតម្លៃដែលបានផ្តល់ជាគោលពីរ គោលដប់ប្រាំមួយ ឬតម្លៃទសភាគ ដូចបង្ហាញខាងក្រោម។
- ចំណាំថាការអនុវត្ត VHDL ទាមទារស្គ្រីបដើម្បីសរសេរការចុះឈ្មោះលទ្ធផលទាំងអស់ក្នុងពេលដំណាលគ្នា។ ដូច្នេះ ប្រសិនបើអ្នកមិនបញ្ជាក់សំណុំពេញលេញនៃការចុះឈ្មោះលទ្ធផលទេ ស្គ្រីបនឹងអនុវត្តការអានពីគោលដៅ FPGA ជាមុនសិន ហើយបន្ទាប់មកប្រើតម្លៃទាំងនោះសម្រាប់តម្លៃដែលបាត់។ លទ្ធផលនឹងគឺថាមានតែការចុះឈ្មោះដែលបានបញ្ជាក់ផ្លាស់ប្តូរ
- នៅពេលអ្នកធ្វើការសរសេរ ការចុះឈ្មោះដែលបានបញ្ជាក់ទាំងអស់នឹងផ្លាស់ប្តូរក្នុងអំឡុងពេលវដ្តនាឡិកាដូចគ្នា មិនមែនភ្លាមៗនៅពេលដែលពួកគេបានទទួល UART នោះទេ។
ការចុះឈ្មោះការអាន
- ប្រើកុងតាក់ -r ដើម្បីអានតម្លៃចុះឈ្មោះទាំងអស់ ដូចបានបង្ហាញខាងក្រោម។ តម្លៃដែលបានសម្គាល់ជាពណ៌លឿងគឺជាតម្លៃដែលយើងបានផ្លាស់ប្តូរនៅក្នុងការសរសេរពីមុនample
- រាល់ការអានបង្ហាញរូបថតភ្លាមៗនៃបញ្ជីបញ្ចូល និងលទ្ធផលទាំងអស់។ ពួកគេទាំងអស់គឺ sampដឹកនាំក្នុងអំឡុងពេលវដ្តនាឡិកាដូចគ្នា។
ការបំបាត់កំហុស
ប្រើកុងតាក់ -d ជាមួយកុងតាក់ផ្សេងទៀត ប្រសិនបើអ្នកត្រូវការបំបាត់កំហុសពិធីការទំនាក់ទំនង។ បន្ទាប់មក ស្គ្រីបនឹងបោះពុម្ពចេញរាល់បៃដែលបានផ្ញើ និងទទួល និង tag ពួកវា ប្រសិនបើពួកវាជាតួអក្សរគ្រប់គ្រង ដូចបានបង្ហាញខាងក្រោម
ការប្រើប្រាស់ចំណុចប្រទាក់នៅក្នុងស្គ្រីប Python ផ្សេងទៀត។
- ស្គ្រីប uart_regs.py មានថ្នាក់ UartRegs ដែលអ្នកអាចប្រើយ៉ាងងាយស្រួលជាចំណុចប្រទាក់ទំនាក់ទំនងនៅក្នុងស្គ្រីប Python ផ្ទាល់ខ្លួនផ្សេងទៀត។ គ្រាន់តែនាំចូលថ្នាក់ បង្កើតវត្ថុរបស់វា ហើយចាប់ផ្តើមប្រើវិធីសាស្រ្ត ដូចបានបង្ហាញខាងក្រោម។
- យោងទៅ docstrings ក្នុងកូដ Python សម្រាប់វិធីសាស្រ្ត និងការពិពណ៌នា និងប្រភេទតម្លៃត្រឡប់។
instantiation_template.vho
- គំរូ instantiation ត្រូវបានបង្កើតរួមជាមួយនឹងម៉ូឌុល 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_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 ។
- បន្ទាប់ពីគម្រោងផ្ទុកឡើង សូមចុចចំណុចបីក្នុងប្រអប់ 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 របស់អ្នកគាំទ្រតម្លៃចុះឈ្មោះលំនាំដើមឬអត់។
ព័ត៌មានបន្ថែម
- រក្សាសិទ្ធិ VHDLwhiz.com
សំណួរគេសួរញឹកញាប់
សំណួរ៖ តើអ្វីជាគោលបំណងនៃម៉ាស៊ីនបង្កើតចំណុចប្រទាក់តេស្ត UART?
A: ឧបករណ៍បង្កើតចំណុចប្រទាក់សាកល្បង UART អនុញ្ញាតឱ្យបង្កើតចំណុចប្រទាក់ផ្ទាល់ខ្លួនដើម្បីធ្វើអន្តរកម្មជាមួយតម្លៃចុះឈ្មោះ FPGA ដោយប្រើទំនាក់ទំនង UART ។
សំណួរ៖ តើខ្ញុំត្រូវដំឡើងកញ្ចប់ Pyserial យ៉ាងដូចម្តេច?
A: អ្នកអាចដំឡើង Pyserial តាមរយៈ Pip ដោយប្រើពាក្យបញ្ជា: pip install pyserial
ឯកសារ/ធនធាន
![]() |
ម៉ាស៊ីនបង្កើតចំណុចប្រទាក់សាកល្បង VHDLwhiz UART [pdf] សៀវភៅណែនាំអ្នកប្រើប្រាស់ ឧបករណ៍បង្កើតចំណុចប្រទាក់សាកល្បង UART, ម៉ាស៊ីនភ្លើងចំណុចប្រទាក់សាកល្បង, ម៉ាស៊ីនបង្កើតចំណុចប្រទាក់, ម៉ាស៊ីនភ្លើង |