اطلاعیه

Collapse
No announcement yet.

فلسفه این دستور baud چیه

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    فلسفه این دستور baud چیه

    سلام
    این $baud = 9600 داخل برنامه ها مینویسن به چه کاری میاد و جریان این 9600 چیه
    من چقدر بی سوادم :angry:
    انجام پروژه هاي برنامه نويسي اندرويد
    [glow=red,2,300]نرم افزار نقشه هاي پاور کامپيوتر اندوريد[/glow]
    http://cafebazaar.ir/app/?id=com.atxdroid

    #2
    پاسخ : فلسفه این دستور baud چیه

    نوشته اصلی توسط mohsen.HEX
    سلام
    این $baud = 9600 داخل برنامه ها مینویسن به چه کاری میاد و جریان این 9600 چیه
    من چقدر بی سوادم :angry:
    محسن جان در ارتباط سریال برای اینکه خطا در ارسال ایحاد نشه فرستنده و گیرنده باید هر دو با یک سرعت مشخص داده هارو ارسال و دریافت کنند که این سرعت با واحد بیت بر ثانیه مشخص میشه.
    حالا این Baud Rate یا همون نرخ انتقال مشخص میکنه که سرعت انتقال چقدر هست مثلا شما که این دستور رو مینویسید مشخص میکنید که ارسال سریال با سرعت 9600 بیت بر ثانیه انجام بشه.
    توی دیتاشیت میکرو ها جدولی هست که مشخص کرده برای هر فکانس کاری میکرو، به ازای هر Baud Rate مقدار UBRR رو چقدر بدید و چند درصد خطا خواهید داشت و .. مثلا از صفحه 166 تا 169 دیتا شیت مگا16 رونگاه کن متوجه میشی، نحوه محاسبه رو هم همونجا نوشته یه نگاه بندازی همه چیز دستت میاد.
    اگر بازم متوجه نشده بگو بیشتر توضیح بدم، البته اگر بلد بودم. :smile:
    دوستان اگر چیزی اشتباه نوشتم تصحیح کنید.
    تشکر
    از آنجا که گاهی فرصت بازخوانی پست نیست، بابت غلط های املایی و نگارشی احتمالی معذرت میخوام.
    هیچیک از پاسخ هایی که میدم را کاملا تایید نمیکنم و ممکن هست اشتباه کرده باشم، اگر من به نوشته ام مطمئن هستم شما مشکوک باشید.
    اگر در حل مشکل من کمک کردید و دکمه تشکر رو نزدم حتما فراموش کردم کوچکترین کمک شما برایم ارزشمند است!
    اگر به هر طریقی از من ناراحت شدید حتما با یک پیام خصوصی تذکر بدهید تا مشکل رو حل کنیم و رابطه ی صمیمانه، پایدار بماند.
    شاد و موفق باشید

    دیدگاه


      #3
      پاسخ : فلسفه این دستور baud چیه

      ممنون دوست عزیز از جوابتون
      چند تا سوال دیگه برام پبش اومد که جواب بدین ممنون میشم
      1:ایا برای هر ارتباط سریالی استفاده میشه
      2 : اگه میکرو اول مثلا 2 ثانیه زود تر از میکرو دوم روشن بشه ایا بازم به هم وصل میشن
      3 :
      انجام پروژه هاي برنامه نويسي اندرويد
      [glow=red,2,300]نرم افزار نقشه هاي پاور کامپيوتر اندوريد[/glow]
      http://cafebazaar.ir/app/?id=com.atxdroid

      دیدگاه


        #4
        پاسخ : فلسفه این دستور baud چیه

        کلا دو تا روش برای ارسال دیتا به صورت سریال وجود داره. سنکرون و آسنکرون.
        دیتایی که داره ارسال میشه باید نسبت به یه کلاک رفرنس مقایسه بشه. حالا این رفرنس رو به دو صورت میشه تعیین کرد . یا باید اون رو هم همراه با دیتا بفرستیم تا گیرنده بتونه دیتا رو بازخوانی کنه و یا اینکه باید برای هردوتا تعریف کنیم که رفرنس چی هست.
        بنابراین:
        1- برای هر ارتباط سریالی استفاده نمیشه . برای مواردی که کلاک مرجع هم ارسال میشه نیازی به باود نیست.
        2- تو هر لحظه امکان اتصال وجود داره . ولی اگه میکرو خاموش باشه اظلاعات از دست میرن. باز هم بستگی به نحوه برنامه نویسی داره.

        دیدگاه


          #5
          پاسخ : فلسفه این دستور baud چیه

          ببین محسن جان فرق اصلی سنکرون و آسنکرون در این هست که سنکرون همزمان با هر بیت که روی خط داده فرستاده میشه یک پالس هم از یک پین دیگه به گیرنده فرستاده میشه و گیرنده این پالس رو که گرفت میفهمه همون موقع باید داده رو از روی پین داده بخونه، حالا اگز 8 بیت رو بخوای انجوری بفرستی باید برای هر 8 تا همزمان یک پالس بدی به گیرنده که 8تارو برداره اما در آسنکرون از طریق همین Baud مشخص میکنی که من میخوام با این سرعت بیتها رو بفرستم تو بیت استارت رو که گرفتی خودت دیگه با توجه به سرعت بقیه بیتها رو یکی یکی بردار.
          این رو باید روی شکل نگاه کنی که درست متوجه بشی یا اینکه کامل توضیح بدیم برات که بیت Start چی هست و هر بیت کارش چیه. راستش حالا یکم عجله دارم اگر جواب رو نکرفتی در اولین فرصت عکس میزارم و درست توضیح میدم اما این مثال رو حالا میزنم که یکم کمک کنه بیشتر متوجه منظور بشی.
          فرض کن رفتی فرودگاه و جلوی این ریل ها که چمدون ها روش میچرخه ایستادی و چشمت بسته هست، حالا تو میدونی که قرار هست 8 تا چمدون بیاد و برشون داری، در ارتباط سنکرون اینجوری هست که من وا میستم کنارت هر چمدون که اومد جلوت با دست بهت یه پالس میدم تو متوجه میشی که چمدون رو بر داری و اینجوری 8 بار باید بهت با دست پالس بدم حالا اگر من همزمان با چمدون دست نزنم بهت تو دست میکنی ولی هیچ چمدونی رو بلند نمیکنی اون موقع هست که چشمت رو باز میکنی میوفتی دنبال من. برداشتن بیت هم به همین شکل هست.
          اما توی آسنکرون این چمدون ها با یک فاصله منظم میاند ولی تو نمیدونی کی میان، دستت رو پایین نگه میداری تا متوجه رسیدن اولین چمدون بشی حالا اولی رو که لمس کردی با توجه به سرعت حرکت چمدانها که قبلا بهت گفتن میتونی زمان برداشتن بعدی رو متوجه بشی، حالا اگر این سرعت رو که نقش Baud Rate رو ایفا میکنه اشتباه بهت داده باشند اولی رو که بر میداری انتظار داری دومی رو یک ثانیه بعد برداری ولی دست میکنی یا هیچی نیست که برداری یا بعدیش رو بر میداری و خلاصه اشتباه میکنی. این Baud Rate هم توی آسنکرون کارش همین هست که سرعت رو مشخص کنه که بیتی در نره، حالا شما میتونی از یک ساعت قبل دستت رو اون پایین نگه داری هر موقع که اولی چمدان یا بیت Start اومد زمان رسیدن چمدان بعدی رو متوجه بشی و شروع کنی بر برداشتنشون اما اگر دیر برسی و وسط رد شدن چمدان ها دستت رو بیاری پایین 4 تا رو بر میداری بعد آخر کار که میشماری میبینی کم هست و متوجه میشی که داده رو اشتباه گرفتی، پس همیشه گیرنده باید قبل از فرستنده خودش رو آماده کنه تا بتونه بیتها رو کامل بگیره حالا توی بعضی از ارتباطات سریال ممکن هست Baud Rate داده نشه مثلا همین سیستم ریموت کنترلهای مادون قرمز که شما توی Basic با دستور های مخصوص RC5 با اونها کار میکنید در واقع نوعی ارسال و دریافت سریال هستند که Baud Rate مشخصی به اون صورت ندارند و باید با توجه به استاندارد و پروتکل کاریشون داده ها رو خوند مثلا ما توی اسمبلی که مینویسیم باید طول بیت رو اندازه بگیریم بعد در زمانهای مشخصی که با تایمر تنظیم کردیم از بیت داده نمونه برداری کنیم حالا اگر ما این زمان رو طبق استاندارد RC5 تنظیم نکرده باشیم بیت از دست میدیم این استاندارد RC5 در واقع قالب ارسال داده هست استاندارد های دیگه هم هست برای این کنترل ها که اگر بخواید باشون کار کنید باید بدونید این چه ساختاری داره و دیگه نمیشه از RC5 استفاده کرد.
          بگو مرد حسابی تو این فرصت میتونستی مثل آدم سنکرون و آسنکرون رو با شکل توضیح بدی این مسخره بازیا چی بود که چمدون بگیریو .....


          از آنجا که گاهی فرصت بازخوانی پست نیست، بابت غلط های املایی و نگارشی احتمالی معذرت میخوام.
          هیچیک از پاسخ هایی که میدم را کاملا تایید نمیکنم و ممکن هست اشتباه کرده باشم، اگر من به نوشته ام مطمئن هستم شما مشکوک باشید.
          اگر در حل مشکل من کمک کردید و دکمه تشکر رو نزدم حتما فراموش کردم کوچکترین کمک شما برایم ارزشمند است!
          اگر به هر طریقی از من ناراحت شدید حتما با یک پیام خصوصی تذکر بدهید تا مشکل رو حل کنیم و رابطه ی صمیمانه، پایدار بماند.
          شاد و موفق باشید

          دیدگاه


            #6
            پاسخ : فلسفه این دستور baud چیه

            ممنوننننننننننننننننننن :applause:
            باید یه مقدار عملی کار کنم تا اینا داخل مغزم خال کوبی بشن :nerd:
            راستی این چمدونهای فرودگاه هی که شما میگین از نوع بیت هستن یا بایت یا ....
            بازم مممنوننن
            انجام پروژه هاي برنامه نويسي اندرويد
            [glow=red,2,300]نرم افزار نقشه هاي پاور کامپيوتر اندوريد[/glow]
            http://cafebazaar.ir/app/?id=com.atxdroid

            دیدگاه


              #7
              پاسخ : فلسفه این دستور baud چیه

              نوشته اصلی توسط mohsen.HEX
              ممنوننننننننننننننننننن :applause:
              باید یه مقدار عملی کار کنم تا اینا داخل مغزم خال کوبی بشن :nerd:
              راستی این چمدونهای فرودگاه هی که شما میگین از نوع بیت هستن یا بایت یا ....
              بازم مممنوننن
              محسن جان منظور همون بیت ها هستن .

              دوستان! مدتی کمتر به سایت میام ..

              دیدگاه


                #8
                پاسخ : فلسفه این دستور baud چیه

                نوشته اصلی توسط حسام الدین


                محسن جان منظور همون بیت ها هستن .


                نه من چمدون ها رو میگم همون های که داخل فرود گاه هستن (میخاستم شوخی کنم)
                انجام پروژه هاي برنامه نويسي اندرويد
                [glow=red,2,300]نرم افزار نقشه هاي پاور کامپيوتر اندوريد[/glow]
                http://cafebazaar.ir/app/?id=com.atxdroid

                دیدگاه


                  #9
                  پاسخ : فلسفه این دستور baud چیه

                  نوشته اصلی توسط mohsen.HEX
                  ممنوننننننننننننننننننن :applause:
                  باید یه مقدار عملی کار کنم تا اینا داخل مغزم خال کوبی بشن :nerd:
                  راستی این چمدونهای فرودگاه هی که شما میگین از نوع بیت هستن یا بایت یا ....
                  بازم مممنوننن
                  خواهش میکنم محسن جان کاری نکردم، چمدونها بیت هستند شما وقتی ور میداری اگر سنگین بود یعنی چیز به درد بخوری توش هست و یک هست اگر سبک بود یعنی صفر :icon_razz:
                  از آنجا که گاهی فرصت بازخوانی پست نیست، بابت غلط های املایی و نگارشی احتمالی معذرت میخوام.
                  هیچیک از پاسخ هایی که میدم را کاملا تایید نمیکنم و ممکن هست اشتباه کرده باشم، اگر من به نوشته ام مطمئن هستم شما مشکوک باشید.
                  اگر در حل مشکل من کمک کردید و دکمه تشکر رو نزدم حتما فراموش کردم کوچکترین کمک شما برایم ارزشمند است!
                  اگر به هر طریقی از من ناراحت شدید حتما با یک پیام خصوصی تذکر بدهید تا مشکل رو حل کنیم و رابطه ی صمیمانه، پایدار بماند.
                  شاد و موفق باشید

                  دیدگاه


                    #10
                    پاسخ : فلسفه این دستور baud چیه

                    نوشته اصلی توسط Study
                    ببین محسن جان فرق اصلی سنکرون و آسنکرون در این هست که سنکرون همزمان با هر بیت که روی خط داده فرستاده میشه یک پالس هم از یک پین دیگه به گیرنده فرستاده میشه و گیرنده این پالس رو که گرفت میفهمه همون موقع باید داده رو از روی پین داده بخونه، حالا اگز 8 بیت رو بخوای انجوری بفرستی باید برای هر 8 تا همزمان یک پالس بدی به گیرنده که 8تارو برداره اما در آسنکرون از طریق همین Baud مشخص میکنی که من میخوام با این سرعت بیتها رو بفرستم تو بیت استارت رو که گرفتی خودت دیگه با توجه به سرعت بقیه بیتها رو یکی یکی بردار.
                    این رو باید روی شکل نگاه کنی که درست متوجه بشی یا اینکه کامل توضیح بدیم برات که بیت Start چی هست و هر بیت کارش چیه. راستش حالا یکم عجله دارم اگر جواب رو نکرفتی در اولین فرصت عکس میزارم و درست توضیح میدم اما این مثال رو حالا میزنم که یکم کمک کنه بیشتر متوجه منظور بشی.
                    فرض کن رفتی فرودگاه و جلوی این ریل ها که چمدون ها روش میچرخه ایستادی و چشمت بسته هست، حالا تو میدونی که قرار هست 8 تا چمدون بیاد و برشون داری، در ارتباط سنکرون اینجوری هست که من وا میستم کنارت هر چمدون که اومد جلوت با دست بهت یه پالس میدم تو متوجه میشی که چمدون رو بر داری و اینجوری 8 بار باید بهت با دست پالس بدم حالا اگر من همزمان با چمدون دست نزنم بهت تو دست میکنی ولی هیچ چمدونی رو بلند نمیکنی اون موقع هست که چشمت رو باز میکنی میوفتی دنبال من. برداشتن بیت هم به همین شکل هست.
                    اما توی آسنکرون این چمدون ها با یک فاصله منظم میاند ولی تو نمیدونی کی میان، دستت رو پایین نگه میداری تا متوجه رسیدن اولین چمدون بشی حالا اولی رو که لمس کردی با توجه به سرعت حرکت چمدانها که قبلا بهت گفتن میتونی زمان برداشتن بعدی رو متوجه بشی، حالا اگر این سرعت رو که نقش Baud Rate رو ایفا میکنه اشتباه بهت داده باشند اولی رو که بر میداری انتظار داری دومی رو یک ثانیه بعد برداری ولی دست میکنی یا هیچی نیست که برداری یا بعدیش رو بر میداری و خلاصه اشتباه میکنی. این Baud Rate هم توی آسنکرون کارش همین هست که سرعت رو مشخص کنه که بیتی در نره، حالا شما میتونی از یک ساعت قبل دستت رو اون پایین نگه داری هر موقع که اولی چمدان یا بیت Start اومد زمان رسیدن چمدان بعدی رو متوجه بشی و شروع کنی بر برداشتنشون اما اگر دیر برسی و وسط رد شدن چمدان ها دستت رو بیاری پایین 4 تا رو بر میداری بعد آخر کار که میشماری میبینی کم هست و متوجه میشی که داده رو اشتباه گرفتی، پس همیشه گیرنده باید قبل از فرستنده خودش رو آماده کنه تا بتونه بیتها رو کامل بگیره حالا توی بعضی از ارتباطات سریال ممکن هست Baud Rate داده نشه مثلا همین سیستم ریموت کنترلهای مادون قرمز که شما توی Basic با دستور های مخصوص RC5 با اونها کار میکنید در واقع نوعی ارسال و دریافت سریال هستند که Baud Rate مشخصی به اون صورت ندارند و باید با توجه به استاندارد و پروتکل کاریشون داده ها رو خوند مثلا ما توی اسمبلی که مینویسیم باید طول بیت رو اندازه بگیریم بعد در زمانهای مشخصی که با تایمر تنظیم کردیم از بیت داده نمونه برداری کنیم حالا اگر ما این زمان رو طبق استاندارد RC5 تنظیم نکرده باشیم بیت از دست میدیم این استاندارد RC5 در واقع قالب ارسال داده هست استاندارد های دیگه هم هست برای این کنترل ها که اگر بخواید باشون کار کنید باید بدونید این چه ساختاری داره و دیگه نمیشه از RC5 استفاده کرد.
                    بگو مرد حسابی تو این فرصت میتونستی مثل آدم سنکرون و آسنکرون رو با شکل توضیح بدی این مسخره بازیا چی بود که چمدون بگیریو .....


                    بسیار عالی .
                    این با اسمبلی :

                    $asm
                    Here1:
                    ldi r16,255
                    sbrc r16,7
                    َََآفرین خیلی خوب توضیح دادی !
                    rjmp here1
                    $end Asm



                    این با بیسیک:
                    Do
                    Very Good And Excellent
                    Loop

                    این با C
                    while (1)
                    {
                    Mercy Study

                    };

                    آسمان بار امانت نتوانست کشید قرعه کار به نام من دیوانه ردند
                    سلطانی دو عالم باشد از آن آن کس سلطان بیامدست و درویش رفته باشد

                    دیدگاه


                      #11
                      پاسخ : فلسفه این دستور baud چیه

                      نوشته اصلی توسط Electronics Boy


                      بسیار عالی .
                      این با اسمبلی :

                      $asm
                      Here1:
                      ldi r16,255
                      sbrc r16,7
                      َََآفرین خیلی خوب توضیح دادی !
                      rjmp here1
                      $end Asm



                      این با بیسیک:
                      Do
                      Very Good And Excellent
                      Loop

                      این با C
                      while (1)
                      {
                      Mercy Study

                      };

                      انجام پروژه هاي برنامه نويسي اندرويد
                      [glow=red,2,300]نرم افزار نقشه هاي پاور کامپيوتر اندوريد[/glow]
                      http://cafebazaar.ir/app/?id=com.atxdroid

                      دیدگاه


                        #12
                        پاسخ : فلسفه این دستور baud چیه

                        محسن جان سلام . احتمالا از کادری که دور مطالب مطرح شده در این تاپیک کشیدی منظورت یه جمعبندی کلی بوده (خوش بینانه) . خب این خیلی خوبه حالا که یه همچین قصدی داری بذار یه کم در مورد مطالب مطرح شده بحث کنیم تا مطالب این تاپیک کاملتر بشه . البته خیلی از موارد رو جناب study توضیح دادن ولی من میخوام چند تا نکته رو یه کم باز کنم .

                        اولیش دوتا مفهوم bit rate و baud rate هست . اولا هرکدوم یعنی چی و چه فرقی باهم دارن ....
                        خب همونطور که می دونیم دو نوع دیتا داریم ، دیتای آنالوگ و دیتای دیجیتال . دیتای آنالوگ به همون سیگنال های پیوسته اطلاق میشه و دیتای دیجیتال هم به بیتها . برای بحث در مورد bit rate و baud rate باید بریم سراغ جزئیات دیتاهامون یعنی چی، یعنی این که هر کدومشونو به واحدهایی به نام المان تقسیم کنیم و روشون بحث کنیم . حالا منظورمون از این المان ها چیه؟!

                        المان دیتا همون بیت های صفر و یک هستن و المان سیگنال هم در حالت دیجیتال ، پالس هایی با دامنه ی ولتاژ ثابت و در حالت آنالوگ پالس هایی با دامنه ، فاز و فرکانس ثابت تعریف میشن . با توجه به این موضوع ، bit rate به نرخ انتقال المان دیتا (بیت ها) اطلاق میشه و baud rate هم به نرخ انتقال المان سیگنال . حالا این دو تا چه فرقی باهم دارن ؟
                        این شکل زیر رو اگه نگاه کنیم ، المان سیگنال و المان دیتا رو می تونیم واضحتر مد نظر قرار بدیم .





                        احتملا این سوال پیش میاد که توی شکل بالا که هر دوتای این اصطلاحات (bit rate وbaud rate ) به یک نتیجه منجر میشن یعنی، چه ما المان سیگنال رو در نظر بگیریم چه المان دیتا ، bit rate و baud rate باهم برابر میشن ؟!!
                        بله درسته . در واقع این دو مفهوم در کدبندی های مختلف از هم مجزا میشن . مثلا در کدبندی NRZ-L که برای هر بیت یک المان سیگنال در نظر میگیرن (یعنی به ازای بیت صفر ، سطح ولتاژ معین(مثلا یک) و به ازای بیت یک هم سطح ولتاژ مشخص(مثلا صفر)) نرخ انتقال بیت با نرخ انتقال سیگنال برابره اما در کد بندی های دیگه مثل منچستر ، که برای هر بیت دو المان سیگنال در نظر می گیره ، وضعیت به کلی فرق میکنه یعنی در این مورد baud rate دو برابر bit rate میشه . واحداشون هم که طبیعتا(کلا) با هم فرق دارن ، اولی بر حسب بیت بر ثانیه محاسبه میشه و دومی هم بر حسب سمبل بر ثانیه یا المان سیگنال بر ثانیه یا در اصطلاح baud .

                        در شکل زیر یک نمونه کدینگ دیتا به روش منچستر رو ملاحظه می کنید . در این نوع کدینگ در وسط مدت زمان هر بیت یک گذر (از بالا به پایین یا برعکس) خواهیم داشت که این عامل به زمانبندی دیتا در طول ارسال کمک می کنه و می شه اطلاعات زمانبندی رو از اون استخراج کرد . در حقیقت به جای اینکه کلاکی برای سنکرون کردن داده های ارسالی تولید بشه ، از همین زمانبندی که در گذر ها ایجاد می شه ، به عنوان عامل سنکرون ساز ، استفاده می کنن .



                        در مثال بالا چنانچه طول هر پالس را 100 میکرو ثانیه در نظر بگیریم اون وقت bit rate برابر خواهد بود با 10000 بیت بر ثانیه اما baud rate برابر خواهد بود با 20000 باود .
                        به طور کلی می شه بین این دو عبارت یک رابطه ی ریاضی نیز برقرار کرد و این رابطه به صورت bit rate = n*baud rate هست که در اون n تعداد بیت ها در هر المان سیگناله . توی همین مثال اگه محاسبات بالا رو انجام بدیم به این می رسیم که baud rate دو برابر bit rate هستش .

                        اما افزایش المان ها برای ارسال دیتا زیاد خوب نیست چون نیاز به پهنای باند بیشتری داریم مخصوصا توی ارتباطات راه دور . همونطور که می دونید پهنای باند رو نرخ سیگنال یا همون baud rate تعیین می کنه نه bit rate از این جهته که از این نوع کدینگ در ارتباطات راه دور استفاده نمی کنن !!
                        یه مثال خیلی بارز از تفاوت این دو اصطلاح رو میشه توی مودم های استاندارد 9600 بیت بر ثانیه بررسی کرد . در اونجا 12 زاویه ی فاز داریم که 4 تای اونا دارای دو مقدار دامنه هستن یعنی در اصل میشه 16 المان سیگنال و برای همین هم مقدار baud rate برابره با 2400 باود . در این مثال یه تلفیقی از PSK و ASK باعث شده تا با نرخ سیگنال مشخص ، استفاده ی بهینه تری از پهنای باند بشه و نرخ بیتمون افزایش پیدا کنه .



                        دومین مطلب هم در مورد انتقال همزمانه ...
                        در این نوع انتقال بر خلاف انتقال غیر همزمان ، امکان این رو داریم که بیشتر از یک رشته ی داده رو ارسال کنیم . در انتقال غیر همزمان ، مثلا برای ارسال یک کاراکتر هشت بیتی(کد اسکی) مجبور بودیم دو تا بیت header به اول و آخر رسشتمون اضافه کنبم و این ها رو بفرستیم روی خط . در طرف گیرنده هم نظامی پیش بینی میشد که مثلا با دریافت بیت یک (سر آغاز رشته ی ارسالی یا همون بیت آغاز) مطلع بشه که دیتای ارسال شده به گیرنده رسیده و رشتمون رو دریافت می کرد . خب از نواقص این روش این بود که در هر زمان تنها باید یک قالب مشخص از دیتا رو (هشت بیت) با دو بیت header میفرستادیم و این یعنی دو تا بیت اضافی در ارسال هشت بیت و اگه یک درصد از این مقدار بگریم می بینیم که 20 درصد قالب ارسالیمون اضافیه ، حالا اگه بخوایم بیت های بین هدرمون رو افزایش بدیم خطای ارسالمون میره بالا .
                        اما در روش همزمان ارسال به فرم دیگه ای انجام میشه . به جای رشته ای از بیت ها یک فریم دیتا تعریف می کنیم که ساختار کاملا تعریف شده ای داره . هر فریم دیتا از دو فیلد کنترلی ، پرچم های آغاز و پایان و یک فیلد دیتا تشکیل شده . برای بررسی بیشتر ، به شکل زیر توجه کنید .



                        Flag ها معمولا هشت بیتی هستن و پایان هر فریم و آغاز فریم بعدی رو مشخص می کنن و معمولا به صورت 01111110 مشخص میشن . گیرنده هروقت این هشت بت رو دریافت کرد ، متوجه میشه که یک فریم دیتا رسیده و باید اون رو دریافت کنه . فیلد های کنترلی هم یک سری اطلاعات مربوط به نوع پروتکل اریال و مجموعه ی تنظیمات در شبکه و از این قبیل اطلاعات رو در بر داره . یه مشکلی که ممکنه در این روش پیش بیاد اینه که شاد الگوی flag توی فیلد دیتا هم وجود داشته باشه اون وقت در طرف گیرنده خطای دریافت به وجود میاد و ارسال اطلاعات با خطا روبرو میشه و دیتا باید دوباره ارسال بشه .

                        برای جلوگیری از این اتفاق از تکنیکی به نام bit stuffing استفاده مشه . این تکنیک به این صورته که بعد از ارسال 5 تا یک یه دونه صفر بین بیت های فریم قرار میگیره و در طرف گیرنده هم عکس این عمل انجام میشه یعنی بعد از دریافت بیت های flag هر جا که 5 تا یک متوالی وجود داشت و بعدشم یه صفر بود ، اون صفر رو حذف میکنه تا همون دیتایی ه ارسال شده دریافت بشه .

                        راندمان این ارسال هم به نسبت انتقال غیر همزمان خیلی بالاتره مخصوصا این که به خاطر نوع ارسال و روشهایی که در ارسال و دریافت داده ها وجود داره ، خطا به نسبت کاهش پیدا کرده و می تونیم طول فیلد دیتامون رو افزایش بدیم . برای مثال اگه بخوایم توی پروتکل HDLC ، 1000 کاراکتر هشت بیتی رو ارسال کنیم ، برای هر فریم دیتامون 48 بیت اضافی داریم(غیر دیتا) یعنی تنها 48/8048 درصد فریممون اضافی یا سرباره یعنی میشه 0.6 درصد که خیلی کمتر از 20 درصده .
                        به قول یکی از دوستان : سنکرون مباش ای دل، موم است سنگ خارا!!موفق باشید :nerd:


                        [hr]عاقلان نقطه ی پرگار وجودند ولی عشق دانند که در این دایره سرگردانند
                        دوستان! مدتی کمتر به سایت میام ..

                        دیدگاه


                          #13
                          پاسخ : فلسفه این دستور baud چیه

                          با سلام و خسته نباشید به حضور دوستان
                          من روی یک پروژ کار میکنم که در اون از 2 میکرو استفاده شده که این دو به هم با ارتباط سریال وصل هستن مشکلم اینجاس که در هر دوی اینها 40 متغیر از نوع 8بیتی هست . من یخام در زمانهای مختلف مقدار این متغییر ها رو از یکی به دیگری انتقال بدم طوری که مثلا متغیر A از میکروی اول در متغیر همنام خودش در میکروی دوم ریخته یشه برای اینکار اومدم برای هریک از متغیرها یک ادرس اختصاس دادم و این دورو (مقدار متغیر و ادرس همون متغیر) کنار هم گزاشتم .به این طریق یک کد 16 بیتی بوجود اومد (یک word ) که 8بیت اول میشد ادرس و 8بیت دوم میشد مقدار و این رو با دستور print به پورت سریال میفرستم ولی برای میکروی گیرنده دستوری پیدا نکردم که بتونه 16 بیت (یک word ) رو بگیره
                          لطفا منو در این مورد راهنمایی کنید
                          روزی که درک کردیم همه چیز به خدا تعلق دارد . آن روز .روز طلوع دانش است

                          دیدگاه


                            #14
                            پاسخ : فلسفه این دستور baud چیه

                            نوشته اصلی توسط جعفر رضائی
                            با سلام و خسته نباشید به حضور دوستان
                            من روی یک پروژ کار میکنم که در اون از 2 میکرو استفاده شده که این دو به هم با ارتباط سریال وصل هستن مشکلم اینجاس که در هر دوی اینها 40 متغیر از نوع 8بیتی هست . من یخام در زمانهای مختلف مقدار این متغییر ها رو از یکی به دیگری انتقال بدم طوری که مثلا متغیر A از میکروی اول در متغیر همنام خودش در میکروی دوم ریخته یشه برای اینکار اومدم برای هریک از متغیرها یک ادرس اختصاس دادم و این دورو (مقدار متغیر و ادرس همون متغیر) کنار هم گزاشتم .به این طریق یک کد 16 بیتی بوجود اومد (یک word ) که 8بیت اول میشد ادرس و 8بیت دوم میشد مقدار و این رو با دستور print به پورت سریال میفرستم ولی برای میکروی گیرنده دستوری پیدا نکردم که بتونه 16 بیت (یک word ) رو بگیره
                            لطفا منو در این مورد راهنمایی کنید
                            چرا می پیچونیش! یه مثال ساده :
                            اول یک بایت آدرس مورد نظرت رو بفرست و بعد از اون یک بایت مقدار متغیر
                            اون طرف تو گیرنده، وقفه دریافت رو فعال کن. کدش رو اینطوری بنویس که اول یه بایت آدرس رو بخونه و بایت بعدی متغیر.

                            یه کار دیگه:
                            اطلاعات رو بصورت رشته بفرست و تو گیرنده هم هرچی اطلاعات میاد تو بافر ذخیر کن (با وقفه دریافتش). رشته ارسالی باید مشخص کنه که میخوای چیکار کنی. دائما بافر رو بررسی کن که فرستنده چی می خواد ازت... فرقش اینه که واسه هر متغیر ممکنه چندین بایت بفرستی...

                            https://www.linkedin.com/in/mohammadhosseini69

                            http://zakhar.blog.ir

                            دیدگاه


                              #15
                              پاسخ : فلسفه این دستور baud چیه

                              اگر قرار باشه که فقط دوبایت دوبایت اطلاعات ارسال بشه در صورت از دست دادن فقط یک بایت کل اطلاعات بعدی خراب میشه. در صورتیکه میشه این کار رو با یک مکانیسم عملیاتی انجام داد که ارسال کننده بدونه گیرنده اطلاعات رو درست گرفته یا نه. و در صورت بروز خطا ارتباط رو ریست کنه و دوباره اطلاعات رو بفرسته. البته با اینکار سرعت تبادل اطلاعات پایین میاد ولی امنیت اطلاعات تضمین میشه.

                              نمونه اینکار میتونه استفاده از پروتکلی مثل 3964 شرکت زیمنس باشه.

                              دیدگاه

                              لطفا صبر کنید...
                              X