July 19th, 2021

slow loris

Dragostea din tei

Есть такая молдавская группа O-Zone, со страшно популярной песней Dragostea din tei, более известной как Numa Numa:



Не так давно эту песню стали использовать в рекламе одного популярного интернет-магазина. Догадаетесь с одного раза, что же за магазин такой взял композицию от O-Zone?

Collapse )
QuatCore

Тестируем "МКО" с CRC

Вроде как написали самую полную версию "протокольного контроллера МКО" (хоть и вместо настоящего МКО он пока использует UART), а ещё полудуплексный 16-битный приёмопередатчик с модулем CRC. Пора бы посмотреть, что они между собой дружат.

Для начала на симуляции. Но для этого нужно в ПЛИС "подружить" два приёмопередатчика между собой, чтобы они думали, что посередине линия передачи RS485. Т.е с одной стороны в этот модулёк будут поступать провода rxd (выход данных с приёмника), txd (вход данных на передатчик) и RW (0, если нужно принимать данные, 1, если нужно передавать). И с другой стороны то же самое. Причём rxd - двунаправленная линия, при RW=1 приёмник должен перевести свой выход на rxd в Z-состояние (высокое выходное сопротивление).

Как-то так:
module RS485dummyLine (input RW0, txd0, inout rxd0,
			input RW1, txd1, inout rxd1);
					
assign rxd0 = RW0? 1'bz : txd1;
assign rxd1 = RW1? 1'bz : txd0;					
									
endmodule


Фактически, передатчик одного модуля соединяется с приёмником соседнего (и наоборот), но приёмник "слепнет" во время работы собственного передатчика, тем самым моделируя полудуплекс.

И ещё "нарисуем" схему всего модуля информационного обмена (протокольный контроллер + память + часы реального времени + приёмопередатчик + CRC) в сборе:


Большинство выводов этой схемы - отладочные, посмотреть "что там творится". А по сути, "наружу" выходят:
- txd, rxd и RW - интерфейс с "физическим уровнем" приёмопередатчика,
- Mark - сигнал скорее всего от процессора (назначим ему отдельный адрес и декодер), что половина экспозиции кадра завершена. Устанавливает на выход часов реального времени метку, когда это произошло.

Весь остальной обмен должен будет идти через "общую" память, это сделаем, как только хреновину отладим. Хотя, также в отладочных целях, я наверное введу ещё остановку процессора в ожидании прихода "Синхронизация (с СД)", не готов я к тому, что процессор будет жить своей жизнью, перемалывая по 25 кадров в секунду, а мы будем получать данные "с какого повезёт".

Синтезируется такая схема в 240 ЛЭ, предельная частота 52,91 МГц. Злой рок: первое число неумолимо растёт, второе столь же неумолимо падает!

Впрочем, ещё одну вещь мы позабыли: контроллеру нужно как-то отличать между собой слова данных и командные слова! Он ожидает, что ему это сообщат прямым текстом, по проводу RXisData, руководствуясь полярностью синхроимпульса в МКО (Mil-Std 1553). Но в UART у нас нет полярности синхроимпульса, надо придумать костыль.

Collapse )

С нахрапу "прикрутить" CRC не получилось, немножко не рассчитал. И ещё всплыл старый должок с обеспечением паузы между приёмом и передачей ответного слова. Что ж, завтра будем исправлять.