МКО для серьёзных ребят, часть 2

Nov 02, 2023 00:38

Один пост пришлось разбить на 2, иначе ЖЖ ругается, "запись слишком большая".

Только что мы вспомнили, как работает мой модуль приёмопередатчика МКО.

Для того, чтобы реализовать резервированный канал, нам нужно ПРОСТО ПОСТАВИТЬ ДВА ТАКИХ МОДУЛЯ. Весь вопрос - в управляющей логике, она явно должна усложниться. Для начала: сколько модулей CRC нам ( Read more... )

странные девайсы, ПЛИС, программки, работа

Leave a comment

Comments 5

ardelfi November 1 2023, 22:03:16 UTC
> Как же меня раздражают шинные мультиплексоры!

Навеяло. Делалась железяка для управления великой железякой, и был там АЦП с синхронным последовательным портом. Авторы АЦП сэкономили себе несколько транзисторов, в результате чего вся внутренняя логика тактировалась от этого порта. Чтобы получить максимальную частоту преобразования 5МГц, ему нужно было 105МГц (21 такт на цикл преобразования и передачи). Тактовая железяки была сначала 100, потом 200, потом 150. Это слишком мало чтобы "оцифровывать" 105МГц биты в последовательной форме. В результате приходили от этого АЦП 16-битные слова, которые без синхронизатора никак в мозг железяки не заходили. А синхронизатор - это три триггера на каждый бит минимум, итого 48 триггеров (0.1% всей плисины) потрачено просто чтобы подключить порт того АЦП. И таких портов там было несколько. Вот это раздражало, так что "глаза бы мои не видели".

Reply

nabbla1 November 3 2023, 23:35:49 UTC

Получается, биты шли один за другим, защёлкивались на своих 105 МГц внутри ПЛИС, а потом "переносились" в 150 МГц уже через синхронизатор?

Reply

ardelfi November 3 2023, 23:50:59 UTC
Я сделал модуль, который генерировал эти 105, управлял АЦП (там ему напхать три пакета настроек нужно, чтобы он полезное выдал), принимал данные последовательно, разворачивал их в параллельные слова, и дальше пихал в синхронизатор вместе с управляющими сигналами. Фактически это очень короткая простейшая FIFO, благо у вивадо есть готовые конфигурируемые модули таких синхронизаторов на разные ситуации. Сначала было без синхронизатора, через дотошно спланированный протокол сигналов управления, но синтез очень всё равно ругался (negative slack).

Reply

nabbla1 November 3 2023, 23:59:04 UTC
Мне подумалось, тут бы помогли два регистра, один защелкивает по фронту, второй по спаду, а каким воспользоваться в данный момент - определяет некий "фазовый детектор", который следит, как в данный конкретный момент соотносятся фронты 105 МГц и 150 МГц., и какой из вариантов оказывается "безопасен". Но конечно, убедить Timing analyzer, что в этой штуке "всё хорошо" и никаких конфликтов нет - то ещё удовольствие. Вероятно, никак, "пущай ругается", лишь бы в железе зафурычило и отработало сутки без единого сбоя.

Reply


Leave a comment

Up