Kopart 0 25 апреля, 2006 Опубликовано 25 апреля, 2006 (изменено) · Жалоба хмм к вопросу о частоте, если вы в лоб синтезировали ваш пример, то вам выдали гавно, т.к. клок считаеться между регистрами :) в сучае этого примера нужно смотреть задержки по пути. Если пересчитать имено максимальную задержку сигнала для худшего разряда входного сигнала то получилось 10,85 нс - 92 МГц. Такие цифры для Акселератора, будут точнее?! Изменено 25 апреля, 2006 пользователем NiOS Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kopart 0 25 апреля, 2006 Опубликовано 25 апреля, 2006 · Жалоба [quote name='sazh' в приложении то что показал симплифай насколько я понимаю структуру ЛЯ стратикса второго, опять же суматор-вычитатель :) А попробовал VHDL пример в Advantage - все скушал и не поперхнулся... Мне кажется Пресижн рисует более понятные картинки. Внизу привожу картинку RTL - Schematic и Technology Schematic(для Stratix II) По сути для Stratix'a 2 должно быть одно и тоже что и Вас на рисунке, но, правда, ЛЯ Straix'a схема значительно наглядней?! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
oval 0 25 апреля, 2006 Опубликовано 25 апреля, 2006 · Жалоба хмм к вопросу о частоте, если вы в лоб синтезировали ваш пример, то вам выдали гавно, т.к. клок считаеться между регистрами :) в сучае этого примера нужно смотреть задержки по пути. Если пересчитать имено максимальную задержку сигнала для худшего разряда входного сигнала то получилось 10,85 нс - 92 МГц. Такие цифры для Акселератора, будут точнее?! В данном случае для семейства Actel Axcelerator вполне адекватная цифра. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gate 0 25 апреля, 2006 Опубликовано 25 апреля, 2006 · Жалоба ИМХО вы не правы, да компараторы вида == синтезируються на лютах, а вот вида <, <= и противоположные на суматорах, Строго говоря - сумматоры это тоже люты, только м.б. специально сконфигурированные для большего быстродействия (спец. логика для переносов). Но это не важно, я предполагаю, что такие комбинаторные схемы синтезатор сам построит оптимальным образом и человеку оптимизировать нечего, надо только Fmax синтезатору задать правильно - по максимуму, иначе если влезет по частоте - остановит оптимизацию или будет экономить ресурсы, и макс. частоты не получится. Основная идея была в том, чтобы подобрать количество одновременно сравниваемых чисел по заданной частоте для конкретной архитектуры. Кстати, в прикрепленом файле сумматоров не увидел. Хотя сейчас подумал, наверно все-таки можно руками построить оптимальный многовходовый компаратор - это как умножитель: можно писать * и надеяться на синтезатор (плюс конечно пайпы), а можно описать конкретную архитектуру. Все зависит от Ниоса - если здесь у него узкое место и надо обязательно получить макс. частоту - то думать, писать ручками и проверять. Как минимум - использовать возможности физического синтеза и задать компактное размещение блоков компаратора, чтобы минимизировать временные задержки на разводке. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 8 25 апреля, 2006 Опубликовано 25 апреля, 2006 · Жалоба Здесь без конвейера не обойтись. А значит не имеет большого значения, не такт больше или меньше. А вот количество блоков компараторов уже имеет. Если можно сделать конвейер на 20 тактов, можно обойтись одним блоком компараторов без всяких индексов, поставив на его входе сдвигающий регистр. module dynamic_shift_rg ( input clk, input [99:0] in_data, output [94:0] out_data ); reg [4:0] ct; reg [99:0] shift_rg; always @(posedge clk) begin if (ct == 5'd19) ct <= 5'd0; else ct <= ct + 1'b1; if (ct == 5'd19) shift_rg <= in_data; else shift_rg <= {shift_rg[4:0], shift_rg[99:5]}; end assign out_data = shift_rg[99:5]; endmodule Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 26 апреля, 2006 Опубликовано 26 апреля, 2006 · Жалоба Строго говоря - сумматоры это тоже люты, только м.б. специально сконфигурированные для большего быстродействия (спец. логика для переносов). Но это не важно, я предполагаю, что такие комбинаторные схемы синтезатор сам построит оптимальным образом и человеку оптимизировать нечего, надо только Fmax синтезатору задать правильно - по максимуму, иначе если влезет по частоте - остановит оптимизацию или будет экономить ресурсы, и макс. частоты не получится. В принципе верно, но описывая логику все же ИМХО нужно учитывать: что, откуда и куда пойдет на ФПГА. Уже поднималась тема синтеза логики в лоб на этом форуме, когда как бы не задавались констрейны, они всегда не выполнялись, в итоге выяснилось что человек хотел (могу ошибатся в цифрах, но смылс верный) 133 МГц при кол-ве уровней логики порядка 20, на ~300Мгц ФПГА. ИМХО ни один синтезатор и разводчик такого не сделает. т.к. ФПГА это не просто набор логики, это еще и трассировочные элементы, которые нельзя не учитывать. Кстати, в прикрепленом файле сумматоров не увидел. Странно специально выкладываю 2 файла, один суматор, второй компаратор с мультиплкексором (тот самый) я вижу суматор, просто мне из него нужен только 1 бит, а не все :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kopart 0 26 апреля, 2006 Опубликовано 26 апреля, 2006 (изменено) · Жалоба Все зависит от Ниоса - если здесь у него узкое место и надо обязательно получить макс. частоту - то думать, писать ручками и проверять. Я уточнил: нужно чтобы на частоте 140 мГц работал потоковый конвеер с задержкой 4-5(макс) тактов для 24-х! 5-битовых вектора, по алгоритму приведенному выше. Реализацию предполагаю как предложили Gate (Спасибо!) - сделать один 24 входовый компаратор, а на конкретные выходы подавать MIN, анализируя, что не надо учитывать при сравнении (это надо будет еще подробно продумать). Соответственно вопросы к первому этапу: 1 При конструировании конвеера за основу брать семейство Stratix? 2 Должно уписаться в 4-5 тактов? 3 Хотя есть ли FPGA значительно быстрее? (может Stratix II - но, к сожалению, я не в курсе усовершенствования структуры LUT'a в плане увеличения быстродействия для данной задачи) Изменено 26 апреля, 2006 пользователем NiOS Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gate 0 26 апреля, 2006 Опубликовано 26 апреля, 2006 · Жалоба 1. Лучше stratix II - там lutы на 6(или 8) входов и сам кристалл побыстрее. 2. Надо смотреть 3. см. п.1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gate 0 27 апреля, 2006 Опубликовано 27 апреля, 2006 · Жалоба Тут мне пришло в голову, что можно сделать еще проще, используя retiming. Способ: пишете втупую комбинаторно компаратор на 20 входов, на его выходе ставите последовательно несколько регистров (их количество определит глубину конвейера), между регистрами никакой логики нет. При синтезе скорость такой дурищи будет определяться скоростью компаратора. Но если поставить retiming (и pipelining), то синтезатор часть логики будет проносить между регистрами (естественно увеличивая их длину), выравнивая задержки. Приаттачил эксперимент, там на stratixII -3 без ретайминга 50 Мгц, с ретаймингом 150 при пайпе глубиной 3, но руками ничего делать не надо. comp20.rar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kopart 0 27 апреля, 2006 Опубликовано 27 апреля, 2006 · Жалоба Тут мне пришло в голову, что можно сделать еще проще, используя retiming. Способ: пишете втупую комбинаторно компаратор на 20 входов, на его выходе ставите последовательно несколько регистров (их количество определит глубину конвейера), между регистрами никакой логики нет. При синтезе скорость такой дурищи будет определяться скоростью компаратора. Но если поставить retiming (и pipelining), то синтезатор часть логики будет проносить между регистрами (естественно увеличивая их длину), выравнивая задержки. Приаттачил эксперимент, там на stratixII -3 без ретайминга 50 Мгц, с ретаймингом 150 при пайпе глубиной 3, но руками ничего делать не надо. О! retiming - значит это ВЕЩЬ! Идеи его я, вроде, знал, а вот за алгоритм реализации БОЛЬШОЕ Спасибо!!! Спасибо за примеры, только вот не опознаю , в чем проекты созданы. Вроде как написано, что Synplify Premier - но я с таким не знаком :( . У меня щас на компе стоят полный пакет Либеро и FPGA Advantage (моделсим + Пресижн, но без П&роутеров) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kopart 0 27 апреля, 2006 Опубликовано 27 апреля, 2006 · Жалоба Наверно дальше будут тупые вопросы, но.. Попробовал поэксперементировать с retiming по Вашему примеру Sinplify (без Pro), который с Либеро идет в нем нет retimng. Поэтому в Пресижене(от FPGA Advanatge) из Вашего файла сгенерил без ретайминга для APA, а затем засунул в Designer. Должна частота быть меньше, чем у Вас для Stratix II. Смотрю Timing Analyser из Designer'a получается вобще фигня (картинка внизу). Это руки или что нормально частоту посчитает? Какой пакет посоветуете? (PS Отчеты из Synplify Premier with Design Planner 8.5.1, в Вашем примере, мне очень понравились своей информативностью. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gate 0 27 апреля, 2006 Опубликовано 27 апреля, 2006 · Жалоба Nios, при переносе моего дизайна на precision Вы потеряли констрайны. Без них синтезатор будет игнорировать задержки на логике между входами и первым регистром и между последним регистром и выходом. Фактически, 180 Мгц - это скорость переписывания из регистра в регистр (кстати у стратикса II это более 1.5 ГГц - это к вопросу о сравнительном быстродействии актела и альтеры). У меня подозрение, что вся задержка в логике компаратора в отчете содержится в строчке "External Setup" = 150нс, т.е. частота меньше 7 Мгц без ретайминга. Т.е. когда вы синтезируете отдельный модуль без пинов, Вам нужно сказать синтезатору, что: 1. на вход данные поступают с какого-то внешнего регистра, т.е. задержка на логике между вх. портом и первым триггером должна учитываться 2. данные из выходного регистра (tmp3) должны пойти на выходной порт (о) без задержек - иначе при ретайминге синтезатор поместит всю логику между tmp3 и o и отрапортует о безумной частоте. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться