كابل SATA
شنبه 9 بهمن 1389 11:47 PM
كابل SATA
در كابل SATA اطلاعات به صورت بيت به بيت انتقال پيدا مي كند بدين گونه كه ولتاژ بالا به معناي 1 و ولتاژ پايين به معناي صفر مي باشد. انتقال اطلاعات به همين روال آسان به نظر مي رسد اما زماني كه تعداد ده عدد ( 1 ) پشت سر هم فرستاده شود چه اتفاقي مي افتد؟ آيا سيگنال ها براي 10 واحد زماني با ولتاژ بالا فرستاده مي شوند؟ و يا هر واحد زماني چقدر است؟ فرستنده و گيرنده ابتدا و انتهاي يك سيگنال و يا طول واحد زماني را چگونه تشخيص مي دهند؟
اگر هر دو آنها با هم همزمان شده باشند اين احتمال وجود دارد كه يك بيت به اشتباه فرستاده شده و به درستي دريافت نشود . در PATA اين مشكل با يك پالس ساعت ( Clock Puls ) حل شده است اما هدف استفاده از SATAفرار از دست همين خطوط اضافي مي باشد، در نتيجه راهي جز فرستان پالس ساعت در دل سيگنال هاي اطلاعاتي باقي نمي ماند. البته اين بخشي از راه حل پيشنهادي براي حل اين مشكل مي باشد، زيرا سيگنال ساعت به تنهايي نمي تواند مشكل را حل كند.
راه حل به كار گرفته شده در SATA استفاده از رويه اي با نام 8b/10b براي كد گذاري اطلاعات مي باشد. بدينگونه كه به جاي نمايش هر بايت با 8 بيت ، با 10 بيت نمايش داده مي شود. در نتيجه به طراح امكان انتخاب از بين 1024 سمبل داده مي شود تا انتخاب از بين 256 سمبل .
اين روش امكاني فراهم مي كند تا رشته هاي طولاني از يك هاي پشت سر هم يا صفرهاي پشت سر هم كنار گذاشته شود مثلاً كد ASCI صفر به صورت بيتي 0000,0000 بوده اما در سيستم 8b/10b تبديل به 1001110100 مي شود و اين همان دليلي است كه باعث مي شود در هارد هاي سريال سرعت انتقال ديتا را به جاي 1.5 gigabit/s ( 5 / 1 گيگا بيت در ثانيه ) بصورت 150MB/S ( 150مگا بايت در ثانيه ) اطلاق شود.
اما طراحان سخت افزار تصميم گرفته اند كه كار خود را دقيق تر انجام دهند براي اين منظور از DC Balance كه كمي هم باعث پيچيده تر شدن كار مي شود استفاده مي كنند. ايده اصلي اين طرح بدين شرح است كه رشته اطلاعات فرستاده شده بايد تعداد يك و صفرآن با تعداد اوليه برابر باشد. براي كنترل اين منظور ، فرستنده بيت هايي كه فرستاده شده است را دنبال مي كند تا بتواند Disparity را چك كند اگر Disparity منفي باشد به معناي صفرهاي زيادي بود و انتخاب يك هاي بيشتر مشكل را حل مي كند و اگر Disparity مثبت باشد عمليات بر عكس انجام مي شود بدين ترتيب خطاي فرستادن اطلاعات برطرف مي گردد.
زماني كه داده اي قرار است به گيرنده فرستاده شود داده بايد در frame بسته بندي شود.بعد از اين مرحله گيرنده يك پيغام به فرستنده مي فرستد و بيان مي دارد كه آماده دريافت است بعد از آن اطلاعات ديكود شده با فرمت 8b/10 را دريافت كرده و آنها را چك مي كند تا خطايي رخ نداده باشد ، بعد از آن دوباره پيغامي مبني بر دريافت اطلاعات و يا فرستادن مجدد اطلاعات مي فرستد. و اين كار تا دريافت كامل اطلاعات ادامه مي يابد.