alexPec 3 4 сентября, 2010 Опубликовано 4 сентября, 2010 (изменено) · Жалоба Всем добрый день. Подскажите в такой задачке: есть слово в 64 разряда, надо как-то, за один такт желательно, посчитать в нем кол-во единиц. Частота 125 МГц. Реализовать надо аппаратно... P.S. А если точнее - надо считать кол-во единиц в 8 словах по 64 разряда. Изменено 4 сентября, 2010 пользователем alexPec Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Des333 0 4 сентября, 2010 Опубликовано 4 сентября, 2010 · Жалоба ПЛИС какая? Посчитать в 8 словах нужно общую сумму единиц или для каждого слова свою? Тоже за такт? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexPec 3 4 сентября, 2010 Опубликовано 4 сентября, 2010 · Жалоба ПЛИС какая? Посчитать в 8 словах нужно общую сумму единиц или для каждого слова свою? Тоже за такт? ПЛИС Цыклон3, считать нужно для каждого слова отдельно сумму единиц, но все 8 слов надо за такт сделать Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Des333 0 4 сентября, 2010 Опубликовано 4 сентября, 2010 · Жалоба Какой спидгрейд? Считать за такт одну сумму или 8 - не принципиально. :bb-offtopic: Если не секрет, Вы что делаете - что-нибудь с Gigabit Ethernet связанное? :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Shtirlits 0 4 сентября, 2010 Опубликовано 4 сентября, 2010 · Жалоба Я бы написал простую и понятную функцию, а дальше пусть синтезатор думает. Функция в стиле "обнулить, пербрать все биты, если 1, то прибавлять единичку" или "суммировать все биты одним сумматором". Не получится - будете соревноваться с синтезаторами в сообразительности. По идее, должно получиться дерево. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexPec 3 4 сентября, 2010 Опубликовано 4 сентября, 2010 · Жалоба Какой спидгрейд? Считать за такт одну сумму или 8 - не принципиально. :bb-offtopic: Если не секрет, Вы что делаете - что-нибудь с Gigabit Ethernet связанное? :) Спид грейд хотелось бы -8 использовать, по крайней мере пока все укладывается в -8. Делаю приемник широкополосного доступа, подобный wi-max. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Des333 0 4 сентября, 2010 Опубликовано 4 сентября, 2010 · Жалоба На 8 спидгрейде в один такт не уложитесь. Если гуру скажут, что такое возможно и подскажут как - будет хорошо, самому интересно. :) Вариант "в лоб" даже на C6, скорее всего, не ляжет. А за 2 такта совсем не вариант? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tAmega 0 5 сентября, 2010 Опубликовано 5 сентября, 2010 · Жалоба По моему задача не решаемая в принципе. Вот ход рассуждений. Если надо за один такт, значит делать только комбинационный автомат(КА). А дальше простой расчет. КА на 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К Тб :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexPec 3 5 сентября, 2010 Опубликовано 5 сентября, 2010 · Жалоба По моему задача не решаемая в принципе. Вот ход рассуждений. Мда... убедительно! И противопоставить нечего... Буду менять структуру, колдовать с конвеерами. Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
neiver 0 5 сентября, 2010 Опубликовано 5 сентября, 2010 · Жалоба Есть такая книжка: Генри Уоррен, мл. "Алгоритмические трюки для программистов". В ней есть глава 5 "Подсчет битов", где описаны несколько способов как это сделать с помощью битовых опереций. Если интересно могу выслать на e-mail (28 Мб PDF) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 5 сентября, 2010 Опубликовано 5 сентября, 2010 · Жалоба тема на форуме обсуждалась многократно + выкладывались сорцы быстрых реализаций такого алгоритма, там всего то 6 уровней сумматоров от 1 до 6 ти бит, если учесть что 32 + 32 + 32 бита на сыклоне3 ложиться на ~160МГц, то на 125 МГц можно попробывать %) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexPec 3 5 сентября, 2010 Опубликовано 5 сентября, 2010 · Жалоба Есть такая книжка: Генри Уоррен, мл. "Алгоритмические трюки для программистов". В ней есть глава 5 "Подсчет битов", где описаны несколько способов как это сделать с помощью битовых опереций. Если интересно могу выслать на e-mail (28 Мб PDF) Буду благодарен если вышлите на [email protected] Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 8 5 сентября, 2010 Опубликовано 5 сентября, 2010 · Жалоба Если интересно могу выслать на e-mail (28 Мб PDF) Файлообменник был бы наверно лучше. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
one_man_show 0 5 сентября, 2010 Опубликовано 5 сентября, 2010 · Жалоба alexPec, уважаемый des00 был как всегда точен, тем было несколько, ищутся легко, вот пара на вскидку: Сумма единиц Есть ли стандартная функция Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
neiver 0 5 сентября, 2010 Опубликовано 5 сентября, 2010 · Жалоба Файлообменник был бы наверно лучше. Гугл Вам в помощь Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться