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

 
 
 
Reply to this topicStart new topic
> Как сбросить синхронный триггер без клока?, Как принято решать подобный вопросы?
MegaVolt
сообщение Nov 9 2015, 08:03
Сообщение #1


Знающий
****

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



Откуда растут ноги у столь странного вопроса:

Есть синхронный счётчик на тактовый вход которого заведена некая внешняя частота. На CE заведён импульс 1с. В результате имеем простейший частотомер. Сброс и вычитывание результата идут от опорной частоты.

Собственно в чём проблема. Сброс срабатывает только при наличии внешней частоты и не срабатывает при её отсутствии.

Как решают подобные вопросы?

Само собой можно поставить триггеры с асинхронным сбросом и не париться. Только вот очень мне понравилось делать большие счётчики на DSPэщных блочках. А они только синхронные.

Решение в лоб - подмешать во входную тактовую внутренний клок на время сброса тоже вариант. Но какой то он не очень красивый.

Собственно вопрос: как принято решать подобные проблемы?

Пока писал придумал ещё вариант: счётчик никогда не сбрасывать. А от выходного сигнала отнимать предыдущее измерение.
Go to the top of the page
 
+Quote Post
gerbity
сообщение Nov 9 2015, 08:13
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 2-11-15
Из: Москва, Зеленоград
Пользователь №: 89 137



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

Сообщение отредактировал gerbity - Nov 9 2015, 08:14
Go to the top of the page
 
+Quote Post
iosifk
сообщение Nov 9 2015, 08:18
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(MegaVolt @ Nov 9 2015, 11:03) *
Откуда растут ноги у столь странного вопроса:

Есть синхронный счётчик на тактовый вход которого заведена некая внешняя частота. На CE заведён импульс 1с. В результате имеем простейший частотомер. Сброс и вычитывание результата идут от опорной частоты.

Собственно в чём проблема. Сброс срабатывает только при наличии внешней частоты и не срабатывает при её отсутствии.

Как решают подобные вопросы?

Если " некая внешняя частота" ниже чем может быть частота в кристалле, то сделайте CDC и системный клок и от него работайте...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Bad0512
сообщение Nov 9 2015, 08:25
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 802
Регистрация: 11-05-07
Из: Томск
Пользователь №: 27 650



Цитата(MegaVolt @ Nov 9 2015, 14:03) *
Собственно вопрос: как принято решать подобные проблемы?

Вся внутренняя работа ПЛИС должна быть от отдельного независимого клока. Входной измеряемый сигнал стробировать внутренним клоком и потом уже делать все измерения на внутренней системной частоте. Иначе - вечные глюки. При этом верхняя измеряемая частота будет не более половины от системной. Зато всё стабильно и предсказуемо.
Сброс делать так -перетактировать секундный импульс на системную частоту и выделить фронт.

Go to the top of the page
 
+Quote Post
Shivers
сообщение Nov 9 2015, 08:35
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 680
Регистрация: 11-02-08
Из: Msk
Пользователь №: 34 950



Цитата(MegaVolt @ Nov 9 2015, 11:03) *
Пока писал придумал ещё вариант: счётчик никогда не сбрасывать. А от выходного сигнала отнимать предыдущее измерение.

Нормальный вариант. Но сначала надо обязательно пересинхронизировать измеряемый сигнал двумя триггерами.
Заведите вотч дог, который следит за изменениями на выходах счетчика - если значения долго не менялись, значит значение счетчика сохраняем в константу, и затем эту константу будем вычитать в последующем измерении.
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Nov 9 2015, 08:49
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643



Приветствую!

Цитата(MegaVolt @ Nov 9 2015, 10:03) *
Откуда растут ноги у столь странного вопроса:

Наверное частотомер ваяете.

Цитата(MegaVolt @ Nov 9 2015, 10:03) *
Само собой можно поставить триггеры с асинхронным сбросом и не париться.

Самое правильное решение

Цитата(MegaVolt @ Nov 9 2015, 10:03) *
Решение в лоб - подмешать во входную тактовую внутренний клок на время сброса тоже вариант. Но какой то он не очень красивый.

Костыль BUGCTRL - выгляди не очень - но работать будет (но опять же есть ограничения - не потанцуешь sm.gif ).

Цитата(MegaVolt @ Nov 9 2015, 10:03) *
Собственно вопрос: как принято решать подобные проблемы?
Пока писал придумал ещё вариант: счётчик никогда не сбрасывать. А от выходного сигнала отнимать предыдущее измерение.

Можно и так но тоже есть свои неудобства.

Опят же - надо иметь инфу о параметрах внешнего клока и требуемых задач - тогда будет понятно как оптимально построить систему.
Если клок произвольный и может отсутствовать то только асинхронный сброс.

Если еще и частота выше системной то есть несколько вариантов счета - включая полностью асинхронный счетчик wacko.gif
В этом случае лимит только физические ограничения на макс. частоту на пин и тригер.

Успехов! Rob.



Go to the top of the page
 
+Quote Post
iosifk
сообщение Nov 9 2015, 08:52
Сообщение #7


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(RobFPGA @ Nov 9 2015, 11:49) *
Если еще и частота выше системной то есть несколько вариантов счета - включая полностью асинхронный счетчик wacko.gif
В этом случае лимит только физические ограничения на макс. частоту на пин и тригер.

Сдвиговый регистр и дешифратор к нему. Это не требует переносов и может быть быстрее.


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
MegaVolt
сообщение Nov 9 2015, 09:09
Сообщение #8


Знающий
****

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



Цитата(gerbity @ Nov 9 2015, 11:13) *
Так что в этом случае поставите уж один асинхронный триггер и не мучайте клок, а то проблем не оберетесь.
Если не секрет куда его поставить?


Цитата(iosifk @ Nov 9 2015, 11:18) *
Если " некая внешняя частота" ниже чем может быть частота в кристалле, то сделайте CDC и системный клок и от него работайте...
Внешняя частота выше рабочей. Плюс может отсутствовать.


Цитата(Shivers @ Nov 9 2015, 11:35) *
Нормальный вариант. Но сначала надо обязательно пересинхронизировать измеряемый сигнал двумя триггерами.
В этом нет необходимости так как циклограмма позволяет считывать данные через некоорое (большое время) после перевода CE в ноль.


Цитата(RobFPGA @ Nov 9 2015, 11:49) *
Наверное частотомер ваяете.
Простенький - простенький. Для целей индикации.
Цитата
Костыль BUGCTRL - выгляди не очень - но работать будет (но опять же есть ограничения - не потанцуешь sm.gif ).
Хватит и обычной логики. DSP блочёк имеет один клоковый пин и его можно вести как угодно. Хуже не станет sm.gif
Цитата
Если клок произвольный и может отсутствовать то только асинхронный сброс.
sm.gif)) Вот и пример того где отказаться от асинхронности нельзя.
Цитата
Если еще и частота выше системной то есть несколько вариантов счета - включая полностью асинхронный счетчик wacko.gif
В этом случае лимит только физические ограничения на макс. частоту на пин и тригер.
Классику я знаю. Хотелось обсудить альтернативные варианты.

Цитата(iosifk @ Nov 9 2015, 11:52) *
Сдвиговый регистр и дешифратор к нему. Это не требует переносов и может быть быстрее.
А можно поподробнее что это за фокус? Счётчик Джонсона? Так он же триггеры жрёт что не в себя.

Сообщение отредактировал MegaVolt - Nov 9 2015, 09:06
Go to the top of the page
 
+Quote Post
gerbity
сообщение Nov 10 2015, 07:52
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 2-11-15
Из: Москва, Зеленоград
Пользователь №: 89 137



Цитата(MegaVolt @ Nov 9 2015, 12:09) *
Если не секрет куда его поставить?
Простите, два конечно же. При передачи любых сигналов (в том числе и ресетов) из одного частотного домена в другой необходимо их дважды пересинхронизировать. Это обязательно. Вот выкладываю картинку, как это сделать.

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

Выложу ка я пару интересных книжечек, как правильно делать всякого такого рода вещи.
Прикрепленный файл  CummingsSNUG2001SJ_AsyncClk.pdf ( 183.16 килобайт ) Кол-во скачиваний: 124

Прикрепленный файл  CummingsSNUG2002SJ_Resets.pdf ( 271.44 килобайт ) Кол-во скачиваний: 107


Сообщение отредактировал gerbity - Nov 10 2015, 08:10
Go to the top of the page
 
+Quote Post
iosifk
сообщение Nov 10 2015, 08:14
Сообщение #10


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(MegaVolt @ Nov 9 2015, 12:09) *
А можно поподробнее что это за фокус? Счётчик Джонсона? Так он же триггеры жрёт что не в себя.

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

Берем 2 блока. В каждом сдвиговый регистр, исходно в нем 0. В него задвигаем 1. Например 8 раз. Как только на выходе появится 1, то значит пришло 8 импульсов, которые суммируем в регистр индикации.
Один блок сдвигает, другой суммирует и обнуляется. По окончании работы в одном из блоков будет "хвост", который после обработки можно добавить к сумматору.
Преимущество в том, что сдвиг быстрее счета и там "ближние" интерконнекты, а в Ксайлинксе вообще можно взять SRL - это одна ячейка...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Nov 10 2015, 09:27
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643



Приветствую!

Цитата(iosifk @ Nov 10 2015, 10:14) *
Если делаете быстрый счетчик, то там будут параллельные переносы. А они жрут много логики и интерконнектов.

Берем 2 блока. В каждом сдвиговый регистр, исходно в нем 0. В него задвигаем 1. Например 8 раз. Как только на выходе появится 1, то значит пришло 8 импульсов, которые суммируем в регистр индикации.
Один блок сдвигает, другой суммирует и обнуляется. По окончании работы в одном из блоков будет "хвост", который после обработки можно добавить к сумматору.
Преимущество в том, что сдвиг быстрее счета и там "ближние" интерконнекты, а в Ксайлинксе вообще можно взять SRL - это одна ячейка...

Можно проще - входной делитель частоты на кольцевом сдвиговом регистре с бегущей 1 или инверсией. А затем уже можно и на системный клок переходить и считать в DSP sm.gif
Но увы - для регистра тут опять встает изначальный вопрос TC - все равно нужен асинхронный сброс laughing.gif

Успехов! Rob.
Go to the top of the page
 
+Quote Post
MegaVolt
сообщение Nov 10 2015, 09:32
Сообщение #12


Знающий
****

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



Цитата(gerbity @ Nov 10 2015, 10:52) *
При передачи любых сигналов (в том числе и ресетов) из одного частотного домена в другой необходимо их дважды пересинхронизировать.
Это я знаю sm.gif)) Вопрос то был в том что входного клока нет. И соответственно ни синхронный ресет не сработает ни синхронизатор работать не будет. За книжечки спасибо sm.gif


Цитата(iosifk @ Nov 10 2015, 11:14) *
Если делаете быстрый счетчик, то там будут параллельные переносы. А они жрут много логики и интерконнектов.
Там не настолько большие частоты чтобы делать подобные хитрости. Плюс изначально хотел делать на DSPешном блочке. А там 48 бит на ура получаются sm.gif

Цитата(RobFPGA @ Nov 10 2015, 12:27) *
Но увы - для регистра тут опять встает изначальный вопрос TC - все равно нужен асинхронный сброс laughing.gif
Ага sm.gif
Go to the top of the page
 
+Quote Post
gerbity
сообщение Nov 10 2015, 12:20
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 2-11-15
Из: Москва, Зеленоград
Пользователь №: 89 137



Цитата(MegaVolt @ Nov 10 2015, 12:32) *
Это я знаю sm.gif)) Вопрос то был в том что входного клока нет. И соответственно ни синхронный ресет не сработает ни синхронизатор работать не будет.

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

Сообщение отредактировал gerbity - Nov 10 2015, 12:22
Go to the top of the page
 
+Quote Post
MegaVolt
сообщение Nov 10 2015, 14:10
Сообщение #14


Знающий
****

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



Цитата(gerbity @ Nov 10 2015, 15:20) *
Ну это уже зависит от логики работы устройства. Может быть и нет смысла сбрасывать счетчик, если он все равно заморожен в отсутствии клока? А при такой схеме счетчик сбросится автоматически, как только появится клок. Если логика работы противоречит такому поведению, то можно поступить как советовали выше - пересинхронизировать внешний клок на внутреннюю частоту (также через 2 триггера), и работать полностью в одном частотном домене. Тут проблем вообще не будет, но это нормально будет работать, только если внутренний клок хотя бы в несколько раз выше внешнего.
Ага. Всё верно sm.gif
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 3rd July 2025 - 09:18
Рейтинг@Mail.ru


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