10x Engineer.
Один работник зашел к барину и говорит:
— Барин! Почему ты мне платишь всего пять копеек, а Ивану всегда пять рублей?
Барин смотрит в окно и говорит:
— Вижу я, кто-то едет. Вроде бы сено мимо нас везут. Выйди-ка, посмотри.
Вышел работник. Зашел снова и говорит:
— Правда, барин. Вроде сено.
— А не знаешь откуда? Может, с Семеновских лугов?
— Не знаю.
— Сходи и узнай.
Пошел работник. Снова входит.
— Барин! Точно, с Семеновских.
— А не знаешь, сено первого или второго укоса?
— Не знаю.
— Так сходи, узнай!
Вышел работник. Возвращается снова.
— Барин! Первого укоса!
— А не знаешь, по чем?
— Не знаю.
— Так сходи, узнай.
Сходил. Вернулся и говорит:
— Барин! По пять рублей.
— А дешевле не отдают?
— Не знаю.
В этот момент входит Иван и говорит:
— Барин! Мимо везли сено с Семеновских лугов первого укоса. Просили по 5 рублей. Сторговались по 3 рубля за воз. Я их загнал во двор, и они там разгружают.
Барин обращается к первому работнику и говорит:
— Теперь ты понял, почему тебе платят 5 копеек, а Ивану 5 рублей?
Один работник зашел к барину и говорит:
— Барин! Почему ты мне платишь всего пять копеек, а Ивану всегда пять рублей?
Барин смотрит в окно и говорит:
— Вижу я, кто-то едет. Вроде бы сено мимо нас везут. Выйди-ка, посмотри.
Вышел работник. Зашел снова и говорит:
— Правда, барин. Вроде сено.
— А не знаешь откуда? Может, с Семеновских лугов?
— Не знаю.
— Сходи и узнай.
Пошел работник. Снова входит.
— Барин! Точно, с Семеновских.
— А не знаешь, сено первого или второго укоса?
— Не знаю.
— Так сходи, узнай!
Вышел работник. Возвращается снова.
— Барин! Первого укоса!
— А не знаешь, по чем?
— Не знаю.
— Так сходи, узнай.
Сходил. Вернулся и говорит:
— Барин! По пять рублей.
— А дешевле не отдают?
— Не знаю.
В этот момент входит Иван и говорит:
— Барин! Мимо везли сено с Семеновских лугов первого укоса. Просили по 5 рублей. Сторговались по 3 рубля за воз. Я их загнал во двор, и они там разгружают.
Барин обращается к первому работнику и говорит:
— Теперь ты понял, почему тебе платят 5 копеек, а Ивану 5 рублей?
👍8❤4
Попробую делиться мыслями про инженерное совершенство, которые показались мне ценными. Надеюсь, это будет полезно и вам.
@engineer10x
@engineer10x
🔥1
On the way to 10x engineering pinned «Попробую делиться мыслями про инженерное совершенство, которые показались мне ценными. Надеюсь, это будет полезно и вам. @engineer10x»
В торговле большое значение имеет не только (и возможно даже не столько) то, что знает человек, но и то как он работает. В отличие от других отраслей, в торговле за счёт высокой прибыли-на-человека то, как ты работаешь, может иметь большое и видимое влияние на общую прибыль и через это на твои собственные доходы.
Хороший инженер в торговле - это самодостаточная боевая единица, способная искать себе задачи, гарантированно двигать их вперёд и выкатывать, причём вчера, фанатично отрезая лишнее. Каждый шаг вперёд - это minimal viable product, потихоньку увеличивающий pnl. Это человек-оркестр, сам себе product, project manager (и куча других ролей), что облегчается тем, что заказчики (трейдеры) сидят, как правило, в соседнем ряду.
Человек, способный, например, собрать и представить требования, зависимости новой системы и очерёдность их выкатывания в прозрачном для трейдеров, поддержки и других программистов виде и обеспечить отсутствие трения при раскатке одной зависимости за другой.
Выкатить что-то сегодня даже с 70%ным качеством ценится больше, чем идеально вылизанное через неделю, потому что из-за альфа распада прибыльности стратегий и конкуренции через неделю может уже и не понадобиться. Поэтому это человек, готовый рисковать и действовать решительно, выбирая, что именно пойдёт в 30% отрезанного сегодня. Иногда оказывается, что выбрать то, над чем не работать, важнее чем то, над чем работать.
Человек, не гнушающийся разобраться в ошибках и логах старой системы, которую он видит впервые, и обеспечить выкаченный в production фикс к следующему утру.
Человек, выкативший в таком режиме несколько средне-крупных проектов может рассчитывать на 200-300k aud + singup в Сиднее или £600-800k first year guaranteed в Лондоне в торговых фирмах первого эшелона. (Цифры могут немного меняться в зависимости от общей успешности торговли в данном конкретном году).
@engineer10x
Хороший инженер в торговле - это самодостаточная боевая единица, способная искать себе задачи, гарантированно двигать их вперёд и выкатывать, причём вчера, фанатично отрезая лишнее. Каждый шаг вперёд - это minimal viable product, потихоньку увеличивающий pnl. Это человек-оркестр, сам себе product, project manager (и куча других ролей), что облегчается тем, что заказчики (трейдеры) сидят, как правило, в соседнем ряду.
Человек, способный, например, собрать и представить требования, зависимости новой системы и очерёдность их выкатывания в прозрачном для трейдеров, поддержки и других программистов виде и обеспечить отсутствие трения при раскатке одной зависимости за другой.
Выкатить что-то сегодня даже с 70%ным качеством ценится больше, чем идеально вылизанное через неделю, потому что из-за альфа распада прибыльности стратегий и конкуренции через неделю может уже и не понадобиться. Поэтому это человек, готовый рисковать и действовать решительно, выбирая, что именно пойдёт в 30% отрезанного сегодня. Иногда оказывается, что выбрать то, над чем не работать, важнее чем то, над чем работать.
Человек, не гнушающийся разобраться в ошибках и логах старой системы, которую он видит впервые, и обеспечить выкаченный в production фикс к следующему утру.
Человек, выкативший в таком режиме несколько средне-крупных проектов может рассчитывать на 200-300k aud + singup в Сиднее или £600-800k first year guaranteed в Лондоне в торговых фирмах первого эшелона. (Цифры могут немного меняться в зависимости от общей успешности торговли в данном конкретном году).
@engineer10x
👍11🔥4❤1
Вкратце об устройстве Quantitative Trading Company для тех, кто не очень знаком с индустрией, от Headlands Tech. Хорошо описывает основные роли сотрудников и задачи, которые они решают.
@engineer10x
@engineer10x
👍4
Richard Geldreich работал в играх (как там принято - на износ), а через какое-то время создал свою маленькую компанию (Binomial) и через неё стал лицензировать разным игроконторам свою собственную библиотеку для работы с текстурами.
Одно время он много писал в твиттере про то, как сильно наёмным программистам недоплачивают (даже если это скажем us$600k) и как целью каждого наёмного программиста, стремящегося к финансовой независимости, должно быть создание своей Intellectual Property и еёпродажа сдача в аренду.
Основная мысль - при работе за зарплату ты продаёшь своё время, при этом зависимость между временем и доходом как правило линейная. Лицензирование своей IP даёт возможность сделать эту зависимость нелинейной.
https://twitter.com/richgel999/status/1551502605356072960
@engineer10x
Одно время он много писал в твиттере про то, как сильно наёмным программистам недоплачивают (даже если это скажем us$600k) и как целью каждого наёмного программиста, стремящегося к финансовой независимости, должно быть создание своей Intellectual Property и её
Основная мысль - при работе за зарплату ты продаёшь своё время, при этом зависимость между временем и доходом как правило линейная. Лицензирование своей IP даёт возможность сделать эту зависимость нелинейной.
https://twitter.com/richgel999/status/1551502605356072960
@engineer10x
👍10
Stefan Schlamp очень интересно пишет про разные статистические закономерности и наблюдения в торговле на основе очень подробных данных с Eurex.
Пока что это единственный блог с Линкедина, показавшийся мне полезным, т.к. в основном я там вижу восторженное мотивационное графоманство. Знаете ли вы какие-то полезные блоги на Линкедине?
https://www.linkedin.com/in/stefanschlamp
@engineer10x
Пока что это единственный блог с Линкедина, показавшийся мне полезным, т.к. в основном я там вижу восторженное мотивационное графоманство. Знаете ли вы какие-то полезные блоги на Линкедине?
https://www.linkedin.com/in/stefanschlamp
@engineer10x
👍6
Думать о решении задач бизнеса вместо почасовой продажи своего времени - первый шаг в развитии своей консалтинговой фирмы.
Patrick McKenzie рассказывает, как однажды его знакомый ошарашил его признанием того, что ценность содержания их разговора значительно превосходит почасовую плату:
Статья достаточно графоманская, но в ней много полезной информации по этой теме (а также ссылок на другие полезные статьи).
@engineer10x
Patrick McKenzie рассказывает, как однажды его знакомый ошарашил его признанием того, что ценность содержания их разговора значительно превосходит почасовую плату:
At the end of the conversation, Thomas said something which, no exaggeration, changed my life.
Thomas: Some food for thought: If this hadn't been a coffee date, but rather a consulting engagement, I'd be writing you a check right now.
Me: Three hours at $100 an hour or whatever an intermediate programmer is worth would only be $300. Why worry about that?
Thomas: I got at least $15,000 of value out of this conversation.
Статья достаточно графоманская, но в ней много полезной информации по этой теме (а также ссылок на другие полезные статьи).
@engineer10x
Kalzumeus
Growing One's Consulting Business
How I got started consulting and the advice which changed my (business) life.
👍3
Данные с Eurex показывают как с 2021 года доля участников Eurex с tick-to-trade latency < 20 нс выросла с 0 до >50% (и в 2023 году почти все HFT работают с такой задержкой).
Казалось бы - 20 нс - это меньше минимального теоретического предела реакции: события с рынка приходят через UDP multicast, чтобы прочесть одни только заголовки нужно больше времени: заголовок Ethernet 14 байтов, IP - 20 байтов, UDP - 8 байтов. Чтобы прочитать их через 10 ГГц Ethernet (10 бит в наносекунду) нужно минимум 33.6 нс (42 байта х 8 бит/байт / 10 бит/нс) и это мы ещё не дошли до полезной нагрузки в UDP пакете, чтобы понять хотим ли мы вообще отправлять ордер.
Как же они это делают?
@engineer10x
Казалось бы - 20 нс - это меньше минимального теоретического предела реакции: события с рынка приходят через UDP multicast, чтобы прочесть одни только заголовки нужно больше времени: заголовок Ethernet 14 байтов, IP - 20 байтов, UDP - 8 байтов. Чтобы прочитать их через 10 ГГц Ethernet (10 бит в наносекунду) нужно минимум 33.6 нс (42 байта х 8 бит/байт / 10 бит/нс) и это мы ещё не дошли до полезной нагрузки в UDP пакете, чтобы понять хотим ли мы вообще отправлять ордер.
Как же они это делают?
@engineer10x
🔥8❤1👍1😁1
Speculative Triggering
Конечно постоянно и гарантированно отвечать за 50 нс или меньше через память и процессор невозможно, можно только через сетевушку с FPGA, которая сразу закольцевывает сигнал из Rx в Tx порты. FPGA - это матрица логических элементов и связей между ними, которую можно перепрошивать. На каждом такте вся матрица может параллельно продвигать сигнал на следующий этап, визуально отличие от CPU выглядит так. Поэтому при тактовой частоте 10 ГГц такая сетевушка может начинать выплёвывать первый бит Ethernet кадра в Tx канал уже через доли наносекунды после поступления первого бита на Rx.
Ещё в/до 2020 года некоторые умельцы научились реагировать на рыночные события за < 50 нс. Делали они это примерно так.
Рис 1. FPGA решает что приходящий с рынка пакет может быть потенциально интересным, посмотрев на начало UDP payload или даже немного раньше. Если да - то начинает отправлять заголовки для TCP-пакета с будущими ордерами, параллельно продолжая читать. Если payload оказывается неинтересным на самом деле, то уже отправляемый пакет отправляется в помойку. Его нельзя просто перестать слать, а надо как-то закончить. Для этого можно например записать какой-нибудь закрытый порт в поле dst TCP port, а когда биржа его получит, то отбросит, послав RST. К моменту записи порта можно прочитать достаточно много из payload, чтобы понять действительно ли он интересен.
Такие мусорные пакеты приходили на биржу очень часто, что создавало ощутимую лишнюю нагрузку на биржу и ей это достаточно быстро поднадоело. Руководствуясь принципом "не можешь остановить процесс - нужно его возглавить", в феврале 2020 Eurex выпустила циркуляр 010/20, который, с одной стороны, ввёл ограничения на это безобразие, а с другой - дал техническую возможность продолжать это делать так, чтобы биржа не ломалась. (После этих изменений мусорного трафика - больше 70%, и его доля постоянно растёт).
Что поменялось: во-первых, в поле DSCP (2 байт) IP заголовка добавлялись нестандартные флаги, показывающие насколько интересные данные будут в пакете. (Так как эти пакеты не уходили бы во внешний интернет, нестандартность флагов не приводила к проблемам). Во-вторых, вводились discard IP-адреса, всё отправленное на которые отбрасывалось первым же биржевым маршрутизатором. Также вводились ограничения на размер "брандспойта", которым участник рынка мог заливать биржу трафиком, и дополнительные комиссии "за злоупотребления".
Рис. 2. Теперь стало можно начинать писать исходящий пакет прочитав 16-й байт входящего, т.е. в пределах 20 наносекунд, а к моменту заполнения dst IP-адреса можно было даже немного посмотреть в конкретные цены из payload и отправить пакет в помойку, если они оказывались неинтересными. Или начать писать чуть-чуть позже чтобы посмотреть в payload подольше.Или извращаться как-то ещё.
Ссылки.
1. HFT Market Data Share - статья , из которой картинка в предыдущем посте.
2. Описание Speculative Triggering (и других интересных вещей про динамику рынка) от самой Eurex.
3. Как работает FPGA.
@engineer10x
Конечно постоянно и гарантированно отвечать за 50 нс или меньше через память и процессор невозможно, можно только через сетевушку с FPGA, которая сразу закольцевывает сигнал из Rx в Tx порты. FPGA - это матрица логических элементов и связей между ними, которую можно перепрошивать. На каждом такте вся матрица может параллельно продвигать сигнал на следующий этап, визуально отличие от CPU выглядит так. Поэтому при тактовой частоте 10 ГГц такая сетевушка может начинать выплёвывать первый бит Ethernet кадра в Tx канал уже через доли наносекунды после поступления первого бита на Rx.
Ещё в/до 2020 года некоторые умельцы научились реагировать на рыночные события за < 50 нс. Делали они это примерно так.
Рис 1. FPGA решает что приходящий с рынка пакет может быть потенциально интересным, посмотрев на начало UDP payload или даже немного раньше. Если да - то начинает отправлять заголовки для TCP-пакета с будущими ордерами, параллельно продолжая читать. Если payload оказывается неинтересным на самом деле, то уже отправляемый пакет отправляется в помойку. Его нельзя просто перестать слать, а надо как-то закончить. Для этого можно например записать какой-нибудь закрытый порт в поле dst TCP port, а когда биржа его получит, то отбросит, послав RST. К моменту записи порта можно прочитать достаточно много из payload, чтобы понять действительно ли он интересен.
Такие мусорные пакеты приходили на биржу очень часто, что создавало ощутимую лишнюю нагрузку на биржу и ей это достаточно быстро поднадоело. Руководствуясь принципом "не можешь остановить процесс - нужно его возглавить", в феврале 2020 Eurex выпустила циркуляр 010/20, который, с одной стороны, ввёл ограничения на это безобразие, а с другой - дал техническую возможность продолжать это делать так, чтобы биржа не ломалась. (После этих изменений мусорного трафика - больше 70%, и его доля постоянно растёт).
Что поменялось: во-первых, в поле DSCP (2 байт) IP заголовка добавлялись нестандартные флаги, показывающие насколько интересные данные будут в пакете. (Так как эти пакеты не уходили бы во внешний интернет, нестандартность флагов не приводила к проблемам). Во-вторых, вводились discard IP-адреса, всё отправленное на которые отбрасывалось первым же биржевым маршрутизатором. Также вводились ограничения на размер "брандспойта", которым участник рынка мог заливать биржу трафиком, и дополнительные комиссии "за злоупотребления".
Рис. 2. Теперь стало можно начинать писать исходящий пакет прочитав 16-й байт входящего, т.е. в пределах 20 наносекунд, а к моменту заполнения dst IP-адреса можно было даже немного посмотреть в конкретные цены из payload и отправить пакет в помойку, если они оказывались неинтересными. Или начать писать чуть-чуть позже чтобы посмотреть в payload подольше.
Ссылки.
1. HFT Market Data Share - статья , из которой картинка в предыдущем посте.
2. Описание Speculative Triggering (и других интересных вещей про динамику рынка) от самой Eurex.
3. Как работает FPGA.
@engineer10x
YouTube
QBayLogic - CPU vs FPGA explained in a short animation
CPU vs FPGA: Understanding the Difference
In the world of technology, CPUs (Central Processing Units) and FPGAs (Field-Programmable Gate Arrays) are two powerful tools for solving complex problems—but they are fundamentally different.
This short animation…
In the world of technology, CPUs (Central Processing Units) and FPGAs (Field-Programmable Gate Arrays) are two powerful tools for solving complex problems—but they are fundamentally different.
This short animation…
🔥13👍4❤1🙏1
Я в телеге относительно недавно, а ретвитов тут особо нет, поэтому вопрос.
Какой для вас самый ценный и любимый (ну после Валеры, конечно ;) ) канал (или два ) по программированию/IT в телеге, чтобы прямо 100% must read?
Хотелось бы набрать хороших и подписаться.
Какой для вас самый ценный и любимый (ну после Валеры, конечно ;) ) канал (
Хотелось бы набрать хороших и подписаться.
Интересный минималистичный пример торговой стратегии с backtest на исторических данных. Контора продаёт доступ к ним и статья (да и весь блог) рекламирует простоту их использования.
Стратегия набирает позицию до определённого предела если в книжке перекос выше определённого порога. Реальные стратегии принимают решение покупать или продавать на основе множества факторов, тут для наглядности выбран очень простой - book skew.
Другое допущение - это отсутствие задержки между отправкой и исполнением заявки. В реальности за это время рынок часто уходит в другую сторону и стратегия "промахивается"; для backtest с хорошей предсказательной силой это надо как-то моделировать.
Стратегия получается даже прибыльной, но только до учёта комиссий.
@engineer10x
Стратегия набирает позицию до определённого предела если в книжке перекос выше определённого порога. Реальные стратегии принимают решение покупать или продавать на основе множества факторов, тут для наглядности выбран очень простой - book skew.
Другое допущение - это отсутствие задержки между отправкой и исполнением заявки. В реальности за это время рынок часто уходит в другую сторону и стратегия "промахивается"; для backtest с хорошей предсказательной силой это надо как-то моделировать.
Стратегия получается даже прибыльной, но только до учёта комиссий.
@engineer10x
Databento
High-frequency, liquidity-taking strategy | Databento Blog
Check out our algorithmic trading guide to learn how to create a simple, high-frequency, liquidity-taking strategy with Databento's stock market data.
👍4❤1
Знакомы ли вы с FPGA?
Anonymous Poll
25%
нет
51%
что-то слышал...
15%
пробовал игрушечные проекты
8%
Verilog/VHDL - мои родные языки!
👍2
Знакомство с FPGA для программиста
В торговлю заходил через острозаточенный С++, да и изначальный профиль - программирование, поэтому о железе познания были в основном теоретические. Но вот я здесь и, оказывается, самые скоростные части execution работают на FPGA, поэтому обязательно надо посмотреть что это за зверь. Сказано - сделано, учебная плата DE10-Lite куплена за $100 (сейчас стоит ~$150 ) и вот я уже продираюсь сквозь дебри Verilog. Железячники: прошу дальше не смеяться :) .
Оказалось очень интересно, но в то же время совершенно другой мир и большие трудозатраты, ведь там с нуля нужно писать вообще всё (ну если библиотеки не покупать). То есть если хочешь например что-то вывести на экран через VGA, то нужно покурить стандарт VGA и написать свои модули для правильной генерации сигнала с точно подобранной вертикальной и горизонтальной частотой (подробнее например здесь). За что-то чуть более сложное, чем VGA, лучше вообще не браться, поэтому до чтения Ethernet пакетов дойти (пока?) не удалось :).
Открытий много. Это что же получается, в этом мире нельзя просто обратиться к памяти и взять значение, а нужно самостоятельно писать целый контроллер памяти?? Начинаешь его писать и сразу понимаешь почему L1 cache - это SRAM, а обычная память - DRAM. Вкратце, ячейка SRAM - это 6 транзисторов, а DRAM - транзистор и конденсатор. SRAM значительно быстрее, но больше размером и дороже из-за количества транзисторов. DRAM - меньше и дешевле, но тормознее, а ещё из-а того, что конденсатор "течёт", её надо регулярно перезаряжать. Вот реально - сидишь ты, значит, в контроллере памяти, схватился за сигнал от генератора тактовой частоты и раз в N периодов вешаешь на дверь табличку "обед", читаешь каждую ячейку памяти и тут же записываешь её обратно.
Если раньше технические подробности про память из WEPSKAM были чем-то абстрактным, то после работы со своим проектом для FPGA (и особенно после отладки) спинным мозгом начинаешь чувствовать как оно всё работает. Периодически вспоминалось изучение ассемблера для 8086 и становилось понятным почему в этом процессоре что-то было сделано именно так, а не иначе.
Часто учить FPGA начинают с реализации RISC-V процессора. Его преимущество в том, что спецификация открытая, инструкции простые и их немного, можно реализовывать подмножества стандарта, поэтому можно делать MVP на каждой итерации - всё как мы любим. Потом пишешь программу на С++, собираешь её gcc под получившийся процессор и voilà - она работает на твоём собственном процессоре, фантастика!Был бы студентом с бесконечным временем - обязательно бы занялся сейчас.
В общем опыт весьма положительный. Для низкоуровневых программистов - рекомендую, мне показалось очень полезным.
@engineer10x
P.S.
DE-Lite, кстати, хоть карточка дешёвая и учебная, но весьма функциональная ("the board utilizes the maximum capacity MAX 10 FPGA, which has around 50K logic elements(LEs) and on-die analog-to-digital converter (ADC). It features on-board USB-Blaster, SDRAM, accelerometer, VGA output, 2x20 GPIO expansion connector, and an Arduino UNO R3 expansion connector in a compact size" ). Правда проекта для применения в домашнем хозяйстве ей придумать пока так не удалось, поэтому ограничился игрушечными проектами.
В торговлю заходил через острозаточенный С++, да и изначальный профиль - программирование, поэтому о железе познания были в основном теоретические. Но вот я здесь и, оказывается, самые скоростные части execution работают на FPGA, поэтому обязательно надо посмотреть что это за зверь. Сказано - сделано, учебная плата DE10-Lite куплена за $100 (
Оказалось очень интересно, но в то же время совершенно другой мир и большие трудозатраты, ведь там с нуля нужно писать вообще всё (ну если библиотеки не покупать). То есть если хочешь например что-то вывести на экран через VGA, то нужно покурить стандарт VGA и написать свои модули для правильной генерации сигнала с точно подобранной вертикальной и горизонтальной частотой (подробнее например здесь). За что-то чуть более сложное, чем VGA, лучше вообще не браться, поэтому до чтения Ethernet пакетов дойти (пока?) не удалось :).
Открытий много. Это что же получается, в этом мире нельзя просто обратиться к памяти и взять значение, а нужно самостоятельно писать целый контроллер памяти?? Начинаешь его писать и сразу понимаешь почему L1 cache - это SRAM, а обычная память - DRAM. Вкратце, ячейка SRAM - это 6 транзисторов, а DRAM - транзистор и конденсатор. SRAM значительно быстрее, но больше размером и дороже из-за количества транзисторов. DRAM - меньше и дешевле, но тормознее, а ещё из-а того, что конденсатор "течёт", её надо регулярно перезаряжать. Вот реально - сидишь ты, значит, в контроллере памяти, схватился за сигнал от генератора тактовой частоты и раз в N периодов вешаешь на дверь табличку "обед", читаешь каждую ячейку памяти и тут же записываешь её обратно.
Если раньше технические подробности про память из WEPSKAM были чем-то абстрактным, то после работы со своим проектом для FPGA (и особенно после отладки) спинным мозгом начинаешь чувствовать как оно всё работает. Периодически вспоминалось изучение ассемблера для 8086 и становилось понятным почему в этом процессоре что-то было сделано именно так, а не иначе.
Часто учить FPGA начинают с реализации RISC-V процессора. Его преимущество в том, что спецификация открытая, инструкции простые и их немного, можно реализовывать подмножества стандарта, поэтому можно делать MVP на каждой итерации - всё как мы любим. Потом пишешь программу на С++, собираешь её gcc под получившийся процессор и voilà - она работает на твоём собственном процессоре, фантастика!
В общем опыт весьма положительный. Для низкоуровневых программистов - рекомендую, мне показалось очень полезным.
@engineer10x
P.S.
DE-Lite, кстати, хоть карточка дешёвая и учебная, но весьма функциональная (
www.terasic.com.tw
Terasic - DE Boards - MAX - DE10-Lite Development and Education Board
- MAX 10 10M50DAF484C7G Device
- Accelerometer and 4-bit Resistor VGA
- 64MB SDRAM, x16 bits data bus
- Arduino UNO R3 and 2x20 GPIO connector
- On-Board USB Blaster (Normal type B USB)
- Accelerometer and 4-bit Resistor VGA
- 64MB SDRAM, x16 bits data bus
- Arduino UNO R3 and 2x20 GPIO connector
- On-Board USB Blaster (Normal type B USB)
👍9❤4🔥3