alexPec 6 September 4, 2010 Posted September 4, 2010 (edited) · Report post Всем добрый день. Подскажите в такой задачке: есть слово в 64 разряда, надо как-то, за один такт желательно, посчитать в нем кол-во единиц. Частота 125 МГц. Реализовать надо аппаратно... P.S. А если точнее - надо считать кол-во единиц в 8 словах по 64 разряда. Edited September 4, 2010 by alexPec Quote Share this post Link to post Share on other sites More sharing options...
Des333 0 September 4, 2010 Posted September 4, 2010 · Report post ПЛИС какая? Посчитать в 8 словах нужно общую сумму единиц или для каждого слова свою? Тоже за такт? Quote Share this post Link to post Share on other sites More sharing options...
alexPec 6 September 4, 2010 Posted September 4, 2010 · Report post ПЛИС какая? Посчитать в 8 словах нужно общую сумму единиц или для каждого слова свою? Тоже за такт? ПЛИС Цыклон3, считать нужно для каждого слова отдельно сумму единиц, но все 8 слов надо за такт сделать Quote Share this post Link to post Share on other sites More sharing options...
Des333 0 September 4, 2010 Posted September 4, 2010 · Report post Какой спидгрейд? Считать за такт одну сумму или 8 - не принципиально. :bb-offtopic: Если не секрет, Вы что делаете - что-нибудь с Gigabit Ethernet связанное? :) Quote Share this post Link to post Share on other sites More sharing options...
Shtirlits 0 September 4, 2010 Posted September 4, 2010 · Report post Я бы написал простую и понятную функцию, а дальше пусть синтезатор думает. Функция в стиле "обнулить, пербрать все биты, если 1, то прибавлять единичку" или "суммировать все биты одним сумматором". Не получится - будете соревноваться с синтезаторами в сообразительности. По идее, должно получиться дерево. Quote Share this post Link to post Share on other sites More sharing options...
alexPec 6 September 4, 2010 Posted September 4, 2010 · Report post Какой спидгрейд? Считать за такт одну сумму или 8 - не принципиально. :bb-offtopic: Если не секрет, Вы что делаете - что-нибудь с Gigabit Ethernet связанное? :) Спид грейд хотелось бы -8 использовать, по крайней мере пока все укладывается в -8. Делаю приемник широкополосного доступа, подобный wi-max. Quote Share this post Link to post Share on other sites More sharing options...
Des333 0 September 4, 2010 Posted September 4, 2010 · Report post На 8 спидгрейде в один такт не уложитесь. Если гуру скажут, что такое возможно и подскажут как - будет хорошо, самому интересно. :) Вариант "в лоб" даже на C6, скорее всего, не ляжет. А за 2 такта совсем не вариант? Quote Share this post Link to post Share on other sites More sharing options...
tAmega 0 September 5, 2010 Posted September 5, 2010 · Report post По моему задача не решаемая в принципе. Вот ход рассуждений. Если надо за один такт, значит делать только комбинационный автомат(КА). А дальше простой расчет. КА на 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К Тб :) Quote Share this post Link to post Share on other sites More sharing options...
alexPec 6 September 5, 2010 Posted September 5, 2010 · Report post По моему задача не решаемая в принципе. Вот ход рассуждений. Мда... убедительно! И противопоставить нечего... Буду менять структуру, колдовать с конвеерами. Спасибо! Quote Share this post Link to post Share on other sites More sharing options...
neiver 0 September 5, 2010 Posted September 5, 2010 · Report post Есть такая книжка: Генри Уоррен, мл. "Алгоритмические трюки для программистов". В ней есть глава 5 "Подсчет битов", где описаны несколько способов как это сделать с помощью битовых опереций. Если интересно могу выслать на e-mail (28 Мб PDF) Quote Share this post Link to post Share on other sites More sharing options...
des00 27 September 5, 2010 Posted September 5, 2010 · Report post тема на форуме обсуждалась многократно + выкладывались сорцы быстрых реализаций такого алгоритма, там всего то 6 уровней сумматоров от 1 до 6 ти бит, если учесть что 32 + 32 + 32 бита на сыклоне3 ложиться на ~160МГц, то на 125 МГц можно попробывать %) Quote Share this post Link to post Share on other sites More sharing options...
alexPec 6 September 5, 2010 Posted September 5, 2010 · Report post Есть такая книжка: Генри Уоррен, мл. "Алгоритмические трюки для программистов". В ней есть глава 5 "Подсчет битов", где описаны несколько способов как это сделать с помощью битовых опереций. Если интересно могу выслать на e-mail (28 Мб PDF) Буду благодарен если вышлите на alex@udsu.ru Quote Share this post Link to post Share on other sites More sharing options...
sazh 11 September 5, 2010 Posted September 5, 2010 · Report post Если интересно могу выслать на e-mail (28 Мб PDF) Файлообменник был бы наверно лучше. Quote Share this post Link to post Share on other sites More sharing options...
one_man_show 0 September 5, 2010 Posted September 5, 2010 · Report post alexPec, уважаемый des00 был как всегда точен, тем было несколько, ищутся легко, вот пара на вскидку: Сумма единиц Есть ли стандартная функция Quote Share this post Link to post Share on other sites More sharing options...
neiver 0 September 5, 2010 Posted September 5, 2010 · Report post Файлообменник был бы наверно лучше. Гугл Вам в помощь Quote Share this post Link to post Share on other sites More sharing options...