реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> алгоритм асинхронного приёма, Нужна помощь
Docent86
сообщение Mar 9 2010, 21:54
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 2-03-10
Из: С.-Пб.
Пользователь №: 55 772



Добрый час.

Имеем: сигнал ТТЛ, стартовый+8+стоповый бит.
нет передачи - "1"... потом "0"-стартовый ... данные ... "1"стоповый и т.д.
Не могу засинхронизироваться для корректного приема данных. Если завтра не получится пойду ап стену биться. Частота передачи зараннее известна в пределах 3-10к, но должна соблюдаться погрешность +-10% для каждой заранее выбранной.
Не получается выделить несколько подряд одинаковых бит и стоповый(т.к. за стоповый м.б. принято и отсутствие передачи), а он нужен!
Go to the top of the page
 
+Quote Post
Maverick
сообщение Mar 10 2010, 07:29
Сообщение #2


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(Docent86 @ Mar 9 2010, 23:54) *
Добрый час.

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

для какого "железа" - процессора или ПЛИС или что-то иное?


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
Docent86
сообщение Mar 10 2010, 08:00
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 2-03-10
Из: С.-Пб.
Пользователь №: 55 772



Реализация на ПЛИС.
инф инвертирую на входе. умножаю частоту на 16 беру "золотую серединку" при совпадении считаю первый бит принятым включается тригер далее счетчик до 10 на примерной частоте передатчика(обнуляется после отсчета 10 с задержкой) и обнуляет тригер для приема след пачки бит. пока тригер вкл на регистры подается сигнал передатчика и сдвигается примерной его частотой далее с выходов регистра инф защелкивается по сигналу обнуления счетчика и идет далее
Go to the top of the page
 
+Quote Post
Andron_
сообщение Mar 10 2010, 08:33
Сообщение #4


.NET developer
***

Группа: Свой
Сообщений: 218
Регистрация: 20-10-07
Из: Новосибирск
Пользователь №: 31 532



на хttp://opencores.org/ есть готовые ядра USART приемопередатчиков...
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Mar 10 2010, 08:34
Сообщение #5


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(Docent86 @ Mar 10 2010, 00:54) *
Не получается выделить несколько подряд одинаковых бит и стоповый(т.к. за стоповый м.б. принято и отсутствие передачи), а он нужен!

В таком случае нужно применять дополнительные методы синхронизации. 10% - это как минимум целый бит, а если ещё и +/- ...
Например, применить 3b4b (естественно, немного потеряем). Либо синхронизироваться по специальной синхропоследовательности (например, преамбула 0x55 или 0xAA)
----
Помните "тельняшку" при загрузке ZX-Spectrum с кассеты? Там тоже частота вроде как известна, но немного туда-сюда плавает


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
Docent86
сообщение Mar 10 2010, 09:05
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 2-03-10
Из: С.-Пб.
Пользователь №: 55 772



Цитата(Andron_ @ Mar 10 2010, 11:33) *
на хttp://opencores.org/ есть готовые ядра USART приемопередатчиков...


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

TO MrYran
у меня был не спекр а БК00010 но с тем же смыслом. притормаживал пальцем касету тк магнитофон был керовый - с ускорением)))
Go to the top of the page
 
+Quote Post
Andron_
сообщение Mar 10 2010, 09:55
Сообщение #7


.NET developer
***

Группа: Свой
Сообщений: 218
Регистрация: 20-10-07
Из: Новосибирск
Пользователь №: 31 532



вот какие-то корки закачал:

http://rapidshare.com/files/361429634/mini...est.tar.gz.html
http://rapidshare.com/files/361430196/uart...est.tar.gz.html
http://rapidshare.com/files/361430319/uart...est.tar.gz.html
Go to the top of the page
 
+Quote Post
Docent86
сообщение Mar 10 2010, 10:37
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 2-03-10
Из: С.-Пб.
Пользователь №: 55 772



Линух? спс посмотрю, попробую прикрутить на Квартус.
все что есть - это ПЛИС и мсхема (ADM3202) преобразования RS-232 в ТТЛ (только RxD линия)
Go to the top of the page
 
+Quote Post
Linius
сообщение May 24 2010, 08:14
Сообщение #9





Группа: Участник
Сообщений: 14
Регистрация: 3-11-09
Из: Беларусь, Минск
Пользователь №: 53 398



При реализации на Xilinx в EDK уже есть готовые бесплатные решения (с подробным DataSheet). Лучше конечно использовать такие блоки с каким-нибудь простым софт процессором типа PicoBlaze. (Как показывает практика, когда стоят задачи быстрой цифровой обработки на ПЛИС, но нужно еще и работать с последовательными протоколами - лучше всего взять ПЛИС чуть-чуть побольше (+11-12% для средних Spartan) и добавить туда софт-процессор c нужной периферией)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st June 2025 - 00:04
Рейтинг@Mail.ru


Страница сгенерированна за 0.01412 секунд с 7
ELECTRONIX ©2004-2016