Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: алгоритм асинхронного приёма
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Docent86
Добрый час.

Имеем: сигнал ТТЛ, стартовый+8+стоповый бит.
нет передачи - "1"... потом "0"-стартовый ... данные ... "1"стоповый и т.д.
Не могу засинхронизироваться для корректного приема данных. Если завтра не получится пойду ап стену биться. Частота передачи зараннее известна в пределах 3-10к, но должна соблюдаться погрешность +-10% для каждой заранее выбранной.
Не получается выделить несколько подряд одинаковых бит и стоповый(т.к. за стоповый м.б. принято и отсутствие передачи), а он нужен!
Maverick
Цитата(Docent86 @ Mar 9 2010, 23:54) *
Добрый час.

Имеем: сигнал ТТЛ, стартовый+8+стоповый бит.
нет передачи - "1"... потом "0"-стартовый ... данные ... "1"стоповый и т.д.
Не могу засинхронизироваться для корректного приема данных. Если завтра не получится пойду ап стену биться. Частота передачи зараннее известна в пределах 3-10к, но должна соблюдаться погрешность +-10% для каждой заранее выбранной.
Не получается выделить несколько подряд одинаковых бит и стоповый(т.к. за стоповый м.б. принято и отсутствие передачи), а он нужен!

для какого "железа" - процессора или ПЛИС или что-то иное?
Docent86
Реализация на ПЛИС.
инф инвертирую на входе. умножаю частоту на 16 беру "золотую серединку" при совпадении считаю первый бит принятым включается тригер далее счетчик до 10 на примерной частоте передатчика(обнуляется после отсчета 10 с задержкой) и обнуляет тригер для приема след пачки бит. пока тригер вкл на регистры подается сигнал передатчика и сдвигается примерной его частотой далее с выходов регистра инф защелкивается по сигналу обнуления счетчика и идет далее
Andron_
на хttp://opencores.org/ есть готовые ядра USART приемопередатчиков...
MrYuran
Цитата(Docent86 @ Mar 10 2010, 00:54) *
Не получается выделить несколько подряд одинаковых бит и стоповый(т.к. за стоповый м.б. принято и отсутствие передачи), а он нужен!

В таком случае нужно применять дополнительные методы синхронизации. 10% - это как минимум целый бит, а если ещё и +/- ...
Например, применить 3b4b (естественно, немного потеряем). Либо синхронизироваться по специальной синхропоследовательности (например, преамбула 0x55 или 0xAA)
----
Помните "тельняшку" при загрузке ZX-Spectrum с кассеты? Там тоже частота вроде как известна, но немного туда-сюда плавает
Docent86
Цитата(Andron_ @ Mar 10 2010, 11:33) *
на хttp://opencores.org/ есть готовые ядра USART приемопередатчиков...


Если вы зарегистрированы там скиньте пару Uart "с" и "без" FIFO можно в HDL

TO MrYran
у меня был не спекр а БК00010 но с тем же смыслом. притормаживал пальцем касету тк магнитофон был керовый - с ускорением)))
Docent86
Линух? спс посмотрю, попробую прикрутить на Квартус.
все что есть - это ПЛИС и мсхема (ADM3202) преобразования RS-232 в ТТЛ (только RxD линия)
Linius
При реализации на Xilinx в EDK уже есть готовые бесплатные решения (с подробным DataSheet). Лучше конечно использовать такие блоки с каким-нибудь простым софт процессором типа PicoBlaze. (Как показывает практика, когда стоят задачи быстрой цифровой обработки на ПЛИС, но нужно еще и работать с последовательными протоколами - лучше всего взять ПЛИС чуть-чуть побольше (+11-12% для средних Spartan) и добавить туда софт-процессор c нужной периферией)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.