Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Синхронный сброс в триггерах на verilog, порождение мультиплексора на входах
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
bogaev_roman
Есть следующий код
Код
always @(posedge clk)
    if (~rst_sync) out_sync<=1'b0;
        else out_sync<=in;

Вроде стандартное описание D-триггера с синхронным сбросом, только вот сброс на планере подключается не к sclr, а вешается на мультиплексор перед информационным входом. Вроде ничего страшного - дополнительных ресурсов минимум, по частоте не влияет, вот только непонятно - зачем этот мультиплексор, вроде стандартный триггер физически на ПЛИС есть? Были раньше на форуме подобные темы описаны и вроде настройки выставляю
Allow Synchronous Control Signals
Force Use of Synchronous Clear Signals
Auto Clock Enable Replacement
мультиплексор все равно остается, меняя вид... 1111493779.gif
плюньте ссылкой, если не сложно, ну или объясните в чем проблема. Квартус косячит с описанием или я уже разучился на verilog писать элементарную схемотехнику?
x736C
С вашего позволения, с тем же самым размещусь в вашей теме.
У меня вообще получается не пойми что.
Код
module rstest (rst, clk, in, out);
   input rst,clk,in;
   output out;
reg [7:0] ctr;
always @(posedge clk)// or negedge rst)
   if (~rst)        ctr <= 8'd0;
   else if (in)     ctr <= ctr + 1;
   assign out = &ctr;
endmodule


После синтеза.
Код
                               ASYNC      SYNC
Total registers                    8         8
Total logic cells in carry chains  7         8
Total fan-out                     50        43
Average fan-out                 3.33      2.87


                Асихронный сброс                                Синхронный сброс
Нажмите для просмотра прикрепленного файла Нажмите для просмотра прикрепленного файла

Quartus 7.2, MAXII
UPD: Учитывая название темы, перекомпилил под Стратикс-2. То же самое.

Как при синхронном сбросе завести in на en вход триггера?


И второй вопрос для гуру задам о синхронном сбросе.
Как-то приводил описание своего синхронизатора ресета, почитав старые темы, решил уточнить.
Код
reg          rst;
reg    [3:0] init;
    if      (~reset)    init <= 0;
    else if (~&init)    init <= init + 1;
    rst <= init != 4'd14; end
Асинхронный сброс заводится на счетчик в качестве синхронного сброса.
При неблагоприятном стечении обстоятельств триггеры регистра могут попасть в метастабильное состояние, но при инкременте счетчик выходит из метастабильности, если понимать, что пройдя через второй и тем более через третий триггер в цепочке последовательно соединенных триггеров явление метастабильности с огромной вероятностью устраняется. А счетчик есть не что иное, как последовательно соединенные триггеры.
Вопрос: это полный бред или имеет право на жизнь?
des00
Цитата(bogaev_roman @ May 28 2010, 19:34) *
плюньте ссылкой, если не сложно, ну или объясните в чем проблема. Квартус косячит с описанием или я уже разучился на verilog писать элементарную схемотехнику?

Обсуждали уже, поройтесь поиском. Квартус далеко не дурак, в вашем конкретном случае использовать lut ему дешевле. Потому что sclr это сигнал общий для 16 ти LC в LAB (для сыклона 3 например). И используя для вашего одного триггера честный sclr, он урезает функциональность 15 ти других. А как вы правильно заметили LUT все равно расходуется. То ква делает свой вывод об оптимальности.

Цитата(x736C @ May 28 2010, 20:52) *
У меня вообще получается не пойми что.

чуть позже отвечу, почему он делает так объяснимо, но нужно проверить пару идей.
Цитата
Вопрос: это полный бред или имеет право на жизнь?

лучше делайте на сдвиговых регистрах, как в статье про сбросы, до которой, по вашим словам, вы не добрались %)
dvladim
Цитата(x736C @ May 29 2010, 05:52) *
У меня вообще получается не пойми что.
...
Как при синхронном сбросе завести in на en вход триггера?

Получается как раз понятно что. Чтобы en шел на триггер, приоритет en должен быть выше сброса.

Цитата(x736C @ May 29 2010, 05:52) *
Асинхронный сброс заводится на счетчик в качестве синхронного сброса.
При неблагоприятном стечении обстоятельств триггеры регистра могут попасть в метастабильное состояние, но при инкременте счетчик выходит из метастабильности, если понимать, что пройдя через второй и тем более через третий триггер в цепочке последовательно соединенных триггеров явление метастабильности с огромной вероятностью устраняется. А счетчик есть не что иное, как последовательно соединенные триггеры.
Вопрос: это полный бред или имеет право на жизнь?

Бред. Вы сейчас сказали, что счетчик и сдвиговый регистр это одно и тоже. Достаточно очевидно что это не так?
Триггер, попадающий в метастабильность, должен идти только на вход другого триггера.
x736C
Цитата(dvladim @ May 29 2010, 09:51) *
Получается как раз понятно что. Чтобы en шел на триггер, приоритет en должен быть выше сброса.

Вы правы, это усвоил.
Синхронный сброс требует дополнительных ресурсов, как писал в соседней ветке. Так ведь?

Цитата(dvladim @ May 29 2010, 09:51) *
Бред. Вы сейчас сказали, что счетчик и сдвиговый регистр это одно и тоже. Достаточно очевидно что это не так?
Триггер, попадающий в метастабильность, должен идти только на вход другого триггера.

Я не говорил, что это одно и то же. Слово «сдвиговый» в моем сообщении отсутствует.
Под «регистром» подразумевал набор триггеров, определяемых конструкцией языка reg [3:0] init;
В счетчике выход одного триггера идет на вход другого.


Ув. des00, я понял, что синхронизатор нужен нормальный, а подавать с него синхронный сброс все равно мне приходится на счетчик, так как синхронный сброс во всем проекте почему-то работает и по фронту и по уровню, а не только по уровню. Проверенно неоднократно. Если помните по другой ветке, я с этой проблемой столкнулся какое-то время назад. Поэтому счетчиком пришлось формировать гарантированный отрицательный импульс от отрицательного до положительного фронта.
Почему так происходит — для меня так и осталось загадкой. twak.gif
des00
Цитата(x736C @ May 29 2010, 05:24) *
Синхронный сброс требует дополнительных ресурсов, как писал в соседней ветке. Так ведь?

от архитектуры целевой плис зависит, в атаче как это сделано в статиксе2. Думаю что ответ на вопрос почему ква не ложит сброс на sclr стал понятным %)
Цитата
В счетчике выход одного триггера идет на вход другого.

это в асинхронном счетчике, в синхронном на современных плис на вход одного триггера идет сигнал со всех предыдущих
Цитата
а подавать с него синхронный сброс все равно мне приходится на счетчик, так как синхронный сброс во всем проекте почему-то работает и по фронту и по уровню, а не только по уровню. Проверенно неоднократно.

Вашу тему помню, но как то слабо. ИМХО там дело было не в сбросе, то, что вылечилось таким образом это просто повезло %)
dvladim
Цитата(x736C @ May 29 2010, 15:24) *
Вы правы, это усвоил.
Синхронный сброс требует дополнительных ресурсов, как писал в соседней ветке. Так ведь?

Почему? Просто вы описали схему, которая не легла на архитектуру (причина в приоритетах). В семействах Циклонов и Стратиксов выделенные цепи для синхронного сброса есть.

Цитата(x736C @ May 29 2010, 15:24) *
Я не говорил, что это одно и то же. Слово «сдвиговый» в моем сообщении отсутствует.
Под «регистром» подразумевал набор триггеров, определяемых конструкцией языка reg [3:0] init;
В счетчике выход одного триггера идет на вход другого.

Зато присутствуют "пройдя через второй и тем более через третий триггер в цепочке последовательно соединенных триггеров", что в моем понимании и есть сдвиговый регистр. А в счетчике выход одного триггера идет не на вход другого, а на сумматор. Это слой логики и в синхронизаторе это совсем ни к чему.
x736C
Цитата(dvladim @ May 29 2010, 19:19) *
Зато присутствуют "пройдя через второй и тем более через третий триггер в цепочке последовательно соединенных триггеров", что в моем понимании и есть сдвиговый регистр. А в счетчике выход одного триггера идет не на вход другого, а на сумматор. Это слой логики и в синхронизаторе это совсем ни к чему.

Действительно, как выше указал des00 — для синхронного счетчика это так.
Вопрос снимаю, бред так бред.

Цитата(des00 @ May 29 2010, 19:08) *
Вашу тему помню, но как то слабо. ИМХО там дело было не в сбросе, то, что вылечилось таким образом это просто повезло %)

Исследовал много дней очень пристально этот вопрос. С осцилом и проверял на простейшей конструкции. Ответ «повезло» меня до сих пор не удовлетворяет, интересно все-таки разобраться почему. Проблема возникала не у меня одного.
Могу повторить и поделиться результатами, все есть под рукой.

Есть факт того, что при подаче питания (загрузка из м/с памяти) сигнал сброса имеет форму ступеньки "_/".
Также есть факт — при загрузке через JTAG сигнал сброса, имеет V-образную форму форму "\_/" и формируется POR, насколько я понимаю.
И есть факт загрузки (или ее отсутствия) триггера начальным значением после двух выше перечисленных фактов.

Ув. dvladim в той ветке так же указывал на сброс и синхронизатор. В общем как-то так оно и происходит.

Цитата(des00 @ May 29 2010, 19:08) *
от архитектуры целевой плис зависит, в атаче как это сделано в статиксе2. Думаю что ответ на вопрос почему ква не ложит сброс на sclr стал понятным %)

Выходит, с древним ACEX'ом, на котором проверял, ресурсов потребуется больше. В нем просто нет специального and под эти нужды.
А под Стратикс такое описание не совсем подходит.

Интересно другое. Под Стратикс такое описание очень даже подходит.
RTL Viewer показывает (см. выше) картинку с мультиплексором.
Chip PlannerResource Property Editor показывает то что надо.
Нажмите для просмотра прикрепленного файла
Что по всей видимости говорит о том, что одно относится к синтезу, а второе к размещению (fitter).

Квартус In так и не заводит на En. Пропускает через мультиплексор, производя операцию else ctr <= ctr; которая мною не описана, но подразумевается.

Проверяем утверждение dvladim.
Меняем местами sclr и en.
Код
module rstest (rst, clk, in, out);
   input rst,clk,in;
   output out;
reg [7:0] ctr;
always @(posedge clk)// or negedge rst)
   if (in)         ctr <= ctr + 1;
   else if (rst)   ctr <= 8'd0;
   assign out = &ctr;
endmodule

RTL Viewer
Нажмите для просмотра прикрепленного файла

Resource Property Editor
Sсlr и En на своих местах.
Нажмите для просмотра прикрепленного файла

Но сброс, видимо, вообще не сработает, пока En активен.

UPD: Вывод: синхронный En при синхронном сбросе жрет таки-больше ресурсов, чем при асинхронном.
Внимание вопрос: насколько я ошибся?))
sazh
Цитата(x736C @ May 29 2010, 21:59) *
Есть факт того, что при подаче питания (загрузка из м/с памяти) сигнал сброса имеет форму ступеньки "_/".
Также есть факт — при загрузке через JTAG сигнал сброса, имеет V-образную форму форму "\_/" и формируется POR, насколько я понимаю.
И есть факт загрузки (или ее отсутствия) триггера начальным значением после двух выше перечисленных фактов.

always @(posedge clk)// or negedge rst)
if (in) ctr <= ctr + 1;
else if (rst) ctr <= 8'd0;

Но сброс, видимо, вообще не сработает, пока En активен.


Про сигнал сброса - кто его вырабатывает.
От формы не должно зависить (если по фронту клока снимается). Начальное значение всегда грузится по этому сбросу. Год уже прошел. Надо разбираться.

Про en - сама конструкция не корректна (rst всегда приоритетен)
Код
always @(posedge clk)
   if (in)    
      begin
   if (rst)   ctr <= 8'd0;
   else      ctr <= ctr + 1'b1;
      end
x736C
Спасибо за ответ.
Про сброс мыслю как и вы, но практика вынесла мне мозг. smile.gif В общем-то это в прошлом, просто не хочется наступить еще раз.

Про некорректность знаю. Интересно было, что Квартус накомпилит.
sazh
Цитата(x736C @ May 29 2010, 22:22) *
Спасибо за ответ.
Про сброс мыслю как и вы, но практика вынесла мне мозг. smile.gif В общем-то это в прошлом, просто не хочется наступить еще раз.

Про некорректность знаю. Интересно было, что Квартус накомпилит.


Если есть возможность по включению питания триггера в 0 устанавливать, можно внутренний clr вырабатывать (зачем в один такт как у Вас), и по нему грузить любое начальное значение. Вот - на базе рекомендаций из квартусовского руководства
x736C
Код
always @(posedge clk)
   if (in)    
      begin
   if (rst)   ctr <= 8'd0;
   else      ctr <= ctr + 1'b1;
      end

То, что надо. smile.gif
Нажмите для просмотра прикрепленного файлаНажмите для просмотра прикрепленного файла
Два мультиплексора, вместо трех.
Только мой вывод пока при мне: синхронный En при синхронном сбросе жрет таки-больше ресурсов, чем при асинхронном.
Видимо, так и должно быть.

За power_up.v спасибо.
Цитата
Если есть возможность по включению питания триггера в 0 устанавливать, можно внутренний clr вырабатывать (зачем в один такт как у Вас), и по нему грузить любое начальное значения.
Так и не понял. Поподробней объясните, если вас не затруднит.
des333
Цитата(x736C @ May 29 2010, 23:33) *
То, что надо.  smile.gif

Цитата
The signal order is the same for all Altera device families, although as noted
previously, not all device families provide every signal. The following priority order is
observed:
1. Asynchronous Clear, aclr—highest priority
2. Preset, pre
3. Asynchronous Load, aload
4. Enable, ena
5. Synchronous Clear, sclr
6. Synchronous Load, sload
7. Data In, data—lowest priority


Код
always @ (posedge clk or posedge aclr or posedge aload)
begin
if (aclr)
  q <= 1'b0;
else if (aload)
  q <= adata;
else if (ena)
  q <= data;
end


Код
if (ena) begin
  if (sclr)
   q <= 1'b0;
else if (sload)
   q <= sdata;
else
   q <= data;
end





Quartus II Handbook Version 9.1 -> Volume 1: Design and Synthesis -> Section II. Design Guidelines -> 6. Recommended HDL Coding Styles -> Coding Guidelines for Registers and Latches (6-36)
x736C
Спасибо за ссылку. Теперь буду знать, что при одновременном использовании ena имеет приоритет над sclr.
Привычное описание if (sclr) .. else if (en) неоптимально. smile.gif

Весь хендбук можно не копировать. smile.gif
sazh
Цитата(x736C @ May 29 2010, 22:33) *
За power_up.v спасибо.
Так и не понял. Поподробней объясните, если вас не затруднит.


В смысле, что сигнал, вырабатываемый этим модулем можно использовать как sclr, sload.
Можно без него регистры устнавливать в нужное состояние, описывая это состояние в разделе описания переменных.
Возвращаясь к вашему случаю (якобы разному поведению начальной установки регистров по сформированному Вами ресету в случае загрузки по jtag и от ПЗУ) наверно дело во времени инициализации внешних интелектуальных устройств по отношению к FPGA
x736C
Цитата(sazh @ May 30 2010, 00:00) *
Наверно дело во времени инициализации внешних интелектуальных устройств по отношению к FPGA

Внутри ПЛИС была проблема, которая не зависела вообще от внешних устройств — я в этом уверен.
Но так или иначе вы угадали. С инициализацией внешних устройств (EthPHY) именно так наступил на грабли. smile.gif

А вообще, я уже ни в чем не уверен smile.gif Там вылилось не в танцы с бубнами, а в целую дискотеку. maniac.gif
dvladim
Цитата(x736C @ May 29 2010, 22:59) *
Также есть факт — при загрузке через JTAG сигнал сброса, имеет V-образную форму форму "\_/" и формируется POR, насколько я понимаю.
И есть факт загрузки (или ее отсутствия) триггера начальным значением после двух выше перечисленных фактов.

Перечитал эту ветку еще раз. Там дело в том как используется rst - т.е. в той части схемы, что не приведена в теме. Но по этим вопросам не здесь.

Цитата(x736C @ May 29 2010, 22:59) *
UPD: Вывод: синхронный En при синхронном сбросе жрет таки-больше ресурсов, чем при асинхронном.
Внимание вопрос: насколько я ошибся?))

Вроде на одни и те же рисунки смотрим, а выводы разные.
Как опишете схему так и ляжет. Если опишете схему с приоритетом ena выше чем sclr - она ляжет на ПЛИС, если приоритеты наоборот, то Квартусу приходится ena триггера постоянно включать (иначе сбрасываться не будет), а ваш ena делать через мультиплексор на логике.
Таким образом мой вывод таков: если писать код понимая архитектуру ПЛИС, то равноценно.
x736C
Цитата(dvladim @ May 30 2010, 00:32) *
Вроде на одни и те же рисунки смотрим, а выводы разные.
Как опишете схему так и ляжет. Если опишете схему с приоритетом ena выше чем sclr - она ляжет на ПЛИС, если приоритеты наоборот, то Квартусу приходится ena триггера постоянно включать (иначе сбрасываться не будет), а ваш ena делать через мультиплексор на логике.
Таким образом мой вывод таков: если писать код понимая архитектуру ПЛИС, то равноценно.

Мой вывод не противоречит вашему. Повторю его еще раз:
Синхронный En при синхронном сбросе жрет таки-больше ресурсов (ACEX, Stratix), чем при асинхронном. Как минимум на один мультиплексор.
Ведь разговор назрел не из-за En, а из-за синхронного или асинхронного сигналов сброса, о предпочтениях в использовании. Тут и рекомендации wp272, wp275 и прочее.
И было бы странно, если бы после всего обсуждения в этой теме я не понял вашего вывода. Ради этого и затеялся.
des00
Цитата(x736C @ May 29 2010, 15:56) *
Синхронный En при синхронном сбросе жрет таки-больше ресурсов (ACEX, Stratix), чем при асинхронном. Как минимум на один мультиплексор.

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

Итого логика clk_ena на всех архитектурах ест одинакового, скорее всего вы имели в виду что "логика ваших модулей" ест по разному %)
dvladim
Цитата(des00 @ May 31 2010, 06:17) *
по стратиксу : у него есть синхронный сброс/установка, но т.к. эта логика не интегрирована в триггер приоритет этих сигналов ниже чем у сигнала clk_ena
...
для сравнения : у хилых конкурентов эти сигналы включены в триггер, поэтому там их приоритет выше чем у сигнала clk_ena

По поводу приоритетов: у Стратиксов 4-х сигнал ena не приходит в каждый триггер, а смешивается на границе ЛАБа с клоком (сделано для экономии динамической мощности). На клоковый вход триггера идет уже смешанный сигнал, поэтому физически сделать приоритет синхронного сброса выше ena невозможно.
des00
Цитата(dvladim @ May 31 2010, 00:43) *
По поводу приоритетов: у Стратиксов 4-х сигнал ena не приходит в каждый триггер, а смешивается на границе ЛАБа с клоком (сделано для экономии динамической мощности). На клоковый вход триггера идет уже смешанный сигнал, поэтому физически сделать приоритет синхронного сброса выше ena невозможно.

угу, времена идут, а у нас народ всё по к155 логике и lpm_reg крутость квартуса оценивает %)
x736C
Цитата(des00 @ May 31 2010, 06:17) *
вроде одни и те же документы читаете, а выводы разные.
по асексу :
по стратиксу :
Спасибо за ответ!
По асексу и по стратексу понятно, и понятно из выше написанного, что мне было понятно.
«Выходит, с древним ACEX'ом, на котором проверял, ресурсов потребуется больше. В нем просто нет специального and под эти нужды»

Цитата(des00 @ May 31 2010, 06:17) *
Итого логика clk_ena на всех архитектурах ест одинакового, скорее всего вы имели в виду что "логика ваших модулей" ест по разному %)

В принципе да. Это и получается. Использование конструкции En с меньшим приоритетом синхронного сброса ест больше ресурсов. Я это и имел в виду, когда написал об этом в соседней ветке. Вы попросили, чтоб не быть голословным, привести конкретный пример.
А теперь момент. Как мне перестроить свой мозг, чтоб не писать по привычке if(~rst) else if (en). Потому что мне как бы удобнее именно так — когда сброс имеет приоритет над всем. Ну и когда он синхронный. Написал «как бы» — потому что до конца не разобрался на что эту конструкцию (if(~rst) else if (en)) лучше поменять. Смысл, конечно, понимаю, но на кой может понадобится En над Sclr, не понимаю. Хоть на асинхронный сброс переходи прямо. twak.gif

Цитата
угу, времена идут, а у нас народ всё по к155 логике и lpm_reg крутость квартуса оценивает %)
Если вы обо мне, то я бы вообще не заморачивался по поводу лишних мультиплексоров, моим скоростям и объемам это все не помеха. Но все-таки интересно разобраться в тонкостях и делать не как делается, а как правильно. smile.gif

Цитата(dvladim @ May 31 2010, 09:43) *
По поводу приоритетов: у Стратиксов 4-х сигнал ena не приходит в каждый триггер, а смешивается на границе ЛАБа с клоком (сделано для экономии динамической мощности). На клоковый вход триггера идет уже смешанный сигнал, поэтому физически сделать приоритет синхронного сброса выше ena невозможно.

Очень умно придумано. Вопрос о динамической мощности меня тоже всегда интересовал. Я так понимаю, что использование En до 4-го Стратикса тоже снижало потребление, если учесть характер переключения части транзисторов в триггере. Хотя могу заблуждаться.

Так или иначе пытаюсь понять, как это использовать.
Чаще всего En использую, как результат работы предыдущего процесса. Поэтому как мне, например, сбросить-установить все триггеры синхронным сбросом в начале работы, тогда как En имеют произвольное или скорее нулевое значение. Аналогично, зачем мне вообще сдался синхронный сброс, если он идет после второстепенного по смыслу сигнала ena.

Ушел читать литературу.

Может быть я совсем не того жду от En, и это все должно делаться на LUT?
sazh
Цитата(x736C @ May 31 2010, 14:09) *
Аналогично, зачем мне вообще сдался синхронный сброс, если он идет после второстепенного по смыслу сигнала ena.


Приоритетность того или другого - Вы себе сами определяете.
А вот на что это ляжет - это уже от приоритетности в примитиве того или иного семейства.
des00
Цитата(x736C @ May 31 2010, 06:16) *
А теперь момент. Как мне перестроить свой мозг, чтоб не писать по привычке if(~rst) else if (en).

забить и работать спокойно дальше. Будут проблемы по времянке/ресурсу, локально по макросу типа __USE_ALT_CYC_MACRO__ напишете модуль оптимальный под конкретную плис
Цитата
Если вы обо мне, то я бы вообще не заморачивался по поводу лишних мультиплексоров, моим скоростям и объемам это все не помеха. Но все-таки интересно разобраться в тонкостях и делать не как делается, а как правильно. smile.gif

Это я так, в философском смысле %)
Цитата
......
Ушел читать литературу.

"Сбрасывать нужно только то, что должно быть сброшено" (с) Ken Chapmen
Kopart
Я вот хочу тоже написать некий вопрос на тему stratix4 и асинхронного ресета.
Вроде тема подходящая, но вопрос немного косвенный.

Когда представляли Startix 4 у меня отложилось в памяти, что там впервые уберут фактическую линию асинхронного сброса триггера. Т.е. за базис взяли использовать только синхронный ресет (упрощает триггер).

Не путаю ли это с каким-то другим семейством и было ли это фактически где-то реализовано? 
Я вспоминаю, что это был лишь пресс-релиз новшеств нового семейства.
Кто может прокомментировать фактическую ситуация на этот счет?
bogaev_roman
to des00
Цитата
Обсуждали уже, поройтесь поиском. Квартус далеко не дурак, в вашем конкретном случае использовать lut ему дешевле. Потому что sclr это сигнал общий для 16 ти LC в LAB (для сыклона 3 например). И используя для вашего одного триггера честный sclr, он урезает функциональность 15 ти других. А как вы правильно заметили LUT все равно расходуется. То ква делает свой вывод об оптимальности.

Попробовал для своего случая и 2 триггера вешать и 20, убирал настройки по оптимизации с точки зрения мощности получал только
DFFEAS на technology map viewer, ну а на планнере все равно мультиплексор. Похоже, что действительно построение мультиплексора с точки зрения ква на входах выгоднее нежели заведение синхронного сброса. А вот выгоднее ли с точки зрения быстродействия, остается вопросом (хотя один мультиплексор картину не портит там особо). Списибо за помощь.
А есть ли вообще на стратикс4 физически триггер с синхронным сбросом? Почитал хандбук внимательно, может я конечно понял чего-то не так, но в ALM in LUT-Register Mode ячейка состоит из трех триггеров - на все заводится вход aclr, но sclr заходит только на один. В обычном режиме синхронного сброса вообще нет...

Цитата
Когда представляли Startix 4 у меня отложилось в памяти, что там впервые уберут фактическую линию асинхронного сброса триггера

Да нет, оставили асинхронный сброс и линию под него, прямо на триггер вешается напрямую в обход.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.