Сборка AtMega328p из транзисторов
Я немного новичок в схемах и в самой Arduino!
Из того, что я знаю, я думаю, что можно было бы построить один (конечно, сам процессор) из транзисторов. Конечно, это не практический вопрос, но это будет отличная возможность для обучения.
Можно ли реализовать такой проект (даже без EEPROM)?
Если да, то как это будет выполнено?
Спасибо!
@Dimitry M, 👍2
Обсуждение7 ответов
Лучший ответ:
Да, это возможно — в конце концов, Arduino — это, по сути, просто набор невероятно крошечных транзисторов. Первые компьютеры, до изобретения микросхем, были построены на транзисторах. До этого были клапана. До этого было реле. Все просто в конце дня переключается.
Будет ли это практический проект? Не совсем, хотя кто-то это сделал (не для процессора AVR, но концепция та же): http://www.megaprocessor.com/
С чего бы вы начали? Ну, во-первых, вы должны создать основные строительные блоки ЦП, то есть логические элементы. Есть два основных элемента, которые можно объединить вместе, чтобы создать любые другие ворота: вентиль И-НЕ и вентиль ИЛИ-НЕ. Вы могли бы выбрать один из них и соединить множество из них, чтобы создать основные секции ЦП. Затем эти блоки соединяются вместе, образуя ЦП. Дополнительные логические элементы объединяются для создания функций ввода-вывода, памяти, интерфейсов и т. д.
В основном:
- Транзисторы объединяются в логические элементы И-НЕ (или логические элементы ИЛИ-НЕ, если вы предпочитаете такую форму)
- Вентили NAND (или NOR) объединяются в сложные логические элементы.
- Сложные элементы объединяются в логические функции.
- Логические функции объединяются в логические блоки (например, АЛУ)
- Логические блоки объединяются в ЦП.
Ух ты! Спасибо! Это действительно полезно! Это выглядит очень, очень сложно, но я все равно могу попробовать... Спасибо!, @Dimitry M
Если бы я действительно делал это вручную, я бы не делал сложные вентили из NAND (ни NOR), поскольку было бы более эффективно делать их непосредственно из транзисторов. Например, NOT(A AND B OR C) можно сделать с 6 транзисторами в CMOS (и только 3 в NMOS или PMOS). Если бы можно было ограничиться использованием только универсальных затворов, потребовалось бы гораздо больше транзисторов., @Edgar Bonet
@EdgarBonet Это то же самое, что вы получите после оптимизации схем дискретных вентилей., @Majenko
Но в таком случае разработка конструкции, полностью состоящей из NAND, кажется бесполезной дополнительной работой., @Edgar Bonet
@EdgarBonet Вот почему это важный шаг в проекте. Весь проект — бесполезная дополнительная работа. И если вам нужно задать вопрос, который задал ОП, то вы, очевидно, не понимаете логические элементы и т. д., поэтому базовым требованием является начало с простого NAND., @Majenko
Почему бы и нет? Атмел сделал это. А если вы имеете в виду пайку дискретов...
В середине 70-х годов Zilog Z80 имел 8500 транзисторов; пару лет спустя у Intel 8088 было 29000 (источник: Википедия). Ни у одного из них не было встроенной памяти. AtMega 328p имеет 2 КБ оперативной памяти и 1 КБ EEPROM на кристалле, так что учтите это и их драйверы. На частоте 20 МГц, вероятно, будет весело: 1) сохранять сигналы там, где они должны быть; и 2) держать провода достаточно короткими и правильно расположенными, чтобы емкость не замедляла и не искажала сигналы до непригодности для использования.
Хотя это возможно, вам придется потратить много денег и много времени. Я думаю о тысячах долларов и месяцах работы. Даже если вы добьетесь успеха, вы узнаете больше об электронике, чем о ATmega328P. Для этого вам также придется попросить Atmel передать вам схемы, чтобы обеспечить правильную внутреннюю работу. Я очень сомневаюсь, что они согласятся, поскольку это не открытое оборудование.
Я настоятельно не рекомендую вам это делать. Вместо этого я предлагаю вам начать с Arduino UNO и изучить его возможности, а затем пойти дальше и использовать голый ATmege328P.
Хотя вы не можете получить схему настоящего AVR Atmel, на http://opencores.org/ доступно несколько клонов AVR., @Edgar Bonet
Я не думаю, что вы могли бы собрать ATmega328P из отдельных частей: вы для реализации вспышки потребуются транзисторы с плавающим затвором, и похоже, они недоступны в виде дискретных устройств.
Если вы откажетесь от флэш-памяти (или замените ее ОЗУ или ПЗУ), то она должна в принципе возможно. Однако этот процессор, вероятно, не является хороший выбор для такого проекта. Из обсуждения, на которое есть ссылка Микаэль Патель, кажется, тебе понадобится около 80 тыс. транзисторы только для ядра и многое другое, если включить ОЗУ и периферийные устройства. Собрать все это в одно целое было бы непростой задачей. рука. Для сравнения: Мегапроцессор1 примерно Всего 42 тыс. транзисторов (ядро + ОЗУ + драйверы светодиодов).
Если вы хотите реализовать такой проект, я рекомендую выбрать более простой ПРОЦЕССОР. MOS 6502 может быть хорошим выбором. Этот процессор, который был очень популярный в конце 70-х и начале 80-х годов, имеет «всего» 3510 транзисторов и хорошо документирован. См., например, ресурсы на сайте visual6502.org. У них есть потрясающий онлайн-симулятор уровня транзисторов, созданный на основе фактическая компоновка чипа.
1Спасибо Маженко за ссылку
В ATmega128 800 000 транзисторов. (+-200000 транзисторов)
Итак, если вы хотите взять несколько транзисторов и макетов и построить ATmega128p
сначала посчитайте деньги на транзисторы (если 1 транзистор стоит 0,01€, то 800000 x 0,01 = 8000€ и макеты намного дороже транзисторов!)
Можно ли реализовать такой проект (даже без EEPROM)?
да.
Если да, то как это будет выполнено?
Проще всего было бы найти или написать софт-ядро для AVR на fpga. Получите логические блоки для этого программного ядра, а затем реализуйте эти логические блоки с помощью транзисторов.
Однако, прежде чем приступить к делу, проверьте, достаточно ли у вас места или банковского счета (для счетов за электричество).
Попробуйте собрать все это внутри симулятора вместо того, чтобы покупать десятки тысяч транзисторов и несколько других компонентов... менее запутанно и выполнение работы практически без затрат
Пожалуйста, предложите несколько симуляторов в своем ответе, иначе он может быть помечен как комментарий, а не как ответ., @MichaelT
Их слишком много, проверьте: https://en.m.wikipedia.org/wiki/List_of_free_electronics_circuit_simulators и https://en.m.wikipedia.org/wiki/Electronic_circuit_simulation и https://en.m.wikipedia.org /wiki/Сравнение_программного_программного обеспечения_EDA, @user221238
https://www.electroschematics.com/2249/pcb-design-software/, @user221238
Можно смоделировать даже весь завод со всем оборудованием и процессами, работающими в режиме реального времени: https://en.m.wikipedia.org/wiki/Plant_Simulation., @user221238
https://en.wikipedia.org/wiki/Robotics_simulator, @user221238
Есть стартап/веб-сайт под названием labster, на котором есть всевозможные симуляторы для студентов. Метавселенная Facebook и омнивселенная Nvidia вскоре включат в себя такие виртуальные лаборатории и фабрики-близнецы., @user221238
- Разные и самые быстрые способы вычисления синусов и косинусов в Arduino
- Как использовать ассемблер в ардуино
- Нужна помощь в программировании ардуино на ассемблере
- Как создать задержки на языке ассемблера AVR
- Как настроить выводы ввода-вывода второго квадратурного декодера в Arduino IDE
- Светодиод с кнопочным управлением Arduino со сборкой AVR
- Светодиод Arduino PWM с замиранием в сборке
- Как использовать arduino IDE для компиляции файлов .s
Транзисторы - :). Гейтс – да, но слишком много работы. ПЛИС - да. Проверьте предполагаемое количество транзисторов https://www.embeddedrelated.com/showthread/comp.arch.embedded/14362-1.php, @Mikael Patel
Начните с простого и, например, создайте 4-битный сумматор. Переходим к 4-битному ALU. Т.е. начните с малого и продолжайте расширять его., @Gerben
Я очень рекомендую вам посмотреть серию видео Бена Итера о сборке 8-битного компьютера на макетных платах: https://www.youtube.com/playlist?list=PLowKtXNTBypGqImE405J2565dvjafglHU Он не собирает его из транзисторов, и это не процессор AVR, но он подробно объясняет функцию каждой микросхемы, которую он использует в этом проекте, включая возможные схемы для дублирования функциональности микросхемы с помощью транзисторов. Благодаря такому подходу он сохраняет все это относительно компактным и при этом умудряется визуализировать каждую деталь внутренней работы процессора, используя множество светодиодов и одношаговый режим синхронизации., @Piotr99