سلام
من میخوام SDRAM با دیتا باس 32 بیتی به LPC1788 (EMC - External Memory Controller) متصل کنم، ولی به نظر میاد که نمیتونم از نصف ظرفیت SDRAM استفاده کنم.
اگر بخوام از یک عدد MT48LC8M32 استفاده کنم، طبق دیتاشیت این آیسی:
Size: 256Mb (32 MB)
Row Addressing: A0 - A11 (12 bit)
Column Addressing: A0 - A8 (9 bit)
بر اساس جدول 134 یوزر منوال LPC1788، تنها یک حالت برای اتصال رم 256Mb با دیتا باس 32 بیت وجود داره که در اون حالت:
ROW Length: 13 bit
Column Length: 8 bit
با توجه به اطلاعات بالا که طول Row و Column حافظه و میکروکنترلر با هم برابر نیست، نمیشه از نصف ظرفیت حافظه استفاده کرد.
اگر بخوام از دو عدد MT48LC16M16 استفاده کنم که کنار هم یک حافظه 32 بیتی داشته باشم، طبق دیتاشیت این آیسی:
Size: 256Mb (32 MB)
Row Addressing: A0 - A12 (13 bit)
Column Addressing: A0 - A9 (9 bit)
که این مقادیر Row و Column بر اساس جدول 134 یوزر منوال، مطابق با حالت 256Mb - 16M16 است، اما برای دیتا باس 16 بیت، ولی من میخوام 32 بیت باشه.
آخرین حالت 32 بیتی، 256Mb - 8M32 است، که اگر بخوام 2 تا MT48LC16M16 که ظرفیتشون جمعا میشه 512Mb استفاده کنم، باز هم نمیتونم از نصف ظرفیت حافظه ها استفاده کنم.
جالب اینجاست که بر اساس جدول 134 یوزر منوال LPC1788 حد اکثر SDRAM 512Mb (64MB) میشه استفاده کرد، و بر اساس جدول 3، حداکثر میشه از SDRAM 256MB استفاده کرد(البته برای هر DYCS که چهار تا سیگنال DYCS وجود داره که مثلا میشه کلا 1GB SDRAM به LPC1788 متصل کرد) یعنی ممکنه جای دیگه تنظیمات دیگه ای داشته باشه؟
من مشکلی با ظرفیت ندارم، 16 مگابایت هم کافیه (حدود 30 تا Frame Buffer برای LCD 272 * 480 حالت RGB888 داخلش جا میگیره)، مشکل اینجاست که اگر بخوام از دیتا باس 32 بیت استفاده کنم، نصف ظرفیت حافظه بلا استفاده میمونه، آیا راه حلی وجود داره که از طریق EMC بشه از کل ظرفیت حافظه SDRAM با دیتا باس 32 بیت استفاده کرد؟ (بالاخره دسترسی 32 بیتی به اطلاعات حافظه نسبت به دسترسی 16 بیتی سریع تره، مثلا یک پردازش گرافیکی سریع تر انجام میشه)
من میخوام SDRAM با دیتا باس 32 بیتی به LPC1788 (EMC - External Memory Controller) متصل کنم، ولی به نظر میاد که نمیتونم از نصف ظرفیت SDRAM استفاده کنم.
اگر بخوام از یک عدد MT48LC8M32 استفاده کنم، طبق دیتاشیت این آیسی:
Size: 256Mb (32 MB)
Row Addressing: A0 - A11 (12 bit)
Column Addressing: A0 - A8 (9 bit)
بر اساس جدول 134 یوزر منوال LPC1788، تنها یک حالت برای اتصال رم 256Mb با دیتا باس 32 بیت وجود داره که در اون حالت:
ROW Length: 13 bit
Column Length: 8 bit
با توجه به اطلاعات بالا که طول Row و Column حافظه و میکروکنترلر با هم برابر نیست، نمیشه از نصف ظرفیت حافظه استفاده کرد.
اگر بخوام از دو عدد MT48LC16M16 استفاده کنم که کنار هم یک حافظه 32 بیتی داشته باشم، طبق دیتاشیت این آیسی:
Size: 256Mb (32 MB)
Row Addressing: A0 - A12 (13 bit)
Column Addressing: A0 - A9 (9 bit)
که این مقادیر Row و Column بر اساس جدول 134 یوزر منوال، مطابق با حالت 256Mb - 16M16 است، اما برای دیتا باس 16 بیت، ولی من میخوام 32 بیت باشه.
آخرین حالت 32 بیتی، 256Mb - 8M32 است، که اگر بخوام 2 تا MT48LC16M16 که ظرفیتشون جمعا میشه 512Mb استفاده کنم، باز هم نمیتونم از نصف ظرفیت حافظه ها استفاده کنم.
جالب اینجاست که بر اساس جدول 134 یوزر منوال LPC1788 حد اکثر SDRAM 512Mb (64MB) میشه استفاده کرد، و بر اساس جدول 3، حداکثر میشه از SDRAM 256MB استفاده کرد(البته برای هر DYCS که چهار تا سیگنال DYCS وجود داره که مثلا میشه کلا 1GB SDRAM به LPC1788 متصل کرد) یعنی ممکنه جای دیگه تنظیمات دیگه ای داشته باشه؟
من مشکلی با ظرفیت ندارم، 16 مگابایت هم کافیه (حدود 30 تا Frame Buffer برای LCD 272 * 480 حالت RGB888 داخلش جا میگیره)، مشکل اینجاست که اگر بخوام از دیتا باس 32 بیت استفاده کنم، نصف ظرفیت حافظه بلا استفاده میمونه، آیا راه حلی وجود داره که از طریق EMC بشه از کل ظرفیت حافظه SDRAM با دیتا باس 32 بیت استفاده کرد؟ (بالاخره دسترسی 32 بیتی به اطلاعات حافظه نسبت به دسترسی 16 بیتی سریع تره، مثلا یک پردازش گرافیکی سریع تر انجام میشه)