Цитата(DmitryR @ Oct 15 2007, 09:31)

Я вот внимательно читаю и никак не могу понять, что же с этим блоком будет, когда фаза входного сигнала совпадет с фазой внутреннего тактового. Допустим, на А будет единица, а на B - фронт, который поймается как 0. Блок скажет - отлично, давайте работать по B и D, а на D тоже придется фронт, который поймается неправильно.
Суть такова, что на бит данных приходится 4 точки выборки, а нужно выбрать одну, которая будет в середине каждого бита и будет показывать самое правильное значение. Если имеется переход из 0 в 1 или наоборот, то в двух соседних точках будут разные значения, тогда нужная точка будет третьей по порядку с переходом на первую, если точек не хватает. Если перехода нет, то номер точки выборки не меняется. При совпадении фазы сигнала с фазой выборки одного из триггеров он будет находиться в неизвестном состоянии, при этом точка выборки окажется либо на середине, либо на одну точку дальше, что тоже неплохо. Сложнее учесть отклонение битрейта от частоты выборки (оно всегда есть, какие-бы кварцы не использовались), поэтому на каждые два такта нужно выбирать от одного до трёх значений сигнала (в идеале - два), поэтому и десериализатор умеет свдигать от одного до трёх бит за такт.