Comments 81
Altera, а теперь Intel
Сутенер Интел выгнал Альтеру, а потом продал ее другому сутенеру
11 часов на каждую симуляцию загрузки предельно урезанного ядра линукса
Добро пожаловать в увлекательный мир разработки процессоров и понимания зачем нужен в нем этап прототипирования на плисах xD
Блин ну крутой DIY проект, а сколько по итогу ушло суммарно времени на его разработку?
Добро пожаловать в увлекательный мир разработки процессоров и понимания зачем нужен в нем этап прототипирования на плисах xD
Я теперь научился записывать сигналы непосредственно с FPGA :-) У Efinix довольно удобный дебаггер. И больше не нужно оставлять iverilog на ночь.
а сколько по итогу ушло суммарно времени на его разработку?
Чуть больше года.
Справедливости ради - Интел не сутенёр, а Альтерин папа. Доча гуляла 20 лет, вернулась и её кому-то пристроили.
Вашу бы энергию да в мирное русло... Завидую.
Плюсую конечно.
Давно отстал от темы жизни на Марсе FPGA, моя паяльная станция давно на складе балконе лежит. может следующим шагом карту расширения создать, специализированный вычислитель для пс или частоты FPGA сильно отстали для таких идей? Usb4 шустрый, можно внешнее устройство сделать.
может следующим шагом карту расширения создать, специализированный вычислитель для пс или частоты FPGA сильно отстали для таких идей?
У некоторых серьезных FPGA есть встроенный интерфейс PCIe. Так что теоретически возможно. Но я пожалуй не возьмусь такое дома делать - еще больше выводов у микросхемы, еще больше слоев на плате, на порядок более строгие требования к трассировке.
Используемая у меня Ti60 не умеет выдавать сигнал с частотой более 1.5 GHz. А для PCIe нужно как минимум 2.5 GHz.
Когда то с Xilinx чуть чуть работал.
Еще в TI, Analog devices на шару детальки нужные получал , когда жил в Торонто. Знакомый работал в Research in motion - сбивал меня вернуться в стек "железячника". Он тогда создал небольшой бизнес, делал пинцеты измерители параметров смд элементов. Знакомый проф ему помогал оптимизировать код. Сейчас подобного инструмента много на рынке, 20 лет назад дело было.
Глянул xiling - частоты подросли, но напрямую конечно без обвязки не прицепишь, но FPGA всегда были медленнее, зато можно сделать жирную функцию которая будет быстрее чем программа на компе, особенно в сочетании с CAM, для ускорения работы с несортированными массивами данных.
Интересно, насколько строгие требования к отклонению частоты? Вопрос актуален в контексте реализации serial интерфейсов (sata, pcie, usb) на fpga без аппаратных трансиверов. Встречал мнение, что sata и на 900 Mbit заработает, но слабо в это верю, а заняться самому проверить руки не доходят. Плата с zynq7010 пылится
Крутой проект, плюсую. Сам когда-то рисовал в Кикаде свою Ардуинку на базе Атмел 2560 и 520кб оперативы, с подключением картридера как жесткого диска и выводом всех 70 ног Ардуины наружу с питанием до 5А. Третья итерация также прошла Китай и ту же самую JLCPCB и да, комплект на 10 плат оказался дешевле чем поезда на такси в аэропорт.
Конденсаторы возле микросхем: очень важный девайс, при недостатке которого всё глючит нещадно. Вопрос решал подпайкой 3 штук друг на дружку и разными емкостями для разведения ESR на разные частоты и его общего снижения. В итого, получалась емкость х2 от даташита с очень широкой полосой пропускания. Мега2560 показала завидную стабильность в работе и .. небольшое снижение потребления, примерно на 2мА.
Заказал в JLCPCB.
Поделитесь подробностями, пор фавор. Это опять можно напрямую заказывать/оплачивать или через каких-то посредников?
Я просто живу далеко, мне с этими проблемами сталкиваться не пришлось.
В конце года через посредников на авито заказывал по мелочи. Платил переводом через Сбер, наценка около 20%. Доставка, вроде, СДЭКом была
Сейчас можно заказывать через nextPCB с оплатой через алик
Вот инструкция официальная! от nextPCB
https://www.nextpcb.com/blog/how-to-pay-by-aliexpress?ysclid=m8ush1w789287986442
Все по чесноку, работает все четко. Думал что будет сложнее все и из-за этого долго не занимался разработкой электроники. Но когда нашел этот вариант - вполне себе вдохновился.
PcbWave принимает карты Мир.
Классная статья! :)
если что-то припаялось не так, это даже увидеть нельзя
Льзя, на рентгене.
В общем, нельзя было под это дело использовать первые попавшиеся пины.
Опять же льзя, надо уметь)
Льзя, на рентгене.
Я догадывался что серьезные электронщики с серьезным оборудованием и не такое могут ;)
Вы правы, вот пример
Молодец! То, что не всё получилось - не беда. Дорогу осилит идущий.
На счет USB, хочу предупредить сразу - это не для слабонервных, там процедура инициализации состоит почти из 60-ти транзакций! Я недавно закончил разработку контроллера USB 1.0 (для HID устройств) на SpinalHDL для VexRiscv, сейчас пишу статью на эту тему. Разработка контроллера заняла более полугода регулярных ночных бдений в обнимку с анализаторами. Можете взять мой код и интегрировать в свою СнК. Проект моей СнК KarnixSOC лежит на Github-е.
А с USB как раз таки все получилось. Я использую OHCI из репозитория SpinalHDL, реализует USB 1.1 host controller. Мой код инициализации вот тут. Долго не получалось заставить этот код работать, уже от безысходности изучал исходники контроллера, потом оказалось, что TD
и ED
у меня выровнены в памяти по 4 байта, а надо по 16.
Я тоже пробовал OHCI из библиотеки SpinalHDL, но мне он не понравился тем, что требует сериализатор и заставить его синтезироваться для ECP5 я не смог, а может быть не сильно хотел. Мне хотелось разобраться в тонкостях работы USB и я написал свой. ;)
Скажите, какая тактовая частота вычислительного ядра у Вас получилась ?
Мне OHCI не очень нравился тем, что там требуется DMA, а это усложняет шину памяти, требует clock domain crossing и использует довольно много логических ячеек. Но у него есть неоспоримое преимущество - работает в линуксе без написания собственного драйвера.
Кстати собственный USB контроллер я тоже пытался делать, давно, когда только познакомился с верилогом. Код здесь, но сейчас даже я сам в нем уже не разберусь.
Скажите, какая тактовая частота вычислительного ядра у Вас получилась ?
220 MHz
Да, DMA тоже нужен, на нём я и запнулся.
220 MHz
Не плохо. На сколько я помню, VexiiRiscv это высокопроизводительное out-of-order ядро. Сколько единиц показывает тест Coremark на вашей системе ? На что способен Linux на такой системе ? Графику (X11) пробовали ?
У меня на Lattice ECP5 c 24К и 6-й грейд частота Fmax получилась 66МГц, стабильно работает на 60 МГц. Использую как замену китайским микроконтроллерам. :-)
Coremark пока не пробовал. Dhrystone выдает 495 DMIPS (см. предпоследнюю картинку в статье).
gcc, g++, python работают, но довольно медленно. Hello world на С компилируется пару секунд. Думаю можно ядро линукса прямо там собрать, но займет много часов.
Xorg пока не запускается - я что-то не так с драйвером фреймбуфера сделал, но эта проблема определенно решаемая.
60 MHz у меня получалось на предыдущей плате с Altera MAX10. Efinix Titanium в разы быстрее :)
Еще вопрос. Чем выполняли синтез под Efinix Ti60 ? Yosys (OSS CAD) или проприетарными тулами ?
Почитал спецификацию на эти ПЛИСы и что-то мне срочно захотелось их попробовать, но я приемлю только опенсорные решения. :-)
Efinity - их официальная среда разработки. Бесплатная, но не open source. Мне понравилась. Нативно работает в линуксе, синтезирует быстрее чем Quartus, легко интегрируется с самодельным программатором на ftdi. Удобный дебаггер.
У меня на рабочих компах стоит ОС FeeBSD, так что проприетарные среды отваливаются сразу. OSS CAD поддерживает ПЛИСы Efinix, но на сколько глубоко - предстоит выяснить. Какую-то простенькую девборду с Ti60 можете присоветовать ?
Какую-то простенькую девборду с Ti60 можете присоветовать ?
Не, я не в курсе. Я сразу свою стал делать. У них на сайте есть какие-то девборды, но дорогие очень.
Думаю можно ядро линукса прямо там собрать, но займет много часов.
На моей памяти - оно во времена первых пентиумов где-то столько и собиралось. (Часа 2-3 суммарно, если не было предсобранных объектников и это был первый заход конфигурации).
Сколько единиц показывает тест Coremark на вашей системе ?
CoreMark 1.0 : 776.123615
На что способен Linux на такой системе ? Графику (X11) пробовали ?
Добавил графику! В том числе работают файловый менеджер pcmanfm, браузер dillo (правда пока без интернета), mupdf, текстовый редактор leafpad.
Запустился DOOM (prboom v2.5.0), вполне играбельно.


По идеологии похоже на OneChipBook-12.

Пару советов, если позволите.
Фен - это демонтажный инструмент. Да, я знаю, многие радиолюбители почему-то привыкли дуть им куда ни попадя, и иногда это даже оправданно (например, если нужно припаять кучку очень мелких SMD-компонентов, или если других вариантов просто нет - корпуса BGA, QFN etc.). Но лучше сразу приучить себя относиться к нему именно в таком качестве.
Микросхемы с выводными корпусами - QFP, SOP etc. - замечательно паяются обычным паяльником со скошенным жалом. Здесь дело вкуса, многим нравятся жала типа K (сокр. от knife, ножевой тип, хотя у нас обычно говорят "топор"), мне больше по душе тип С (скошенный цилиндр). Секрет пайки - много флюса и мало припоя, а не наоборот. Выводы не паяют по одному, пайка всего ряда (стороны) производится одним движением – касаемся паяльником первого вывода и проводим вдоль до последнего, не останавливаясь. В таком варианте перегрева микросхемы практически невозможен (при пайке воздухом ровно наоборот, детали перегреты практически всегда). Когда набьёте руку, пайка будет практически неотличима от заводской.
Если припоя слишком много, на последних выводах ряда останется капля (на жаргоне - "сопля"). Это не страшно, она очень легко убирается оплёткой и, опять же, не жалейте флюса. Не вздумайте следовать дедовским методам - выковыривать лишний припой иглой, выдувать феном, вставлять между выводов бумажки или каптоновую ленту и так далее. Результата, может быть, и добьётесь, но выглядеть это будет как если ваш чип собаки грызли.
Как уже писал, не жалейте флюса. Зона пайки (вывод, контактная площадка, кончик жала и расплавленный припой) должна находиться внутри капли флюса и быть изолирована им от воздуха. Если флюса много, он будет сильно растекаться, больше придётся мыть. Если мало – будут оставаться "сопли" и непропаи, также пайка не будет блестящей и не будет формироваться гладкая сферическая поверхность на застывшей капле припоя. Флюс должен быть более-менее нормальный, как минимум китайский NC-559-ASM или лучше. Опять же, не надо дедовских рецептов из 50-х с вазелином, глицерином, спиртоканифольными растворами и прочим.
Результат пайки должен быть примерно таким: все контакты выглядят абсолютно одинаково, поверхность пайки ровная и блестящая, профиль сферический, нет разбрызгивания, вытягивания и прочих дефектов на застывшем припое. На верх чипа не смотрите, это остатки лака.

Это - 100% брак. Я заставил бы переделывать, работай вы у меня. Удалённо показывать трудно, конечно. Ради интереса, нанесите достаточно флюса и просто проведите по контактам паяльником.

Выводы не паяют по одному, пайка всего ряда (стороны) производится одним движением – касаемся паяльником первого вывода и проводим вдоль до последнего, не останавливаясь.
Я видел такие видео на ютубе... Вжих и все готово. Тоже так хочу. А у меня вжих и капля припоя засела где-нибудь между вторым и третьим пином. Но я надеюсь что тоже когда-нибудь научусь.
Много припоя, скорее всего. Флюс какой используете? Капля "бежит" за жалом или остаётся, где осталась?
Спасибо за советы, буду учиться.
Флюса пробовал два: NC191 и RF800. Проблема, что их куча всяких разных, сложно понять какой нужен. Капля иногда застревала между двумя пинами и было сложно от нее избавиться.
NC191 и RF800
Я так пониимаю, вы не из России? В этом случае не могу подсказать по конкретным продуктам, доступным у вас. Вообще вам нужен нейтральный безотмывочный флюс из тех, которые называют tacky flux (такой густой и липкий, и чтоб не сильно растекался при нагреве). Указанными марками не пользовался, но по описаниям выглядят вполне подходяще. Возможно, используете слишком мало флюса. Начните с того, что положите из шприца "колбаску" прям на выводы. Потом уже приловчитесь дозировать.
Если у вас достаточно флюса, жало паяльника облужено, и тепература подходящая, при движении жалом вдоль выводов вы увидите, как капля движется за ним, попутно смачивая выводы. Если она отрывается и липнет, то здесь или недостаточная температура, или недостаточная теплопередача от жала, или, как уже сказал, флюса нет.
По капле, используйте оплётку. Рекомендую оригинальный Goot Wick, с ним максимально приятно. Но, в принципе, любая пойдёт. Алгоритм следующий: очистите жало паяльника влажной целлюлозной губкой, нанесите каплю флюса на то место, где нужно удалить припой, приложите оплётку и сверху нагрейте паяльником. У вас мелкие горпуса, при должной сноровке хватает буквально одного прикосновения.
Конечно, удалённо учить таким вещам дело неблагодарное. Как и в любой работе руками, это нужно делать по месту и в real-time. Ну, чем могу, как говорится. Если покажете состояние вашего жала, может ещё что подскажу.
Откройте для себя жало типа [микро]волна. И не жалейте флюса, его потом легче смыть чем затраты на перепайку всего чипа.
Чем вам спирто-канифольные флюсы не понравились? Атмегу 2560 паял именно им, и точно также кисточкой наносишь много жидкой канифоли и вжик паяльником со скошенным жалом. Где-то затекло (много припоя)? Не беда, накапал кисточкой канифоли и оплеткой всё лишнее всасывается аж на зависть. Всё кругленькое, аккуратное. Просто, дешево и удобно. Канифоль вымывается тем же спиртом, который дальше идет на приготовление флюса добавлением канифоли. Безотходная технология. )
Не люблю ездить на телеге, имея в гараже выбор от спорткара до внедорожника.
Канифоль плоха по эксплуатационным характеристикам, сильно пачкает плату твёрдым нагаром, котоорый тяжело смывается, а смывать надо, потому что остатки гигроскопичны и проводят ток.
Atmega2560, говорите? Удачи вымыть остатки канифоли из-по выводов и корпуса, не выдувая по пол-баллона Flux-off под каждую микросхему.
Мне было сложно попадать ногами микросхемы в дорожки платы, поэтому приклеивал её по периметру. Может поэтому под неё ничего не затекало.
потому что остатки гигроскопичны и проводят ток
Вроде же канифоль как раз не гигроскопична. Вот глицериновые флюсы - да, надо мыть нещадно, они тянут воду.
Во-первых, я говорю об остатках после пайки, обгоревших и окислившихся, а не о чистой канифоли в пробирке.
Во-вторых, возьмём первый попавшийся paper в Google:
Rosin-based fluxes are non-corrosive at room temperature, hygroscopic, and normally cure at room temperature
Rosin vs. Non-Rosin Wave Flux? by Adam Murling and Ron Lasky, Ph.D.
Для предпочитающих советскую литературу:
Многие свойства канифоли являются весьма нежелательными, например склонность ее к кристаллизации, легкая окисляемость кислородом воздуха; хрупкость, низкая температура размягчения, влагоемкость, химическая нестойкость и кислотный характер.
Если капитально залить флюсом - можно и много припоя. Где слиплось - касание оплеткой и разлиплось :) Флюс использую китайский, жирный индикаторный - он не растекается, отлично потом смывается, и даже если где-то остался - не вызывает коррозию. Стоит копейки в ближайшем магазе инструментов для ремонта телефонов.
Слипание - некоторая боль только для разъемов, так как возможно затекание припоя внутрь по металлическому корпусу. Но тут решает тонкое жало паяльника и аккуратность.
А для больших многослойных плат высокого класса точности надо иметь нижний подогрев и ИК-станцию, ибо локальный нагрев феном приводит к тому, что плату "ведет", и местами ломает металлизацию тонких переходных отверстий - ищи потом, в чем проблема.
Хорошая работа.
Залипы между контактами микросхем убираю медной оплеткой. На медную оплетку наношу канифоль. И чистым жалом без припоя, чтобы не залипало еще больше, убираю излишки: сначала прикладываю оплетку к выводам, затем провожу паяльником по оплетке. Олово переносится на оплетку. Затем оплетку с частицами олова обрезаю и дальше откачиваю.
Хорошая статья, недавно начал разбираться в этой тем, а тут свежий материал вышел на Хабре
спасибо! Очень интересно! Техноквест! Не ожидал, что можно развести такую плату без 3-5 лет опыта разводки. Просто открытие для меня...
Да, всё это сильно смахивает на мистификацию. В одной только трассировке, если ею постоянно заниматься, где-то ко второму-третьему году и к пятнадцатому-двадцатому проекту удаётся обходиться без серьёзных косяков. А тут ещё схемотехника.
Да не, САПРы уже давно развились настолько, что автороутер да контроль вполне могут так сделать, как в статье. Если только юзер действительно разобрался в проге.
Да не, САПРы уже давно развились настолько
Разумеется! В KiCad есть продвинутая фича "отрегулировать длину отдельно взятой дорожки", без неё было бы тяжко.
Контроль правил проектирования - да, это, наверное, самое главное, что есть с электронных САПРах. Кроме синхронизации схемы и платы, наверное.
А вот автороутер по моему опыту не сильно помогает. Он удобен, если вы делаете много типовых проектов в одной области. Когда можно один раз потратить время на написание и отладку правил автороутера, а потом уже снимать сливки. Иначе результат автотрассировки лучше потом никому не показывать, и тем более включать питание)))
Вполне можно. Свою дуньку уже не найду, выкладывал где-то на Хабре тоже. Уже 2 харда сменилось, хз где..
Вот бы тут прикрутить выход на LVDS матрицу и интерфейс для какой нибудь клавиатуры от ноута... Цены бы ему не было бы ))) На счет видео карты - а нельзя ли использовать сразу две FPGA? одна на CPU, второе на GPU и третий FPGA - на мост между ними всеми )))
К стати, GoWIN вроде как нормальные fpga делает...
Да, можно сразу две или три FPGA. А можно взять одну большую. Например есть Ti180, как раз в три раза больше чем Ti60. Но производительности нормальных процессоров так все равно не достичь, так что нужно хорошо понимать в чем цель. Чем больше доступно ресурсов, тем больше кода на верилоге придется написать, чтобы их все эффективно использовать.
Без слота для подключения pci-e устройств не особенно инновационно.
Меня FPGA долго интриговали, всё хотелось понять: можно ли на них развести ЦПУ со своей системой команд? Интерпретатор когда-то делал, ещё в 90-х, а вот сваять сам проц .. увы, так и не сподобился. Идей было несколько:
Короткие коды (1 байт) на вызов подпрограммы или функции 32-64шт. С относительной адресацией от спец. регистра по таблице и вообще табличная адресация переходов;
"обратная" запись команды: префикс-операнд (..), .. КОП. От количества операндов меняется арифметика: 1, 2 и 3-х адресная. Называл это "префиксной командой".
Интересно, можно ли такое сваять на FPGA с регистровым пулом в 64 8-байтных регистра?
ФПГА это просто набор вентилей стандартной логики, которые можно соединять в относительно свободном порядке. Почему относительно - количество линий соединения есть ограниченный ресурс. Как и количество логики, регистров и прочее. Такова плата за универсальность и гибкость. И к сложности вашего процессора это не имеет отношения. Если вам не хватит LE/LUT или регистров вы просто берёте FPGA пожирнее. Если вас не устроит скорость, то вы просто перефразируете ваш код для решения констрейнов, чтобы TimeQuest остался доволен, попутно можно взять FPGA грейдом побыстрее. Ну а джитсу 80 лвл это ещё и футплан ручками распилить. Такое вам будет доступно после десятка лет изучения разных архитектур FPGA.
Меня FPGA долго интриговали, всё хотелось понять: можно ли на них развести ЦПУ со своей системой команд?
Можно. Я, кстати, такое тоже пробовал, давал ссылку где-то ближе к началу статьи. Но после изобретения своей системы команд внезапно оказывается что и компиляторы и весь софт приходится писать/портировать самому. А это еще больший объем работы, чем процессор сделать. Энтузиазм быстро заканчивается.
С этой точки зрения может быть лучше делать собственную реализацию какой-нибудь существующей архитектуры (тот же RISC-V) и, если захочется, добавить туда кастомное расширение со своими командами.
Спасибо. Писать компиляторы и прочее не так сложно как страшно за это браться. В свое время писал свою ОС, но бросил. Линус вышел раньше слегка, да и соглашусь, в одиночку это трудно, а поддержать меня никто не поддержал из коллег того времени. Делал подобие РТОС на свою Ардуинку.. вполне зашло, но да - это тоже не быстро, особенно если учесть что это хобби и время выделяется "постольку-поскольку" и при длительном перерыве существенное время тупо вспоминаешь на чем застрял..
В целом подход прост: пилим кодогенератор к какому-то упрощенному Керниган-ричи Си и компилируем им себя же под новую архитектуру. Далее по нарастающей. Опен сорс с готовыми исходниками на Си - хорошее подспорье.
компилируем им себя же под новую архитектуру
Совершенно не нужная итерация для кроссплатформы. Оно необходимо только если вы собираетесь запускать компилятор на целевой архитектуре чтобы для этой же архитектуры собирать код.
Да, именно так и планировалось: "ща как забабахаю новый супер проц да в кластерном исполнении протравлю платы" ) молод был, наивен..
Не, ну я это проходил 30+ лет назад. На ЛК "Специалист" из журнала набирал коды руками, сохранял на ленту. Некоторые коды набирал с бумажки, где по шпаргалке из журнала Радио компилировал полезные для меня подпрограммы. Затем склеивал всё это, запускал, оно работало и уже в нём пытался писать и собирать что-то более полезное. На 3-4 итерации уже можно было жить и забыть про ручной ввод. Уходило на это почти все летние каникулы. Сейчас же кроссплатформа позволяет это сделать за 1 вечер, а отладить в эмуляторе (пусть и в самонаписанном).
Дополню. Просто тогда (1986?) мне казалось что табличный процессор с заменяемым блоком подпрограмм (от базового адреса) и префиксной регистровой арифметикой, которая легко объединяет в себе стековую, 1-, 2- и 3-х адресные варианты без разрастания КОП и длины команды, совокупно с тремя уровнями регистров для однотактного переключения контекста в прерываниях, и префиксами условий и повторения .. могло быть интересным решением как по размеру кода, так и по скорости его исполнения.
Применение относительной (от базы) адресации легко ложится на разные ООП верхнего уровня. Но .. анализ (книжки 1985года) показывал, что константы, включаемые в код, наиболее удобны в 12 битном представлении, а не 8-и битном. Собственно тогда проектировался и эмулировался 12-битный проц, что не нашло понимания у коллег. )
Но .. анализ (книжки 1985года) показывал, что константы, включаемые в код, наиболее удобны в 12 битном представлении, а не 8-и битном. Собственно тогда проектировался и эмулировался 12-битный проц, что не нашло понимания у коллег. )
Подождите, битность процессора определяется разрядностью его АЛУ, т.е. какую разрядность он может обработать за минимальное время (в идеале - 1 такт). Именно поэтому 8088 это 16-ти разрядный процессор с 8-ми разрядной шиной (урезанный по шине 8086).
А если у вас просто 12-ти разрядная шина данных и такой же ширины опкод но при 8-ми битном АЛУ, то поздравляю, вы изобрели PIC12.
Можно конечно
Но: это уже похоже на RISC-V, прыжок по регистру там есть, опкоды небольшие. И в современных RISC не имеет значения в каких битах команды лежит операнд а в каких оператор - всё равно оно разом берётся из памяти
Можно. Я пробовал - один раз, например, у меня сложный конечный автомат для генерации и разбора Ethernet-пакетов фактически разросся до полноценного проца. Средствами того же VHDL получилось сделать что-то, отдалённо напоминающее ассемблер, с поддержкой меток по крайней мере. Уже в процессе работы, погуглив, узнал, что не сильно это сложно - уровень курсовой работы студента технического вуза типа MIT.
Что важно - конечно, отсутствие полноценного компилятора. Я тогда пытался браться за бэкенд к gcc, но мало что понял. Программист из меня - тот ещё)
По схемотехнике ещё важно, чтобы логика хорошо ложилась на структуру FPGA. Иначе не получить высокой скорости. Поэтому вендоры FPGA не пользуются готовыми опенсорсными ядрами в качестве софтовых, а делают свои, типа MicroBlaze, Nios, Mico. Например, классическое универсальное АЛУ точно станет узким местом, и приходится либо пайплайнить, либо менять логику работы.
Моё почтнение упорству автора.
Расскажите поподробнее или где почитать про сборку linux под такие вещи
Пожалуй самый простой вариант - buildroot. Набор скриптов, которые автоматически скачивают и собирают все что выбрано при конфигурации. Но там получается система без компилятора. А еще результат сборки "оптимизируется" по размеру - на заключительном этапе пишет "Finalizing root filesystem..." и удаляет нафиг /usr/include, маны, и все статические библиотеки. Мне пришлось отредактировать скрипт чтобы ничего не удалялось.
Чтобы в системе был компилятор, нужно собрать toolchain отдельно и указать при конфигурации buildroot путь к нему. Для RISC-V я брал toolchain отсюда. Собирал командой make linux-native
(почему-то не документирована) - так помимо кросс-компилятора собирается еще нативный компилятор для RISC-V, который можно потом скопировать в целевую систему.
При желании можно обойтись и без buildroot. Самый минимум - собрать ядро и busybox, уже достаточно чтобы можно было загрузиться и увидеть консольку.
есть YOCTO Project -- специальная штука для построения дистрибутивов под любые нужны.
отличная работа! я тоже хотел бы собрать чтото подобное, но мне духу не хватит столько провернуть-изучить-разобрать.
Было бы интересно почитать статьи по реализации отдельных узлов системы.
духу не хватит столько провернуть-изучить-разобрать
У меня это было скорее не про путь к грандиозной цели, а про удовольствие от процесса.
Хотелось что-нибудь спаять. Но если спаять что-то небольшое и завершенное, то я потом день поиграюсь и всё. А если сделать плату с FPGA, то играть можно еще не один год. Общая цель бралась скорее как ориентир (типа гулять не куда глаза глядят, а в направлении той горы, возвышающейся на горизонте...), и я не закладывался на то, чтобы во что бы то ни стало её достигнуть.
Было бы интересно почитать статьи по реализации отдельных узлов системы.
Боюсь, если глубоко уходить в детали, то скучно получится. К тому же, несмотря на то что проект затрагивает очень много всего, ни в какой из затронутых областей я не эксперт. И про разводку платы, и про verilog, и про драйвера в линуксе найдется кто-нибудь, кто напишет лучше.
Отличная статья! Это сколько надо времени и терпения
Это прям круто, продайте марсоходу!
Про удаление лишнего припоя с ножек: тут уже рекомендовали оплётку, но есть ещё одна особенность: если лишнего припоя мало и вы не можете ткнуть в него паяльником или оплёткой — и, главное, он где‐то за ножками и паяльником с нормальной температурой не нагревается, иногда имеет смысл добавить больше припоя. Огромная капля удаляется оплёткой с ножек без проблем, мелкая капля едва касающаяся чего‐либо паяльником не удаляется без добавления припоя в принципе: либо вы поглощаете её лишним припоем, либо можно попробовать много флюса и фен.
Нагревать паяльник выше той температуры, при которой вам комфортно паять ножки, для удаления мелкой капли не нужно. При использовании оплётки, если вы паяете на минимальной комфортной температуре, придётся добавить 20—30 ℃.
Я обычно паяю большим топориком (K) с 240 ℃ для микросхем с ножками, 250 ℃ для ёмкостей/… 0603—0805, подключающихся к огромным полигонам, 260—280 ℃ для танталовых конденсаторов и THD. Выше в специальных случаях. Если жало — не большой топорик, температура может потребоваться выше.
А относительно BGA: по‐моему вы ухудшили себе жизнь, не купив ИК станцию вместо столика с подогревом. У нас в компании BGA паяют без трафаретов и пасты: берём нормальный флюс (сейчас — Mechanic SD-360), мажем его очень тонким и ровным слоем по всем площадкам, ставим схему и греем ИК станцией. Работает как с золотым финишным покрытием (иммерсионное золото), так и с ПОС‐63 (или остатками шариков), но если ПОС‐63 появился после выпайки микросхемы, а не после завода, то его нужно аккуратно выровнять оплёткой (в плохих случаях: сначала паяльником смахнуть остатки шариков, а потом уже оплёткой), при этом не убрав этой оплёткой маску (что тем легче сделать, чем горячее паяльник) и не сорвав случайно площадки (что тем легче сделать, чем холоднее паяльник).
Трафарет понадобится, если нужно будет перенакатывать шарики. Или если вы всё же решите поставить по одному 0402 конденсатору под каждый шарик питания и у вас есть ИК станция.
В качестве бюджетной ИК можно брать Puhui T-962, но её придётся доработать (у нас это запасная станция на случай поломки основной). Доработать — это обклеить термоскотчем, изменить прошивку, добавить дополнительный температурный сенсор.
Разработка DIY компьютера на базе FPGA