Перейти к содержанию
    

Хитрый однотактовый интегратор - покритикуйте

Всем доброго дня!

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

Есть 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.  По-моему как-то жирно для того, чтобы просто ткнуть, куда это число положить. 

Pic1.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

сделать pipeline нельзя? разбить на 2-3 такта и добавить сигнал готовности

для чего это если не секрет?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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:

для чего это если не секрет?

да какой нить хитрый коррелятор, для спектра с шириной полосы под гиг

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, Maverick_ сказал:

сделать pipeline нельзя? разбить на 2-3 такта и добавить сигнал готовности

 

Да пайплайнить можно без проблем, но это повлияет только на макс. частоту (а такая реализация по частоте меня устраивает). Вообще неважно как сделать, может даже и архитектура будет другая - нужно сохранить суть: добавить за 1 такт 8 чисел к указанными регистрам.  Можно не регистры - память использовать, еще что-то изменить. Главное суть сохранить. Как вариант рассматриваю затолкать сумматор и регистр в DSP (их у меня много свободных) - это позволит сохранить логику. Может еще на DSP можно какие-то функции переложить? Лучшего варианта пока не придумал. 

 

1 час назад, des00 сказал:

да какой нить хитрый коррелятор, для спектра с шириной полосы под гиг

Примерно так 🙂

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вариант 1: Если частота позволяет то кучу регистров заменить памятью и дальше работать на большей частоте по очереди... т.е. 8 последовательных операций где индекс это адрес ячейки.

Вариант 2: можно заюзать память 8 штук по 128 регистров. Каждый канал работает со своей. Потом на выходе суммируем памяти поячеечно :))

Если вышепредложенное не прокатывает то учитывая требование работы за один такт можно попробовать свалить всю логику и её оптимизацию на трассировщик. Любые комбинационные хитрости всё равно исчезнут. Он нарисует таблицу истинности и будет её оптимизировать. 🙂 Т.е. как она будет расписана не сильно важно. Всё равно трассировщик её переколбасит сам и по своему усмотрению.

Рисуем в лоб мультиплексор 8 входов на 128 выходов в зависимости от индекса и ставим таких 8 штук. Пусть дальше сам мучается :))))))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, MegaVolt said:

Рисуем в лоб мультиплексор 8 входов на 128 выходов в зависимости от индекса и ставим таких 8 штук. Пусть дальше сам мучается :))))))

ага, еще сеть бена 128х128 поставить и занулить 120 по входу))))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

37 минут назад, des00 сказал:

ага, еще сеть бена 128х128 поставить и занулить 120 по входу))))

Не удивлюсь если в результате разводки будет одно и то же по ресурсам... Неоднократно наблюдал такое на более мелких комбинационных схемах. Есть входы есть выходы... и как не изгаляйся между ними всё равно выходит одно и то же по ресурсам. Другое дело сможет ли он оптимизировать таблицу истинности на такое количество входов :)))))))))) 

Чтобы на это повлиять нужно вручную по LUTам раскидывать...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...