آموزش گام به گام میکرو کنترلر های ARM سری AT91

Pro.Eng

متخصص plc
کاربر ممتاز
سلام علیکم و الرحمه الله.
امیدوارم دوستان عزیزی که به این تاپیک سر میزنن حالشون خوب باشه و در سلامتی کامل به سر ببرن.
و با امید سال خوب و پر برکت یعنی سال 94 برای شما دوستان عزیز.
این اوّلین جلسه آموزش میکروکنترلرهای ARM هستش و ان شاء الله در سال بعد به طور جدی پیگیری خواهد شد.
==
خوب همونطور که میدونید رشد روز افزون دانش بشری با سرعتی باورنکردنی در حال پیشرفت و توسعه هستش. و با کمی توجه به صنعت الکترونیک میتونیم بفهمیم که پیشرفت های حاصل شده در این صنعت ، افق های وسیعی را پیش چشم دوستداران این علم و صنعت قرار داده.
از این رو اهمیت کار با میکروکنترلر ها و بکار گیری امکانات اونها در جهت هدایت یک مجموعه الکتریکی هدفمند و هوشمند ، کاملاً مشخص هستش.
پس قصد داریم میکروکنترلر های 32 بیتی شرکت ATMEL با پردازنده های ARM رو بررسی کنیم.
البته همونطور که میدونید روز به روز علم الکترونیک در حال پیشرفت هستش و قسمتی از این پیشرفت مختص رشد و توسعه در زمینه میکرو کنترلر های هستش.
یعنی شاید در آینده نه چندان دور ، با میکروکنترلر های قوی تر و پیچیده تر مواجه بشید.
این پیشرفت هم متناسب با نیاز و قدرت کمال بشریت هستش. یعنی انسان علاقه داره به سرعت بیشتر پس میره سراغ پردازنده های سریع تر. علاقه داره به کنترل بیشتر ابزار ها میره سراغ انواع جدید تر. علاقه داره به مجتمع بودن (EMBEDDED) پس میره سراغ مدل های جدید تر.

در آینده پردازنده هایی خواهند اومد اومد که همه چی داخلشون جمع هستش و همه چی دارند. از جمله حافظه ، رابط ورودی - خروجی ، ماژول های ارتباطی و ...
و این یعنی همه چیز روی یک تراشه وجود خواهد داشت. و کسی میتونه یه مهندس الکترونیک خوب بشه که بتونه با اون تراشه کار بکنه.
کما این که این تراشه ها الان هم تا حدودی به بازار ورود پیدا کردند.
کافیه در رابطه با آی سی های پردازنده ای تحقیق بکنید که هم شامل پردازنده و قسمت میکروکنترلر هستند و هم داخلشون ماژول های مخابراتی دارند!!! و ....
اگر میخاید ایده بگیرید و نقطه شروع داشته باشید سایت هایی مثل INTEL ، MICROCHIP ، ATMEL و .... میتونه KEYWORD های خوبی بهتون بده تا در موردشون بیشتر تحقیق بکنید و بدونید.
به عنوان مثال وقتی توی یک همچین سایت هایی در مورد پرداش موازی یک جمله میخونید همین باعث میشه تا برید سراغ پرداش موازی و در موردش مطلب یاد بگیرید و ....
=
خوب روند آموزشی ما به منوال زیر خواهد بود :
فصل اوّل : پردازنده های ARM ( معرفی )
فصل دوم : پردازنده ARM7TDMI ( مرور کلی )
فصل سوم : میکروکنترلر های سری AT91SAM
فصل چهارم : میکروکنترلر های سری AT91SAM7S
فصل پنجم : آشنایی با نرم افزار IAR Embedded Workbench IDE
فصل ششم : برنامه ریزی میکرو کنترلر های سری AT91SAM7S
فصل هفتم : RTI
فصل هشتم : تایمر و شمارنده
فصل نهم : PWM
فصل دهم : ADC
فصل یازدهم : SPI
فصل دوازدهم : USART
فصل سیزدهم : PDC
فصل چهاردهم : AIC
فصل پانزدهم : PIT
فصل شانزدهم : GLCD
فصل هفدهم : تعریف پروژه های متعدد
فصل هجدهم : طراحی بورد
اگر خدا بخاد و وقت شد با Altium بورد طراحی شده در فصل آخر رو میزنیم و به عنوان نمونه کار استفاده خواهیم کرد.
موفق باشید.

 

Pro.Eng

متخصص plc
کاربر ممتاز
با سلام خدمت دوستان عزیز. عذر خواهی من رو پذیرا باشید بابت تأخیر. متأسفانه درگیر درس و کلاس هستم و نمیتونم زیاد در خدمت شما باشم. از همین رو غیبت های من رو در نظر نگیرید :smile:
ان شاء مطالب ابتدایی فصل اوّل رو فردا قرار خواهم داد.
موفق باشید.
 

Pro.Eng

متخصص plc
کاربر ممتاز
سلام. بی مقدمه میرم سراغ مطلب اصلی. در مورد تاریخچه و معرفی میخام صحبت بکنم.
--
میکروپروسسور :
در حقیقت پس از پیدایش الکترونیک دیجیتال میکروپروسسور هم تولید و به بازار ارائه شد. الکترونیک دیجیتال هم یه جورایی پس از تولید ترانزیستور شکل گرفت. چون اساس دنیای دیجیتال ترانزیستور هستش. که اوّلین قطعه دیجیتال میتونه حساب بشه. و از اون در دنیای دیجیتال بسیار استفاده میشه. همونطور که شاید بدونید و شنیده باشید مثلاً میگن درون این آی سی 20 میلیون ترانزیستور وجود داره. این حرف کاملاً منطقی هستش چرا که ترانزیستور از پیوند سه ناحیه نیمه هادی n و p و n ( به طور کلی ) تشکیل شده ( در نوع بسیار ساده BJT ) و از اونجا که آی سی ها هم از این نواحی N و P تشکیل میشن پس مطمئناً ترانزیستور هایی درون اونها هستش. و دوماً اینکه وقتی نقشه یا مدار داخلی آی سی رو دارید و مثلاً توی اون مدار یک واحد حافظه دیده میشه پس این یعنی با عناصر الکترونیکی سر و کار دارید. اون واحد حافظه با یک تکنولوژی خاصی ساخته شده. به عنوان مثال فرض میکنیم با مثلاً یک تکنولوژی ترانزیستور - ترانزیستوری ساخته شده ( مثلاً ). خوب این یعنی اون حافظه شامل تعداد زیادی ترانزیستور هستش. { این صحبت من رو کسایی که الکترونیک دیجیتال بلدن خوب متوجه میشن. یا مدار های CMOS }
و یا هر واحد و مولفه دیگه ای.
پس درون آی سی های ترانزیستور وجود داره. ( یک مفهوم کلی )
و اگر بخاید دقیقتر بدونید باید نحوه ساخت آی سی ها رو مطالعه بکنید. که چطوری این ترانزیستور ها تولید میشن. و میتونید با نحوه ساخت ترانزیستور شروع بکنید و به آی سی برسید. از روش های قدیمی رشد نفوذی - کاشت یون - ترکیب آلیاژی و ... شروع کنید و به روش های جدیدتر برسید. ( میتونه یک تحقیق محسوب بشه )

میکروپروسسور در حقیقت شامل واحد های محاسبه و منطق ( ALU ) - دیکودر دستورات - واحد رجیستر ها و واحد کنترل هستش.
میکروپروسسور کدهای دستورالعمل قرارگرفته در حافظه کد را واکشی یا Fetch میکنه و پس از بازگشایی دستور یا Decode اون رو اجرا یا Execute میکنه.
پس اگر با میکروپروسسور سر و کار داشتید و خواستید با اون کاری انجام بدید باید روی حافظه اون دستوراتی قرار بدید و بعد اون واکشی میکنه و بعد دیکد میکنه و بعد اجرا میکنه. ( روند کلی )
پس در حالت کلی میکروپروسسور های شامل خطوط داده ( data ) ، خطوط آدرس ( address ) ، پایه RD یا read یا خواندن ، پایه wr یا wright یا نوشتن و چندین پایه کنترلی دیگر از جمله ورودی اینتراپت ، کلاک ، ریست و ... هستند.
Intel 4004 :
اوّلین میکروپروسسور بود که در سال 1971 بوسیله شرکت اینتل به عنوان یک میکروپروسسور 4 بیتی که برای ماشین حساب الکترونیکی طراحی شده بود. این میکروپروسسور میتونس 2 عدد چهار بیتی را با هم جمع کنه و عملیات های دیگه نیز انجام بده.
این میکرو با توجه به تکنولوژی امروز کاملاً ساده و ابتدایی محسوب میشه و میتونس 4096 مکان مختلف حافظه رو آدرس دهی کنه ( 4096 مکان موجود در حافظه ) و میتونس 6000 دستورالعمل در ثانیه رو اجرا کنه.
Intel 8008 :
در سال 1972 شرکت اینتل میکروپروسسور 8008 خودش رو با معماری 8 بیتی ارائه کرد که میتونس 16 کیلو بایت مکان مختلف از حافظه رو آدرس دهی کنه و دارای 45 دستور العمل بود و میتونس 30000 دستور العمل در ثانیه رو اجرا کنه.
Intel 8080 :
در سال 1974 شرکت اینتل میکروپروسسور 8080 رو که میتونس 50000 دستورالعمل در ثانیه رو اجرا کنه معرفی کرد. این میکروپروسسور 64 کیلو بایت حافظه آدرس دهی میکرد و دارای 75 دستورالعمل بود. این میکروپروسسور باعث تولید اوّلین کامپیوتر های خانگی شده بود. که توسط شرکت MITS در سال 1974 ارائه شده بود.
Z80 :
شرکت Zilog در سال 1976 نوعی کاملتر را عرضه کرد که z80 نامیده شد ، z80 هم میتونس 64 کیلو بایت از حافظه رو آدرس دهی کنه و 50000 دستور العمل در ثانیه رو اجرا کنه و دارای 176 دستورالعمل بود. یک مشخصه سخت افزاری مهم اون در مقایسه به 8080 ، آرایش کاملتر رجیستر ها هستش. z80 همچنین مکانیزمی را به کار میگیره که حافظه دینامیک یا DRAM رو به طور خودکار نوسازی میکنه.(REFRESH )
این دو مشخصه اضافی موجب برتری Z80 نسبت به 8080 هستش.
در سال های بعد اینتل با پیشرفت صنعت نیمه هادی ، میکروپروسسور های جدید خودش رو با نام INTEL 8086 معرفی کرد که 16 بیتی بودند که در نخستین کامپیوتر های شرکت IBM از اونها استفاده میشده که شاید هیچ کدوم از ماها با اونها کار نکرده باشیم ولی دیده باشیم.
روی برد های اصلی ( MOTHER BOARD ) و مودم ها و کارت های گرافیک قدیمی دقیقاً از این نوع میکروپروسسور های استفاده میشده. قدیم دقیقاً برمیگرده به حداقل 20 سال پیش در ایران. چرا که من خودم یک مودمی که برای 20 سال پیش بود و از بازار ایران تهیه شده بود رو دیدم و دقیقاً روش یک پروسسور 8086 داشت. که اتفاقاً پکیجش معمولی هم بود و SMD نبود.ظاهراً تکنولوژی SMD هم اون موقع نبوده. و روی یک سوکت هم نصب شده بود و لحیم کاری صورت نگرفته بود. این یعنی طوری طراحی شده بود که قابل برنامه ریزی مجدد باشه!! و الان به کجا رسیدیم !!!؟!؟!؟
به جایی که پردازنده های MOTHER BOARD ها اندازه 1 بند انگشت هستند و دیگه روی سوکت هم نصب نمیشن. یعنی اگر بخاید دوباره برنامه ریزیشون کنید یا باید DESOLDERING ( قلع کشی ) انجام بدید تا قطعه جدا بشه یا توسط دستگاهی با مکانیزم خاص روی بورد به آی سی برنامه بدید و باهاش کار کنید. البته این کار شاید خیلی باب نباشه امروزه چرا که وقتی بورد های امروزی دچار مشکل میشن یا به دست متخصص سپرده میشن یا میرن نمایندگی اون شرکت.
در هر دو حالت هم اون پروسسور تعویض میشه و یک پروسسور نو جای اون رو میگیره.
شاید اینطوری نباشه که بیان و اون پروسسور رو تعمیر بکنن. چرا که هم تکنولوژیش بالا هستش و هم اینکه دردسر تعمیر و باسازیش سخته.
کلاً دنیا داره به سمت EMBEDDED میره و رفته. یعنی دیگه سیستم ها گسسته نیستن که یک کسی بیاد برای خودش با میکرو یک سیستمی طراحی و پیاده سازی کنه. این قدیمی شده. الان میان یک سیستم مجتمع میسازن و از اون در تمام کار ها استفاده میکنن. دقیقاً مثل کامپیوتر. اینجا کار برنامه نویس خیلی به چشم میاد!!!
مثال های زیادی هم وجود داره. مثلاً همین بورد های ایتالیایی به نام آردوینو. این ها یک بوردی طراحی کردن به صورت مجتمع که شما میتونید اون رو درون سیستم خودتون قرار بدید و دیگه نیازی به سر و کله زدن با پروسسور ها رو ندارید و فقط باید کار با پورت ها و برنامه نویسی بلد باشید. این MOTHER BOARD درون کامپیوتر.
ولی خوب دنیا به همه چیز نیاز داره. نمیشه بدون متخصص پروسسور سر کرد!! میشه ؟!
از این رو باید کسانی وجود داشته باشن تا قدرت تجزیه و تحلیل و طراحی و ساخت پروسسور ها رو داشته باشن.

بگذریم.
روند تکامل میکروپروسسور ها با ارائه تراشه های 32 بیتی 80386 و 80486 ادامه یافت.

میکروکنترلر :
میکروکنترلر ها سخت افزار کاملتر و اضافی تر از میکروپروسسور ها دارند. یک میکروکنترلر در داخل خود شامل بخش های مختلفی هستش که یکی از اونها بخش میکروپروسسور هستش. سایر بخش ها معمولاً شامل تایمر ، حافظه داده ، حافظه کد ، واحد سریال ، واحد کنترل وقفه ، واسطه های ورودی و خروجی و ... میباشد.
MCS_48 :
اوّلین میکروکنترلر دنیا توسط شرکت اینتل در سال 1976 تحت شماره 8748 از خانواده میکروکنترلرهای MCS_48 به دنیا معرفی شد. این میکروکنترلر دارای میکروپروسسور ، یک کیلو بایت حافظه EPROM ، و 64 کیلو بایت حافظه RAM و 26 پایه ورودی و خروجی و یک تایمر 8 بیتی بود که بیش از 17000 ترانزیستور داشت.
MCS_51 :
در سال 1980 میکروکنترلر 8051 از خانواده MCS_51 توسط شرکت اینتل عرضه شد که قدرت پیچیدگی و پیشرفت چشمگیری در مقایسه با انواع قبلی داشت. این میکرو بیش از 60000 ترانزیستور داشت که دارای میکروپروسسور و 4 کیلو بایت حافظه ROM و 128 بایت حافظه RAM و 32 پایه ورودی و خروجی و یک پورت سریال و دو تایمر 16 بیتی بر روی یک تراشه قرار داشت. این خانواده بعداً توسط شرکت های دیگه ای نظیر زیمنس ، فیلیپس ، اتمل و ... تحت لیسانس اینتل تولید شد.
امروزه میکروکنترلر های فراوانی توسط شرکت های مختلف تولید میشن که میشه به AVR ( شرکت اتمل ) و PIC ( شرکت میکروچیپ ) اشاره کرد.

جلسه بعد انواع حافظه ها و معماری پروسسور ها و تاریخچه ARM رو بررسی خواهیم کرد.
موفق باشید.
 

Pro.Eng

متخصص plc
کاربر ممتاز
سلام.
بابت تأخیر معذرت. میریم سراغ بقیه مطالب :
انواع حافظه ها :
حافظه ها وظیفه ذخیره سازی اطلاعات رو بر عهده دارند و به دو دسته کلی حافظه های فرّار و غیر فرّار تقسیم میشن. انواع حافظه های غیر فرّار به شرح زیر هستش :
ROM یا Read Only Memory : اطلاعات نوشته شده در این نوع حافظه ها به طور معمول در طی پروسه تولید انجام میشه. این اطلاعات در این نوع حافظه قابل پاک شدن نمی باشند و تنها میشه اونها رو از حافظه خواند.
PROM یا Programmable ROM : این حافظه زیر مجموعه ای از تراشه های ROM هستش که به صورت خالی تولید میشن و توسط پروگرامر های مخصوص به خود میشه اطلاعات رو در اونها ذخیره کرد. اطلاعات نوشته شده قابل پاک کردن نمیباشد.
EPROM یا Erasable PROM : این حافظه زیر مجموعه ای از تراشه های PROM هستش که میشه اطلاعات رو توسط پروگرامر های مخصوص به خود اونها ذخیره کرد. اطلاعات نوشته شده رو میشه توسط تابش امواج ماوراء بنفش پیک کرد و در حدود 1000 بار میشه عمل پاک کردن رو انجام داد.
EEPROM یا Electrically EPROM : در این حافظه ها میشه اطلاعات رو به صورت بایت به بایت در اون نوشت و یا خواند.پاک کردن اطلاعات در این نوع حافظه ها توسط عبور جریان الکتریکی قابل انجام هستش. سرعت خواندن اطلاعات در این حافظه ها سریع هستش امّا سرعت نوشتن اطلاعات در این حافظه ها کند تر هستش و در حدود 10000 بار میشه عمل نوشتن و پاک کردن اطلاعات رو انجام داد.
FLASH : تفاوت این حافظه با EEPROM در نحوه نوشتن اطلاعات هستش به طوری که در تراشه های FLASH پاک کردن یا نوشتن اطلاعات به صورت بلوک های 64 تا 256 کیلو بایتی و با سرعت بیشتری قابل انجام است. همچنین سرعت حافظه FLASH در مقایسه با EEPROM بیشتر هستش و تعداد دفعات پاک کردن و نوشتن در آن بیشتر است.
NVRAM یا Non-Vilatile Random Access Memory : این حافظه ها RAM هایی هستند با باطری های پشتیبان یا Backup Battery که باعث میشود که این اطلاعات نوشته شده در حافظه با قطع جریان برق پاک نشود. این حافظه ها هم در خواندن و هم در نوشتن سریع میباشند.
انواع حافظه های فرّار عبارتند از :
SRAM یا Static Random Access Memory : در این حافظه ها میشه به صورت الکتریکی اطلاعات رو نوشت و به صورت الکتریکی اطلاعات رو از حافظه خواند. این حافظه ها هم در خواندن و هم در نوشتن بسیار سریع هستند. تا زمانی که تغذیه قطع نشده باشد اطلاعات را در خود نگه میدارند.
DRAM یا Dynamic Random Access Memory : در این حافظه ها میشه به صورت الکتریکی اطلاعات رو نوشت و به صورت الکتریکی اطلاعات رو از حافظه خواند. این حافظه ها هم در خواندن و هم در نوشتن سریع میباشند و تا زمانی که تغذیه قطع نشده باشد اطلاعات را در خود نگه میدارند. بعد از نوشتن اطلاعات در این حافظه ها جهت ماندگاری آن نیاز به نوسازی میباشد. حجم حافظه ها در انواع دینامیک بیشتر از استاتیک میباشد. همچنین حافظه های موجود در کامپیوترهای خانگی از این نوع میباشند.
میکروپروسسور ها از دو معماری متفاوت به منظور دسترسی به حافظه استفاده میکنند.
معماری Von-Neumann :
در این معماری که آرایش آن در شکل زیر مشخص شده ، میکروپروسسور از گذرگاه آدرس و داده مشترک به منظور دسترسی به حافظه کد و حافظه داده استفاده میکند.

1.jpg
مزیت این معماری در سادگی و اقتصادی بودن آن است ، امّا با اجرای دستورالعملی که با حافظه داده در ارتباط است ، واکشی دستور بعد تا کامل شدن نوشتن یا خواندن از حافظه داده متوقف میشود و به این ترتیب سرعت اجرای دستورات کاهش می یابد.
معماری Harvard :
در این معماری که آرایش اون در شکل زیر دیده میشه ، میکروپروسسور از دو گذرگاه آدرس و داده مجزا به منظور دسترسی به حافظه کد و حافظه داده استفاده میکند.
2.jpg
مزیت این معماری این است که همزمان با اجرای دستوراتی که به حافظه داده در ارتباط هستند ، پردازنده میتواند به واکشی دستور بعدی بپردازد. این موضوع به افزایش کارایی و سرعت پردازش سیستم منتهی میشود.
میکروپروسسور ها را میتوان در نحوه کد کردن دستور العمل ها به دو دسته تقسیم کرد :
معماری CISC :
معماری CISC یا Complex Instruction Set Computer دارای تعداد زیادی دستور العمل پیچیده و متفاوت میباشد. فلسفه این موضوع این است که سخت افزار همواره از نرم افزار سریعتر است و در این معماری تأکید بر سخت افزار میباشد. به خاطر همین از تعداد ترانزیستور بیشتری در طراحی آن استفاده میشود و باعث افزایش قیمت آنها میشود.
طول دستور العمل ها در این معماری متفاوت هستش و این باعث کاهش فضای حافظه کد مورد استفاده برنامه قرار میگیره.نخستین هدف در این معماری کامل کردن یک عمل تا حد امکان در رشته های کم اسمبلی میباشد.
به دلیل پیچیدگی دستورالعمل ها اجرای آنها در چندین کلاک انجام میشود. که باعث کاهش سرعت میکروپروسسور میشود و به ندرت از روش خط لوله یا Pipeline استفاده میشود.
در این معماری نوشتن برنامه های اسمبلی ساده تر می باشد و اصولاً از تعداد رجیستر ها و حافظه نهان یا Cash کمتری استفاده میشود. در این میان میشه به Intel 8086 و خانواده 8051 در این معماری اشاره کرد.
معماری RISC :
در معماری RISC یا Reduced Instruction Set Computer از تعداد دستورالعمل ها و پیچیدگی کد کردن آنها کاهش یافته است. با ساده شدن سخت افزار ، RISC بار بزرگتری بر روی نرم افزار قرار میدهد و بار از روی سخت افزار کاهش میدهد و این موجب افزایش سرعت میکروپروسسور میشود و در این معماری تأکید بر نرم افزار میباشد.
طول دستور العمل ها در این معماری ثابت میباشد و به دلیل سادگی دستورالعمل ها اجرای آنها در یک کلاک انجام میشود و باعث استفاده از روش خط لوله یا Pipeline میشود. نخستین هدف در این معماری افزایش سرعت میکروپروسسور میباشد.
در معماری RISC نوشتن برنامه های اسمبلی مشکل تر است که این دلیلی برای استفاده از زبان های سطح بالا مثل C به جای اسمبلی میباشد. بخش قابل توجهی از فضای تراشه به عنوان رجیستر ها و حافظه نهان یا CASH مورد استفاده قرار میگیرد. در این میان میشه به خانواده های AVR و PIC در این معماری اشاره کرد.
عده زیادی ادعا میکنند که معماری RISC ارزان تر و سریع تر هستش. پس ساختار غالب آینده RISC خواهد بود. امّا عده ای دیگر معتقدند به دلیل حجم زیاد نرم افزار معماری RISC نمی تواند ساختار اصلی آینده باشد.
اگرچه معماری RISC از سال 1980 در بازار تجاری بوده است امّا نتوانسته معماری CISC را از صحنه تجاری خارج کند.
بسیاری از تراشه های RISC کنونی تعداد زیادی از دستورالعمل های تراشه های CISC قدیمی را پشتیبانی میکنند. پس میشه گفت RISC و CISC با هم رشد خواهند کرد.
 

Pro.Eng

متخصص plc
کاربر ممتاز
آشنایی با پردازنده های ARM :
امروزه به کار گیری پردازنده های 32 بیتی در سیستم های توسعه یافته بسیار رایج شده. همونطور که میدونید دیگه تقریباً توی تمام وسایل الکترونیکی جدید از پردازنده های 32 بیتی به بالا استفاده میشه. یعنی یا 32 بیتی یا 64 بیتی و ....
برنامه نویسی این تراشه ها به طور معمول توسط زبان های سطح بالا مثل C انجام میشه. در بعضی از موارد میشه سیستم عامل های بلادرنگ یا RTOS مثل Linux و ... رو به عنوان هسته نرم افزاری جهت مدیریت برنامه کاربر در این تراشه ها مورد استفاده قرار داد.
از معروف ترین میکروپروسسور های 32 بیتی میشه به میکروپروسسور های ARM اشاره کرد. به طوری که بیشتر تولید کنندگان بزرگ میکروکنترلر ها ، این خانواده از تراشه ها رو در لیست محصولات خودشون قرار دادن و امروزه هشتاد درصد پردازنده ها 32 بیتی تولید شده متعلق به این خانواده یعنی خانواده ARM هستند.
تاریخچه :
سابقه ی ARM به سال 1983 بر میگرده. هنگامی که یک شرکت به نام Acron به پردازنده های 16 بیتی برای محصولات جدید خودش احتیاج داشت. اونها به سرعت پی بردن که در حال حاضر یک پردازنده تجاری نمیتونه خواسته اونها رو برطرف کنه. چون پردازنده ها کندتر از حافظه های استاندارد و قطعات موجود در اون زمان بودن.
در اون زمان پردازنده ها دارای دستورات پیچیده ای بودن و برای اجرا به صدها کلاک نیاز داشتن. پس مهندسان شرکت Acron تصمیم به طراحی پردازنده مورد نیاز خودشون گرفتند.
نسخه ARMV1 :
در سال 1985 نخستین پردازنده RISC که 26 بیتی بود با نام ARM یا Acron RISC Machine توسط شرکت Acron طراحی شد. در این پردازنده کمتر از 25000 ترانزیستور استفاده شده بود. در سال 1985 تعدا خیلی کمی بود برای یک پردازنده در اون زمان ، امّا کارایی اون قابل مقایسه با Intel 80286 بود.از این پردازنده به نام ARMV1 یاد میشه و قابلیت پشتیبانی از ضرب کردن و کمک پردازنده یا Coprocessor را نداشت.
نسخه ARMV2 :
در سال 1987 نسخه دوم پردازنده ARM با نام ARMV2 ارائه شد که قابلیت ضرب و کمک پردازنده به اون اضافه شده بود ، دارای گذرگاه داده 32 بیتی و گذرگاه آدرس 16 بیتی و 16 رجیستر 32 بیتی بود و این پردازنده از 30000 ترانزیستور ساخته شده بود و بعد از اون یک نسخه دیگه به نام ARMV2a ارائه شد که به اون دستورات جابجایی مقدار رجیستر ها با محلی از حافظه ( swp ، swpb ) به مجموعه دستورات ARM اضافه شد.
نسخه ARMV3 :
در سال 1990 شرکت Apple به ARM پیوست و شرکت Advanced RISC Machine یا ARM توسط این شرکت ها تأسیس شد. این شرکت هیچ تراشه ای تولید نمیکند و تقریباً تمام درآمد اون از فروش حق امتیاز استفاده از پردازنده های ARM به شرکت های تولید کننده تراشه هستش.
در این زمان نسخه سوم پردازنده ARM با نام ARMV3 و معماری 32 بیتی ارائه شد. در قبل از این نسل اطلاعات وضعیت برنامه در رجیستر R15 بود و در این نسل یک رجیستر به نام رجیستر وضعیت جاری برنامه یا CPSR و چند رجیستر دیگر به نام رجیستر ذخیره وضعیت برنامه ( SPSR ) به اون اضافه شد.
وقتی که یک رخداد روی میده مد کاری ( شرایط کاری ) پردازنده تغییر میکنه. محتویات رجیستر CPSR در رجیستر SPSR اون مدکاری ذخیره میشه و برای بازگشت از اون رخداد مقدار رجیستر CPSR به مقدار رجیستر SPSR اون مدکاری بازیابی میشه. برای اونکه بشه به رجیستر های CPSR و SPSR دسترسی داشت دو دستور MRS و MSR به مجموعه دستورات ARM اضافه شد.
در این نسخه همچنین دو مد کاری جدید به نام های Undefiend و Abort به ARM اضافه شد. که اوّلی در صورتی که دستور خوانده شده از حافظه قابل دیکود نباشد رخ می دهد و دومی در صورتی که دستورات از ناحیه غیر معتبر حافظه فراخوانی شود رخ میدهد.
نسخه ARMV4 :
در سال 1996 نسخه چهارم با نام ARMV4 ارائه شد. در این نسل دستورات جابجایی داده بین رجیستر ها و حافظه از نوع دو بایتی و تک بایتی به مجموعه دستورات ARM اضافه شد. در این نسخه یک مد کاری جدید دیگر به نام System به ARM اضافه شد. بعد از آن نسخه ARMV4T ارائه شد ، که همان نسخه قبلی بود. امّا به اون دستورات فشرده 16 بیتی Thumb اضافه شده بود. با استفاده از این روش حجم کد مورد نیاز برنامه در مقایسه با دستورات 32 بیتی به میزان 40 درصد کاهش می یابد و در مقابل از کارایی کد ها کمی کاسته میشود.
نسخه ARMV5 :
در سال 1999 نسخه پنجم با نام ARMV5T ارائه شد. که دستوراتی مثل CLZ و BKPT به مجموعه دستورات ARM و دستور BKPT به مجموعه درستورات Thumb اضافه شد و امکان بیشتری برای کمک پردازنده در نظر گرفته شد. سپس در نسخه ARMV5TE دستورالعمل هایی اضافه شد برای افزایش کارایی پردازنده و پشتیبانی از پردازش سیگنال دیجیتال یا DSP. در نسخه ARMV5TEJ با اضافه شدن دستوراتی توانایی پشتیبانی از معماری Jazelle به ARM اضافه شد. Jazelle پیاده سازی سخت افزاری از java هستش که به پردازنده های ARM این امکان را میدهد که بتوان بایت کد های جاوا را مستقیم اجرا کرد.
نسخه ARMV6 :
در سال 2001 نسخه ششم با نام ARMV6 ارائه شد. که دستورات بسیاری به مجموعه دستورات ARM و Thumb اضافه شد. این نسخه از تمام ویژگی های ARMV5TEJ پشتیبانی میکرد.
در برخی از نرم افزار ها که برای پردازش صدا و تصویر هستند ، احتیاج به پردازش 32 بیتی نیست و به 8 بیت یا 16 بیت پردازش نیاز دارند. که در این نسخه یک تکنولوژی جدید به نام SIMD یا Single Instruction Multiple Data به پردازنده ARM اضافه شد که این امکان را به پردازنده می دهد که بتونه پردازش خودش رو به صورت 8 بیتی یا 16 بیتی بر روی رجیستر ها انجام بده.
به طور مثال دستور UADD8 R0,R1,R2 بایت پایینی R1 و R2 را با هم جمع میکند و در بایت پایین R0 قرار می دهد و در صورتی که بیت نقلی یا CARRY ایجاد شود بیت GE[0] در رجیستر CPSR را یک میکند بقیه بایت ها را هم به طور موازی به همین صورت جمع میکند. در شکل زیر این مسئله را مشاهده میکنید :


مشاهده پیوست 242378
رجیستر CPSR در هر نسخه بیت های کنترلی جدیدی به اون اضافه میشه. در شکل زیر رجیستر CPSR را در نسخه ARMV6 مشاهده میکنید :

مشاهده پیوست 242379
بیت های V - C - Z - N - Mode[4:0] - I - F در همه ی نسخه های اوّلیه وجود داشت. بیت T از نسخه ARMV4T به اون اضافه شد. بیت Q از نسخه ARMV5TE و بیت J که برای حات Jazelle هستش از نسخه ARMV5TEJ به اون اضافه شد و بیت های A - E - GE[3:0] در نسخه ARMV6 به اون اضافه شد.
در این نسخه برای افزایش کارایی مجموعه دستورات Thumb یک سری مجموعه درستورات جدید به نام Thumb-2 به اون اضافه شد ، که دستورات 32 بیتی اون میتونه به دستورات16 بیتی Thumb در برنامه آمیخته میشود. دستورات 32 بیتی Thumb-2 مقدار حافظه ای که مصرف میکند تقریباً به اندازه دستورات Thumb ولی با کارایی های دستورالعمل های ARM میباشد. از این نسخه به نام ARMV6-M یاد میشود. در شکل زیر نحوه قرار گرفتن کد های دستور العمل در حافظه کد رو در حالت های مختلف مشاهده میکنید :
 
آخرین ویرایش:

Pro.Eng

متخصص plc
کاربر ممتاز
نسخه ARMV7 :
در سال 2004 نسخه هفتم با نام های ARMV7-A و ARMV7-R و ARMV7-M ارائه شد.
در نسخه ARMV7-A تکنولوژی پیشرفته SIMD با نام NEON به این پردازنده افزوده شد که در کاربردهایی مثل پردازش تصاویر سه بعدی ، پردازش تصویر و فشرده سازی صدا و ... به کار میرود. در این تکنولوژی 16 رجیستر 128 بیتی Q0 تا Q15 و 32 رجیستر 64 بیتی D0 تا D31 به ساختار پردازنده اضافه شد.
به طور مثال با اجرای دستور VADD.I16 Q0,Q1,Q2 دو بایت پایین Q1 و Q2 را با هم جمع میکند و در دو بایت پایین Q0 قرار می دهد و دو بایت های دیگر را هم به طور موازی به همین صورت جمع میکند. در شکل زیر این قضیه رو مشاهده میکنید :
6.jpg
در نسخه ARMV7-R سخت افزار تقسیم کردن به پردازنده اضافه شده است.
در نسخه ARMV7-M علاوه بر سخت افزار تقسیم کردن از دستورات Thumb و Thumb2 پشتیبانی میشود. این پردازنده فقط شامل دو مد کاری Thread Mode و Handler Mode میباشد. فقط شامل 13 رجیستر همه منظوره R0 تا R12 و SP-Process و SP-main و LR یا R4 و PC یا R15 و به جای CPSR که در نسخه های قبلی بوده رجیستر های xPSR جایگزین شده است که در شکل زیر این رجیستر ها رو مشاهده میکنید :
7.jpg
رجیستر های xPSR به سه رجیستر APSR یا Application PSR و IPSR یا Interrupt PSR و EPSR یا Execution PSR تقسیم میشوند. که این سه رجیستر رو در شکل زیر مشاهده میکنید :

نسخه های ARMV1 و ARMV2 و ARMV3 دیگه توی طراحی های امروزی استفاده نمیشن و منسوخ شدن. بین نسخه های یاد شده از ARM تفاوت های بسیار دیگه ای هم وجود داره که در اینجا به مختصری از اونها اشاره کردیم.
///
و امّا در جلسه بعد خواهید آموخت :
ARM7 - ARM9 - ARM10 - ARM11 - Cortex
آرایش حافظه در پردازنده های ARM
سیر تکاملی خط لوله یا Pipeline در ARM
گذرگاه های مورد استفاده در ARM
///
در پناه حق. موفق و مؤید باشید.
 

Pro.Eng

متخصص plc
کاربر ممتاز
سلام علیکم.
--
خانواده های پردازنده ARM :
خانواده های مختلفی از پردازنده های ARM با امکانات متفاوت وجود دارند که در طراحی های امروزی استفاده میشن. در زیر برخی از اونها به همراه مشخصات مهم اونها معرفی میشن.
خانواده ARM7 :
ARM7TDMI : یکی از محبوب ترین پردازنده های 32 بیتی با معماری RISC در جهان هستش. این پردازنده از معماری نسخه ARMV4T پشتیبانی میکنه. مجهز به سه مرحله خط لوله و مبتنی بر Von-Neumann هستش. توان مصرفی بسیار کم و سایز کوچک از مشخصات دیگه ی این پردازنده هستش.
ARM7TDMI-S : این پردازنده نسخه قابل سنتز پردازنده ARM7TDMI هستش که میشه معماری اون رو توسط زبان های توصیف سخت افزاری مثل Verilog و VHDL پیاده سازی کرد.
ARM710T : این پردازنده همون ARM7TDMI هستش با این تفاوت که دارای 8 کیلو بایت حافظه نهان یا Cache و MMU و بافر نوشتن هستش. همچنین میشه سیستم عامل هایی مثل Windows CE ، Linux و Symbian OS رو روی اون اجرا کرد.
ARM720T : این پردازنده همون ARM7TDMI-S هستش با این تفاوت که دارای 8 کیلو بایت Cache و MMU و بافر نوشتن هستش.
ARM740T : این پردازنده از معماری نسخه ARMV4T پشتیبانی میکنه. مجهز به سه خط لوله و مبتنی بر معماری VN هستش. دارای 8 کیلو بایت حافظه Cache و بافر نوشتن و MPU هستش.
ARM7EJ-S : این پردازنده از معماری نسخه ARMV5TEJ پشتیبانی میکنه. مجهز به 5 مرحله خط لوله و مبتنی بر معماری VN هستش. از تکنولوژی Jazelle و دستورات DSP پشتیبانی میکنه.
خانواده ARM9 :
ARM9TDMI : این پردازنده از معماری ARMV4T پشتیبانی میکنه. مجهز به 5 مرحله خط لوله و مبتنی بر معماری Harvard هستش.
ARM940T : این پردازنده از معماری نسخه ARMV4T پشتیبانی میکنه. مجهز به 5 خط لوله و مبتنی بر معماری Harvard هستش. دارای 4 کیلو بایت حافظه Cache برای دستورالعمل و 4 کیلو بایت حافظه Cache برای داده و دارای MPU هستش.
ARM922T : این پردازنده از معماری نسخه ARMV4T پشتیبانی میکنه.مجهز به 5 مرحله خط لوله و مبتنی بر معماری Harvard هستش. دارای 8 کیلو بایت حافظه Cache برای دستور العمل و 8 کیلو بایت حافظه Cache برای داده و دارای MMU هستش.
چند مدل دیگه از ARM9 هم هستش که ما اینجا به اونها اشاره نمیکنیم. به دلیل اینکه شباهت زیادی به مدل های دیگه این خانواده دارن.
خانواده ARM10 :
ARM1020E : این پردازنده از معماری نسخه ARMV5TE پشتیبانی میکنه. مجهز به شش مرحله خط لوله هستش و مبتنی بر معماری Harvard هستش.دارای 32 کیلو بایت حافظه Cache برای دستور العمل و 32 کیلو بایت حافظه Cache برای داده و دارای MMU هستش.
ARM10 هم مدل های دیگه ای داره که شبیه همین مدل هستند.
خانواده ARM11 :
ARM1136J-S/ARM1136JF-S : این پردازنده از معماری نسخه ARMV6 پشتیبانی میکنه. مجهز به هشت مرحله خط لوله هستش و مبتنی بر معماری Harvard هستش. میتونه تا 64 کیلو بایت حافظه Cache برای دستور العمل و 64 کیلو بایت حافظه Cache برای داده داشته باشه و دارای MMU هستش.
ARM11 مدل های دیگه ای هم داره.
خانواده Cortex :
Cortex-M0 : این پردازنده از معماری ARMV6-M پشتیبانی میکنه و مجهز به 3 مرحله خط لوله هستش و مبتنی بر معماری Harvard هستش.میتونه از دستورات Thumb2 هم پشتیبانی کنه.
از مدل های دیگه Cortex میشه به Cortex-M1 و Cortex-M3 و Cortex-A5/Cortex-A8/Cortex-A9 و Cortex-R4/Cortex-R4F اشاره کرد که هر کدوم مشخصات خاص خودشون رو دارند.

آرایش حافظه در پردازنده های ARM :
حافظه مورد استفاده در پردازنده های ARM مجموعه ای از بایت ها هستش. که به صورت تک بایتی ، دو بایتی و چهار بایتی قابل دسترس هستند و به دو شکل مورد استفاده قرار میگیرن.
Little-Endian و Big-Endian.
Little-Endian : در این حالت کم ارزش ترین بایت اطلاعات در کمترین آدرس قرار میگیره. آدرس عدد 4 بایتی با آدرس کم ارزش ترین بایت تعیین میشه. به صورت شکل زیر :

Big-Endian : در این حالت کم ارزش ترین بایت اطلاعات در بیشترین آدرس قرار میگیرد. آدرس عدد 4 بایتی با آدرس پر ارزش ترین بایت تعیین میشه. به صورت شکل زیر :
 

c-ronaldo

عضو جدید
باعرض سلام
کسی از دوستان نیست که پروژه ساعت دیجیتال قابل تنظیم با زبان سی با ای سی
ds1307
داشته باشه
لطفا کمک کنید
 

blue Beryl

عضو جدید
سلام..
بنظرتون کدوم خانواده از arm برای یادگیری بهتره؟ از لحاظ سرعت و کامل بودن نسبت به بقیه؟
تشکر
 

Pro.Eng

متخصص plc
کاربر ممتاز
سلام..
بنظرتون کدوم خانواده از arm برای یادگیری بهتره؟ از لحاظ سرعت و کامل بودن نسبت به بقیه؟
تشکر
سلام. این تاپیک به علّت اینکه درگیر زندگی و ... هستم تعطیل شده ولی خب در اسرع وقت اگر وقت خالی داشتم حتماً دوباره راه اندازیش میکنم. چونکه اهدافی که داشتم چیز خوبی از آب در میامد. بگذریم.
والا بهتر بودن بستگی به نیاز و کاربردی که شما لازم دارید ، داره. از لحاظ سرعت خب مسلماً هرچی تکنولوژی جلو تر میره و پیشرفت میکنه سرعت بیشتر میشه.آرم های شرکت ST یا NXP (LPC) گزینه ی خوبی هستند. البته آرم های ATMEL هم خوبه. ولی خب ST و NXP بازار بیشتری داره.
و اما در مورد کامل بودن هم باز بستگی به نیاز شما داره. به اینکه سیستمی که میخاید طراحی کنید چه ویژگی هایی داره!! باید با توجه به نیاز هاتون پردازنده ی مورد نظر رو انتخاب کنید.
 

Similar threads

بالا