|
|
  |
Как сбросить синхронный триггер без клока?, Как принято решать подобный вопросы? |
|
|
|
Nov 9 2015, 08:13
|
Участник

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

|
Вообще говоря клоки и ресеты - это как говорится святая корова, и без серьезной необходимости (ну очень серьезной) лучше их лишний раз не модифицировать и не подмешивать. Так что в этом случае поставите уж один асинхронный триггер и не мучайте клок, а то проблем не оберетесь.
Сообщение отредактировал gerbity - Nov 9 2015, 08:14
|
|
|
|
|
Nov 9 2015, 08:25
|
Знающий
   
Группа: Свой
Сообщений: 802
Регистрация: 11-05-07
Из: Томск
Пользователь №: 27 650

|
Цитата(MegaVolt @ Nov 9 2015, 14:03)  Собственно вопрос: как принято решать подобные проблемы? Вся внутренняя работа ПЛИС должна быть от отдельного независимого клока. Входной измеряемый сигнал стробировать внутренним клоком и потом уже делать все измерения на внутренней системной частоте. Иначе - вечные глюки. При этом верхняя измеряемая частота будет не более половины от системной. Зато всё стабильно и предсказуемо. Сброс делать так -перетактировать секундный импульс на системную частоту и выделить фронт.
|
|
|
|
|
Nov 9 2015, 08:49
|
Профессионал
    
Группа: Свой
Сообщений: 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 - выгляди не очень - но работать будет (но опять же есть ограничения - не потанцуешь  ). Цитата(MegaVolt @ Nov 9 2015, 10:03)  Собственно вопрос: как принято решать подобные проблемы? Пока писал придумал ещё вариант: счётчик никогда не сбрасывать. А от выходного сигнала отнимать предыдущее измерение. Можно и так но тоже есть свои неудобства. Опят же - надо иметь инфу о параметрах внешнего клока и требуемых задач - тогда будет понятно как оптимально построить систему. Если клок произвольный и может отсутствовать то только асинхронный сброс. Если еще и частота выше системной то есть несколько вариантов счета - включая полностью асинхронный счетчик В этом случае лимит только физические ограничения на макс. частоту на пин и тригер. Успехов! Rob.
|
|
|
|
|
Nov 9 2015, 09:09
|
Знающий
   
Группа: Свой
Сообщений: 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 - выгляди не очень - но работать будет (но опять же есть ограничения - не потанцуешь  ). Хватит и обычной логики. DSP блочёк имеет один клоковый пин и его можно вести как угодно. Хуже не станет  Цитата Если клок произвольный и может отсутствовать то только асинхронный сброс.  )) Вот и пример того где отказаться от асинхронности нельзя. Цитата Если еще и частота выше системной то есть несколько вариантов счета - включая полностью асинхронный счетчик В этом случае лимит только физические ограничения на макс. частоту на пин и тригер. Классику я знаю. Хотелось обсудить альтернативные варианты. Цитата(iosifk @ Nov 9 2015, 11:52)  Сдвиговый регистр и дешифратор к нему. Это не требует переносов и может быть быстрее. А можно поподробнее что это за фокус? Счётчик Джонсона? Так он же триггеры жрёт что не в себя.
Сообщение отредактировал MegaVolt - Nov 9 2015, 09:06
|
|
|
|
|
Nov 10 2015, 07:52
|
Участник

Группа: Участник
Сообщений: 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
|
|
|
|
|
Nov 10 2015, 08:14
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(MegaVolt @ Nov 9 2015, 12:09)  А можно поподробнее что это за фокус? Счётчик Джонсона? Так он же триггеры жрёт что не в себя. Если делаете быстрый счетчик, то там будут параллельные переносы. А они жрут много логики и интерконнектов. Берем 2 блока. В каждом сдвиговый регистр, исходно в нем 0. В него задвигаем 1. Например 8 раз. Как только на выходе появится 1, то значит пришло 8 импульсов, которые суммируем в регистр индикации. Один блок сдвигает, другой суммирует и обнуляется. По окончании работы в одном из блоков будет "хвост", который после обработки можно добавить к сумматору. Преимущество в том, что сдвиг быстрее счета и там "ближние" интерконнекты, а в Ксайлинксе вообще можно взять SRL - это одна ячейка...
--------------------
www.iosifk.narod.ru
|
|
|
|
|
Nov 10 2015, 09:27
|
Профессионал
    
Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643

|
Приветствую! Цитата(iosifk @ Nov 10 2015, 10:14)  Если делаете быстрый счетчик, то там будут параллельные переносы. А они жрут много логики и интерконнектов.
Берем 2 блока. В каждом сдвиговый регистр, исходно в нем 0. В него задвигаем 1. Например 8 раз. Как только на выходе появится 1, то значит пришло 8 импульсов, которые суммируем в регистр индикации. Один блок сдвигает, другой суммирует и обнуляется. По окончании работы в одном из блоков будет "хвост", который после обработки можно добавить к сумматору. Преимущество в том, что сдвиг быстрее счета и там "ближние" интерконнекты, а в Ксайлинксе вообще можно взять SRL - это одна ячейка... Можно проще - входной делитель частоты на кольцевом сдвиговом регистре с бегущей 1 или инверсией. А затем уже можно и на системный клок переходить и считать в DSP  Но увы - для регистра тут опять встает изначальный вопрос TC - все равно нужен асинхронный сброс Успехов! Rob.
|
|
|
|
|
Nov 10 2015, 09:32
|
Знающий
   
Группа: Свой
Сообщений: 779
Регистрация: 3-01-05
Из: Минск
Пользователь №: 1 783

|
Цитата(gerbity @ Nov 10 2015, 10:52)  При передачи любых сигналов (в том числе и ресетов) из одного частотного домена в другой необходимо их дважды пересинхронизировать. Это я знаю  )) Вопрос то был в том что входного клока нет. И соответственно ни синхронный ресет не сработает ни синхронизатор работать не будет. За книжечки спасибо  Цитата(iosifk @ Nov 10 2015, 11:14)  Если делаете быстрый счетчик, то там будут параллельные переносы. А они жрут много логики и интерконнектов. Там не настолько большие частоты чтобы делать подобные хитрости. Плюс изначально хотел делать на DSPешном блочке. А там 48 бит на ура получаются  Цитата(RobFPGA @ Nov 10 2015, 12:27)  Но увы - для регистра тут опять встает изначальный вопрос TC - все равно нужен асинхронный сброс  Ага
|
|
|
|
|
Nov 10 2015, 12:20
|
Участник

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

|
Цитата(MegaVolt @ Nov 10 2015, 12:32)  Это я знаю  )) Вопрос то был в том что входного клока нет. И соответственно ни синхронный ресет не сработает ни синхронизатор работать не будет. Ну это уже зависит от логики работы устройства. Может быть и нет смысла сбрасывать счетчик, если он все равно заморожен в отсутствии клока? А при такой схеме счетчик сбросится автоматически, как только появится клок. Если логика работы противоречит такому поведению, то можно поступить как советовали выше - пересинхронизировать внешний клок на внутреннюю частоту (также через 2 триггера), и работать полностью в одном частотном домене. Тут проблем вообще не будет, но это нормально будет работать, только если внутренний клок хотя бы в несколько раз выше внешнего.
Сообщение отредактировал gerbity - Nov 10 2015, 12:22
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|