alexf 0 10 февраля, 2005 Опубликовано 10 февраля, 2005 · Жалоба У меня FPGA вся из себя синхронная 200 МГц внутри. И есть некий внешний сигнал у которого есть строб и данные. Строб не чаще 50 МГц. По стробу надо читать данные. Видимо задача расространенная. Я вижу 2 способа: 1. Стандартно ловися фронт строба и по внутреннему такту защелкиваем данные. 2. Внешний строб защелкивает данные во входной регистр, а когда обнаруживаем фронт строба, по внутреннему такту переписываем в другой регистр. Оба способа работают и в симуляторе и в чипе, но вопрос к гуру: как правильнее? На вскидку способ 2 точнее в том смысле что hold time менее критичен. При первом способе можем защелкивать через 5 нс после внешнего строба, что не есть хорошо. Мнения? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vitёk 0 10 февраля, 2005 Опубликовано 10 февраля, 2005 · Жалоба Я делал так: по внутренней тактовой защёлкиваются оба сигнала, а потом отслеживается изменение защелкнутого строба - это является СЕ для последующих цепей. Нареканий нет. :) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ASN 0 10 февраля, 2005 Опубликовано 10 февраля, 2005 · Жалоба alexf Использовал (и не только я, но и "крутые перцы") второй способ - нет проблем. Vitёk Здорово смахивает на синхронизатор для последовательного линка :). Проект, кажется, называется - MiniUART. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vitёk 0 10 февраля, 2005 Опубликовано 10 февраля, 2005 · Жалоба >Здорово смахивает на синхронизатор для последовательного линка Наверное, да... :) Хотя - UART, насколько я помню - работает без внешнего строба. А здесь по фронту строба нужно защёлкнуть данные и маякнуть дальнейшей схеме, что принят очередной бит. То, что я предложил - наверное, ближе к способу "А", только я не понял: alexf по внутренней тактовой защёлкивает только данные, или же данные вместе со стробом. Поэтому и привёл способ целиком. :) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Димыч 0 10 февраля, 2005 Опубликовано 10 февраля, 2005 · Жалоба Делаю еще так: по внутреннему тактовому сигналу детектируется строб со всей вытекающей логикой дальнейших действий... А данные сохраняются в асинхронной защелке по активному уровню строба. Работает. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexf 0 10 февраля, 2005 Опубликовано 10 февраля, 2005 · Жалоба Делаю еще так: по внутреннему тактовому сигналу детектируется строб со всей вытекающей логикой дальнейших действий... А данные сохраняются в асинхронной защелке по активному уровню строба. Работает. <{POST_SNAPBACK}> Дык это и есть "способ 2" или я чего-то не понял? Вроде так и делаю... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vitёk 0 10 февраля, 2005 Опубликовано 10 февраля, 2005 · Жалоба Судя по словам "асинхронная защёлка" речь идёт о защёлке типа LATСH. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexf 0 10 февраля, 2005 Опубликовано 10 февраля, 2005 · Жалоба Судя по словам "асинхронная защёлка" речь идёт о защёлке типа LATСH. <{POST_SNAPBACK}> "по активному уровню строба" наводит на мысль о flip-flop. кроме того я столько раз слышал что в FPGA latch не есть хорошо, что поверил :) В общем всем спасибо, тема исчерпана. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться