Pull to refresh

Comments 16

А в упражнениях 2 и 3 сигналы flow control должны разрываться триггером, или допустим сквозной комбинационный путь?

На ваше усмотрение. Можно сделать и так, и эдак, лишь бы проходил тестбенч и работало на плате. В комментариях решение прошу не приводить - мне прийдется его удалить

Да я всё равно не решу :)

Для меня является хорошей новостью что МИЭТ возвращается к своим корням и в ближайшем будущем его выпускники снова смогут заниматься разработкой чипов(именно для этого институт и создавался). Я правильно понял что институту ещё и исходное имя вернули и выбросили эту противную буковку Г из названия, добавленную несколько лет назад?

Сложные задачи. Я впал в ступор уже на умножителе 5-й степени. Смотрел на картинку и не мог понять как перемножая 8-разрядные числа непонятного формата получить верный 8-разрядный результат :)

Картинка приведена для иллюстрации. Она вообще не является решением, так как в ней не реализована backpressure, нет сигналов ready для upstream и downstream. Только сигналы valid.

Читайте текст. В тексте сказано "параметризованный модуль", то есть должен работать и с 8-битными, и с 32-битными, и с 786-битными числами.

Далее, в тексте сказано "совместим с тестбенчем".

https://gitflic.ru/project/yuri-panchul/valid-ready-etc/blob?file=boards%2Fomdazz%2F09_exam%2Fexam_1_pow_5_multi_cycle_fsm%2Ftb.sv

Из тестебенча очевидно что речь идет о целых числах. Причем со знаком они или беззнаковые - не имеет значения в данном случае, так как количество бит у аргумента и у результата одинаковое, и младшие N бит результата что умножения со знаком, что беззнакового умножения двух N-битных чисел совпадают. У них отличаются старшие N бит (от бита 2*N-1 до бита N), но мы эти биты обрезаем.

Уточнение: когда я говорю выше "числа со знаком" я имею в виду в дополнительном коде (two's complement). Если вы хотите привести решение в one's complement, можете сами ответить, будет ли оно совместимо с тестбенчем.

При этом, если вы перепишете тестбенч, и при этом напишете решение:

  1. С фиксированной точкой, округлением и насыщением.

  2. В формате с плавающей точкой IEEE 754 - 32 бита или 64-бита.

  3. В новомодных форматах unum или posit.

то оно тоже будет принято. Но задачка не про форматы чисел. Задачка про сравнение частоты и пропускной способности у трех решений - комбинационного, конвейерного и итеративного с конечным автоматом. Умножение при этом используется в чиcтом виде просто как операция, которая делает длинный комбинационный путь.

И да, кстати о верности результата. Если вы напишете на Си: "unsigned a, b; a = 2000000000; b = a * a * a * a * a;" - то у вас будет верный или неверный результат?

Впрочем вы можете написать модуль который принимает числа с разрядностью N, и выдает результаты с разрядностью 5*N - к цели задачки это ортогонально.

это ортогонально.

"Так бы и сказал"(с) Джентльмены удачи :)

Вот какого лешего эта статья делает в хабе "Программирование микроконтроллеров"? Уже не в первый раз задаюсь подобным вопросом, видя Ваши статьи. Зачем Вы суете их туда, где им делать совершенно нечего?

Объясняю: я лично встречал программистов микроконтроллеров, у которых в какой-то момент своей карьеры возникала мысль "а не попробовать ли мне ПЛИС"?

Комбинация из программиста микроконтролеров и проектировщика ПЛИС хорошо продается, если вы захотите интервьироваться в аэрокосмические компании типа Blue Origin. Так как на ракете сеть их микроконтроллеров, ПЛИС и сенсоров. Они называют ПЛИС "an I/O extension for microcontrollers".

А чтобы эффективно использовать ПЛИС, нужно уметь решать микроархитектурные задачки по контролю потока, а также владеть интерфейсами шин - RTL и верификацией. Задачка с интервью в Blue Origin: напишите слейв с шиной AHB-Lite внутри которого два регистра.

Принимаете такое объяснение?

Демагогия. Если программист микроконтроллеров захочет попробовать себя в FPGA, то он пойдет читать статьи из хаба "FPGA". А если я отслеживаю хаб "Программирование микроконтроллеров", то это значит, что меня интересует именно программирование микроконтроллеров, как ни странно. А не финансы (а вдруг программист захочет попробовать себя в финансах), не разработка под Линукс, не веб-дизайн, не FPGA и т.д.

Если программист микроконтроллеров захочет попробовать себя в FPGA, то он пойдет читать статьи из хаба "FPGA". 

А если он не знает, что это за хрень? А тут увидит и узнает.

Следующий аргумент: когда я лет 10 назад поехал на конференцию микроконтроллерной компании Microchip в Аризоне - Microchip Masters - там был в том числе и класс, на котором объяснялась структура конвейера микропроцессорного ядра MIPS M4K и его производных (4Kc/14K/microAptiv/M5150) которые используются в микроконтроллерах PIC32. У меня многие заметки именно про микроархитектуру микроконтроллерных ядер. Почему Микрочипу можно, а мне нельзя? На их конференцию тоже ездят поголовно программисты микроконтроллеров.

А если он не знает, что это за хрень?

То он эту статью даже по диагонали не осилит.

 когда я лет 10 назад поехал на конференцию

Вы про сейчас думайте, а не про 10 лет назад в Аризоне. Про то, что хабы ввели для разделения статей по тематике, чтобы людям было удобно читать интересные им темы. В этой Вашей статье нет абсолютно ничего по теме программирования микроконтроллеров.

Вы про сейчас думайте, а не про 10 лет назад в Аризоне.

Держу пари, что этот класс у Микрочипа и сейчас в программе 2023 года есть. И вообще, микрочиповцы сделали встроенный ПЛИС в микроконтроллеры. См. напр. https://www.microchip.com/en-us/products/fpgas-and-plds/system-on-chip-fpgas

SmartFusion® SoC FPGAs

If you need a true SoC that gives more flexibility than traditional fixed-function microcontrollers without the excessive cost of soft processor cores on traditional FPGAs, SmartFusion SoCs offer full customization, IP protection and ease of use.

Industry’s only FPGAs with hard 32-bit Arm Cortex-M3 core

Programmable analog with Analog-to-Digital Converter (ADC), voltage/current/temperature monitors, Digital-to-Analog Converter (DAC), comparators, and Analog Compute Engine (ACE)

Proven ProASIC® 3 FPGA fabric with up to 500K gates and 204 analog and digital I/Os

Вот когда будете писать статью про этот микроконтроллер - тогда заслуженно разместите ее в обоих хабах :)

А если я отслеживаю хаб "Программирование микроконтроллеров", то это значит, что меня интересует именно программирование микроконтроллеров, как ни странно.

В наше время тема FPGA и микроконтроллеров местами пересекаются и дополняют друг друга. Во многих современных FPGA встречаются встроенные микроконтроллерные или микропроцессорные hard/soft ядра. У каждого более-менее серьезного вендора есть свой SoC с хард-процессором и FPGA на борту, а также своё софт-процессорное ядрышко для тех, кто не хочет платить лишнюю копеечку. Иногда эти софт-процессорчики приходится писать и fpga-шникам, а затем программировать. Иногда fpga-шникам приходится писать базовую периферию к этим soft/hard ядрышкам, а затем писать базовый драйверок для взаимодействия со своей периферией. Тогда всплывают все эти вопросы проектирования шин, транзакции, арбитраж и всё остальное.

Местами пересекаются. Но не часто и уж точно не в этой статье.

Sign up to leave a comment.

Articles