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

Min / Max из массива векторов?

хмм к вопросу о частоте, если вы в лоб синтезировали ваш пример, то вам выдали гавно, т.к. клок считаеться между регистрами :) в сучае этого примера нужно смотреть задержки по пути.

 

Если пересчитать имено максимальную задержку сигнала для худшего разряда входного сигнала то получилось 10,85 нс - 92 МГц. Такие цифры для Акселератора, будут точнее?!

Изменено пользователем NiOS

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


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

[quote name='sazh'

в приложении то что показал симплифай

насколько я понимаю структуру ЛЯ стратикса второго, опять же суматор-вычитатель :)

 

А попробовал VHDL пример в Advantage - все скушал и не поперхнулся...

 

Мне кажется Пресижн рисует более понятные картинки.

Внизу привожу картинку RTL - Schematic и Technology Schematic(для Stratix II)

По сути для Stratix'a 2 должно быть одно и тоже что и Вас на рисунке, но, правда, ЛЯ Straix'a схема значительно наглядней?!

 

post-2972-1145976326_thumb.jpg

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


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

хмм к вопросу о частоте, если вы в лоб синтезировали ваш пример, то вам выдали гавно, т.к. клок считаеться между регистрами :) в сучае этого примера нужно смотреть задержки по пути.

 

Если пересчитать имено максимальную задержку сигнала для худшего разряда входного сигнала то получилось 10,85 нс - 92 МГц. Такие цифры для Акселератора, будут точнее?!

 

В данном случае для семейства Actel Axcelerator вполне адекватная цифра.

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


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

ИМХО вы не правы, да компараторы вида == синтезируються на лютах, а вот вида <, <= и противоположные на суматорах,

Строго говоря - сумматоры это тоже люты, только м.б. специально сконфигурированные для большего быстродействия (спец. логика для переносов). Но это не важно, я предполагаю, что такие комбинаторные схемы синтезатор сам построит оптимальным образом и человеку оптимизировать нечего, надо только Fmax синтезатору задать правильно - по максимуму, иначе если влезет по частоте - остановит оптимизацию или будет экономить ресурсы, и макс. частоты не получится.

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

Кстати, в прикрепленом файле сумматоров не увидел.

Хотя сейчас подумал, наверно все-таки можно руками построить оптимальный многовходовый компаратор - это как умножитель: можно писать * и надеяться на синтезатор (плюс конечно пайпы), а можно описать конкретную архитектуру. Все зависит от Ниоса - если здесь у него узкое место и надо обязательно получить макс. частоту - то думать, писать ручками и проверять. Как минимум - использовать возможности физического синтеза и задать компактное размещение блоков компаратора, чтобы минимизировать временные задержки на разводке.

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


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

Здесь без конвейера не обойтись. А значит не имеет большого значения, не такт больше или меньше.

А вот количество блоков компараторов уже имеет. Если можно сделать конвейер на 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

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


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

Строго говоря - сумматоры это тоже люты, только м.б. специально сконфигурированные для большего быстродействия (спец. логика для переносов). Но это не важно, я предполагаю, что такие комбинаторные схемы синтезатор сам построит оптимальным образом и человеку оптимизировать нечего, надо только Fmax синтезатору задать правильно - по максимуму, иначе если влезет по частоте - остановит оптимизацию или будет экономить ресурсы, и макс. частоты не получится.

 

В принципе верно, но описывая логику все же ИМХО нужно учитывать: что, откуда и куда пойдет на ФПГА. Уже поднималась тема синтеза логики в лоб на этом форуме, когда как бы не задавались констрейны, они всегда не выполнялись, в итоге выяснилось что человек хотел (могу ошибатся в цифрах, но смылс верный) 133 МГц при кол-ве уровней логики порядка 20, на ~300Мгц ФПГА.

ИМХО ни один синтезатор и разводчик такого не сделает. т.к. ФПГА это не просто набор логики, это еще и трассировочные элементы, которые нельзя не учитывать.

 

Кстати, в прикрепленом файле сумматоров не увидел.

 

Странно специально выкладываю 2 файла, один суматор, второй компаратор с мультиплкексором (тот самый) я вижу суматор, просто мне из него нужен только 1 бит, а не все :)

post-3453-1146036497_thumb.jpg

post-3453-1146036507_thumb.jpg

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


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

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

 

Я уточнил: нужно чтобы на частоте 140 мГц работал потоковый конвеер с задержкой 4-5(макс) тактов для 24-х! 5-битовых вектора, по алгоритму приведенному выше.

 

Реализацию предполагаю как предложили Gate (Спасибо!) - сделать один 24 входовый компаратор, а на конкретные выходы подавать MIN, анализируя, что не надо учитывать при сравнении (это надо будет еще подробно продумать).

 

Соответственно вопросы к первому этапу:

1 При конструировании конвеера за основу брать семейство Stratix?

2 Должно уписаться в 4-5 тактов?

3 Хотя есть ли FPGA значительно быстрее?

(может Stratix II - но, к сожалению, я не в курсе усовершенствования структуры LUT'a в плане увеличения быстродействия для данной задачи)

Изменено пользователем NiOS

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


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

1. Лучше stratix II - там lutы на 6(или 8) входов и сам кристалл побыстрее.

2. Надо смотреть

3. см. п.1

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


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

Тут мне пришло в голову, что можно сделать еще проще, используя retiming. Способ: пишете втупую комбинаторно компаратор на 20 входов, на его выходе ставите последовательно несколько регистров (их количество определит глубину конвейера), между регистрами никакой логики нет. При синтезе скорость такой дурищи будет определяться скоростью компаратора. Но если поставить retiming (и pipelining), то синтезатор часть логики будет проносить между регистрами (естественно увеличивая их длину), выравнивая задержки.

Приаттачил эксперимент, там на stratixII -3 без ретайминга 50 Мгц, с ретаймингом 150 при пайпе глубиной 3, но руками ничего делать не надо.

comp20.rar

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


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

Тут мне пришло в голову, что можно сделать еще проще, используя retiming. Способ: пишете втупую комбинаторно компаратор на 20 входов, на его выходе ставите последовательно несколько регистров (их количество определит глубину конвейера), между регистрами никакой логики нет. При синтезе скорость такой дурищи будет определяться скоростью компаратора. Но если поставить retiming (и pipelining), то синтезатор часть логики будет проносить между регистрами (естественно увеличивая их длину), выравнивая задержки.

Приаттачил эксперимент, там на stratixII -3 без ретайминга 50 Мгц, с ретаймингом 150 при пайпе глубиной 3, но руками ничего делать не надо.

 

О! retiming - значит это ВЕЩЬ! Идеи его я, вроде, знал, а вот за алгоритм реализации БОЛЬШОЕ Спасибо!!!

 

Спасибо за примеры, только вот не опознаю , в чем проекты созданы. Вроде как написано, что Synplify Premier - но я с таким не знаком :( . У меня щас на компе стоят полный пакет Либеро и FPGA Advantage (моделсим + Пресижн, но без П&роутеров)

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


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

Наверно дальше будут тупые вопросы, но..

 

Попробовал поэксперементировать с retiming по Вашему примеру

 

Sinplify (без Pro), который с Либеро идет в нем нет retimng.

Поэтому в Пресижене(от FPGA Advanatge) из Вашего файла сгенерил без ретайминга для APA, а затем засунул в Designer. Должна частота быть меньше, чем у Вас для Stratix II. Смотрю Timing Analyser из Designer'a получается вобще фигня (картинка внизу).

Это руки или что нормально частоту посчитает?

Какой пакет посоветуете?

(PS Отчеты из Synplify Premier with Design Planner 8.5.1, в Вашем примере, мне очень понравились своей информативностью.

 

post-2972-1146151034_thumb.jpg

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


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

Nios, при переносе моего дизайна на precision Вы потеряли констрайны. Без них синтезатор будет игнорировать задержки на логике между входами и первым регистром и между последним регистром и выходом. Фактически, 180 Мгц - это скорость переписывания из регистра в регистр (кстати у стратикса II это более 1.5 ГГц - это к вопросу о сравнительном быстродействии актела и альтеры).

У меня подозрение, что вся задержка в логике компаратора в отчете содержится в строчке "External Setup" = 150нс, т.е. частота меньше 7 Мгц без ретайминга.

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

1. на вход данные поступают с какого-то внешнего регистра, т.е. задержка на логике между вх. портом и первым триггером должна учитываться

2. данные из выходного регистра (tmp3) должны пойти на выходной порт (о) без задержек - иначе при ретайминге синтезатор поместит всю логику между tmp3 и o и отрапортует о безумной частоте.

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


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

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

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

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

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

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

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

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

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

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