MegaVolt 29 9 ноября, 2015 Опубликовано 9 ноября, 2015 · Жалоба Откуда растут ноги у столь странного вопроса: Есть синхронный счётчик на тактовый вход которого заведена некая внешняя частота. На CE заведён импульс 1с. В результате имеем простейший частотомер. Сброс и вычитывание результата идут от опорной частоты. Собственно в чём проблема. Сброс срабатывает только при наличии внешней частоты и не срабатывает при её отсутствии. Как решают подобные вопросы? Само собой можно поставить триггеры с асинхронным сбросом и не париться. Только вот очень мне понравилось делать большие счётчики на DSPэщных блочках. А они только синхронные. Решение в лоб - подмешать во входную тактовую внутренний клок на время сброса тоже вариант. Но какой то он не очень красивый. Собственно вопрос: как принято решать подобные проблемы? Пока писал придумал ещё вариант: счётчик никогда не сбрасывать. А от выходного сигнала отнимать предыдущее измерение. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gerbity 0 9 ноября, 2015 Опубликовано 9 ноября, 2015 (изменено) · Жалоба Вообще говоря клоки и ресеты - это как говорится святая корова, и без серьезной необходимости (ну очень серьезной) лучше их лишний раз не модифицировать и не подмешивать. Так что в этом случае поставите уж один асинхронный триггер и не мучайте клок, а то проблем не оберетесь. Изменено 9 ноября, 2015 пользователем gerbity Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 9 ноября, 2015 Опубликовано 9 ноября, 2015 · Жалоба Откуда растут ноги у столь странного вопроса: Есть синхронный счётчик на тактовый вход которого заведена некая внешняя частота. На CE заведён импульс 1с. В результате имеем простейший частотомер. Сброс и вычитывание результата идут от опорной частоты. Собственно в чём проблема. Сброс срабатывает только при наличии внешней частоты и не срабатывает при её отсутствии. Как решают подобные вопросы? Если " некая внешняя частота" ниже чем может быть частота в кристалле, то сделайте CDC и системный клок и от него работайте... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bad0512 2 9 ноября, 2015 Опубликовано 9 ноября, 2015 · Жалоба Собственно вопрос: как принято решать подобные проблемы? Вся внутренняя работа ПЛИС должна быть от отдельного независимого клока. Входной измеряемый сигнал стробировать внутренним клоком и потом уже делать все измерения на внутренней системной частоте. Иначе - вечные глюки. При этом верхняя измеряемая частота будет не более половины от системной. Зато всё стабильно и предсказуемо. Сброс делать так -перетактировать секундный импульс на системную частоту и выделить фронт. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Shivers 0 9 ноября, 2015 Опубликовано 9 ноября, 2015 · Жалоба Пока писал придумал ещё вариант: счётчик никогда не сбрасывать. А от выходного сигнала отнимать предыдущее измерение. Нормальный вариант. Но сначала надо обязательно пересинхронизировать измеряемый сигнал двумя триггерами. Заведите вотч дог, который следит за изменениями на выходах счетчика - если значения долго не менялись, значит значение счетчика сохраняем в константу, и затем эту константу будем вычитать в последующем измерении. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 34 9 ноября, 2015 Опубликовано 9 ноября, 2015 · Жалоба Приветствую! Откуда растут ноги у столь странного вопроса: Наверное частотомер ваяете. Само собой можно поставить триггеры с асинхронным сбросом и не париться. Самое правильное решение Решение в лоб - подмешать во входную тактовую внутренний клок на время сброса тоже вариант. Но какой то он не очень красивый. Костыль BUGCTRL - выгляди не очень - но работать будет (но опять же есть ограничения - не потанцуешь :) ). Собственно вопрос: как принято решать подобные проблемы? Пока писал придумал ещё вариант: счётчик никогда не сбрасывать. А от выходного сигнала отнимать предыдущее измерение. Можно и так но тоже есть свои неудобства. Опят же - надо иметь инфу о параметрах внешнего клока и требуемых задач - тогда будет понятно как оптимально построить систему. Если клок произвольный и может отсутствовать то только асинхронный сброс. Если еще и частота выше системной то есть несколько вариантов счета - включая полностью асинхронный счетчик В этом случае лимит только физические ограничения на макс. частоту на пин и тригер. Успехов! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 9 ноября, 2015 Опубликовано 9 ноября, 2015 · Жалоба Если еще и частота выше системной то есть несколько вариантов счета - включая полностью асинхронный счетчик В этом случае лимит только физические ограничения на макс. частоту на пин и тригер. Сдвиговый регистр и дешифратор к нему. Это не требует переносов и может быть быстрее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MegaVolt 29 9 ноября, 2015 Опубликовано 9 ноября, 2015 (изменено) · Жалоба Так что в этом случае поставите уж один асинхронный триггер и не мучайте клок, а то проблем не оберетесь.Если не секрет куда его поставить? Если " некая внешняя частота" ниже чем может быть частота в кристалле, то сделайте CDC и системный клок и от него работайте...Внешняя частота выше рабочей. Плюс может отсутствовать. Нормальный вариант. Но сначала надо обязательно пересинхронизировать измеряемый сигнал двумя триггерами.В этом нет необходимости так как циклограмма позволяет считывать данные через некоорое (большое время) после перевода CE в ноль. Наверное частотомер ваяете.Простенький - простенький. Для целей индикации.Костыль BUGCTRL - выгляди не очень - но работать будет (но опять же есть ограничения - не потанцуешь :) ).Хватит и обычной логики. DSP блочёк имеет один клоковый пин и его можно вести как угодно. Хуже не станет :)Если клок произвольный и может отсутствовать то только асинхронный сброс.:))) Вот и пример того где отказаться от асинхронности нельзя.Если еще и частота выше системной то есть несколько вариантов счета - включая полностью асинхронный счетчик В этом случае лимит только физические ограничения на макс. частоту на пин и тригер. Классику я знаю. Хотелось обсудить альтернативные варианты. Сдвиговый регистр и дешифратор к нему. Это не требует переносов и может быть быстрее.А можно поподробнее что это за фокус? Счётчик Джонсона? Так он же триггеры жрёт что не в себя. Изменено 9 ноября, 2015 пользователем MegaVolt Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gerbity 0 10 ноября, 2015 Опубликовано 10 ноября, 2015 (изменено) · Жалоба Если не секрет куда его поставить? Простите, два конечно же. При передачи любых сигналов (в том числе и ресетов) из одного частотного домена в другой необходимо их дважды пересинхронизировать. Это обязательно. Вот выкладываю картинку, как это сделать. На выходе у вас получится сигнал сброса, который будет синхронизован с вашим внешним клоком. Платой за подобное использование будет задержка в два такта внешнего клока, которая может влиять на логику работы, но если это критично, то ее можно скомпенсировать. Например сбрасывать ваш счетчик не в ноль а в +2, например. Выложу ка я пару интересных книжечек, как правильно делать всякого такого рода вещи. CummingsSNUG2001SJ_AsyncClk.pdf CummingsSNUG2002SJ_Resets.pdf Изменено 10 ноября, 2015 пользователем gerbity Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 10 ноября, 2015 Опубликовано 10 ноября, 2015 · Жалоба А можно поподробнее что это за фокус? Счётчик Джонсона? Так он же триггеры жрёт что не в себя. Если делаете быстрый счетчик, то там будут параллельные переносы. А они жрут много логики и интерконнектов. Берем 2 блока. В каждом сдвиговый регистр, исходно в нем 0. В него задвигаем 1. Например 8 раз. Как только на выходе появится 1, то значит пришло 8 импульсов, которые суммируем в регистр индикации. Один блок сдвигает, другой суммирует и обнуляется. По окончании работы в одном из блоков будет "хвост", который после обработки можно добавить к сумматору. Преимущество в том, что сдвиг быстрее счета и там "ближние" интерконнекты, а в Ксайлинксе вообще можно взять SRL - это одна ячейка... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 34 10 ноября, 2015 Опубликовано 10 ноября, 2015 · Жалоба Приветствую! Если делаете быстрый счетчик, то там будут параллельные переносы. А они жрут много логики и интерконнектов. Берем 2 блока. В каждом сдвиговый регистр, исходно в нем 0. В него задвигаем 1. Например 8 раз. Как только на выходе появится 1, то значит пришло 8 импульсов, которые суммируем в регистр индикации. Один блок сдвигает, другой суммирует и обнуляется. По окончании работы в одном из блоков будет "хвост", который после обработки можно добавить к сумматору. Преимущество в том, что сдвиг быстрее счета и там "ближние" интерконнекты, а в Ксайлинксе вообще можно взять SRL - это одна ячейка... Можно проще - входной делитель частоты на кольцевом сдвиговом регистре с бегущей 1 или инверсией. А затем уже можно и на системный клок переходить и считать в DSP :) Но увы - для регистра тут опять встает изначальный вопрос TC - все равно нужен асинхронный сброс :laughing: Успехов! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MegaVolt 29 10 ноября, 2015 Опубликовано 10 ноября, 2015 · Жалоба При передачи любых сигналов (в том числе и ресетов) из одного частотного домена в другой необходимо их дважды пересинхронизировать.Это я знаю :))) Вопрос то был в том что входного клока нет. И соответственно ни синхронный ресет не сработает ни синхронизатор работать не будет. За книжечки спасибо :) Если делаете быстрый счетчик, то там будут параллельные переносы. А они жрут много логики и интерконнектов.Там не настолько большие частоты чтобы делать подобные хитрости. Плюс изначально хотел делать на DSPешном блочке. А там 48 бит на ура получаются :) Но увы - для регистра тут опять встает изначальный вопрос TC - все равно нужен асинхронный сброс :laughing:Ага :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gerbity 0 10 ноября, 2015 Опубликовано 10 ноября, 2015 (изменено) · Жалоба Это я знаю :))) Вопрос то был в том что входного клока нет. И соответственно ни синхронный ресет не сработает ни синхронизатор работать не будет. Ну это уже зависит от логики работы устройства. Может быть и нет смысла сбрасывать счетчик, если он все равно заморожен в отсутствии клока? А при такой схеме счетчик сбросится автоматически, как только появится клок. Если логика работы противоречит такому поведению, то можно поступить как советовали выше - пересинхронизировать внешний клок на внутреннюю частоту (также через 2 триггера), и работать полностью в одном частотном домене. Тут проблем вообще не будет, но это нормально будет работать, только если внутренний клок хотя бы в несколько раз выше внешнего. Изменено 10 ноября, 2015 пользователем gerbity Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MegaVolt 29 10 ноября, 2015 Опубликовано 10 ноября, 2015 · Жалоба Ну это уже зависит от логики работы устройства. Может быть и нет смысла сбрасывать счетчик, если он все равно заморожен в отсутствии клока? А при такой схеме счетчик сбросится автоматически, как только появится клок. Если логика работы противоречит такому поведению, то можно поступить как советовали выше - пересинхронизировать внешний клок на внутреннюю частоту (также через 2 триггера), и работать полностью в одном частотном домене. Тут проблем вообще не будет, но это нормально будет работать, только если внутренний клок хотя бы в несколько раз выше внешнего.Ага. Всё верно :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться