Комментарии 14
Безумно хочется увидеть, на какой частоте эта конструкция сможет работать в каком-нибудь Kintex (но не настолько, чтобы проверять самому).
Мне ещё предстоит все это дело запускать на учебной Nexys A7. Вот там попутно и узнаем.
ну так сделай триггеры по входу и выходу своего модуля, констрейнт на клок и открой тайминг репорт после имплементации, в нем все написано будет, на какой максимальной частоте это потенциально может работать
Ну или можно просто в тайминг репорте после имплементации найти самую длинную цепь и узнать максимальную частоту
здесь хорошо иметь такой код, чтобы он мог впоследствии легко делиться на куски, чтобы сделать конвейер.
Для начала нормально. Только нужно оговаривать, что пока нет поддержки округления, денормализованных чисел, NAN и т.д..
А почему (в первом варианте) нельзя было сразу определить схему полного сумматора и использовать его сигнал входного переноса для автоматического прибавления единицы ? Вместо этого Вы сначала определили полный сумматор из двух полусумматоров, а потом лишний раз ввели в без того длинную схему еще один сумматор для прибавления едницы при конвертировании в доп код. Схема получилась просто гигантская. Даже любопытно стало посмотреть на репорт - сколько LUTов затрачено и какая расчетная Fmax для такой схемы.
PS: Ждем аналогичную статью про умножение. Тут Вы одной комбинационной схемой не отделаетесь. :)
В целом можно было, я с Вами согласен. Первый вариант, на самом деле, был написан скорее из интереса, а не ради какого-то практического применения. Понятно, что он далек от идеала в плане оптимизациии) Там у меня была цель максимально подробно разложить схему на составляющие и при этом не запутать читателя, который пока не особо погружен в тему (я, в общем-то, и сам начинающий в этой сфере).
.
Побуду ворчливым критиком. Значит давать новичкам сумматор вещественных чисел с тоннами листинга это лишь отпугнёт новичков, которые так и останутся кодить на си и прочих жавах. Это нихрена не простой уровень. Во первых, для чего это? Fir фильтры что-ли, но поймет ли новичек сие, и главное - сможет ли отладить? На мой дилетантский взгляд новичкам следует начинать с всякого рода интерфейсных вещей, пусть это и будет изобретением велосипеда. К примеру, уарт. Приемник, передатчик. Куча всякого интересного при этом вылезет. Легко отладить, легко понять, легко написать, конечные автоматы пощупать. Или снифер spi - для интереса посмотреть общение микроконтроллера и spi памяти. А эти всякие сумматоры и умножители - этож цос, тут надо ещё придумать методы отладки, подумать как это все синхронизировать - может и конвейеры уже будут нужны.
А я побуду отвечающим на ворчливую критику :) Во-первых, спасибо за замечания, их я вполне могу понять. А теперь взглянем с моей стороны. Задачка про написание интерфейсных вещей и правда звучит интересно и полезно в качестве первого опыта, но она не особо подходит в моих реалиях, поскольку у меня, как и у большинства новичков, смею предположить, собственной железки под рукой нет. Приходится довольствоваться симуляцией (в которой при желании без особых проблем поднимается все что угодно, включая математические модули) и периодическими попытками залить и потыкать это все на университетских ПЛИСах. Тем более я писал в начале статьи, что тут затрону именно шаги с написанием кода, симуляцией и генерацией схемы, не доходя пока что до железа, потому что это вполне тянет на еще один материал. Вещественный сумматор и правда, возможно, сложноват в качестве примера, у меня были такие мысли. Но мне вариант такой попался, что ж поделать... И я решил, что было бы неплохо все это разобрать, как есть, пока решаю задачу. Как-то так эта статья и получилась.
На железе, кстати, оно завелось, как раз сегодня тестил.
Непонятно про "тонны листинга". 43 строчки кода у автора статьи. UART никогда так просто не написать. Ни одного триггера. Одна комбинационная логика. Куда уж проще.
Комбинационная логика на SystemVerilog