اطلاعیه

Collapse
No announcement yet.

sram خارجی میکرو

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

    #16
    پاسخ : sram خارجی میکرو

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

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

    گه میشه چند مدل Sram رو هم معرفی کنید که حجمشون حدود 64KByte باشه یرای کار با mega 64 or 128 ؟
    اولا شما برای افزایش میزان حافظه احتیاجی به رم بالای 32 کیلو ندارین. گرچه اگر رم بالایی وجود داشته باشه بهتر از استفاده از دو تا آی سی هست. اگر به ساختار مگا 64 یا مگا 128 نگاه کنین میبینین که AVR فقط میتونه 64 کیلو بایت حافظه دیتا رو آدرس دهی کنه (از ایکس مگا بگذریم). و یک سری از این آدرس ها هم رزرو هست. مثلا رجیستر های میکرو. فضای IO و رم داخلی. حتی اگر 64 کیلو بایت هم رم داشته باشین نمیتونین بطور ساده تمام این 64 کیلو بایت رو استفاده کنین. چون دسترسی به آدرسهایی که داخل میکرو وجود داره منجر به دسترسی به داخل میکرو میشه؛ نه رم خارجی....اما!
    .... (به خاطر محدودیت حجم پیغام؛ بعدی رو ببینید!)

    دیدگاه


      #17
      پاسخ : sram خارجی میکرو

      برای آدرس دهی و استفاده از حافظه های بالاتر راههای متفاوتی هست. شما میتونین از حالت segmented استفاده کنین. حافظه FLAT بسازین از یک آی سی بزرگ یا چند آی سی کوچیک استفاده کنین.

      در حالت سگمنت شده میآییم کل حافظه مورد نیاز رو به قطعاتی تقسیم میکنیم. به هر کدوم میگیم یک بانک یا سگمنت. در این حالت باید مکانیسمی برای انتخاب سگمنت فعال وجود داشته باشه. مثلا فرض کنین میخواییم 512 کیلو بایت حافظه داشته باشیم. میدونیم که 512 کیلو بایت رو باید با 19 بیت آدرس مشخص کرد. اما ما فقط 16 بیت آدرس داریم. و ضمنا تمام فضای 64 کیلو بایتی به دلیلی که قبلا عرض کردم قابل دسترسی نیست. اما یک بایت هم یک بایته. پس می آییم فرض میکنیم که نمیخواییم در هر لحظه به بیش از 32 کیلو بایت رم دسترسی پیدا کنیم. اما اینجوری فقط 15 بیت آدرس رو پوشش میدیم. میمونه 4 بیت. حالا فرض میکنیم از آی سی های 32 کیلو بایتی استفاده میکنیم. اینکه کدوم آی سی برای دسترسی استفاده بشه رو با استفاده از یک دی مالتی پلکسر 4 به 16 انتخاب میکنیم. اینجوری 16 در 32 کیلو بایت حافظه داریم که میشه 512 کیلو بایت.

      البته یک 32 کیلو بایت از آدرسی شروع میشه که قابل تقسیم به 32768 باشه. ولی اگر بخواییم از هر آدرسی این 32 کیلو بایت رو داشته باشیم چکار کنیم؟ میتونیم براحتی (البته نه به راحتی دفعه قبل) با استفاده از یک مدار یا مثلا یک FPGA آدرس پایه این 32 کیلو بایت رو مشخص کنیم و بگیم مثلا هر وقت گفتیم 157 یعنی 20157. اینجوری میتونیم هر قسمت متصل 32 کیلو بایتی حافظه رو مورد دسترسی قرار بدیم. البته بدیهی هست که این آدرس پایه باید همون 19 بیت باشه اما میشه برای راحتی قسمتی از این تعداد بیت رو در نظر گرفت اما اینکار آدرس پایه رو به آدرس هایی که قابل تقسیم به 2 به توان تعداد بیت های کمتر محدود میکنه.
      ....

      دیدگاه


        #18
        پاسخ : sram خارجی میکرو

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

        البته با استفاده از این روشها متاسفانه نمیشه کل حافظه رو تحت اختیار کامپایلر قرار داد مگر اینکه بشه به کامپایلر این مکانیسم رو حالی کرد. این مورد رو من در بعضی کامپایلر های 8051 دیدم. و نه چیزی مثل WINAVR یا کدویژن.

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

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

        راستی میشه sram مگا 32 رو زیاد کرد چون پایه برای این کار نداره؟
        شدنش میشه. ولی به صورت نرم افزاری و در مواردی خاص با استفاده از مدارات کمکی. مثلا فرض کنین میخوایین حجم زیادی اطلاعات رو نگهداری کنین ولی دسترسی به این اطلاعات بصورت ترتیبی انجام میشه. میتونین این فرم رو با استفاده از SPI پیاده سازی کنین. چیزی مثل رم های سریال.
        بهر حال خیلی به مورد استفاده اش بستگی پیدا میکنه.

        دیدگاه


          #19
          پاسخ : sram خارجی میکرو

          اقای اقا زاده من یه مشکلی دارم که اینه:
          نیاز به حافظه بزرگی برای ذخیره کردن دارم که از روم SD استفاده کردم مشکل اصلی اینه که باید با سرعت زیادی اطلاعات رو بخونم ، من در رمSD به سرعت 1 بایت در 6ms رسیدم!!! (که به نظرم منطقی نیست و خیلی کنده(میکرو استفاده شده mega32)) جالب تر اینه که اگه دیتای خوانده شده مقادیر مختلفی داشته باشه زمان خواندن هم کم و زیاد میشه!!!!!!
          حالا می خوام یه کار دیگه بکنم اول برنامه کل حافظه SD رو بریزم توی Sram (حدود 64Kbyte)و بعد با سرعت بالا هر جا لازم بود بخونمشون(سرعت دلخواه من حداقل128 بایت در 2msهستش ).حالا این عملی هست؟
          می بینیم و نادیده می گیریم!

          دیدگاه


            #20
            پاسخ : sram خارجی میکرو

            این یه نمونه از Sram که نمیدونم جواب میده یا نه:MB81C79-45C
            Cmos 72k-Bit High-Speed Sram;Sigle +5v Power Supply 10% Tolerance,3-State Output With Or-Tie Capacity
            اکسس تایم 45ns
            می بینیم و نادیده می گیریم!

            دیدگاه


              #21
              پاسخ : sram خارجی میکرو

              نوشته اصلی توسط رضا آقازاده

              اینم یک شماتیک راحت. آدرس شروع رم از 0x8000 به حجم 32 کیلو بایت. من خودم از cache ram های مادر برد های قدیمی استفاده میکنم. معمولا 15 یا 20 نانو ثانیه هستن و تا سرعت 50 مگا هرتز هم جواب میدن
              من یدونه منبرد قدیمی دارم chache ram اون رو چجوری پیدا کنم
              *یادگیری علم زمانی مشکل است که قبل از یادگیری آن را پیچیده تصور کنیم.
              *چرا فکر میکنیم مباحث مهم و پیشرفته و سطح بالا باید پیچیده باشند.

              دیدگاه


                #22
                پاسخ : sram خارجی میکرو

                مشکل دسترسی شما به SD میتونه این باشه که باید دسترسی به مضربی از 512 بایت و در آدرس های 512 بایتی انجام بشه. و این یعنی یک سکتور. اصولا موقع دسترسی به یک تجهیز کند نبایستی با فریم های کوچک کار کرد چون معمولا زمان مورد نیاز برای خوندن و نوشتن یک یا چند بایت ثابت هست بنا براین خوندن چند بایت به ازای هر دسترسی سریعتر از خوندن چند تا یک بایت در طی چند دسترسی هست.

                من یدونه منبرد قدیمی دارم chache ram اون رو چجوری پیدا کنم
                یک سری 8 یا 9 تایی آی سی 28 پایه هست. مثلا با شماره CY7C199 یا آی سی های WD. دیتا شیتش هم روی اینترنت براحتی گیر میاد. البته اگر 9 تا آی سی وجود داشته باشه یکیش با بقیه فرق میکنه. و در اصل 32768 بیت هست. برای محاسبه memory parity. که بدرد شما نمیخوره. اون 8 تا قابل استفاده هست.

                دیدگاه


                  #23
                  پاسخ : sram خارجی میکرو

                  کاملا درست میگین من حتی توی تعداد بایت بالا هم ، سرعت SD راضی کننده نیست.می خوام بدونم ایا استفاده از Sram lمی تونه سرعت بیشتری در اختیار من قرار بده یا نه؟
                  می بینیم و نادیده می گیریم!

                  دیدگاه


                    #24
                    پاسخ : sram خارجی میکرو

                    می خوام بدونم ایا استفاده از Sram lمی تونه سرعت بیشتری در اختیار من قرار بده یا نه؟
                    مسلما!
                    سرعت دسترسی به sram هزاران برابر از sd بیشتره. ولی sram داده ها رو درون خودش نمیتونه در صورت قطع برق نگهداری کنه. شاید شما بتونی (از لحاظ تکنیکی که خیلی به مورد استفاده بستگی داره) اطلاعات رو روی SD نگهداری کنی و قبل از استفاده درون RAM بریزی و بعد از RAM استفاده کنی. اینو بهش میگیم cache کردن اطلاعات.

                    دیدگاه


                      #25
                      پاسخ : sram خارجی میکرو

                      پس سیکل چیزی است که باید چند کلاک بدیم تا یک دستور اجرا بشه به این چند کلاکی که میدیم یک دستور اجرا بشه سیکل است یعنی به جای چند کلاک می گیم یه سیکل
                      یه سوال بی رپت من ATMEGA128 دارم که به 3.3 ولت نیاز دارم برای ال سی دی ولی میکرم L نیست ایا ای سی هست که 5 ولت بکنه 3.3 ولت
                      با تشکر فراوان

                      دیدگاه


                        #26
                        پاسخ : sram خارجی میکرو

                        نوشته اصلی توسط erfan m
                        پس سیکل چیزی است که باید چند کلاک بدیم تا یک دستور اجرا بشه به این چند کلاکی که میدیم یک دستور اجرا بشه سیکل است یعنی به جای چند کلاک می گیم یه سیکل
                        یه سوال بی رپت من ATMEGA128 دارم که به 3.3 ولت نیاز دارم برای ال سی دی ولی میکرم L نیست ایا ای سی هست که 5 ولت بکنه 3.3 ولت
                        با تشکر فراوان
                        رگولاتور LF33 رگولاتور 3.3ولتیه.
                        می بینیم و نادیده می گیریم!

                        دیدگاه


                          #27
                          پاسخ : sram خارجی میکرو

                          نه عزیز من. من یخده گیج توضیح دادم. هر سیکل میشه دقیقا "مدت زمان یک کلاک" مثلا در سرعت 8 مگا هرتز هر سیکل میشه 125 نانو ثانیه. یا 1 میلیارد (نانو ثانیه) تقسیم بر 8 میلیون (هرتز). همین.

                          چرا از سری A استفاده نمیکنین؟ فکر میکنم هم با 3.3 و هم با 5 کار کنه.

                          دیدگاه


                            #28
                            پاسخ : sram خارجی میکرو

                            نوشته اصلی توسط رضا آقازاده
                            یک سری 8 یا 9 تایی آی سی 28 پایه هست. مثلا با شماره CY7C199 یا آی سی های WD. دیتا شیتش هم روی اینترنت براحتی گیر میاد. البته اگر 9 تا آی سی وجود داشته باشه یکیش با بقیه فرق میکنه. و در اصل 32768 بیت هست. برای محاسبه memory parity. که بدرد شما نمیخوره. اون 8 تا قابل استفاده هست.
                            آیسی با مشخصات بالا پیدا نکردم منبردم مال 2002 شاید منظور شما قدیمیترش بود نه؟؟
                            *یادگیری علم زمانی مشکل است که قبل از یادگیری آن را پیچیده تصور کنیم.
                            *چرا فکر میکنیم مباحث مهم و پیشرفته و سطح بالا باید پیچیده باشند.

                            دیدگاه


                              #29
                              پاسخ : sram خارجی میکرو

                              پس مجبوری نقد خرید کنی. یک کمی گرونتر در میاد. مثلا:
                              MB84256A-10L
                              HM6207HLP-35
                              که البته این آخری 256 کیلو بیت هست پس شما مجبورین 8 تا دونه استفاده کنین تا بشه 256 کیلو بایت ولی سرعتش خیلی خوبه.
                              ضمنا منظورم مادر برد های 386 و نهایتا 486 هست. و نه پنتیوم.

                              دیدگاه


                                #30
                                پاسخ : sram خارجی میکرو

                                نوشته اصلی توسط رضا آقازاده
                                (دسترسی به رم داخلی همیشه در 2 سیکل انجام میشه. اما رم خارجی حداقل 3 سیکل میخواد).
                                یعنی 250 نانو ثانیه زمان میبره برای رم داخلی با کریستال 8m اگر کریستال 16m با شه می شه 125 نانوثانیه پس یاد گرفتم :nerd:
                                میکرو های A 2.7v تا 5.5 پس V ها چی هستن :biggrin:

                                دیدگاه

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