реклама на сайте
подробности

 
 
> Synchronized reset и разные тактовые, Каскад для внешнего сброса + разные тактовые
vea
сообщение Jan 12 2015, 07:38
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 60
Регистрация: 5-12-11
Из: Киев
Пользователь №: 68 692



Есть каскад из двух регистров для внешнего сброса (обычная схема, как в справке квартуса здесь). Этот каскад тактируется clk1 и (соответственно со схемой) сбрасывать им можно регистры, которые тактируеются также clk1. Как правильно сбрасывать регистры, которые используют clk2, clk3 и т.д.?
Для каждого clkX делать отдельный каскад?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
des00
сообщение Jan 12 2015, 07:49
Сообщение #2


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(vea @ Jan 12 2015, 15:38) *
Для каждого clkX делать отдельный каскад?

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


--------------------
Go to the top of the page
 
+Quote Post
vea
сообщение Jan 12 2015, 08:39
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 60
Регистрация: 5-12-11
Из: Киев
Пользователь №: 68 692



Цитата(des00 @ Jan 12 2015, 10:49) *
да, при этом, если логика на разных тактовых связанная, желателен быть перенос сигнала сброса с каскада на каскад. В порядке возрастания частоты

Спасибо. Вот так?
Прикрепленное изображение

Получается, снятие сброса не будет "одновременным" для разных тактовых? Будет нарастающая задержка, которую надо компенсировать?

Цитата
на частотах повыше от 3 регистров.
Это обязательно? Хотелось бы единообразия.
Go to the top of the page
 
+Quote Post
des00
сообщение Jan 12 2015, 08:58
Сообщение #4


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(vea @ Jan 12 2015, 15:39) *
Получается, снятие сброса не будет "одновременным" для разных тактовых? Будет нарастающая задержка, которую надо компенсировать?

В сбросе опасен не момент сброса, а момент его снятия. Сброс всех доменов должен идти одновременно, а вот снятие по цепочке. И не надо там ничего компенсировать. Цепочка на рисунке у вас сделана правильно.

Цитата
Это обязательно? Хотелось бы единообразия.

я обычно ставлю 4 ре регистра.


в приложении неплохая статья. изучайте.
Прикрепленные файлы
Прикрепленный файл  CummingsSNUG2002SJ_Resets.pdf ( 271.44 килобайт ) Кол-во скачиваний: 212
 


--------------------
Go to the top of the page
 
+Quote Post
SM
сообщение Jan 12 2015, 15:27
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(des00 @ Jan 12 2015, 11:58) *
В сбросе опасен не момент сброса, а момент его снятия. Сброс всех доменов должен идти одновременно, а вот снятие по цепочке.


Только цепочка должна быть не тупо с повышением тактовой, а такой, как распространяется сигнал сброса, не привязываясь к частотам, то есть, оттуда, где он генерируется (например в домене "А"), он идет в домены "Б", и "В", а потом, обратно из доменов "Б" и "В", сигнал, говорящий домену "А", что все сбросилось, и можно начинать работать, то есть, снимать сигнал сброса с себя. Вот как-то примерно так. Направление, по большому счету, зависит от того, кто инициирует операцию, и кто на нее откликается - инициатор должен разрешаться только после того, как все остальные домены сбросились, независимо от того, у кого какая тактовая.

А в подавляющем большинстве случаев, если в других доменах нет ничего, чтобы происходило без ведома домена-инициатора (каких-нибудь самостоятельных таймеров, и т.п.), достаточно резетнуть все эти домены асинхронным сигналом, и в домене-инициаторе выдержать задержку, гарантирующую, что в других доменах пройдет по два-три клока, и только потом начинать работать.
Go to the top of the page
 
+Quote Post
des00
сообщение Jan 12 2015, 16:05
Сообщение #6


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(SM @ Jan 12 2015, 22:27) *
Только цепочка должна быть не тупо с повышением тактовой, а такой, как распространяется сигнал сброса, не привязываясь к частотам, то есть, оттуда, где он генерируется (например в домене "А"), он идет в домены "Б", и "В", а потом, обратно из доменов "Б" и "В", сигнал, говорящий домену "А", что все сбросилось, и можно начинать работать, то есть, снимать сигнал сброса с себя. Вот как-то примерно так. Направление, по большому счету, зависит от того, кто инициирует операцию, и кто на нее откликается - инициатор должен разрешаться только после того, как все остальные домены сбросились, независимо от того, у кого какая тактовая.

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

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

Я стараюсь делать модули во время сброса пассивными во всех смыслах, порой это приводит к наличию дополнительной логики, но зато никаких проблем со сбросами. И как сказал проброс сигнала делаю с низкочастотного домена в высокочастотный. Хотя это не обязательно, но люблю порядок sm.gif


--------------------
Go to the top of the page
 
+Quote Post
SM
сообщение Jan 12 2015, 16:16
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(des00 @ Jan 12 2015, 19:05) *
Я стараюсь делать модули во время сброса пассивными во всех смыслах,

Вот именно. И получаем простую схему:

1) совершенно АСИНХРОННЫЙ сброс, без всякого проброса чего либо и куда либо. Просто, глобальный резет.
2) Этот сброс, в том числе, запрещает работу всех приемников, таймеров, и прочего, что может словить метастабильность.
3) Инициатор (а он всегда есть, и один, который самый первый из всех), через какое-то время после снятия сброса разрешает работу всего, чего надо, и разрешает уже по каналам управления, которые проброшены через домены, как им следует быть проброшенными. И единственное синхронизированное от сброса место - эта первичная разрешалка. Один бит данных.

А сброс при этом, совершенно асинхронный... И думать о нем не надо.
Go to the top of the page
 
+Quote Post
vea
сообщение Jan 13 2015, 12:37
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 60
Регистрация: 5-12-11
Из: Киев
Пользователь №: 68 692



Цитата(SM @ Jan 12 2015, 19:16) *
Вот именно. И получаем простую схему:

1) совершенно АСИНХРОННЫЙ сброс, без всякого проброса чего либо и куда либо. Просто, глобальный резет.
2) Этот сброс, в том числе, запрещает работу всех приемников, таймеров, и прочего, что может словить метастабильность.
3) Инициатор (а он всегда есть, и один, который самый первый из всех), через какое-то время после снятия сброса разрешает работу всего, чего надо, и разрешает уже по каналам управления, которые проброшены через домены, как им следует быть проброшенными. И единственное синхронизированное от сброса место - эта первичная разрешалка. Один бит данных.

А сброс при этом, совершенно асинхронный... И думать о нем не надо.

Я правильно понимаю, что асинхронный сброс используется только для этого первого блока, а остальные включаются синхронным ENABLE (т.е. в них синхронизированный асинхронный сброс просто не заходит)?
Прикрепленное изображение


Сообщение отредактировал vea - Jan 13 2015, 13:17
Go to the top of the page
 
+Quote Post
SM
сообщение Jan 13 2015, 14:25
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(vea @ Jan 13 2015, 15:37) *
Я правильно понимаю, что асинхронный сброс используется только для этого первого блока, а остальные включаются синхронным ENABLE (т.е. в них синхронизированный асинхронный сброс просто не заходит)?


Не совсем.

Во первых, асинхронный сброс (который ни с чем не надо синхронизировать), заходит во все блоки сразу во всех доменах, и их всех асинхронно сбрасывает. Для этого в FPGA придумана единая глобальная линия сброса, и поэтому она там одна (а не пачка, как линий тактовых). И никакого "синхронизированного асинхронного сброса" нет. Он заходит на все сбросы не синхронизированным - прямо Ваш "RESET_n" как он есть. (но! внимание! именно на АСИНХРОННЫЕ входы сбросов всех блоков, которые требуют сброса)

Во вторых, этот самый Enable нужен далеко не всем блокам, и не целиком целиком - Enable нужен конкретным отдельно взятым триггерам, которые на момент снятия RESET-а по каким-то причинам могут иметь на входе состояние, отличное от того, во что они были установлены по RESET, и то, не всем. Например:
- Если это регистр, который записывается по команде из блока-инициатора, то ему отдельный Enable не нужен. Его и так инициатор разрешает только тогда, когда ему надо, и гарантировано, что не сразу после сброса..
- Eсли это таймер, считающий сам по себе с момента снятия резета, с приращением в 1 - то тоже не нужен. Почему? Потому что, при смене его состояния из 0 в 1 худшее, что может произойти, это что он задержится в состоянии 0 на 1 такт из-за метастабильности. Ну и что? От этого никому не холодно и не горячо.
- А вот если это некий сумматор, который прибавляет к значению регистра некий код, не равный 1 (а точнее, не коду с одним разрядом, установленным 1), и этот код может быть таким в момент снятия резета, то вот тут уже нужно разрешение работы, чтобы не было сбоя.

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

UPD:
А вот Enable этот генерируется синхронизирвоанным, как-то так:

reg [2:0] en_ff
always @(posedge clk or negedge RESET_n)
if (~RESET_n) en_ff <= 3'd0;
else en_ff <= {en_ff[1:0], 1'b1};

выход синхронизированного Enable берется с en_ff[2], и подается в необходимые точки, при необходимости, пересинхронизированным на другие клоки и в остальные клок-домены. А цепь асинхронного сброса надо исключить из временнОго анализа через set_false_path, так как Вы сами, схемотехнически устранили все возможности для сбоев.
Go to the top of the page
 
+Quote Post
Krys
сообщение Jan 14 2015, 11:28
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271



Цитата(SM @ Jan 13 2015, 20:25) *
- Eсли это таймер, считающий сам по себе с момента снятия резета, с приращением в 1 - то тоже не нужен. Почему? Потому что, при смене его состояния из 0 в 1 худшее, что может произойти, это что он задержится в состоянии 0 на 1 такт из-за метастабильности. Ну и что? От этого никому не холодно и не горячо.
Идея хорошая. Но есть сомнения. Вот тут (страница 13, второй снизу абзац):
Цитата(des00 @ Jan 12 2015, 14:58) *
в приложении неплохая статья. изучайте.
говорится, что:
Цитата
If the asynchronous reset is released
at or near the active clock edge of a flip-flop, the output of the flip-flop could go metastable and thus the reset state
of the ASIC could be lost.
Это значит, что таймер может и не с нуля начать считать...



--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
Go to the top of the page
 
+Quote Post
SM
сообщение Jan 14 2015, 11:31
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Krys @ Jan 14 2015, 14:28) *
Это значит, что таймер может и не с нуля начать считать...

Неа, не может, если изучить схему CMOS триггера. Если он сам в нуле, и на входе данных тоже ноль, то, что с ним не делай (кроме асинхронной установки в 1, которая тут не используется), в единицу его никак не загнать. Метастабильное состояние может возникнуть лишь тогда, и только тогда, когда в результате некоего действия ожидается смена состояния. И тогда оно может, как бы, неполностью смениться, что и есть суть метастабильности. А если внешних причин к смене состояния нет, то и метастабильность невозможна.

То есть, автор статьи, скорее всего сознательно, опустил этот нюанс, что для метастабильности недостаточно снять резет невовремя, а надо еще иметь на входе сигнал данных, отличный от состояния в резете. Иначе бы весь смысл его статьи потерялся бы sm.gif sm.gif
Go to the top of the page
 
+Quote Post
Krys
сообщение Jan 15 2015, 03:24
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271



Цитата(SM @ Jan 14 2015, 17:31) *
Иначе бы весь смысл его статьи потерялся бы :) :)
Хотелось бы Вам верить. Ведь так гораздо проще реализовывать. Но вот в статье "уважаемые дяденьки" пишут... и подкинул нам её как эталон "уважаемый товарищ" )))


--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
Go to the top of the page
 
+Quote Post
SM
сообщение Jan 15 2015, 09:58
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Krys @ Jan 15 2015, 06:24) *
Хотелось бы Вам верить.

А не надо мне верить. Возьмите, и поанализируйте схемы триггеров на транзисторном уровне. Сейчас в доступе есть достаточно и схем, и технологических либ разных фабов. Не первой свежести, но вполне достаточно. Хотя, профессиональному схемотехнику для этого достаточно схему лишь визуально изучить, даже без симуляции.
Go to the top of the page
 
+Quote Post
Krys
сообщение Jan 15 2015, 11:18
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271



Цитата(SM @ Jan 15 2015, 15:58) *
А не надо мне верить. Возьмите, и поанализируйте схемы триггеров на транзисторном уровне.
Во всё вникать и проверять доказательства самому - не хватит времени на всё, это надо было делать ещё в вузе ))) Сейчас проще прислушаться к опыту "старших товарищей".


--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- vea   Synchronized reset и разные тактовые   Jan 12 2015, 07:38
||- - Bad0512   Вот ещё полезная статья от Кена Чапмана до кучи.   Jan 12 2015, 12:00
|||- - vea   Цитата(Bad0512 @ Jan 12 2015, 15:00) Вот ...   Jan 12 2015, 13:31
|||- - andrew_b   Цитата(vea @ Jan 12 2015, 16:31) Но основ...   Jan 12 2015, 13:42
||- - des00   Цитата(SM @ Jan 13 2015, 00:16) А сброс п...   Jan 12 2015, 16:33
|||- - SM   Цитата(Krys @ Jan 15 2015, 14:18) Во всё ...   Jan 15 2015, 11:25
|||- - vea   Цитата(SM @ Jan 15 2015, 14:25) Когда дел...   Jan 16 2015, 13:13
||- - alxkon   Цитата(SM @ Jan 13 2015, 17:25) Не совсем...   Jun 1 2017, 14:23
|- - FakeDevice   Цитата(vea @ Jan 12 2015, 11:39) Это обяз...   Jan 12 2015, 09:16
|- - des00   Цитата(FakeDevice @ Jan 12 2015, 16:16) Г...   Jan 12 2015, 09:22
|- - Krys   Цитата(des00 @ Jan 12 2015, 15:22) формул...   Jan 12 2015, 10:08
||- - des00   Цитата(Krys @ Jan 12 2015, 18:08) При том...   Jan 12 2015, 10:21
|- - toshas   Цитата(des00 @ Jan 12 2015, 12:22) формул...   Jan 12 2015, 12:36
|- - FakeDevice   Цитата(toshas @ Jan 12 2015, 15:36) Приче...   Jan 12 2015, 14:59
- - FakeDevice   Еще есть зависимость от частоты. для пущей стабиль...   Jan 12 2015, 08:17
- - vea   Цитата(SM @ Jan 14 2015, 15:31) Неа, не м...   Jan 20 2015, 12:54
|- - SM   Цитата(vea @ Jan 20 2015, 15:54) the circ...   Jan 20 2015, 13:21
- - troiden   А вот Xilinx не сответует использовать везде глоба...   Jan 20 2015, 13:26
|- - SM   Цитата(troiden @ Jan 20 2015, 16:26) Мол ...   Jan 20 2015, 13:38
- - troiden   Ситуация, когда надо погасить весь кристалл, значи...   Jan 20 2015, 13:44
|- - SM   Цитата(troiden @ Jan 20 2015, 16:44) Для ...   Jan 20 2015, 13:48
- - Golikov A.   1. Чем вам не нравится сброс от главного автомата?...   Jun 1 2017, 14:41
|- - alxkon   Цитата(Golikov A. @ Jun 1 2017, 17:41) 1....   Jun 2 2017, 07:06
- - Golikov A.   ЦитатаНе нравится описание - в каждом стейте нужно...   Jun 2 2017, 10:07


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 08:34
Рейтинг@Mail.ru


Страница сгенерированна за 0.01588 секунд с 7
ELECTRONIX ©2004-2016