فهرست مطالب:
- مرحله 1: مداری را طراحی کنید که "FPGA" نشان دهنده آن است
- مرحله 2: FPGA را وارد کنید
- مرحله 3: از FPGA تا Arduino
- مرحله 4: از آردوینو تا تراشه DIP روی تخته نان
- مرحله 5: نتیجه گیری
تصویری: آردوینو به عنوان یک تخته نان ارزان FPGA: 5 مرحله (همراه با تصاویر)
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:57
طراحی مدارهای منطقی سخت افزاری می تواند سرگرم کننده باشد. روش قدیمی مدرسه برای انجام این کار با دروازه های NAND ، روی تخته نان ، با سیم های بلوز وصل شده بود. این هنوز امکان پذیر است ، اما خیلی طول نمی کشد تا تعداد دروازه ها از کنترل خارج شوند. گزینه جدیدتر استفاده از FPGA (Field Programmable Gate Array) است. این تراشه ها می توانند مجدداً سیم کشی شده و تبدیل به مدار منطقی دیجیتالی شوند که می توانید طراحی کنید ، اما ارزان و به راحتی در دسترس نیستند. من نشان خواهم داد که چگونه می توان این FPGA را با تراشه ارزان Atmega از Arduino UNO جایگزین کرد و به طور موثر مدار دیجیتال را در بسته DIP قرار داد ، که بسیار دوست داشتنی است.
مرحله 1: مداری را طراحی کنید که "FPGA" نشان دهنده آن است
من یک جمع کننده 2 بیت + 2 بیت ایجاد می کنم. به دو جفت پین ورودی منطقی نیاز دارد و یک سه پایه پین خروجی را خروجی می گیرد.
برای انجام این کار با گیت های NAND ، شماتیک موجود در تصویر را ببینید. به 14 دروازه NAND نیاز دارد. من از 4 تراشه NAND gate TTL 4 استفاده کردم و آنها را روی تخته نان سیم کشی کردم.
برخی LED ها را اضافه کردم (مقاومت های محدودکننده فعلی را فراموش نکنید) تا نشان داده شود که پین های ورودی و خروجی روشن (بالا) و خاموش (پایین) هستند. برای رانندگی پین های ورودی ، آنها را یا به ریل زمینی یا ریل قدرت مثبت بریزم.
این مدار کار می کند ، اما در حال حاضر 4 تراشه TTL را اشغال می کند و لانه سیم های موش است. اگر به تکه های بیشتری نیاز بود ، تخته های نان بیشتر و جهنده بیشتر وجود داشت. خیلی سریع اندازه مدار از کنترل خارج می شود.
نکته حائز اهمیت ، هنگام کار با دروازه های TTL ، آنها دقیقا 0V یا 5V خروجی ندارند همانطور که انتظار می رود. آنها غالباً 3 ولت را برای "زیاد" تولید می کنند ، اما ولتاژ دقیق آن در محدوده بسیار وسیعی است. همان مدار با استفاده از تراشه های معادل CMOS نوسان دقیقاً 0 ولت تا دقیقاً 5 ولت را بهتر خواهد داشت.
مرحله 2: FPGA را وارد کنید
FPGA یک تراشه فوق العاده است که می تواند به معنای واقعی کلمه به هر ترکیبی از دروازه های منطقی تبدیل شود که در هر ترکیبی به هم متصل می شوند. یکی "مدار" را به زبان طراحی سخت افزار (HDL) طراحی می کند. چندین زبان از این دست وجود دارد که یکی از آنها Verilog نام دارد. فایل.v در تصویر معادل Verilog دو جمع کننده دو بیت است. فایل.pch زیر آن نیز برای اختصاص پین های ورودی و خروجی به نام در فایل verilog به پین سخت افزاری واقعی در تراشه مورد نیاز است.
در این مورد من از یک تابلوی توسعه Lattice Semiconductors iCEstick (https://www.latticesemi.com/icestick) استفاده می کنم. تراشه FPGA واقعی iCE40HX-1k است ، با کمی بیش از 1000 دروازه ، که هر کدام می توانند به هر دروازه منطقی تبدیل شوند. این بدان معناست که هر دروازه می تواند یک دروازه NAND ، یا یک دروازه OR ، NOT دروازه ، NOR ، XOR و غیره باشد. علاوه بر این هر دروازه می تواند بیش از دو ورودی را اداره کند. این مخصوص هر سازنده است ، اما در iCE40 هر دروازه می تواند 4 ورودی را کنترل کند. بنابراین هر دروازه بسیار بیشتر از 2 دروازه NAND ورودی است.
مجبور شدم 4 پایه کاج ورودی و 3 پایه خروجی را به ترتیب به پایه های 91 ، 90 ، 88 ، 87 ، 81 ، 80 و 79 اختصاص دهم. این مخصوص تراشه fpga و برد شکستن آن است و نحوه اتصال آن پین ها به درگاه PMOD. این در برگه های داده این برد FPGA موجود است.
Lattice زنجیره ابزار مخصوص خود را برای سنتز (FPGA معادل کامپایل CPU ها) از Verilog ارائه می دهد ، اما من از icestorm زنجیره ابزار رایگان منبع باز (https://www.clifford.at/icestorm/) استفاده کردم. دستورالعمل نصب در آن سایت موجود است. با نصب icestorm و فایل verilog و pcf ، دستورات بارگذاری این مدار بر روی FPGA عبارتند از:
yosys -p "synth_ice40 -blif twoBitAdder.v" twoBitAdder.blif
arachne -pnr -d 1k -p iCEstick.pcf twoBitAdder.blif -o twoBitAdder.asc
icepack twoBitAdder.asc twoBitAdder.bin
iceprog twoBitAdder.bin
این بسیار عالی کار می کند ، اما حمل و نقل این iCEstick حدود 30 دلار هزینه دارد. این ارزان ترین راه برای ایجاد یک مدار دیجیتال نیست ، اما قدرتمند است. بیش از 1000 دروازه دارد و برای این مدار کوچک فقط 3 عدد از آنها استفاده می شود. معادل دروازه NAND از 14 دروازه استفاده می کرد. این به خاطر این واقعیت است که هر دروازه می تواند به هر نوع دروازه ای تبدیل شود و هر دروازه در واقع 4 دروازه ورودی است. هر دروازه می تواند کارهای بیشتری انجام دهد. اگر به دروازه های بیشتری احتیاج دارید ، iCEstick دارای یک برادر بزرگتر با 8000 دروازه است که هزینه آن تقریباً دو برابر است. سایر تولیدکنندگان پیشنهادات دیگری دارند اما قیمت آن می تواند بسیار تند باشد.
مرحله 3: از FPGA تا Arduino
FPGA ها عالی هستند ، اما می توانند گران باشند ، به سختی می توان آنها را تهیه کرد ، و خیلی برای تخته نان مناسب نیستند. یک چیپس دوست داشتنی و ارزان Atmega 328 P است که در یک بسته DIP مرتب ارائه می شود ، مناسب برای نان بردن. همچنین می توان آن را با حدود 4 دلار خریداری کرد. این قلب Arduino UNO است. البته می توانید از کل UNO استفاده کنید ، اما ارزان باشید ، ما می توانیم Atmega 328 P را از UNO خارج کرده و به تنهایی از آن استفاده کنیم. من از هیئت UNO به عنوان برنامه نویس Atmega استفاده کردم.
در این مرحله شما نیاز خواهید داشت
1. Arduino UNO ، با CPU قابل جابجایی Atmega 328P.
2. Atmega 328P دیگر با بوت لودر آردوینو از قبل سوزانده شده است ، تا جایگزین موردی شود که قرار است از UNO خارج کنیم. (اختیاری با فرض اینکه هنوز می خواهید UNO قابل استفاده داشته باشید).
هدف این است که فایل verilog را به یک پروژه arduino تبدیل کنید که می تواند در 328P بارگذاری شود. آردوینو بر پایه C ++ است. به راحتی مترجمی از Verilog به C ++ وجود دارد که Verilator نام دارد (https://www.veripool.org/wiki/verilator). Verilator در نظر گرفته شده است که طراحان سخت افزار از آنها برای شبیه سازی طرح های خود قبل از استفاده از این طرح ها به سخت افزار گران قیمت استفاده کنند. Verilator cross verilog را به C ++ کامپایل می کند ، سپس کاربر مهار آزمایش را برای ارائه سیگنال های ورودی شبیه سازی شده و ثبت سیگنال های خروجی ارائه می دهد. ما قصد داریم از آن برای درج طرح verilog در Atmega 328P با استفاده از زنجیره ابزار Arduino استفاده کنیم.
ابتدا وریلاتور را نصب کنید. دستورالعمل ها را در https://www.veripool.org/projects/verilator/wiki/I… دنبال کنید
همچنین Arduino IDE را نصب کرده و آزمایش کنید که آیا می تواند از طریق USB به Arduino UNO متصل شود.
ما از همان فایل verilog برای FPGA استفاده می کنیم ، با این تفاوت که نام پین ها باید تغییر کند. من یک زیر خط (_) به ابتدای هر کدام اضافه کردم. این مورد نیاز است زیرا کتابخانه های arduino شامل یک فایل سرصفحه هستند که مواردی مانند B0 ، B001 و غیره را به اعداد باینری ترجمه می کند. نامهای دیگر پین های ورودی همانطور که بودند خوب بودند ، اما B0 و B1 باعث خرابی سیستم می شد.
در پوشه حاوی twoBitAdder.v و iCEstick.pcf موارد زیر را اجرا کنید:
verilator -Wall --cc twoBitAdder.v
با این کار یک زیر شاخه به نام obj_dir ایجاد می شود که شامل چندین فایل جدید است. ما فقط به فایلهای سربرگ و cpp ، VtwoBitAdder.h ، VtwoBitAdder.cpp ، VtwoBitAdder_Syms.h و VtwoBitAdder_Syms.cpp نیاز داریم.
در Arduino IDE ، یک طرح جدید به نام twoBitAdder.ino ایجاد کنید. با این کار فایل ino در فهرست جدیدی که دوBitAdder نامیده می شود ، در داخل فهرست راهنمای طرح آردوینو ایجاد می شود. فایلهای VtwoBitAdder.h و VtwoBitAdder.cpp خود را در این پوشه twoBitAdder در پوشه Arduino خود کپی کنید.
اکنون فایلهای سرصفحه را از نصب وریلاتور کپی کنید.
cp/usr/local/share/verilator/include/verilated*.
در نهایت در کتابخانه std ++ از https://github.com/maniacbug/StandardCplusplus کپی کنید. بر اساس دستورالعمل نصب آنها "این درست مانند یک کتابخانه معمولی آردوینو نصب شده است. محتویات توزیع را در پوشه" libraries "در زیر sketchbook خود باز کنید. به عنوان مثال ، دفترچه طرح من در/home/maniacbug/Source/Arduino است ، بنابراین این کتابخانه در/home/maniacbug/Source/Arduino/libraries/StandardCplusplus است.
پس از نصب Arduino IDE حتماً آن را ریست کنید."
اکنون محتوای twoBitAdder.ino را با محتوای ارائه شده در این مرحله جایگزین کنید. این مهار آزمایشی است که verilator انتظار دارد ، که پین های ورودی/خروجی را تنظیم می کند ، سپس در حلقه ، پین های ورودی را می خواند ، آنها را به VtwoBitAdder (نسخه ترجمه شده مدار ما) تغذیه می کند ، سپس خروجی های VtwoBitAdder را می خواند و اعمال می شود آنها را به پین های خروجی برسانید.
این برنامه باید در Arduino UNO کامپایل و اجرا شود.
مرحله 4: از آردوینو تا تراشه DIP روی تخته نان
اکنون که برنامه بر روی آردوینو اجرا می شود ، دیگر نیازی به خود برد آردوینو نداریم. تنها چیزی که ما نیاز داریم CPU است.
Atmega 328P را با دقت از سوکت UNO Arduino خارج کرده و در صورت تمایل جایگزین آن را وارد کنید.
Atmega 328P را روی تخته نان بگذارید. پایان را با تقسیم بر روی تخته نان قرار دهید. پین 1 پین بالا سمت چپ است. پین 2 قسمت بعدی است و به همین ترتیب پین 14 که در پایین سمت چپ است. سپس پین 15 در پایین سمت راست قرار دارد و پین های 16 تا 28 در سمت راست تراشه شمارش می کنند.
پین های 8 و 22 را به زمین وصل کنید.
پین 7 را به VCC (+5V) وصل کنید.
یک کریستال کوارتز 16 مگاهرتز بین پایه های 9 و 10 و همچنین یک خازن کوچک (22pF) بین پایه 9 و زمین و بین پایه 10 و زمین متصل کنید. این به Atmega 328P سرعت کلاک 16 مگاهرتز می دهد. در جاهای دیگر دستورالعمل هایی در مورد آموزش 328P وجود دارد که بجای آن از ساعت داخلی 8 مگاهرتز خود استفاده کند که باعث صرفه جویی در چند قسمت می شود ، اما این باعث کند شدن پردازنده می شود.
پورت های آردوینو GPIO 5 ، 6 ، 7 و 8 ، که ما برای پین های ورودی استفاده کردیم ، در واقع پین های فیزیکی 11 ، 12 ، 13 ، 14 در Atmega 328P هستند. این چهار پین پایینی در سمت چپ خواهد بود.
پورت های آردوینو GPIO 11 ، 10 و 9 ، که ما برای پین های خروجی استفاده کردیم ، در واقع پین های فیزیکی 17 ، 16 ، 15 در Atmega 328P هستند. این سه پین پایینی در سمت راست است.
من LED ها را مانند قبل به این پین ها وصل کردم.
مرحله 5: نتیجه گیری
تراشه های TTL کار می کنند ، اما ساختن هر چیزی به تعداد زیادی از آنها نیاز دارد. FPGA ها واقعا خوب کار می کنند ، اما ارزان نیستند. اگر می توانید با پین های کمتر IO و سرعت کمتر زندگی کنید ، Atmega 328P ممکن است تراشه ای برای شما باشد.
نکاتی که باید در نظر داشته باشید:
FPGA:
حرفه ای
- می تواند سیگنال های با سرعت بالا را کنترل کند. از آنجا که هیچ CPU برای تنگنای پردازش در یک دستورالعمل در یک زمان وجود ندارد ، عامل محدود کننده تأخیر انتشار از طریق دروازه های مدار داده شده است. در بسیاری از موارد این ممکن است بسیار سریعتر از ساعت ارائه شده با تراشه باشد. برای طراحی من ، تأخیر محاسبه شده به دوBitAdder اجازه می دهد تا به حدود 100 میلیون تغییر در مقدار ورودی در ثانیه (100 مگاهرتز) پاسخ دهد ، حتی اگر ساعت روی صفحه فقط یک کریستال 12 مگاهرتز باشد.
- با پیچیده تر شدن طراحی ، عملکرد مدارهای موجود کاهش نمی یابد (زیاد). از آنجا که افزودن مدار به پارچه به سادگی قرار دادن چیزی جدید در املاک بلا استفاده است ، بر مدارهای موجود تأثیر نمی گذارد.
- بسته به FPGA ، تعداد پین های IO موجود می تواند بسیار زیاد باشد و عموماً به منظور خاصی قفل نشده اند.
Con
- ممکن است گران باشد و/یا به سختی به دست آید.
- معمولاً در یک بسته BGA ارائه می شود که برای کار با تراشه در هر پروژه آماتوری نیاز به نوعی تخته شکست دارد. اگر در حال طراحی آن با یک PCB چند لایه SMT PCB هستید ، این مشکلی نیست.
- اکثر تولیدکنندگان FPGA نرم افزار طراحی منبع بسته خود را ارائه می دهند که در برخی موارد ممکن است هزینه داشته باشد یا تاریخ انقضای مجوز داشته باشد.
آردوینو به عنوان FPGA:
حرفه ای
- ارزان و آسان برای دریافت. کافی است atmega328p-pu را در آمازون جستجو کنید. قیمت آنها باید حدود 4 دلار در هر قطعه باشد. چندین فروشنده آنها را در تعداد 3 یا 4 فروخته اند.
- این یک بسته DIP است ، به این معنی که کاملاً روی تخته نان با پین های خارجی آن قرار می گیرد.
- این دستگاه 5 ولت است که می تواند ارتباط با سایر دستگاه های 5 ولت را آسان کند.
Con
- ATMEGA328P دارای تعداد محدودی پین IO (23) است ، و چندین مورد از آنها برای کارهای خاص محفوظ است.
- با افزایش پیچیدگی مدار ، مقدار کد اجرا شده در روش حلقه آردوینو افزایش می یابد ، بدین معنی که مدت زمان هر چرخه بیشتر است.
- حتی اگر پیچیدگی مدار کم باشد ، هر چرخه به دستورات CPU زیادی نیاز دارد تا مقادیر پین ورودی را دریافت کرده ، مقادیر پین خروجی را بنویسد و به بالای حلقه بازگردد. با کریستال 16 مگاهرتز ، حتی با یک دستورالعمل در هر چرخه ساعت ، حلقه بیش از 1 میلیون بار در ثانیه (1 مگاهرتز) بیشتر اجرا نمی شود. برای اکثر پروژه های الکترونیکی آماتور سریعتر از نیاز است.
توصیه شده:
آردوینو به عنوان ISP -- رایت فایل هگز در AVR -- فیوز در AVR -- آردوینو به عنوان برنامه نویس: 10 مرحله
آردوینو به عنوان ISP || رایت فایل هگز در AVR || فیوز در AVR || Arduino به عنوان برنامه نویس: ……………………… لطفاً برای ویدیوهای بیشتر به کانال YouTube من مشترک شوید …….. این مقاله همه چیز درباره آردوینو به عنوان isp است. اگر می خواهید فایل hex را بارگذاری کنید یا اگر می خواهید فیوز خود را در AVR تنظیم کنید ، نیازی به خرید برنامه نویس ندارید ، می توانید
ایجاد یک تخته نان برای مدارهای الکترونیکی - Papercliptronics: 18 مرحله (همراه با تصاویر)
برای مدارهای الکترونیکی یک تخته نان بسازید-Papercliptronics: اینها مدارهای الکترونیکی قوی و دائمی هستند. برای به روز رسانی های جاری visitpapercliptronics.weebly.com از آموزش گام به گام ما در زمینه ایجاد مدارهای الکترونیکی خانگی لذت ببرید
مار روی تخته نان: 3 مرحله (همراه با تصاویر)
مار روی تخته ناهار: & quot؛ بازی روی گوشی خود دارید؟ & quot؛ & quot؛ دقیقا نه & quot؛ آن را در هر چیزی از ماتریس LED ، L
مدار Makey Makey با تخته نان: 11 مرحله (همراه با تصاویر)
مدار Makey Makey With Breadboard: این یک پروژه ساده برای معرفی وسایل الکترونیکی به گروهی از دانش آموزان است. مراحل 1-7 - یک مدار ساده با Makey Makey معرفی کنید. مراحل 8 - به یک سری بصورت سری بسط دهید. مراحل 9 - به طور موازی به یک مدار گسترش دهید. با جمع آوری rec شروع کنیم
ارزان ترین آردوینو -- کوچکترین آردوینو -- آردوینو پرو مینی -- برنامه نویسی -- آردوینو ننو: 6 مرحله (همراه با تصاویر)
ارزان ترین آردوینو || کوچکترین آردوینو || آردوینو پرو مینی || برنامه نویسی || آردوینو ننو: …………………………. لطفاً برای ویدیوهای بیشتر به کانال YouTube من مشترک شوید ……. .این پروژه در مورد نحوه ارتباط با کوچکترین و ارزانترین آردوینو است. کوچکترین و ارزان ترین آردوینو arduino pro mini است. شبیه آردوینو