Development #42

Инициализация обмена без использования общего сигнала сброса.

Added by Dmitry Smekhov over 10 years ago. Updated over 10 years ago.

Status:Confirmed Start date:08/23/2012
Priority:Normal Due date:
Assignee:- % Done:

0%

Category:- Spent time: 4.00 hours
Target version:-

Description

Существует задача провести инициализацию обмена между двумя ПЛИС с использованием только MGT линий.
Пример: два устройства связаны только через оптический кабель. При этом нет возможности подать сигнал сброса одновременно на два устройства.
Если сбрасывать только передатчик, а приёмник запускать с произвольного места, то произойдёт блокировка канала.

Решение:
Узел синхронизации 64/67 обеспечит восстановление синхронизации, это позволит передавать флаги tx_user_flag.
Флаг 0 нужно использовать как сброс сигналов buf_empty на приёмнике. В компонент prq_transceiver_gtx_m1 необходимо ввести дополнительный сигнал сброса rst_buf.
Формирование сброса от флага 0 нужно реализовать на уровне выше чем prq_transceiver_gtx_m1.
Для устройства MASTER - флаг 0 формируется в каком-либо регистре и управляется программно.
Для устройства SLAVE принятый флаг 0 передаётся обратно в флаг 0.

Алгоритм инициализации будет выглядеть примерно так:
1. MASTER сбрасывает контроллер
2. MASTER формирует flag0=1
3. flag0 передаётся на SLAVE и переводит buf_empty в ожидание начального пакета. Дополнительно flag0 может провести сброс остальной части прошивки SLAVE.
4. flag0=1 передаётся на MASTER
5. MASTER принимает flag0=1 и понимает, что SLAVE находится в состоянии "СБРОС"
6. MASTER устанавливает flag0=0
7. flag0 передаётся на SLAVE - снимается сигнал "СБРОС"
8. MASTER принимает flag0=0 и понимает, что SLAVE находится в состоянии готовности к обмену
9. MASTER начинает работу

History

Updated by Dmitry Smekhov over 10 years ago

Добавлен вход rs_buf;
Добавлен тест prq_transceiver_rst_buf_tb - проверка с перезапуском обмена
Добавлен tc_03_0 - вызов prq_transceiver_rst_buf_tb с одним перезапуском.

Доработан run_rtl_regression.tcl - добавлена функция run_test; Производится запуск всех тестов tc_00_*, tc_02_*, tc_03_*

Also available in: Atom PDF