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

Синхронизация внешнего сигнала

У меня FPGA вся из себя синхронная 200 МГц внутри. И есть некий внешний сигнал у которого есть строб и данные. Строб не чаще 50 МГц. По стробу надо читать данные. Видимо задача расространенная.

 

Я вижу 2 способа:

 

1. Стандартно ловися фронт строба и по внутреннему такту защелкиваем данные.

 

2. Внешний строб защелкивает данные во входной регистр, а когда обнаруживаем фронт строба, по внутреннему такту переписываем в другой регистр.

 

Оба способа работают и в симуляторе и в чипе, но вопрос к гуру: как правильнее? На вскидку способ 2 точнее в том смысле что hold time менее критичен. При первом способе можем защелкивать через 5 нс после внешнего строба, что не есть хорошо.

 

Мнения?

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


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

Я делал так: по внутренней тактовой защёлкиваются оба сигнала, а потом отслеживается изменение защелкнутого строба - это является СЕ для последующих цепей. Нареканий нет. :)

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


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

alexf

Использовал (и не только я, но и "крутые перцы") второй способ - нет проблем.

Vitёk

Здорово смахивает на синхронизатор для последовательного линка :).

Проект, кажется, называется - MiniUART.

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


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

>Здорово смахивает на синхронизатор для последовательного линка

Наверное, да... :) Хотя - UART, насколько я помню - работает без внешнего строба. А здесь по фронту строба нужно защёлкнуть данные и маякнуть дальнейшей схеме, что принят очередной бит.

То, что я предложил - наверное, ближе к способу "А", только я не понял: alexf по внутренней тактовой защёлкивает только данные, или же данные вместе со стробом. Поэтому и привёл способ целиком. :)

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


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

Делаю еще так:

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

Работает.

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


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

Делаю еще так:

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

Работает.

 

Дык это и есть "способ 2" или я чего-то не понял? Вроде так и делаю...

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


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

Судя по словам "асинхронная защёлка" речь идёт о защёлке типа LATСH.

 

"по активному уровню строба" наводит на мысль о flip-flop. кроме того я столько раз слышал что в FPGA latch не есть хорошо, что поверил :)

 

В общем всем спасибо, тема исчерпана.

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


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

Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...