Перейти к содержанию
    

"Поймать" конец сигнала

На вход ПЛИС приходит сигнал неизвестной длинны.

Как поймать его конец, точнее переход с 1 в 0. По которому мне нужно сгенереровать строб. Строб должен стать активным только в конце сигнала (когда он еще в 1) и сниматся когда внешний сигнал станет 0.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно еще поиграться с уровнями срабатывания входных триггеров - искусственно задрать порог между нулем и единицей для некоторого банка, так, что для внешнего устройства это все еще будет единица, а ФПГА уже воспримет этотт сигнал как нуль. Тогда может получиться перекрытие в небольшом диапазоне, если неизвестный входной сигнал имеет пологий спадающий фронт, однако такое решение черевато пониженной помехоустойчивостью всего устройства.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Решение первое (некрасивое): а - вход сигнала, b - выход строба, b=a xor lcell(a)

Количеством lcell-ов регулируется длина строба.

 

Решение второе (еще хуже): поставить на входе ПЛИС схемку из инвертора и дифференцирующей RC-цепочки... И долго развлекаться с величинами R и C.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Длительность сигнала - константа? или как? Для решения нужно знать больше о запускающем импульсе. Какие у него фронты?

Если константа, то можно померять длину, и на следующем импульсе выдать результат.

Еще как вариант - поставить лз на сигнал, и отдавать во внешннее устройство его, а импульс формировать по его окончании.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяюсь к v_mirgorodsky как в смысле того что мало данных для решения задачи так и в смысле того что закон причинно-следственных связей никто не отменял.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Линию задержки на сигнал (аналоговую). Компаратор на входе, компаратор на выходе. Величина задержки равна длине импульса строба.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Неизвестный сигнал и строб должны перекрываться, и это действительно не возможно. Строб нужен для сдвигового ресгитра, тоесть инициировать сдвиг.

Я просто себе усложнил жизнь.

Потому что, поскольку внешний сигнал периодический (такты) то я просто подал его на тактовый вход сдвигового регистра и по спаду делаю сдвиг.

Все оказалось очень просто :)

Прошу прощения за то что недостаточно информативно описал проблему. И спасибо за советы ;-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Как только на выходе предпоследнего триггера сигнала 0, формируется строб, захлопывающий данные на выходе последнего триггера шины. В следующем такте происходит захлопывание.

Цепочка из триггеров может иметь длину 2 и более, я бы взял 3 -4, тк. твой внутренний такт вероятнее всего асинхронен с внешними сигналами и может возникнуть метастабильное состояние .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проще завести внешний тактовый сигнал WR на СЕ триггера через инвертор,а на клоковый вход - внутреннюю высокую тактовую. Глюков гарантированно не будет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Была как-то необходимость фронты ловить - делал так.

Синтезиться в DFF+Latch то ли наоборот - точно уже не помню, но работает железно.

Get_Edge.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Неизвестный сигнал и строб должны перекрываться, и это действительно не возможно. Строб нужен для сдвигового ресгитра, тоесть инициировать сдвиг.

Я просто себе усложнил жизнь.

Потому что, поскольку внешний сигнал периодический (такты) то я просто подал его на тактовый вход сдвигового регистра и по спаду делаю сдвиг.

Все оказалось очень просто :)

Прошу прощения за то что недостаточно информативно описал проблему. И спасибо за советы ;-)

 

в цифровой технике причинно следственная связь не работает- и сигнал со стробом можно сдвигать во времени как угодно!!!

цифровая линия задержки (фифо,сдвиговый регистр и тд ) позволяют делать любые причинно следственные связи :ninja:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в цифровой технике причинно следственная связь не работает- и сигнал со стробом можно сдвигать во времени как угодно!!!

цифровая линия задержки (фифо,сдвиговый регистр и тд ) позволяют делать любые причинно следственные связи  :ninja:

 

А как Вы тогда объясните существование событийного метода моделирования цифровых схем? ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в цифровой технике причинно следственная связь не работает- и сигнал со стробом можно сдвигать во времени как угодно!!!

цифровая линия задержки (фифо,сдвиговый регистр и тд ) позволяют делать любые причинно следственные связи  :ninja:

 

А как Вы тогда объясните существование событийного метода моделирования цифровых схем? ;)

 

одно не исключает другого - важно определить относительно чего вы хотите рассматривать объект и что является базисом времени - поскольку событийный метод моделирования не является чисто событийным а привязан к абсолютному времени поэтому о событийном моделировании в чистом виде говорить неи приходится - поскольку введение генераторов внутрь событий лишает такое моделирование его чистого определения

 

для того чтобы обсудить эти понятия - сначала необходимо дать ОПРЕДЕЛЕНИЕ используемых терминов :maniac:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...