اطلاعیه

Collapse
No announcement yet.

آدرس دهی حافظه

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

    آدرس دهی حافظه

    سلام
    میخواستم بدونم یک آی سی که مثلا 4 کیلو بایت حافظه داره را در avr چطور آدرس دهی می کنند اگه آدرس بر اساس بایت باشه که 256 آدرس بیشتر نمیشه داد ولی ظرفیت آی سی 4000 بایت است
    ممنون از راهنمایی شما :nerd:

    #2
    پاسخ : آدرس دهی حافظه

    بنام خدا
    با سلام
    نوشته اصلی توسط hamidmicro
    سلام
    میخواستم بدونم یک آی سی که مثلا 4 کیلو بایت حافظه داره را در avr چطور آدرس دهی می کنند اگه آدرس بر اساس بایت باشه که 256 آدرس بیشتر نمیشه داد ولی ظرفیت آی سی 4000 بایت است
    ممنون از راهنمایی شما :nerd:

    256byte > 8 address bit
    512byte > 9 address bit
    1k_byte = 1024 byte > 10 address bit
    2k_byte = 2048 byte > 11 address bit
    4k_byte = 4096 byte > 12 address bit

    در حافظه های پارالل ، خطوط دیتا و آدرس ، مجزا بوده و برای آدرس دهی یک خانه از حافظه جهت خواندن و یا نوشتن ، در مرحله نخست ، آدرس آن خانه را در روی پینهای آدرس چیپ حافظه (address bus)، بصورت موقت ( استفاده از چیپهای واسطه LATCH ، REGISTER ، COUNTER ) ذخیره شده و سپس عملیات خواندن از و یا نوشتن در آن خانه از حافظه ، از روی پینهای دیتای چیپ (data bus) انجام میپذیرد.

    با احترام
    27/11/88

    دیدگاه


      #3
      پاسخ : آدرس دهی حافظه

      نوشته اصلی توسط امیر معیری
      بنام خدا
      با سلام
      [
      256byte > 8 address bit
      512byte > 9 address bit
      1k_byte = 1024 byte > 10 address bit
      2k_byte = 2048 byte > 11 address bit
      4k_byte = 4096 byte > 12 address bit

      در حافظه های پارالل ، خطوط دیتا و آدرس ، مجزا بوده و برای آدرس دهی یک خانه از حافظه جهت خواندن و یا نوشتن ، در مرحله نخست ، آدرس آن خانه را در روی پینهای آدرس چیپ حافظه (address bus)، بصورت موقت ( استفاده از چیپهای واسطه LATCH ، REGISTER ، COUNTER ) ذخیره شده و سپس عملیات خواندن از و یا نوشتن در آن خانه از حافظه ، از روی پینهای دیتای چیپ (data bus) انجام میپذیرد.

      با احترام
      27/11/88

      آقای معیری
      با سلام و درود
      معذرت میخوام ولی من جوابم را نگرفتم شاید سوالم را خوب مطرح نکردم
      با این دستور مقدار 22 را داخل حافظه به آدرس مثلا 240 میفرستیم
      write 22,240
      حالا برای حافظه ای که تا 4000 بایت ظرفیت داره و شما بخواهید
      بطور مثال عدد 44 را به آدرس 3778 ذخیره کنید چکار میکنید ؟
      ممنون از شما :rolleyes:

      دیدگاه


        #4
        پاسخ : آدرس دهی حافظه

        سلام دوست من
        شما با چه نوع حافظه ای کار میکنید ؟؟؟
        ببینید هر کیلوبایت معادل 2 به توان 10 بایت هست یعنی 1024 بایت و فکر نکنم حافظه ای وجود داشته باشه با 4000 بایت اگه منظورتون 4K بایت است میشه 4*1024 یعنی 4096 بایت که شما به 13 بیت واسه آدرس دهی نیاز دارید خب شما اگه میخواهید بقول خودتون عدد 44 را به آدرس 3778 بفرستید خب معمولا اینطوریه که باید اول دو بایت آدرس بدید یعنی عدد 3778 و بعد عدد 44 را بفرستید بازم میگم بستگی به حافظه ای که باهاش کار میکنید
        فرزندم در راه است

        دیدگاه


          #5
          پاسخ : آدرس دهی حافظه

          نوشته اصلی توسط علیرضا کیانی
          سلام دوست من
          شما با چه نوع حافظه ای کار میکنید ؟؟؟
          ببینید هر کیلوبایت معادل 2 به توان 10 بایت هست یعنی 1024 بایت و فکر نکنم حافظه ای وجود داشته باشه با 4000 بایت اگه منظورتون 4K بایت است میشه 4*1024 یعنی 4096 بایت که شما به 13 بیت واسه آدرس دهی نیاز دارید خب شما اگه میخواهید بقول خودتون عدد 44 را به آدرس 3778 بفرستید خب معمولا اینطوریه که باید اول دو بایت آدرس بدید یعنی عدد 3778 و بعد عدد 44 را بفرستید بازم میگم بستگی به حافظه ای که باهاش کار میکنید
          سلام
          ممنون از لطف شما
          من با آی سی 24c08 کار میکنم که ظرفیتش اونطور که در نرم افزار پروتیوس نشون میده مقدار 8*1024 است .
          نکته دوم اگه در برنامه یک پارامتر را بعنوان byte معرفی کنیم خوب بیشتر از 8 بیت که نیست . پس چطور مقدار 4096 را ادرس میدهی
          ازت ممنون میشم اگه با یک مثال روشنم کنی :rolleyes:

          دیدگاه


            #6
            پاسخ : آدرس دهی حافظه

            سلام ببین دوست من تو eeprom یا هر جایه دیگه اگه این مشکل پیش بیاد از دو تا 8 بیتی استفاده میشه یعنی رجیستر آدرسش 16 بیتی هست یه نیگاه به دیتا شیت بنداز عکسش را هم گذاشتم در ضمن اشتباه نکن این حافظه 8 کیلو بیت هست که میشه 8*1024 بیت و اگه تقسیم بر 8 کنی میشه 1024 بایت یعنی واسه آدرس به 10 بیت نیاز داری طبق دیتاشیت:
            فرزندم در راه است

            دیدگاه


              #7
              پاسخ : آدرس دهی حافظه

              سلام آقای کیانی

              ممنون از زحمات شما
              سوال اصلی من اینه که یک پارامتر مثلا bt را بایت معرفی میکنیم dim bt as byte خوب حالا این bt از 0 تا 255 عدد را جواب میده وقتی عدد که آدرس ما هست از این مقدار بالاتر میره یعنی اگر از 8 بیت به 16یا 10 بیت افزایش پیدا کرد چطور آدرس میدیم ؟ لطفا یک مثال بزنید

              دیدگاه


                #8
                پاسخ : آدرس دهی حافظه

                سلام
                فکر کنم شما 2 تا چیزو با هم قاطی کردی :mrgreen:
                ببین شما یه آدرس داری یه دیتا که دیتا شما تو این حافظه نمیتونه بیشتر از 8 بیت باشه ولی آدرس میتونه یه مثال واست میزنم :
                شما فکر کن 100 تا ظرف داری به گنجایش 1 لیتر حالا وقتی میخواهی بگی نیم لیتر بریز تو ظرف 57 این 57 به نیم هیچ ارتباطی نداره درسته داستان از این قراره آدرس میتونه هر عددی داشته باشه ولی دیتا نمیتونه بیش از 8 بیت باشه چون گنجایشش همینقدره در نتیجه دیتا یه بحثه و آدرس یه بحث دیگه که هیچ ربطی به هم ندارند
                امیدوارم خوب گفته باشم اگه بازم ابهامی بود در خدمتم
                فرزندم در راه است

                دیدگاه


                  #9
                  پاسخ : آدرس دهی حافظه

                  نوشته اصلی توسط hamidmicro
                  سلام آقای کیانی

                  ممنون از زحمات شما
                  سوال اصلی من اینه که یک پارامتر مثلا bt را بایت معرفی میکنیم dim bt as byte خوب حالا این bt از 0 تا 255 عدد را جواب میده وقتی عدد که آدرس ما هست از این مقدار بالاتر میره یعنی اگر از 8 بیت به 16یا 10 بیت افزایش پیدا کرد چطور آدرس میدیم ؟ لطفا یک مثال بزنید
                  ‏ خوب فکر کنم مشکل شما از اینجا منشاء میگیره که متغیر bt رو از نوع بایت و ٨بیتی تعریف کردید. باید از نوع WORD تعریف کنید. حالا دیگه از 0 ‎تا 65535 میتونه عدد بگیره.

                  دیدگاه


                    #10
                    پاسخ : آدرس دهی حافظه

                    نوشته اصلی توسط علیرضا کیانی
                    سلام
                    فکر کنم شما 2 تا چیزو با هم قاطی کردی :mrgreen:
                    ببین شما یه آدرس داری یه دیتا که دیتا شما تو این حافظه نمیتونه بیشتر از 8 بیت باشه ولی آدرس میتونه یه مثال واست میزنم :
                    شما فکر کن 100 تا ظرف داری به گنجایش 1 لیتر حالا وقتی میخواهی بگی نیم لیتر بریز تو ظرف 57 این 57 به نیم هیچ ارتباطی نداره درسته داستان از این قراره آدرس میتونه هر عددی داشته باشه ولی دیتا نمیتونه بیش از 8 بیت باشه چون گنجایشش همینقدره در نتیجه دیتا یه بحثه و آدرس یه بحث دیگه که هیچ ربطی به هم ندارند
                    امیدوارم خوب گفته باشم اگه بازم ابهامی بود در خدمتم
                    سلام
                    نه اگه قاطی میکردم که منفجر میشد :mrgreen:
                    در نوشتن حافظه 2 تا پارامتر داریم یکی دیتا که 8 بیت و 256 عدد میگیره کاری با این نداریم ولی دومی که آدرس هست با توجه به مطلبی که آقای ایجی گذاشتند اگه بایت باشه تا 256 آدرس نمی شه داد ولی اگه
                    word باشه آیا حافظه این را قبول میکنه یا در قالب بایت باید باشه ؟

                    از مثالی که میزنید ممنونم :cry2:

                    دیدگاه


                      #11
                      پاسخ : آدرس دهی حافظه

                      سلام
                      ببین دوست من رجیستر TWDR یعنی همونیکه دیتا را توش میریزی تا بفرسته 8 بیتی هست اگه بخواهی آدرس 16 بیتی بدی باید دو تا هشت بیت را پشت سرهم ارسال کنی یعنی 2 بار اطلاعات ارسال کنی به همین سادگی
                      فرزندم در راه است

                      دیدگاه

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