Dootch 0 18 июля, 2017 Опубликовано 18 июля, 2017 · Жалоба Добрый день. Собираю на ПЛИС Cyclone V E схему, которая измеряет разность времен прихода двух импульсов А и B. Длительность импульсов около 200 мкс, частота 1 Гц. Время измеряется в единицах опорной частоты 100 МГц, подаваемой на счетчик. Схема приведена на рисунке. Сигналы записи состояний счетчика в регистр я формирую синхронно с опорной частотой. Для того, чтобы состояние счетчика записывалось всегда корректно, как я понял необходимо указать компилятору что данные с счетчика на входе регистров должны быть стабильны к моменту прихода сигнала записи. Вопрос как это сделать? Возможно для корректной работы нужно изменить схему, но что-то никаких идей нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Грендайзер 0 18 июля, 2017 Опубликовано 18 июля, 2017 · Жалоба Ну как минимум, не стоит подобным образом баловать с тактовой сетью. На таковой цепи должны быть лишь такты - лучше это правило не нарушать. Думою Вам сперва сюда http://fpgacenter.com/examples/basic/edge_detector.php надо глянуть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 18 июля, 2017 Опубликовано 18 июля, 2017 · Жалоба А Вы сделайте импульсы, которые измеряете не входами синхронизации, а входами разрешения работы, предварирельно пропустив эти сигналы через 2-3 разрядный сдвиговый регистр для избавления от метастабильности. Тогда проект серьёзно упрощается. Ну как минимум, не стоит подобным образом баловать с тактовой сетью. На таковой цепи должны быть лишь такты - лучше это правило не нарушать. Думою Вам сперва сюда http://fpgacenter.com/examples/basic/edge_detector.php надо глянуть. Вот я постоянно, слышу про то, что не стоит заводить такие сигналы в тактовую сеть. Но никак не могу найти причину почему так делать нельзя. Нет ли у вас ссылки на эту информацию ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Shivers 0 18 июля, 2017 Опубликовано 18 июля, 2017 · Жалоба Здесь нужен счетчик с разрешением счета и сбросом. Условие счета и условие сброса формируются из входных импульсов. К примеру A&!B - счет, !A&!B - сброс, A&B - сохранение результата в регистре. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Грендайзер 0 18 июля, 2017 Опубликовано 18 июля, 2017 (изменено) · Жалоба Вот я постоянно, слышу про то, что не стоит заводить такие сигналы в тактовую сеть. Но никак не могу найти причину почему так делать нельзя. Нет ли у вас ссылки на эту информацию ? Ну прям ссылку я сейчас не найду, но эта фраза взята из апноутов (как альтеры так и ксайлинкса). Причина здесь вообщем то очевидна. При изменении условий работы кристалла (изменение температуры или напряжения питания) нестабильность такого "клока" будет весьма трудно предсказать особенно если он проходит на своём пути комбинационную логику. А вообще данный способ не запрещён и в ряде случаев его можно использовать, но опять таки не желательно. Это и логично, ПЛИС всё же универсальный инструмент. P.S. Забыл упомянуть, все тактовые буферы так же согласованы со специальными тактовыми ногами и самой линией, а вы туда такую рассогласованность пихаете триггером... Изменено 18 июля, 2017 пользователем Грендайзер Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dootch 0 18 июля, 2017 Опубликовано 18 июля, 2017 · Жалоба Спасибо, а если увеличить число измеряемых импульсов до восьми? В общем случае кажется нужно прописать некий констрейн. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Грендайзер 0 18 июля, 2017 Опубликовано 18 июля, 2017 · Жалоба Констрйн Вам надо прописать лишь для тактового сигнала, а вот схему стоит изменить, т.к. в данном случае, Вам синтезатору придётся ещё дополнительными констрейнами объяснять, что у Вас на пустом месте ещё один тактовый домен появился... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dootch 0 18 июля, 2017 Опубликовано 18 июля, 2017 · Жалоба Констрйн Вам надо прописать лишь для тактового сигнала, а вот схему стоит изменить, т.к. в данном случае, Вам синтезатору придётся ещё дополнительными констрейнами объяснять, что у Вас на пустом месте ещё один тактовый домен появился... Для количества измеряемых импульсов больше двух в голову приходит только такая схема: И счетчик и регистры получают на синхронизацию один и тот же тактовый сигнал, регистры имеют вход разрешения работы на который поступает сформированный по предложенной Вами схеме edge detector сигнал, правда схема edge detector немного изменена (добавлен второй триггер перед инвертором) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Алга 0 18 июля, 2017 Опубликовано 18 июля, 2017 · Жалоба Если изменить структурную схему: Сигналы А и б являются сигналами старт/стоп и формируют временное окно, которое поступает на вход енабле счетчика. Опорная частота 100Мнц на тактовый вход счетчика. Выходы счетчика есть результат- разница по времени между импульсами А и Б Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dootch 0 18 июля, 2017 Опубликовано 18 июля, 2017 · Жалоба Если изменить структурную схему: Сигналы А и б являются сигналами старт/стоп и формируют временное окно, которое поступает на вход енабле счетчика. Опорная частота 100Мнц на тактовый вход счетчика. Выходы счетчика есть результат- разница по времени между импульсами А и Б Я в начале топика для простоты указал, что сигналов два, на самом деле их 8. Прошу прощения за неточность. Идея в том, что счетчик крутится по кругу непрерывно, а из значений регистров вычисляется временной интервал между любой парой сигналов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tausinov 0 18 июля, 2017 Опубликовано 18 июля, 2017 · Жалоба Может, сделать просто один общий сквозной счетчик, а его значения сохранять в восемь регистров по фронту соответствующего импульса? Для каждого из регистров потом выставлять флаг готовности, а когда "И" от всех даст 1, можно забирать результаты. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Алга 0 18 июля, 2017 Опубликовано 18 июля, 2017 · Жалоба Как здесь звучало- сделать 8 front edge detector, которые поступают на вход enable соответствующего регистра. Опорная частота 100Мнц поступает на счетчик и все регистры. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Magnum 0 18 июля, 2017 Опубликовано 18 июля, 2017 · Жалоба Ещё желательно указать вероятность неприхода одного из импульсов, дабы исключить зависание в вечном ожидании, и откуда они берутся, возможно потребуется схема подавления дребезга, если сигналы с механического замыкателя. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться