Jump to content
    

Подсчитать кол-во единиц в слове

Всем добрый день. Подскажите в такой задачке: есть слово в 64 разряда, надо как-то, за один такт желательно, посчитать в нем кол-во единиц. Частота 125 МГц. Реализовать надо аппаратно...

 

P.S. А если точнее - надо считать кол-во единиц в 8 словах по 64 разряда.

Edited by alexPec

Share this post


Link to post
Share on other sites

ПЛИС какая?

Посчитать в 8 словах нужно общую сумму единиц или для каждого слова свою? Тоже за такт?

Share this post


Link to post
Share on other sites

ПЛИС какая?

Посчитать в 8 словах нужно общую сумму единиц или для каждого слова свою? Тоже за такт?

ПЛИС Цыклон3, считать нужно для каждого слова отдельно сумму единиц, но все 8 слов надо за такт сделать

Share this post


Link to post
Share on other sites

Какой спидгрейд?

Считать за такт одну сумму или 8 - не принципиально.

 

 

:bb-offtopic:

Если не секрет, Вы что делаете - что-нибудь с Gigabit Ethernet связанное? :)

Share this post


Link to post
Share on other sites

Я бы написал простую и понятную функцию, а дальше пусть синтезатор думает.

Функция в стиле "обнулить, пербрать все биты, если 1, то прибавлять единичку" или "суммировать все биты одним сумматором".

Не получится - будете соревноваться с синтезаторами в сообразительности.

По идее, должно получиться дерево.

Share this post


Link to post
Share on other sites

Какой спидгрейд?

Считать за такт одну сумму или 8 - не принципиально.

 

 

:bb-offtopic:

Если не секрет, Вы что делаете - что-нибудь с Gigabit Ethernet связанное? :)

 

Спид грейд хотелось бы -8 использовать, по крайней мере пока все укладывается в -8.

Делаю приемник широкополосного доступа, подобный wi-max.

Share this post


Link to post
Share on other sites

На 8 спидгрейде в один такт не уложитесь. Если гуру скажут, что такое возможно и подскажут как - будет хорошо, самому интересно. :)

Вариант "в лоб" даже на C6, скорее всего, не ляжет.

 

А за 2 такта совсем не вариант?

 

Share this post


Link to post
Share on other sites

По моему задача не решаемая в принципе. Вот ход рассуждений.

Если надо за один такт, значит делать только комбинационный автомат(КА).

А дальше простой расчет. КА на 4 разряда битов в три бита суммы (0..4) синтезатор выдает 3 уровня иерархии.

С 4 разрядов до 8 это два по три бита сумм в каждой тетраде в 4 бита суммы в байте еще 3 уровня иерархии.

По аналогии с 8 до 16 это 3 уровня, с 16 до 32 еще три уровня и с 32 до 64 еще 3.

Итого получаем 15 уровней логики. Никакой Циклон не уложится в 8 ns задержки при прохождении 15 гейтов.

Если делать КА на логике задержка одного элемента должна быть не более 0.5ns или частота работы > 2ГГц.

Либо делать подсчет единиц на внешнем устройстве, либо ставить на каждое слово ROM на 16К Тб :)

Share this post


Link to post
Share on other sites

По моему задача не решаемая в принципе. Вот ход рассуждений.

 

Мда... убедительно! И противопоставить нечего... Буду менять структуру, колдовать с конвеерами.

 

Спасибо!

Share this post


Link to post
Share on other sites

Есть такая книжка: Генри Уоррен, мл. "Алгоритмические трюки для программистов".

В ней есть глава 5 "Подсчет битов", где описаны несколько способов как это сделать с помощью битовых опереций.

Если интересно могу выслать на e-mail (28 Мб PDF)

Share this post


Link to post
Share on other sites

тема на форуме обсуждалась многократно + выкладывались сорцы быстрых реализаций такого алгоритма, там всего то 6 уровней сумматоров от 1 до 6 ти бит, если учесть что 32 + 32 + 32 бита на сыклоне3 ложиться на ~160МГц, то на 125 МГц можно попробывать %)

Share this post


Link to post
Share on other sites

Есть такая книжка: Генри Уоррен, мл. "Алгоритмические трюки для программистов".

В ней есть глава 5 "Подсчет битов", где описаны несколько способов как это сделать с помощью битовых опереций.

Если интересно могу выслать на e-mail (28 Мб PDF)

Буду благодарен если вышлите на alex@udsu.ru

 

Share this post


Link to post
Share on other sites

Если интересно могу выслать на e-mail (28 Мб PDF)

 

Файлообменник был бы наверно лучше.

 

Share this post


Link to post
Share on other sites

alexPec, уважаемый des00 был как всегда точен, тем было несколько, ищутся легко, вот пара на вскидку:

Сумма единиц

Есть ли стандартная функция

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...