VHDLwhiz UART စမ်းသပ်မှုအင်တာဖေ့စ်မီးစက်
ထုတ်ကုန်အချက်အလက်
သတ်မှတ်ချက်များ-
- ထုတ်ကုန်အမည်- VHDL သည် UART စမ်းသပ်မှု အင်တာဖေ့စ်မီးစက်ကို မှတ်ပုံတင်သည်။
- ဗားရှင်း- 1.0.4
- ရက်စွဲ- သြဂုတ် ၄၊ ၂၀၂၃
- ရေးသားသူ- Jonas Julian Jensen
- ထုတ်ကုန် URL: ထုတ်ကုန်လင့်ခ်
- ဆက်သွယ်ရန် အီးမေးလ်- jonas@vhdlwhiz.com
ဖော်ပြချက်
ဤထုတ်ကုန်သည် UART ကို အသုံးပြု၍ FPGA မှတ်ပုံတင်တန်ဖိုးများကိုဖတ်ရှုခြင်းနှင့် ရေးသားခြင်းအတွက် စိတ်ကြိုက်အင်တာဖေ့စ်များကို ဖန်တီးနိုင်စေပါသည်။ ထုတ်လုပ်ထားသော VHDL module နှင့် Python script သည် သင်၏ FPGA ဒီဇိုင်းတွင် မှတ်ပုံတင်အမျိုးအစားအမျိုးမျိုးနှင့် အပြန်အလှန်တုံ့ပြန်နိုင်စွမ်းကို ပေးစွမ်းသည်။
လိုအပ်ချက်များ
- Python 3 စကားပြန်
- pyserial အထုပ်
ပရိုတိုကော
ထုတ်ကုန်သည် ထိန်းချုပ်မှုအက္ခရာလေးလုံးပါသည့် ဒေတာဘောင်သွင်းသည့် ပရိုတိုကောကို အသုံးပြုသည်-
- အမည်- READ_REQ၊ တန်ဖိုး- 0x0A - UART မှ မှတ်ပုံတင်များအားလုံးကို ပြန်လည်ပေးပို့ရန် စာစီစာတန်းတစ်ခု စတင်ရန် အိမ်ရှင်မှ FPGA သို့ အမိန့်ပေးသည်။
- အမည်- START_WRITE၊ တန်ဖိုး- 0x0B – လမ်းကြောင်းနှစ်ခုစလုံးတွင် ရေးထားသော အတွဲ၏အစကို အမှတ်အသားပြုသည်။
- အမည်- END_WRITE၊ တန်ဖိုး- 0x0C – ရေးရန် စီစဥ်၏ အဆုံးကို ဦးတည်ချက် တစ်ခုခုဖြင့် အမှတ်အသားပြုသည်။
- အမည်- လွတ်မြောက်ရန်၊ တန်ဖိုး- 0x0D - ထိန်းချုပ်မှုစကားလုံးများကို လွတ်မြောက်ရန်အတွက် အသုံးပြုသည့် Escape ဇာတ်ကောင်
ထုတ်ကုန်အသုံးပြုမှု ညွှန်ကြားချက်များ
Scripts များကို လုပ်ဆောင်ခြင်း။
ထုတ်ကုန်ကိုအသုံးပြုရန် သင့်တွင် Python 3 နှင့် Pyserial ပက်ကေ့ခ်ျကို ထည့်သွင်းထားကြောင်း သေချာပါစေ။ ဇာတ်ညွှန်းများကို Python 3 စကားပြန်ဖြင့် လုပ်ဆောင်ပါ။
စိတ်ကြိုက် အင်တာဖေ့စ်များကို ထုတ်လုပ်ခြင်း။
FPGA မှတ်ပုံတင်တန်ဖိုးများကိုဖတ်ရှုခြင်းနှင့်ရေးသားခြင်းအတွက် စိတ်ကြိုက်အင်တာဖေ့စ်များကိုထုတ်လုပ်ရန် gen_uart_regs.py script ကိုသုံးပါ။ output ကိုထုတ်ပေးသောအခါတွင် input နှင့် output ၏ဖွဲ့စည်းပုံနှင့်အမျိုးအစားများနှင့်အမျိုးအစားများကိုသင်သတ်မှတ်နိုင်သည်။ files.
မှတ်ပုံတင်များနှင့် အပြန်အလှန်ဆက်ဆံခြင်း။
ထုတ်ပေးထားသော VHDL module နှင့် Python script ကိုအသုံးပြု၍ သင်၏ FPGA ဒီဇိုင်းရှိ မှတ်ပုံတင်နံပါတ်တိုင်းကို ဖတ်နိုင် သို့မဟုတ် စာရေးနိုင်သည်။ ဝင်သုံးနိုင်သော မှတ်ပုံတင်များတွင် std_logic၊ std_logic_vector၊ လက်မှတ်ထိုး သို့မဟုတ် လက်မှတ်မထိုးထားသည့် အမျိုးအစားများ ရှိနိုင်သည်။
လိုင်စင်
- MIT လိုင်စင်သည် အရင်းအမြစ်ကုဒ်၏ မူပိုင်ခွင့်လိုအပ်ချက်များနှင့် အသုံးပြုမှုစည်းမျဉ်းများကို အကျုံးဝင်ပါသည်။ LICENSE.txt ကို ကိုးကားပါ။ file Zip ထဲမှာ file အသေးစိတ်အတွက်
ပြောင်းလဲမှုမှတ်တမ်း
- ဤပြောင်းလဲမှုများသည် ပရောဂျက်ကို ရည်ညွှန်းသည်။ files၊ ဤစာတမ်းကို လျော်ညီစွာ မွမ်းမံထားသည်။
ဗားရှင်း | ပြီလေ။ |
1.0.0 | ကနဦး ထုတ်ဝေမှု |
1.0.1 | uart_regs.py အဖြစ် Python မော်ဂျူးအဖြစ် ထည့်သွင်းသောအခါတွင် ပျောက်ဆုံးနေသော «မိမိကိုယ်ကို» ရည်ညွှန်းသည့် ချို့ယွင်းချက်ကို ပြင်ဆင်ခဲ့သည်။ ခြွင်းချက်အနေဖြင့် ရေးရန် မအောင်မြင်ပါက ပရင့်ထုတ်ရန် ပြောင်းလဲထားသည်။
တင်သွင်းထားသော module တစ်ခုအဖြစ် လုပ်ဆောင်နေချိန်တွင် ကွန်ဆိုးလ်သို့ ပုံနှိပ်ခြင်းကို ရှောင်ကြဉ်ပါ။ |
1.0.2 | out mode regs မရှိသောအခါ Vivado [Synth 8-248] error အတွက် ပြင်ဆင်ပါ။ |
1.0.3 | Vivado Linter သတိပေးချက်ကို ပြင်ဆင်ပါ- မှတ်ပုံတင်ခြင်းဖြင့် မောင်းနှင်ပြီး ဖွင့်ထားသည်။
synchronous ပြန်လည်သတ်မှတ်ခြင်း။ |
1.0.4 | နောက်ဆုံး byte အဖြစ် ထွက်ပေါက်စာလုံးဖြင့် ပုံမမှန်သော စကားလုံးကို လက်ခံရရှိသောအခါ ထောင့်စွပ်ကို ပြင်ပါ။ IDLE သို့ပြန်သွားသောအခါတွင် recv_data_prev_is_escape ကို မရှင်းလင်းသောကြောင့် နောက်စကားလုံးလည်း ဆုံးရှုံးသွားမည်ဖြစ်သည်။
gen_uart_regs.py script သည် ယခုအခါ ထူးခြားသော reg အမည်များကိုသာ ခွင့်ပြုပါသည်။ |
ဖော်ပြချက်
- ဤစာတမ်းတွင် အောက်ပါတို့ကို ဖော်ပြထားသည်။ files နှင့် ဖိုင်တွဲများ-
- gen_uart_regs.py
- ထုတ်ပေးသည်/uart_regs.vhd
- ထုတ်ပေးသည်/uart_regs.py
- ထုတ်ပေးသည်/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 ကို ပံ့ပိုးပေးသည်။ fileဤပရောဂျက်တွင် s သည် UART ကို အသုံးပြု၍ အမျိုးမျိုးသောအမျိုးအစားများနှင့် widths များ၏ FPGA မှတ်ပုံတင်တန်ဖိုးများကိုဖတ်ရှုခြင်းနှင့်ရေးသားခြင်းအတွက် စိတ်ကြိုက်အင်တာဖေ့စ်များကို ထုတ်လုပ်ခွင့်ပြုသည်။
- သင့်ဒီဇိုင်းတွင် မှတ်ပုံတင်ထားသော မည်သည့်အရေအတွက်ကိုမဆို ဖတ်ရန် သို့မဟုတ် စာရေးရန် ထုတ်လုပ်ထားသော VHDL မော်ဂျူးနှင့် Python script ကို အသုံးပြုနိုင်သည်။ အသုံးပြုနိုင်သော UART မှတ်ပုံတင်များတွင် std_logic၊ std_logic_vector၊ လက်မှတ်ရေးထိုးထားသော သို့မဟုတ် လက်မှတ်မထိုးထားသော အမျိုးအစားများ ရှိနိုင်ပါသည်။
- အထွက်ကိုထုတ်ပေးသည့်အခါ ထည့်သွင်းမှုနှင့် အထွက်စာရင်းများနှင့် အမျိုးအစားများ တိကျသောဖွဲ့စည်းမှုအပေါ် သင်ဆုံးဖြတ်နိုင်သည်။ files သည် gen_uart_regs.py script ကိုအသုံးပြုသည်။
- Python script များကို ChatGPT အတုထောက်လှမ်းရေးကိရိယာ၏အကူအညီဖြင့် တစ်စိတ်တစ်ပိုင်းဖန်တီးထားပြီး VHDL ကုဒ်ကို လက်ဖြင့်ပြုလုပ်ထားသည်။
လိုအပ်ချက်များ
- ဤပရောဂျက်ရှိ script များကို Python 3 စကားပြန်မှတဆင့် လုပ်ဆောင်ရမည်ဖြစ်ပြီး Pyserial package ကို ထည့်သွင်းရပါမည်။
- ဤ command ကို အသုံးပြု၍ pip install pyserial ကို အသုံးပြု၍ pyserial ကို တပ်ဆင်နိုင်သည်။
ပရိုတိုကော
- VHDL files နှင့် Python script သည် ထိန်းချုပ်မှုလေးခုပါရှိသော data-framing protocol ကိုအသုံးပြုသည်။
နာမည် | တန်ဖိုး | မှတ်ချက် |
READ_REQ | 0x0A | စာရေးခြင်းစတင်ရန် host မှ FPGA သို့ အမိန့်ပေးသည်။
UART မှတဆင့် မှတ်ပုံတင်အားလုံးကို ပြန်လည်ပေးပို့ရန် အတွဲလိုက် |
START_WRITE | 0x0B | နှစ်ခုစလုံးတွင် ရေးရန် အတွဲ၏အစကို အမှတ်အသားပြုသည်။
ဦးတည်ချက် |
END_WRITE | ၃၂x၄၁C | နှစ်ခုစလုံးကို ဦးတည်ချက်ဖြင့် ရေးထားသော အတွဲ၏အဆုံးကို အမှတ်အသားပြုသည်။ |
လွတ်မြောက်ရန် | 0x0D | START_WRITE နှင့် END_WRITE အမှတ်အသားများကြား ဒေတာအဖြစ် ပေါ်လာသောအခါ ESCAPE အက္ခရာကိုယ်တိုင် အပါအဝင် ထိန်းချုပ်စကားလုံးများထဲမှ လွတ်မြောက်ရန်အတွက် အသုံးပြုသည့် Escape စာလုံး။ |
FPGA သို့ ပေးပို့မထားသော READ_REQ byte မှန်သမျှသည် UART မှ လက်ခံရရှိနိုင်သော မှတ်ပုံတင်များ (သွင်းအားစုနှင့် အထွက်များ) အားလုံးကို UART မှတဆင့် လက်ခံဆောင်ရွက်ပေးရန် ပြန်လည်ပေးပို့ရန် ညွှန်ကြားချက်ဖြစ်ပါသည်။ ဤအမိန့်ကို အများအားဖြင့် uart_regs.py script မှသာလျှင်ထုတ်ပေးပါသည်။
ဤအမိန့်ကို လက်ခံရရှိသောအခါ၊ FPGA သည် စာရင်းသွင်းမှုအားလုံး၏ အကြောင်းအရာကို အိမ်ရှင်ထံ ပြန်လည်ပေးပို့ခြင်းဖြင့် တုံ့ပြန်မည်ဖြစ်သည်။ ပထမဦးစွာ input signals, ထို့နောက် output signals. ၎င်းတို့၏ အရှည်များသည် 8 bits ၏ များပြားသော ပမာဏအထိ မပေါင်းပါက နောက်ဆုံး byte ၏ အောက်ဘစ်များကို သုည padded ဖြစ်လိမ့်မည်။
ရေးရန် အတွဲလိုက်သည် အမြဲတမ်း START_WRITE byte ဖြင့် စတင်ပြီး END_WRITE byte ဖြင့် အဆုံးသတ်ပါသည်။ ၎င်းတို့ကြားရှိ ဘိုက်များကို ဒေတာဘိုက်များဟု သတ်မှတ်သည်။ မည်သည့်ဒေတာဘိုက်မဆို ထိန်းချုပ်မှုဇာတ်ကောင်ကဲ့သို့ တန်ဖိုးတူညီပါက၊ ဒေတာဘိုက်ကို လွတ်သွားရပါမည်။ ဆိုလိုသည်မှာ ၎င်းသည် အမှန်တကယ် ဒေတာဖြစ်ကြောင်း ညွှန်ပြရန်အတွက် ဒေတာဘိုက်မတိုင်မီ အပို ESCAPE အက္ခရာတစ်ခု ပေးပို့ခြင်းကို ဆိုလိုသည်။
အကယ်၍ မလွတ်မြောက်သော START_WRITE သည် bytes ၏ မည်သည့်နေရာသို့ ရောက်ရှိခဲ့ပါက၊ ၎င်းကို ရေးရန် စီစဥ်တစ်ခု၏ အစဟု သတ်မှတ်သည်။ ဆက်သွယ်ရေးစင့်ခ်လုပ်ခြင်းမှ ရုန်းထွက်ပါက uart_regs_backend module သည် ဤအချက်အလက်ကို ထပ်တူပြုရန် အသုံးပြုသည်။
gen_uart_regs.py
- ၎င်းသည် အင်တာဖေ့စ်ကို ထုတ်လုပ်ရန်အတွက် သင်စတင်ရမည့် script ဖြစ်သည်။ အောက်တွင်ဖော်ပြထားသည်မှာ သင်လုပ်ဆောင်ခြင်းဖြင့် ရရှိနိုင်သော အကူအညီမီနူး၏ ဖန်သားပြင်ဓာတ်ပုံဖြစ်သည်- python gen_uart_regs.py -h
- စိတ်ကြိုက်အင်တာဖေ့စ်တစ်ခုဖန်တီးရန်၊ သင်သည် အကြောင်းပြချက်များအဖြစ် ဖော်ပြထားသော သင်အလိုရှိသော UART ထိန်းချုပ်နိုင်သော မှတ်ပုံတင်တစ်ခုစီနှင့် ဇာတ်ညွှန်းကို လုပ်ဆောင်ရပါမည်။ ရရှိနိုင်သောအမျိုးအစားများမှာ std_logic၊ std_logic_vector၊ လက်မှတ်မထိုးထားသော၊ နှင့် လက်မှတ်ရေးထိုးထားသည်။
- ပုံသေမုဒ် (ဦးတည်ချက်) သည် ပါဝင်နေပြီး၊ မှတ်ပုံတင်သည် အရှည်မဟုတ်ပါက၊ ပုံသေအမျိုးအစားမှာ std_logic_vector ဖြစ်သည်။
- ထို့ကြောင့်၊ သင်သည် std_logic input signal ကိုဖန်တီးလိုပါက၊ သင်သည် ဤအကြောင်းပြချက်များထဲမှ တစ်ခုခုကို အသုံးပြုနိုင်သည်။
- my_sl=1
- my_sl=1:in
- my_sl=1:in:std_logic
- အထက်ဖော်ပြပါ မူကွဲများ အားလုံးသည် ဤ UART သုံးစွဲနိုင်သော အချက်ပြမှုကို ဇာတ်ညွှန်းကို ဖန်တီးပေးလိမ့်မည်-
- မတူညီသောလမ်းကြောင်းများ၊ အလျားများနှင့် အမျိုးအစားများစွာ၏ မှတ်ပုံတင်ထားသော အင်တာဖေ့စ်တစ်ခုကို ဖန်တီးရန်အတွက် အကြောင်းပြချက်များဖြင့် ဇာတ်ညွှန်းကို လည်ပတ်ကြပါစို့။
ထုတ်ပေးသည်။ files
- gen_uart_regs.py script ကို အောင်မြင်စွာ run ခြင်းသည် ၎င်းတို့ သုံးခုနှင့်အတူ ထုတ်ပေးသည့် output folder ဟု အမည်ပေးမည် fileအောက်တွင်ဖော်ပြထားပါသည်။ ၎င်းတို့ရှိပြီးသားဖြစ်ပါက ၎င်းတို့ကို ထပ်ရေးပါမည်။
- ထုတ်ပေးသည်/uart_regs.vhd
- ထုတ်ပေးသည်/uart_regs.py
- ထုတ်ပေးသည်/instantiation_template.vho
- uart_regs.vhd
- ၎င်းသည် script မှထုတ်ပေးသော စိတ်ကြိုက် interface module ဖြစ်သည်။ UART ကို အသုံးပြု၍ သင်ထိန်းချုပ်လိုသော စာရင်းသွင်းမှုများကို ဝင်ရောက်ကြည့်ရှုနိုင်သည့် ဒီဇိုင်းတွင် ၎င်းကို ချက်ခြင်းပြုလုပ်ရန် လိုအပ်ပါသည်။
- “– UART လက်လှမ်းမီနိုင်သော မှတ်ပုံတင်များ” ကဏ္ဍအထက်ရှိ အရာအားလုံးသည် uart_regs မော်ဂျူးတိုင်းအတွက် တူညီနေမည်ဖြစ်ပြီး ထိုလိုင်းအောက်ရှိ ပို့တ်အချက်ပြမှုများ၏ဖွဲ့စည်းမှုမှာ generator script မှပေးသော အကြောင်းပြချက်များပေါ်တွင်မူတည်ပါသည်။
- အောက်ပါစာရင်းတွင် generate command ex မှထွက်ပေါ်လာသော uart_regs module အတွက် entity ကိုပြသသည်။ampgen_uart_regs.py ကဏ္ဍတွင် ပြထားသည်။
- uart_rx တွင် ကိုင်တွယ်ထားသောကြောင့် uart_rx signal ကို ထပ်တူပြုရန် မလိုအပ်ပါ။ မော်ဂျူး
- မော်ဂျူးသည် ဖတ်ရှုရန် တောင်းဆိုချက်တစ်ခုကို လက်ခံရရှိသောအခါ၊ ၎င်းသည် လက်ရှိနာရီစက်ဝန်းအတွင်း အဝင်နှင့် အထွက်အချက်ပြမှုအားလုံး၏ တန်ဖိုးများကို ဖမ်းယူမည်ဖြစ်သည်။ ထို့နောက် ချက်ချင်းလက်ငင်းလျှပ်တစ်ပြက်ရိုက်ချက်အား UART မှတဆင့် လက်ခံဆောင်ရွက်ပေးသည်။
- ရေးပြီးသောအခါ၊ အထွက်စာရင်းအားလုံးကို တူညီသောနာရီစက်ဝန်းအတွင်း တန်ဖိုးအသစ်များဖြင့် အပ်ဒိတ်လုပ်သည်။ အထွက် အချက်ပြတန်ဖိုးများကို တစ်ဦးချင်း ပြောင်းလဲရန် မဖြစ်နိုင်ပါ။
- သို့သော်လည်း uart_regs.py script သည် အသုံးပြုသူအား စာရင်းသွင်းအားလုံး၏ လက်ရှိတန်ဖိုးများကို ဦးစွာပြန်ဖတ်ခြင်းဖြင့် ရွေးချယ်ထားသော output များကိုသာ အပ်ဒိတ်လုပ်ခွင့်ပြုသည်။ ထို့နောက် အပ်ဒိတ်လုပ်ထားသည့်အရာများအပါအဝင် တန်ဖိုးအားလုံးကို ပြန်ရေးသည်။
- uart_regs.py
- ထုတ်ပေးသည်/uart_regs.py file uart_regs VHDL module နှင့် အတူ ထုတ်ပေးပြီး ၏ ခေါင်းစီးတွင် စိတ်ကြိုက် စာရင်းသွင်း အချက်အလက် ပါရှိသည်။ file. ဤဇာတ်ညွှန်းဖြင့်၊ သင်သည် သင်၏စိတ်ကြိုက်စာရင်းသွင်းမှုများထံ အလွယ်တကူဖတ်နိုင် သို့မဟုတ် စာရေးနိုင်သည်။
အကူအညီမီနူး
- အကူအညီမီနူးကို ပရင့်ထုတ်ရန် python uart_regs.py -h ရိုက်ထည့်ပါ-
UART ဆိပ်ကမ်းကို သတ်မှတ်ခြင်း။
- ဇာတ်ညွှန်းတွင် -c ခလုတ်ကို အသုံးပြု၍ UART ဆိပ်ကမ်းကို သတ်မှတ်ရန် ရွေးချယ်စရာများ ရှိသည်။ ၎င်းသည် Windows နှင့် Linux တွင်အလုပ်လုပ်သည်။ အကူအညီမီနူးတွင် ဖော်ပြထားသော ရရှိနိုင်သော ဆိပ်ကမ်းများထဲမှ တစ်ခုကို သတ်မှတ်ပါ။ ပုံသေ ပို့တ်ကို သတ်မှတ်ရန်၊ uart_regs.py script တွင် UART_PORT ကိန်းရှင်ကိုလည်း တည်းဖြတ်နိုင်သည်။
မှတ်ပုံတင်စာရင်းများ
- မှတ်ပုံတင်မြေပုံဆွဲခြင်းဆိုင်ရာ အချက်အလက်ကို gen_uart_regs.py script ဖြင့် uart_regs.py script ၏ ခေါင်းစီးတွင် ထားရှိထားပါသည်။ အောက်ဖော်ပြပါအတိုင်း -l switch ဖြင့် ရရှိနိုင်သော မှတ်ပုံတင်များကို စာရင်းပြုစုနိုင်ပါသည်။ ၎င်းသည် ဒေသန္တရအမိန့်တစ်ခုဖြစ်ပြီး ပစ်မှတ် FPGA နှင့် တုံ့ပြန်မည်မဟုတ်ပါ။
မှတ်ပုံတင်ရန်စာရေးခြင်း။
- -w ခလုတ်ကို အသုံးပြု၍ အထွက်မုဒ် မှတ်ပုံတင်ခြင်း တစ်ခုခုသို့ စာရေးနိုင်သည်။ အောက်ဖော်ပြပါအတိုင်း “=” နှင့် ဒွိကိန်း၊ ဆဋ္ဌမကိန်းဂဏန်း သို့မဟုတ် ဒဿမတန်ဖိုးအဖြစ် ပေးဆောင်သည့်တန်ဖိုးကို “=” ဖြင့် လိုက်နာသော မှတ်ပုံတင်အမည်ကို ပေးဆောင်ပါ။
- VHDL အကောင်အထည်ဖော်မှုသည် အထွက်စာရင်းအားလုံးကို တစ်ပြိုင်နက်ရေးသားရန် script ကို လိုအပ်ကြောင်း သတိပြုပါ။ ထို့ကြောင့်၊ အကယ်၍ သင်သည် output register အစုံအလင်ကို မသတ်မှတ်ထားပါက၊ script သည် ပစ်မှတ် FPGA မှဖတ်ခြင်းကို ဦးစွာလုပ်ဆောင်ပြီး ပျောက်ဆုံးနေသောတန်ဖိုးများကို အသုံးပြုမည်ဖြစ်သည်။ ရလဒ်မှာ သတ်မှတ်ထားသော မှတ်ပုံတင်များသာ ပြောင်းလဲသွားမည်ဖြစ်သည်။
- သင်စာရေးသည့်အခါ၊ သတ်မှတ်ထားသော မှတ်ပုံတင်မှုအားလုံးသည် UART ကိုလက်ခံရရှိပြီးချင်းမဟုတ်ဘဲ တူညီသောနာရီစက်ဝန်းအတွင်း ပြောင်းလဲသွားမည်ဖြစ်သည်။
မှတ်ပုံတင်များဖတ်ခြင်း။
- အောက်တွင်ပြထားသည့်အတိုင်း မှတ်ပုံတင်တန်ဖိုးများအားလုံးကို ဖတ်ရန် -r ခလုတ်ကို အသုံးပြုပါ။ အဝါရောင်ဖြင့် အမှတ်အသားပြုထားသော တန်ဖိုးများသည် ယခင်ရေးခဲ့သော ex တွင် ပြောင်းလဲခဲ့သော တန်ဖိုးများဖြစ်သည်။ample
- ဖတ်ရှုမှုတိုင်းသည် input နှင့် output register များအားလုံး၏ ချက်ခြင်းလျှပ်တစ်ပြက်ကို ပြသသည်။ ၎ampတူညီသောနာရီစက်ဝန်းအတွင်း ဦးဆောင်ခဲ့သည်။
အမှားရှာပြင်ခြင်း။
ဆက်သွယ်မှုပရိုတိုကောကို အမှားရှာရန် လိုအပ်ပါက အခြားခလုတ်များတစ်ခုခုနှင့် -d ခလုတ်ကို အသုံးပြုပါ။ ထို့နောက် script သည် ပို့ပြီးလက်ခံထားသော bytes အားလုံးကို print ထုတ်ပါမည်။ tag ၎င်းတို့သည် အောက်တွင်ပြထားသည့်အတိုင်း ထိန်းချုပ်ထားသော အက္ခရာများ ဖြစ်နေပါက၊
အခြား Python script များတွင် interface ကိုအသုံးပြုခြင်း။
- uart_regs.py script တွင် အခြားသော စိတ်ကြိုက် Python script များ တွင် ဆက်သွယ်ရေး ကြားခံအဖြစ် သင် အလွယ်တကူ အသုံးပြုနိုင်သော UartRegs အတန်း ပါရှိသည်။ အတန်းကိုရိုးရှင်းစွာတင်သွင်းပါ၊ ၎င်း၏အရာဝတ္ထုတစ်ခုကိုဖန်တီးပြီးအောက်ပါပုံတွင်ပြထားသည့်အတိုင်းနည်းလမ်းများကိုစတင်အသုံးပြုပါ။
- နည်းလမ်းနှင့် ဖော်ပြချက်များနှင့် တန်ဖိုးအမျိုးအစားများအတွက် Python ကုဒ်ရှိ docstrings ကို ကိုးကားပါ။
instantiation_template.vho
- သင့်အဆင်ပြေစေရန်အတွက် instantiation template ကို uart_regs module နှင့်အတူ ထုတ်ပေးပါသည်။ ကုဒ်ရေးချိန်ကို သက်သာစေရန်၊ သင်သည် module instantiation နှင့် signal ကြေငြာချက်များကို သင့်ဒီဇိုင်းထဲသို့ ကူးယူနိုင်ပါသည်။
Static RTL files
- အောက်ပါတို့ကို ထည့်သွင်းရန် လိုအပ်ပါသည်။ fileသင်၏ VHDL ပရောဂျက်တွင် s ကို uart_regs မော်ဂျူးကဲ့သို့ တူညီသောစာကြည့်တိုက်သို့ စုစည်းထားနိုင်ရန်၊
- rtl/uart_regs_backend.vhd
- rtl/uart_rx.vhd
- rtl/uart_tx.vhd
- uart_regs_backend module သည် မှတ်ပုံတင်ဒေတာကို အဝင်နှင့်အထွက် အချိန်နာရီပေးသည့် ကန့်သတ်ပြည်နယ်စက်များကို အကောင်အထည်ဖော်သည်။ ၎င်းသည် host နှင့် UART ဆက်သွယ်မှုကိုကိုင်တွယ်ရန် uart_rx နှင့် uart_tx modules များကိုအသုံးပြုသည်။
ဒီမိုပရောဂျက်များ
- Zip တွင် သရုပ်ပြ ပရောဂျက် ၃ ခု ရှိသည်။ file. ၎င်းတို့သည် သင့်အား မတူညီသော ဘုတ်များပေါ်တွင် အရံအတားများကို ထိန်းချုပ်နိုင်သည့်အပြင် ပိုကြီးသော၊ အတွင်းပိုင်း မှတ်ပုံတင်မှု အနည်းငယ်ကိုလည်း သင့်အား ထိန်းချုပ်နိုင်စေပါသည်။
- သရုပ်ပြဖိုင်တွဲများတွင် ကြိုတင်ထုတ်လုပ်ထားသော uart_regs.vhd နှင့် uart_regs.py ပါဝင်သည်။ fileထိုဒီဇိုင်းများအတွက် အထူးပြုလုပ်ထားပါသည်။
ရာဇမတ်ကွက် iCEstick
- သရုပ်ပြ/icecube2_icestick ဖိုင်တွဲတွင် Lattice iCEstick FPGA ဘုတ်အတွက် မှတ်ပုံတင်ခွင့် သရုပ်ပြအကောင်အထည်ဖော်မှု ပါရှိသည်။
- အကောင်အထည်ဖော်မှုလုပ်ငန်းစဉ်တစ်လျှောက် လုပ်ဆောင်ရန်၊ demo/lattice_icestick/icecube2_proj/uart_regs_sbt.project ကိုဖွင့်ပါ။ file Lattice iCEcube2 ဒီဇိုင်းဆော့ဖ်ဝဲတွင်။
- iCEcube2 GUI တွင် ပရောဂျက်ကို တင်ပြီးနောက်၊ ပရိုဂရမ်းမင်းဘစ်မြေပုံကိုထုတ်လုပ်ရန် Tools → Run All ကိုနှိပ်ပါ။ file.
- ထုတ်ပေးထားသော bitmap ဖြင့် FPGA ကို configure လုပ်ရန် Lattice Diamond Programmer Standalone tool ကို သင်သုံးနိုင်သည်။ file. Diamond ပရိုဂရမ်မာဖွင့်သောအခါ၊ ကြိုဆိုသည့် ဒိုင်ယာလော့ခ်ဘောက်စ်ရှိ ရှိပြီးသား ပရိုဂရမ်မာ ပရောဂျက်တစ်ခုကို ဖွင့်ပါ။
- ပရောဂျက်ကို ရွေးပါ။ 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 ကို စီစဉ်သတ်မှတ်ပါ။
- uart_regs.py ကဏ္ဍတွင်ဖော်ပြထားသည့်အတိုင်း demo/lattice_icestick/uart_regs.py ဇာတ်ညွှန်းကို အသုံးပြု၍ ယခုသင်သည် မှတ်ပုံတင်မှုများကို ဖတ်ရှုပြီး ရေးနိုင်ပါပြီ။
Xilinx Digilent Arty A7-35T
- Artix-7 35T Arty FPGA အကဲဖြတ်ကိရိယာအတွက် ဒီမိုအသုံးပြုမှုကို သရုပ်ပြ/arty_a7_35 ဖိုင်တွဲတွင် ရှာတွေ့နိုင်ပါသည်။
- Vivado ကိုဖွင့်ပြီး ထုတ်ယူထားသောနေရာကို သွားပါ။ fileGUI အင်တာဖေ့စ်အောက်ခြေရှိ Tcl ကွန်ဆိုးလ်ကို အသုံးပြုခြင်း။ ဒီမိုပရောဂျက်ဖိုင်တွဲကို ဝင်ရောက်ရန် ဤအမိန့်ကို ရိုက်ထည့်ပါ-
- cd /demo/arty_a7_35/vivado_proj/
- Vivado ပရောဂျက်ကို ပြန်ထုတ်ရန် create_vivado_proj.tcl Tcl script ကို လုပ်ဆောင်ပါ-
- အရင်းအမြစ် ./create_vivado_proj.tcl
- အကောင်အထည်ဖော်မှုအဆင့်များအားလုံးကို လုပ်ဆောင်ပြီး ပရိုဂရမ်းမင်း bitstream ကိုထုတ်လုပ်ရန် ဘေးဘားရှိ Generate 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 ဖွံ့ဖြိုးတိုးတက်မှုဘုတ်အဖွဲ့အတွက် သရုပ်ပြ/arty_s7_50 ဖိုင်တွဲတွင် သင်တွေ့နိုင်သည်။
- Vivado ကိုဖွင့်ပြီး ထုတ်ယူထားသောနေရာကို သွားပါ။ fileGUI အင်တာဖေ့စ်အောက်ခြေရှိ Tcl ကွန်ဆိုးလ်ကို အသုံးပြုခြင်း။ ဒီမိုပရောဂျက်ဖိုင်တွဲကို ဝင်ရောက်ရန် ဤအမိန့်ကို ရိုက်ထည့်ပါ-
- cd /demo/arty_s7_50/vivado_proj/
- Vivado ပရောဂျက်ကို ပြန်ထုတ်ရန် create_vivado_proj.tcl Tcl script ကို လုပ်ဆောင်ပါ-
- အရင်းအမြစ် ./create_vivado_proj.tcl
- အကောင်အထည်ဖော်မှုအဆင့်များအားလုံးကို လုပ်ဆောင်ပြီး ပရိုဂရမ်းမင်း bitstream ကိုထုတ်လုပ်ရန် ဘေးဘားရှိ Generate Bitstream ကိုနှိပ်ပါ။ file.
- နောက်ဆုံးအနေနဲ့ Open Hardware Manager ကိုနှိပ်ပြီး GUI မှတဆင့် FPGA ကို ပရိုဂရမ်လုပ်ပါ။
- uart_regs.py ကဏ္ဍတွင် ဖော်ပြထားသည့်အတိုင်း demo/arty_s7_50/uart_regs.py ဇာတ်ညွှန်းကို အသုံးပြု၍ ယခုသင်သည် မှတ်ပုံတင်မှုများကို ဖတ်ရှုပြီး ရေးနိုင်ပါပြီ။
အကောင်အထည်ဖော်ခြင်း။
- တိကျသော အကောင်အထည်ဖော်ရန် လိုအပ်ချက်များ မရှိပါ။
ကန့်သတ်ချက်များ
- UART အင်တာဖေ့စ်သည် နှေးကွေးပြီး ပြတ်ပြတ်သားသားလုပ်ထားသည့် အင်တာဖေ့စ်အဖြစ် သဘောထားသောကြောင့် ဤဒီဇိုင်းအတွက် တိကျသော အချိန်ကန့်သတ်ချက်များ မလိုအပ်ပါ။
- uart_regs မော်ဂျူးသို့ uart_rx ထည့်သွင်းမှုကို uart_rx မော်ဂျူးအတွင်း တစ်ပြိုင်တည်းလုပ်ဆောင်သည်။ ထို့ကြောင့်၊ ၎င်းကို ထိပ်တန်းအဆင့် module တွင် ထပ်တူပြုရန် မလိုအပ်ပါ။
သိပြီးသားကိစ္စတွေ
- သင်၏ FPGA ဗိသုကာလက်ရာသည် ပုံသေမှတ်ပုံ တင်တန်ဖိုးများကို ပံ့ပိုးမှုရှိမရှိပေါ် မူတည်၍ ၎င်းကို အသုံးမပြုမီ မော်ဂျူးအား ပြန်လည်သတ်မှတ်ရန် လိုအပ်နိုင်သည်။
အချက်အလက်
- မူပိုင်ခွင့် VHDLwhiz.com
အမေးအဖြေများ
မေး- UART စမ်းသပ်မှု အင်တာဖေ့စ် ဂျင်နရေတာရဲ့ ရည်ရွယ်ချက်က ဘာလဲ။
A- UART စမ်းသပ်မှု အင်တာဖေ့စ် ဂျင်နရေတာသည် UART ဆက်သွယ်ရေးကို အသုံးပြု၍ FPGA မှတ်ပုံတင်တန်ဖိုးများနှင့် အပြန်အလှန်တုံ့ပြန်ရန် စိတ်ကြိုက်အင်တာဖေ့စ်များကို ဖန်တီးနိုင်စေပါသည်။
မေး- Pyserial package ကို ဘယ်လို install လုပ်ရမလဲ။
A- သင်သည် Pyserial ကို Pip မှတဆင့် ကွန်မန်းကို အသုံးပြု၍ pip install pyserial ကို တပ်ဆင်နိုင်သည်။
စာရွက်စာတမ်းများ / အရင်းအမြစ်များ
![]() |
VHDLwhiz UART စမ်းသပ်မှုအင်တာဖေ့စ်မီးစက် [pdf] အသုံးပြုသူလက်စွဲ UART Test Interface Generator၊ Test Interface Generator၊ Interface Generator၊ Generator |