پیش نیاز : دوره آموزشی AVR
دسترسی سریع به بخش های قبلی :
مقدمه
همانطور که در بخش قبلی آموزش به آن اشاره کردیم ، میکروکنترلرهای ARM سری LPC213X ، دارای معماری ARM7TDMI-S هستند. در این بخش می خواهیم معماری این میکروکنترلرها و به طور کلی هر نوع میکروکنترلر ARM ی که دارای معماری ARM7 است را معرفی و تشریح نماییم. در این بخش مفاهیم پایه ای وجود دارد که پیش نیاز مباحث بعدی بوده و در بخش های بعدی دیگر توضیح داده نخواهند شد.
معرفی هسته های خانواده ARM7
به طور کلی خانواده ARM7 شامل هسته های پردازشی ARM7TDMI ، ARM7TDMI-S ، ARM720T ، ARM7EJ-S می باشد.
- ARM7TDMI : این هسته ها با حجم کم و مصرف توان پایین هستند که مناسب برای کاربردهای قابل حمل می باشند.
- ARM7TDMI-S : این هسته ورژن قابل سنتز ( synthesizable ) یا کد شده هسته قبلی است که در هر دو زبان Verilog و VHDL موجود بوده و برای شرکت هایی که از کد برای تولید تراشه های خود استفاده می کنند بسیار راحت تر است.
توضیح اینکه معمولا شرکت ها ترجیح می دهند برای کاهش زمان تولید به مصرف و افزایش انعطاف پذیری محصولات خود به جای پیاده سازی آنها در سطح ترانزیستوری ، از کدهای توصیف سخت افزاری و پیاده سازی آنها روی ماکروسل های آماده ( همانند FPGA ) استفاده نمایند.
نتیجه : دو هسته ARM7TDMI و ARM7TDMI-S از نظر عملکرد مداری تفاوتی با یکدیگر ندارند و فقط نوع توصیف و پیاده سازی آنها با یکدیگر تفاوت دارد.
- ARM720T : همان هسته قبلی به همراه ۸Kb حافظه Cashe و واحد مدیریت حافظهMMU ( مخفف Memory Management Unit ) به منظور نصب سیستم عامل های ساده ای همچون WinCE ، Symbian می باشد.
- ARM7EJ-S : این هسته تمام مزیت های هسته ARM7TDMI-S نظیر حجم کم ، مصرف توان پایین و قابل سنتز بودن را دارد ضمن اینکه قابلیت های تکنولوژی Jazlle مخصوص کاربردهای Jave و مجموعه بسط های DSP مخصوص کارهای پردازش سیگنال به آن اضافه شده است.
معرفی هسته پردازشی ARM7TDMI
هسته ARM7TDMI بر پایه معماری سنتی Von Neuman با پهنای باس ۳۲ بیت برای دیتا و دستور العمل می باشند. دیتای ذخیره شده در حافظه میتواند ۸ ، ۱۶ یا ۳۲ بیتی باشد. علت نامگذاری این معماری این است که هسته پردازشی این میکروکنترلرها علاوه بر ARM7 بودن ، دارای ویژگی های دیگری نیز می باشد که در شکل زیر آورده شده است :
در این معماری سه مرحله Pipelining به صورت Fetch ، Decode و Execute وجود دارد. دستورات میکروکنترلر از یک حافظه Flash خط به خط اجرا می شود. این دستورات که به صورت ARM V4T می باشند ، میتوانند به یکی از دو صورت ARM و Thumb اجرا شوند. در مد ARM دستورات به صورت ۳۲ بیتی خواهند بود که حداکثر قابلیت ها با کمترین تعداد دستور العمل را محقق می سازد. در مد Thumb دستورات به صورت ۱۶ بیتی و ساده تر می باشند که در عوض این سادگی ، توان مصرفی آی سی و حجم کدهای حافظه کاهش می یابد.
نکته : در این آموزش ما فقط در مد ARM کار می کنیم زیرا در مد THUMB کلیه دستورات و داده ها ۱۶ بیتی می شوند و تمامی عملکرد میکروکنترلر ۱۶ بیتی می گردد.
واحد های اصلی یک میکروکنترلر ARM7
در یک میکروکنترلر که بر مبنای معماری ARM7 طراحی شده است ، یک سری واحد های اصلی وجود دارد که با معماری ARM7 در کنار هم قرار گرفته اند. این واحد های اصلی در همه میکروکنترلرهای ARM7 وجود دارد. اما واحدهای جانبی دیگری نیز در کنار این واحدهای اصلی وجود دارند که در میکروکنترلرهای مختلف متفاوت هستند. این واحد های اصلی عبارتند از :
- CPU : هسته اصلی پردازشی که خود شامل ۳۱ رجیستر همه منظوره ۳۲ بیتی ( Register Bank ) ، واحد ALU ، واحد کنترل و … می باشد. شکل زیر اجزای داخلی هسته ARM7 را به صورت بلوک دیاگرام نشان می دهد.
- واحد JTAG : در کنار هسته اصلی یک رابط سریال JTAG به منظور عیب یابی سیستم تعبیه شده است.
- واحد حافظه Memory : که شامل حافظه SRAM برای ذخیره موقت داده ها و حافظه Flash که برای ذخیره دائمی برنامه و داده مورد استفاده قرار می گیرد.
- واحد AMBA یا باس بهبود یافته : در معماری هسته های ARM7 از معماری باس بهبود یافته یا AMBA ( مخفف Advanced Microcontroller Bus Architecture ) استفاده می شود. در حقیقت AMBA یک باس استاندارد است که مدیریت اتصالات ماژول های مختلف درون سیستم را بر عهده دارد. در این معماری سه Bus با سرعت های مختلف به صورت زیر وجود دارد :
- باس ASB ( مخفف Advanced System Bus )
- باس AHB ( مخفف Advanced High-Performance Bus )
- باس APB ( مخفف Advanced Peripheral Bus )
دو باس AHB و ASB به منظور اتصال ماژول های سرعت بالا نظیر CPU و Memory به کار می رود. ماژول های سرعت پایین تر به باس APB متصل می شوند. شکل زیر این موضوع را نشان می دهد.
همانطور که در شکل فوق مشاهده می کنید ، هسته اصلی ( CPU ) و کلیه ماژول های سرعت بالا نظیر Memory به باس پرسرعت AHB یا ASB متصل می شود. واحد های جانبی دیگر میکروکنترلر نظیر واحد ورودی/خروجی ، تایمر ، UART و … همگی به باس کم سرعت APB متصل می شوند. واحد APB Bridge یک تقسیم کننده می باشد که میتواند با ضرایب قابل برنامه ریزی ۱ ، ۲ و ۴ فرکانس AHB را تقسیم کند.
*برای اطلاعات بیشتر در مورد معماری ARM7TDMI میتوانید فایل pdf زیر را دریافت و مطالعه نمایید :
معرفی ویژگی های میکروکنترلرهای سری LPC213X
- یک میکروکنترلر ARM7TDMI به صورت ۳۲/۱۶ بیتی در بسته بندی کوچک ۶۴ پایه
- دارای حافظه SRAM داخلی ۸/۱۶/۳۲ کیلوبایت
- دارای حافظه FLASH داخلی ۳۲/۶۴/۱۲۸/۲۵۶/۵۱۲ کیلوبایت
- دارای امکان ذخیره سریع در حافظه به صورت ۱۲۸ بیتی در فرکانس ۶۰ مگاهرتز
- توانایی پروگرام شدن به دو صورت ISP ( درون سیستم ) و IAP ( درون برنامه )
- توانایی پاک شدن سریع کل حافظه یا قسمتی از آن در ۴۰۰ میلی ثانیه
- توانایی پروگرام شدن ۲۵۶ بایت از حافظه ظرف مدت ۱ میلی ثانیه
- دارای رابط EMbedded ICE و Embedded Trace که به منظور عیب یابی برنامه به صورت آنلاین و توسط رابط JTAG انجام می گیرد.
- یک واحد مبدل A/D برای LPC2131/2 و دو واحد مبدل A/D برای LPC2134/6/8 که هریک ۸ کاناله و ۱۰ بیتی هستند و زمان تبدیل کمتر از ۲٫۴۴ میکروثانیه بر کانال می باشد.
- یک واحد مبدل ۱۰ بیتی D/A که میتواند ولتاژهای مختلف آنالوگ را تولید کند ( در LPC2131 این واحد وجود ندارد )
- دو واحد تایمر/کانتر ۳۲ بیتی با چهار پایه Capture ( تسخیر ) و چهار پایه Compare ( مقایسه )
- واحد PWM با ۶ خروجی
- واحد تایمر Watchdog
- واحد RTC با مصرف توان پایین
- دارای واحدهای سریال UART ، I2C ، SPI و SSP
- دارای واحد کنترل وقفه برداری و با اولویت بندی قابل تنظیم و آدرس برداری
- دارای ۴۷ پایه ورودی/خروجی که قابلیت تحمل ۵ ولت را دارند
- دارای ۹ پایه به منظور وقفه خارجی به صورت حساس به لبه یا پالس
- دارای حداکثر سرعت کلاک ۶۰ مگاهرتز زمانی که واحد PLL روی حداکثر تنظیم شده باشد
- دارای واحد اسیلاتور داخلی که با اتصال کریستال بین ۱ تا ۳۰ مگاهرتز کار می کند.
- دارای مدهای کاهش توان Idle و Power Down که قابلیت بیدار شدن از این حالت ها توسط وقفه خارجی یا واحد RTC محیا شده است.
- دارای مدارهای داخلی Power On Reset ( ریست در زمان روشن شدن ) و Brown Out Detection ( ریست شدن میکرو در ولتاژ خاص )
- ولتاژ عملکرد بین ۳ تا ۳٫۵ ولت ( ۳٫۳ ولت )
معماری و ساختار میکروکنترلر LPC213X
شکل زیر بلوک دیاگرام این سری از میکروکنترلرهای شرکت NXP را نشان می دهد.
همانطور که در شکل فوق مشاهده می کنید ، هر سه باس AMBA در این میکروکنترلر وجود دارد. به طوری که واحد حافظه ( SRAM و FLASH ) و واحد ورودی/خروجی همه منظوره سریع ( FAST GPIO ) به باس ASB متصل شده اند. واحد کنترل وقفه برداری ( VIC ) نیز به باس AHB و دیگر واحد ها به باس APB متصل شده اند.
نکته : باس ASB و باس AHB دارای سرعت یکسان هستند اما باس APB بسته به ضرایب ۱ ، ۲ یا ۴ میتواند تقسیمی از آن یا خود آن باشد.
نکته : پایه هایی که روی شکل فوق با عدد (۱) کنار آن نشان داده شده است در LPC2131 وجود ندارند.
نکته : پایه هایی که روی شکل فوق با عدد (۲) کنار آن نشان داده شده است در LPC2131 و LPC2132 وجود ندارند.
نکته : پایه های JTAG که در شکل فوق با عدد (۳) کنار آن نشان داده شده است ، با پایه های واحد ورودی/خروجی همه منظوره ( GPIO ) به صورت مشترک قرار دارند.
واحد حافظه
این واحد شامل یک حافظه SRAM و یک حافظه Flash و کنترلر مخصوص هر یک می باشد و میتواند هر دوی آنها همزمان به عنوان حافظه داده و و حافظه برنامه استفاده شوند. حافظه فلش بسته به نوع میکرو یکی از مقادیر ۳۲/۶۴/۱۲۸/۲۵۶/۵۱۲ کیلوبایت و حافظه SRAM یکی از مقادیر ۸/۱۶/۳۲ کیلوبایت می باشد. پروگرام شدن حافظه فلش از طریق یکی از دوحالت زیر امکان پذیر است :
- توسط رابط JTAG و پروگرامر Jlink
- توسط رابط UART0 و از طریق پورت سریال
واحد حلقه قفل فاز ( PLL )
این واحد که در درون میکروکنترلر قرار دارد ، پالس تولید شده توسط واحد کلاک میکرو را دریافت کرده و فرکانس آن پالس را چند برابر می کند. سپس این پالس را که چند برابر فرکانس کلاک ( بین ۲ تا ۵ برابر ) است در اختیار CPU و واحدهای جانبی دیگر قرار می دهد. با افزایش فرکانس ، سرعت اجرای دستورات نیز افزایش می یابد. همچنین این واحد امکان مدیریت فرکانس کلاک در زمان اجرای برنامه را می دهد. به طوری که با کاهش ضریب چند برابر شدن کلاک ، توان مصرفی توسط آی سی به طرز چشمگیری کاهش می یابد.
واحد SSP
SSP که مخفف Synchronous Serial Port می باشد ، یک پروتکل ارتباطی سریال همانند SPI می باشد که در کاربردهای صنعتی میان یک Master و یک Slave میتواند دیتا را به صورت سنکرون و با سرعت بالا جابجا نماید. این پروتکل معروف برای ارتباط میکرو با سنسورهای صنعتی ، بر اساس استاندارد RS422 عمل می کند که خاصیت طولانی بودن مسیر انتقال را به پروتکل SPI به ارمغان می آورد. شکل زیر نحوه ارتباط توسط این پروتکل را نشان می دهد.
منابع تولید کلاک در LPC213X
- منبع کلاک خارجی : اتصال کلاک آماده به پایه XTAL1 و آزاد گذاشتن پایه XTAL2
- کریستال خارجی : اتصال کریستال بین ۱ تا ۳۰ مگاهرتز به همراه دو عدد خازن.
مقایسه تفاوت های کلی بین میکروکنترلرهای AVR و ARM7
- در میکروکنترلرهای AVR ، حافظه EEPROM نیز وجود دارد اما در میکروکنترلرهای ARM7 ، فقط حافظه های SRAM و Flash وجود دارند.
- در میکروکنترلرهای AVR ، پایه ها میتوانند به صورت داخلی PullUp شوند اما در میکروکنترلرهای ARM7 این قابلیت وجود ندارد.
- حداکثر سرعت پردازش در میکروکنترلرهای AVR ، برابر ۱۶ مگاهرتز بود که در میکروکنترلرهای ARM7 به ۶۰ مگاهرتز افزایش یافته است.
- در میکروکنترلرهای AVR یک باس داده و یک باس برنامه وجود داشت ( معماری هاروارد ) اما در میکروکنترلرهای ARM7 معماری سنتی است اما در عوض یک معماری باس بهبود یافته AMBA اضافه شده است.
- منابع کلاک در AVR میتوانست به صورت های مختلف از جمله کریستال داخلی باشد اما در میکروکنترلرهای ARM7 این قابلیت وجود ندارد و فقط میتوان از کریستال خارجی استفاده نمود.
- واحد کنترل وقفه در AVR بسیار ساده بود اما در ARM7 واحد کنترل وقفه برداری ، با قابلیت ها و پیچیدگی های بیشتر وجود دارد.
- در میکروکنترلرهای AVR میتوانستیم به صورت ISP و از طریق رابط SPI یا از طریق رابط JTAG میکروکنترلر را پروگرام کنیم اما در میکروکنترلرهای ARM7 علاوه بر استفاده از رابط JTAG برای پروگرام کردن از رابط سریال UART و به صورت های ISP و IAP استفاده می شود.
- واحد مقایسه کننده آنالوگ به طور کلی در میکروکنترلرهای ARM7 وجود ندارد.
- پروتکل جدید سریال SSP در میکروکنترلرهای ARM7 وجود دارد.
- واحد جدید PLL برای افزایش فرکانس کلاک در میکروکنترلرهای ARM7 وجود دارد.
- در هردو میکروکنترلر AVR و ARM7 از سه خط لوله Pipelining استفاده شده است.
- در میکروکنترلرهای AVR واحد USART وجود داشت که به صورت سنکرون یا آسنکرون عمل می کرد اما در ARM7 فقط آسنکرن وجود دارد.
- تعداد واحد های جانبی نظیر USART و I2C در میکروکنترلرهای AVR حداکثر یک بود اما در میکروکنترلرهای ARM7 تعداد آنها حداکثر دو می باشد.
- در میکروکنترلرهای AVR راه اندازی PWM و RTC جزئی از واحد تایمر/کانتر بود اما در میکروکنترلرهای ARM7 هر یک واحدی جداگانه دارند.
- در میکروکنترلرهای AVR ، حداکثر قدرت واحد تایمر/کانتر یک واحد و آن هم ۱۶ بیتی بود اما در میکروکنترلرهای ARM7 دو واحد ۳۲ بیتی وجود دارد.
- در میکروکنترلرهای AVR واحد تایمر/کانتر دارای مدهای مختلف است اما در میکروکنترلرهای ARM7 فقط یک مد تسخیر و یک مد مقایسه وجود دارد.
- و …
برای ادامه آموزش ARM روی تصویر زیر کلیک کنید.
در صورتی که این مطلب مورد پسندتان بود لایک و اشتراک گذاری فراموش نشود
دیدگاه (2)
سلام. بسیار مطلب جامع و دقیقی بود. حقیقتاً ممنون از مطالب کاملتون. فقط یه سوال کوچک، هسته پردازنده در واقع همون ALU پردازنده میشه؟؟
سلام دوست عزیز ممنون از حسن نظرتون
خیر ALU یکی از واحد های درونی CPU می باشد