alexPec 3 16 ноября, 2022 Опубликовано 16 ноября, 2022 · Жалоба Всем доброго дня! Поднимал похожую тему, но в этой хотел бы получить критику на конкретную реализацию такого устройства. Есть 8 чисел A0-A7 (для конкретики, 10-разрядных, см. рисунок). И есть 8 индексов для каждого из этих чисел, idx0-idx7, семиразрядные, от 0 до 127. И есть 128 14-разрядных регистров. Задача - каждое из чисел A0-A7 прибавить к регистру с номером, соответствующим индексу idx0-idx7. Т.е. A0 прибавить к регистру с индексом idx0, A1 прибавить к регистру с индексом idx1, и т.д. Прибавить надо ни быть ни жить все 8 чисел A0-A7 за один такт. В пределах одного такта среди idx0-idx7 одинаковых индексов нет. Индексы - в порядке возрастания (если это что-то меняет). На рисунке попытался изобразить свое видение реализации такого интегратора. Есть 128 блоков B0-B127. В каждом блоке интегратор - регистр с сумматором, мультиплексор для выбора одного из 8 чисел, которое надо прибавить, и устройство сравнения, которое определяет, есть ли среди 8 чисел то, которое надо прибавить именно к этому регистру и выбирает соответствующий вход мультиплексора. Не нравится мне в этой реализации устройство сравнения - на мой взгляд больно много ресурсов на него будет затрачено, но другого решения пока не нашел. В качестве разминки для ума - можно ли решить эту задачу проще ? Чип - цинк ультраскейл+ Мультиплексор - я почитал UG574 - оптимален по скорости, из одного CLB можно получить 4 одноразрядных мультиплексора 8 в 1. Итого на мультиплексор 8 в 1 10-разрядных чисел уйдет 2,5 CLB. Почти уверен, что синтезатор позволит 2 таких мультиплексора уместить в 5 CLB. А вот устройство выбора - по-моему как-то коряво сделал. В 1 CLB 8шт. LUT6. Итого 48 входов. Устройству выбора надо 56 входов. Итого, в лучшем случае, только устройство выбора сожрет 2 CLB. По-моему как-то жирно для того, чтобы просто ткнуть, куда это число положить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 17 ноября, 2022 Опубликовано 17 ноября, 2022 · Жалоба сделать pipeline нельзя? разбить на 2-3 такта и добавить сигнал готовности для чего это если не секрет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 17 ноября, 2022 Опубликовано 17 ноября, 2022 · Жалоба 5 hours ago, alexPec said: В 1 CLB 8шт. LUT6. Итого 48 входов. Устройству выбора надо 56 входов. Итого, в лучшем случае, только устройство выбора сожрет 2 CLB. По-моему как-то жирно для того, чтобы просто ткнуть, куда это число положить. ну а других вариантов у вас особо то и нет, не просто ткнуть, а еще выбрать откуда ткнуть) 8 7 разрядных компараторов + от них OR на разрешение куда положить + декодер индекса мультиплексора. Можно мультиплексор сделать по AND-OR архитектуре, зашив туда разрешение счета, но не уверен что выиграете по ресурсам, надо смотреть. Ну и ЕМПН у хилых в этом семействе сумматор находится после LUT, поэтому не факт что отдельно выделенный MUX7/8, для этой задачи, ляжет оптимально. Я бы для начала попробовал в лоб, на AND-OR мультиплексере и уже танцевал бы от этой печки) 47 minutes ago, Maverick_ said: для чего это если не секрет? да какой нить хитрый коррелятор, для спектра с шириной полосы под гиг Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexPec 3 17 ноября, 2022 Опубликовано 17 ноября, 2022 · Жалоба 2 часа назад, Maverick_ сказал: сделать pipeline нельзя? разбить на 2-3 такта и добавить сигнал готовности Да пайплайнить можно без проблем, но это повлияет только на макс. частоту (а такая реализация по частоте меня устраивает). Вообще неважно как сделать, может даже и архитектура будет другая - нужно сохранить суть: добавить за 1 такт 8 чисел к указанными регистрам. Можно не регистры - память использовать, еще что-то изменить. Главное суть сохранить. Как вариант рассматриваю затолкать сумматор и регистр в DSP (их у меня много свободных) - это позволит сохранить логику. Может еще на DSP можно какие-то функции переложить? Лучшего варианта пока не придумал. 1 час назад, des00 сказал: да какой нить хитрый коррелятор, для спектра с шириной полосы под гиг Примерно так 🙂 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MegaVolt 29 17 ноября, 2022 Опубликовано 17 ноября, 2022 · Жалоба Вариант 1: Если частота позволяет то кучу регистров заменить памятью и дальше работать на большей частоте по очереди... т.е. 8 последовательных операций где индекс это адрес ячейки. Вариант 2: можно заюзать память 8 штук по 128 регистров. Каждый канал работает со своей. Потом на выходе суммируем памяти поячеечно :)) Если вышепредложенное не прокатывает то учитывая требование работы за один такт можно попробовать свалить всю логику и её оптимизацию на трассировщик. Любые комбинационные хитрости всё равно исчезнут. Он нарисует таблицу истинности и будет её оптимизировать. 🙂 Т.е. как она будет расписана не сильно важно. Всё равно трассировщик её переколбасит сам и по своему усмотрению. Рисуем в лоб мультиплексор 8 входов на 128 выходов в зависимости от индекса и ставим таких 8 штук. Пусть дальше сам мучается :)))))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 17 ноября, 2022 Опубликовано 17 ноября, 2022 · Жалоба 1 hour ago, MegaVolt said: Рисуем в лоб мультиплексор 8 входов на 128 выходов в зависимости от индекса и ставим таких 8 штук. Пусть дальше сам мучается :)))))) ага, еще сеть бена 128х128 поставить и занулить 120 по входу)))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MegaVolt 29 17 ноября, 2022 Опубликовано 17 ноября, 2022 · Жалоба 37 минут назад, des00 сказал: ага, еще сеть бена 128х128 поставить и занулить 120 по входу)))) Не удивлюсь если в результате разводки будет одно и то же по ресурсам... Неоднократно наблюдал такое на более мелких комбинационных схемах. Есть входы есть выходы... и как не изгаляйся между ними всё равно выходит одно и то же по ресурсам. Другое дело сможет ли он оптимизировать таблицу истинности на такое количество входов :)))))))))) Чтобы на это повлиять нужно вручную по LUTам раскидывать... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться