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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Как правильно сформировать сигнал DATA READY?
eteP
сообщение May 18 2005, 15:06
Сообщение #16


Участник
*

Группа: Свой
Сообщений: 50
Регистрация: 24-06-04
Пользователь №: 166



Тригер Q0 клокируется сигналом ND и не зависит от сигнала CLK. А это значит, что на выходе его будет стоять или 0 или 1 стабильно. Но должно быть выполнино одно условие: частота сигнала ND < CLK. Не зависимо когда придет передний фронт сигнала CLK, тригер Q1 перейдет или в 0 или в 1 когда все идет нормально или выходя из метастабильного состояния. Допустим что на входе Q1 устанавливается 1 и в этот момент пришел CLK. Q1 перешел не в правильное состояние и на выходе у него 0. Тогда на следующем клоке он захватит все равно 1. (вот почему должно выполняться условие ND < CLK). Единственное что, сигнал DRY будет черт знает что вытворять. Но и тут можно поставить еще один тригер, тогда вероятность метостабильности уменьшается. Где-то я даже формулу видел как это вычисляется.

Так вот это я все вижу.
Go to the top of the page
 
+Quote Post
makc
сообщение May 18 2005, 15:12
Сообщение #17


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



Цитата(eteP @ May 18 2005, 18:06)
Тригер Q0 клокируется сигналом ND и не зависит от сигнала CLK. А это значит, что на выходе его будет стоять или 0 или 1 стабильно. Но должно быть выполнино одно условие: частота сигнала ND < CLK. Не зависимо когда придет передний фронт сигнала CLK, тригер Q1 перейдет или в 0 или в 1 когда все идет нормально или выходя из метастабильного состояния. Допустим что на входе Q1 устанавливается 1 и в этот момент пришел CLK. Q1 перешел не в правильное состояние и на выходе у него 0. Тогда на следующем клоке он захватит все равно 1. (вот почему должно выполняться условие ND < CLK). Единственное что, сигнал DRY будет черт знает что вытворять. Но и тут можно поставить еще один тригер, тогда вероятность метостабильности уменьшается. Где-то я даже формулу видел как это вычисляется.

Так вот это я все вижу.
*


Все правильно. И если принять, что DRY обрабатывается в схеме по тому же фронту CLK, по которому вырабатывается - все будет в полном порядке, т.к. к моменту его обработки триггер Q1 уже выйдет из метастабильного состояния. cheers.gif


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
sazh
сообщение May 19 2005, 06:38
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Признаюсь, такую реализацию увидел в первый раз. Если первый триггер пишет, то 0, то 1. Разве это не эквивалентно записи в этот триггер всегда 1 с последующим сбросом. А если период сигнала run в N раз больше периода клока, разве это не эквивалентно
sdvig_rg_q[2:0] <= {sdvig_rg_q[1:0], run};
assign ce = sdvig_rg_q[1] & ~sdvig_rg_q[2];
Кстати, Ваша схема сходу вводит в заблужение,
потому что во всех учебниках реализация q1 ^ q2 приводит к формированию одиночного импульса по переднему и заднему фронту сигнала run.
К чему изощренность, все должно быть прозрачно.
Go to the top of the page
 
+Quote Post
oval
сообщение May 19 2005, 12:27
Сообщение #19


Местный
***

Группа: Свой
Сообщений: 265
Регистрация: 15-03-05
Из: Москва
Пользователь №: 3 367



Цитата(eteP @ May 18 2005, 18:06)
Тригер Q0 клокируется сигналом ND и не зависит от сигнала CLK. А это значит, что на выходе его будет стоять или 0 или 1 стабильно. Но должно быть выполнино одно условие: частота сигнала ND < CLK. Не зависимо когда придет передний фронт сигнала CLK, тригер Q1 перейдет или в 0 или в 1 когда все идет нормально или выходя из метастабильного состояния. Допустим что на входе Q1 устанавливается 1 и в этот момент пришел CLK. Q1 перешел не в правильное состояние и на выходе у него 0. Тогда на следующем клоке он захватит все равно 1. (вот почему должно выполняться условие ND < CLK). Единственное что, сигнал DRY будет черт знает что вытворять. Но и тут можно поставить еще один тригер, тогда вероятность метостабильности уменьшается. Где-то я даже формулу видел как это вычисляется.

Так вот это я все вижу.
*

Идею понял, но каким образом она увеличивает стабильность схемы (т. е. параметр MTBF (Mean Time Between Failures)) так и не понял. Переключение то выхода триггера Q0 попрежнему остается асинхронным по отношению к clk. Следовательно, Q1 может оказаться в метастабильном состоянии с не меньшей вероятностью, чем если просто подать сигнал ND на вход Q1. Вообщем, такое решение встречаю впервые. Думаю триггер Q0 здесь не несет никакой полезной функции, поскольку его выход попрежнему остается асинхронным по отношению к clk. Допустим, сигнал ND формируется где-то в другом тактовом домене, через сколько бы последовательных триггеров того тактового домена он не проходил (хоть даже через несколько разных асинхронных по отношению к clk) "синхроннее" к clk он не станет. Заменяем тактирование триггера Q0 на clk и подаем ND на его вход, вот стандартная (правда одноуровневая) схема синхронизации, которая приводится во всех документах, которые я видел по данной теме. Таким образом, Q0 синхронизирует появление метастабильного состояния по отношению к clk. Для относительно малых частот одного уровня синхронизации (т. е. триггера Q0)достаточно, для больших частот может потребоваться еще один уровень синхронизации. Все зависит от характеристик технологии (от параментра времени нахождения триггера в метастабильном состоянии). Вот что на этот счет когда-то писала Altera:
Прикрепленный файл  an042.pdf ( 167.9 килобайт ) Кол-во скачиваний: 435
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd August 2025 - 12:48
Рейтинг@Mail.ru


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