اگر با میکروکنترلرها زیاد سر و کار دارید و آنها را پروگرام کرده باشید به احتمال زیاد اسم JTAG را نیز زیاد شنیدهاید، اما چرا؟ چون از JTAG غالبا برای پروگرام و دیباگ تراشههای زیادی از جمله میکروکنترلرها استفاده میشود و افرادی که درگیر پروگرام تراشههای مختلف هستند حتما اسم این پروتکل را شنیدهاند. اما JTAG چیست؟ رابطهای چهار و پنج پین به گونهای طراحی شدهاند که در صورت برآورده شدن شرایطی خاص، چندین تراشه میتوانند به صورت سری همانند شکل زیر به همدیگر وصل شوند و با همین توپولوژی نیز به صورت همزمان چندین تراشهی مختلف مانند میکروکنترلر یا FPGA را پروگرام کنیم.
یکی از عیبهای که بعضی از افراد نسبت به JTAG خرده میگیرند، تعداد پینهای زیاد این پروتکل میباشد. اما در استانداردهایی تعداد پینها به 2 پین تقلیل یافته است که در ادامه به معرفی آن میپردازیم.
به طور عام ما الان JTAG را پروتکلی برای پروگرام و دیباگ کردن تقریبا تمامی تراشهها میشناسیم، تراشههای مانند میکروکنترلرهای ST،AVR و … و همینطور انواع FPGAها و CPLDها. اما ما قصد داریم در این مقاله به طور خاص کمی از تاریخچه و قابلیتهای این پروتکل بگوییم.
تاریخچه
در دهه 1980 میلادی به دنبال راه حلی برای استانداردسازی بردهای چند لایه بودند تا اینکه در نهایت استانداردی مرتبط با این موضوع تحت عنوان JTAG ارائه شد. اما این پروتکل گستردهتر شد و به سمت کاربردهای دیگری رفت که ما در ادامه به این کاربردها اشاره خواهیم کرد.دیباگ
شما با استفاده از پروتکل JTAG میتوانید یک روند تست ایجاد کنید، چون میتوان به تمامی حافظهها و رجیسترها دسترسی داشت، بنابراین حتی در هنگام کار مدار میتوان مقادیری را تغییر داد و سیگنالهایی از مدار که مد نظرمان است را بخوانیم. این مورد هم در پردازندهها و هم در FPGAها و CPLDها صادق است.
به عنوان مثال میتوان به دو شیوه روند تست ایجاد کنید. اما این دو شیوه و روش به چه نحوی عمل میکنند؟
ما میتوانیم برنامه خود را پروگرام کنیم و زمانی که برنامه در حال اجراست حافظهها یا سیگنالهای بخشهای مختلف مدار را در نرمافزاری که با استفاده از پروتکل JTAG با مدار در ارتباط است مانیتور کنیم. روش دیگر این است که ما با استفاده از همین پروتکل JTAG وقتی برنامه در حال اجرا است، مقادیر حافظههای داخلی را میتوانیم تغییر بدهیم و سپس نتیجه تغییرات حاصله را مانیتور کنیم. این موضوع در FPGAها نیز وجود دارد و شما میتوانید با استفاده از نرمافزار chipscope و ipcoreهایی که وجود داد هر دو روند تست بالا را انجام دهید، فقط توجه کنید که در روند تست دوم قرار نیست کد جدیدی درون FPGA سنتز شود بلکه کد سنتز شده همان است و فقط مقادیر بعضی از منابع یا حافظهها تغییر خواهد کرد. (برای درک این موضوع نیاز است که با مفاهیم و چگونگی برنامهریزی FPGAها آشنا باشید)مشخصات الکتریکی
رابط JTAG یک رابط ویژه است که به یک تراشه اضافه میشود یعنی به صورت سختافزاری باید درون تراشه تجهیزاتی برای این پروتکل وجود داشته باشد تا بتوانیم از آن استفاده کنیم. بسته به نسخه JTAG، پینهای دو، چهار یا پنج پین اضافه می شود.
(Daisy-chained JTAG (IEEE 1149.1
پینهای پروتکل jtag
- (TDI (Test Data In
- (TDO (Test Data Out
- (TCK (Test Clock
- (TMS (Test Mode Select
- TRST (Test Reset) optional
(Reduced pin count JTAG (IEEE 1149.7
JTAG با پینهای کاهش یافته تنها شامل دو پین است، یک پین برای کلاک و پینی دیگر برای دیتا میباشد که این مورد بخشی از استاندارد IEEE 1149.7 میباشد.
پینهای پروتکل jtag با پینهای کاهش یافته
- (TMSC (Test Serial Data
- (TCKC (Test Clock