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

 
 
> RS-232 + FPGA
maksya
сообщение May 18 2006, 20:52
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 253
Регистрация: 28-08-04
Из: Ленинград
Пользователь №: 562



Доброго времени суток, уважаемые.

Есть задача: между платой и датчиками существует RS-232 канал, точнее 3 канала в направлении от платы к датчикам и 3 - противоположном. Цель - обеспечить работоспособность этой связки.

В качестве ядра системы предполагаю использовать FPGA (естественно не только для целей обмена с датчиками). Если Я правильно понимаю, то придется ставить внешние микросхемы (типа MAX220–MAX249) для преобразования уровней TTL <-> RS-232. Остается дело за малым - реализовать в системе приемопередатчики. С этого момента постараюсь раскрыть проблему более подробно.

С передатчиком более-менее понятно: типичный Serializer с двумя регистрами и одним PLL (старт_бит:байт_данных:контроль:стоп_бит и все это наружу). С приемником сложнее: только deserializer'ом, наверное, обойтись не получится sad.gif

В классическом представлнии (в соответствии с остаточными знаниями, полученными в ВУЗе) приемник должен запустить свой внутренний генератор (работающий с частотой, например, в 16 раз превышающей бодовую) после обнаружения на линии перехода сигнала с 1 в 0, т.е. обнаружения старт-бита. Через 8 импульсов после этого события еще раз проверяем состояние линии, и если там 0, то считаем что пришел старт-бит. Далее входной поток мереем через каждые 16 тактов (т.е. с бодовой скоростью), предположительно попадая на середину бита. Записав биты в регистр, проверяем четность, наличие стоп-бита и все по-новой.

Помимо попытки вычисления значения бита в середине интервала, Я встречал еще в литературе варианты когда в битовом интервале производится 3 выборки и по мажоритарному принципу определяется значение.

Теперь к вопросу реализации:

Вариант 1. Брать внешнюю миросхему с реализованным UART'ом. Вроде Intel 8251 для этих целей используется в качестве внешнего устрйоства процессора. Есть и встроенные в корпус МК UART'ы, но ставить МК на плату только ради этих целей как-то нелепо. Кстати, а существует ли вариант, объединяющий UART с драйвером RS-232?

Вариант 2. Самому делать на FPGA. В этом случае Я вижу несколько проблем:
- как мне осуществить "запуск" генератора приемника при обнаружении старт-бита?
- т.к. мне требуется реализовать 3 передатчика и 3 приемника RS-232, и скорее всего эти каналы будут работать независимо друг от друга, то вроде как получается, чересчур большие затраты по количеству PLL-ресурсов. Как бы не вышло, что придется ставить несколько ПЛИС...

Нашел в закромах VHDL код UART'а (прикладываю в тему). Бегло просмотрев код, выявил для себя одну интересную вещь - там используется CLK в 4 раза быстрее бодовой скорости, производится выборка значения бита 3 раза за интервал. Т.е. если вдвинутое из Rx-линии в трехразрядный регистр значение = 000, то считаем, что пришел старт-бит. Далее - по алгоритму. Насколько такой способ отражает реальные потребности реализации? Влиять на UART на стороне датчиков не представляется возможным. Всвязи с этим непонятно, будет ли всегда данные от датчика адекватно приниматься в FPGA'шный приемник.

И еще - встречал в каких-то статьях, что в FPGA встраиваются блоки SERDES. В hepl'е Quartus'а говорится что вроде как в Stratix'е есть такая возможность. Кто-нибудь работал с ними? И не слишком ли "жирно" будет использовать такие SERDES для 115 Кбит/с?

Быть может Я делаю из РПГ-18 (гранатомет "муха") слона, и задача решается современными средствами намного проще? Вообщем если у кого есть опыт общения с датчиками по RS-232, то просьба поделиться знаниями.

P.S.: Резюмируя вышесказанное, прошу по возможности ответить на следующие вопросы:
1. Применяются ли сейчас отдельные микросхемы UART'ов? Есть ли варианты UART+драйвер RS-232 в одном корпусе?
2. Обязательно ли использовать PLL для этой задачи?
3. Приложенный VHDL код UART'а (или аналогичный ему) может гарантировать правильный обмен информацией?
4. К месту ли применение аппаратных встроенных в ПЛИС блоков SERDES?
5. Есть ли у кого опыт решения похожей задачи?
Прикрепленные файлы
Прикрепленный файл  hUART.zip ( 2.07 килобайт ) Кол-во скачиваний: 303
 


--------------------
Лень - это не врожденное чувство русского человека, а средство борьбы с неуемной, но бестолковой энергией начальника.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sazh
сообщение May 21 2006, 10:56
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



To NIOS
Хороший подход. Можно пойти еще дальше. Отказаться от стопового бита. Ведь Вам он не нужен.
Экономия на лицо.
Go to the top of the page
 
+Quote Post
Wild
сообщение Jul 3 2006, 15:41
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 216
Регистрация: 26-05-06
Из: Коломна
Пользователь №: 17 479



Цитата(sazh @ May 21 2006, 14:56) *
To NIOS
Хороший подход. Можно пойти еще дальше. Отказаться от стопового бита. Ведь Вам он не нужен.
Экономия на лицо.


Позвольте с вами не согласиться. Стоповый бит необходим для того чтобы устанавливать синхронизацию приемника и передатчика, так как в общем случае два уарта работают на немного разных частотах необходимо более или менее точно определить момент начала передачи байта, чтобы даже после небольшой рассинхронизации можно было быть уверенным, что снимаемое с линии значение последнего бита, действительно соответствует последнему биту а не соседнему сним.

Если в схеме с делением битового интервала на 16 частей и выборке 3х средних значений, к моменту приема последнего бита такая выборка может "уплыть" от центра битового интервала к его краю, то есть на время, приблизительно равное половине битового интервала, то при предложенном NIOSом методе, искажение данных произойдет, если выборка "уплывет" хотя бы на треть.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- maksya   RS-232 + FPGA   May 18 2006, 20:52
- - ASN   maksya Я бы поставил простенький МК + драйвер. На ...   May 18 2006, 21:09
- - Chudik   Присоединяюсь к ASN: почему бы не поставить махонь...   May 19 2006, 00:03
- - prototype   Насколько мне известно, в классическом построении ...   May 19 2006, 04:48
- - vladec   Зачем чего то придумывать? У Xilinx-а есть готовые...   May 19 2006, 05:21
- - iosifk   Цитата(maksya @ May 19 2006, 00:52) В кач...   May 19 2006, 05:44
|- - NiOS   Цитата(iosifk @ May 19 2006, 09:44) Цитат...   May 19 2006, 07:42
- - sazh   А хорошо Вам преподавали в Вузе. Налицо подход нас...   May 19 2006, 06:35
- - Motorhead   Цитата(maksya @ May 19 2006, 00:52) P.S.:...   May 19 2006, 09:14
- - Alexandr   Однозначно за ПЛИС. PLL не нужна - у Вас на ПЛИС в...   May 19 2006, 12:04
|- - ASN   Alexandr На МК удобно реализовать протокол обмена ...   May 19 2006, 19:30
|- - Alexandr   Цитата(ASN @ May 19 2006, 23:30) Alexandr...   May 19 2006, 20:01
|- - ASN   Alexandr А вот если адаптировать систему под любой...   May 20 2006, 04:56
|- - maksya   Цитата(Alexandr @ May 20 2006, 00:01) Да,...   May 20 2006, 10:07
|- - NiOS   Цитата(Alexandr @ May 20 2006, 00:01) Да,...   May 20 2006, 19:49
||- - Motorhead   [quote name='NiOS' date='May 20 2006, ...   May 22 2006, 10:59
|||- - Gorby   [quote name='Motorhead' date='May 22 2...   May 22 2006, 12:20
|||- - NiOS   Цитата(Motorhead @ May 22 2006, 14:59) 2 ...   May 22 2006, 12:22
|||- - Motorhead   Цитата(NiOS @ May 22 2006, 16:22) Цитата(...   May 22 2006, 12:43
|||- - NiOS   Цитата(Motorhead @ May 22 2006, 16:43) Вс...   May 22 2006, 12:52
||- - sanek78   Цитата(NiOS @ May 20 2006, 21:49) Для чег...   Sep 26 2006, 09:15
||- - NiOS   Цитата(sanek78 @ Sep 26 2006, 13:15) Спас...   Sep 27 2006, 18:01
|- - Vital_100   Никогда не писал кода для RS, но когда потребовало...   May 27 2006, 04:34
|- - afsh   С метастабильностью полный порядок, ибо генератор ...   May 30 2006, 18:00
- - Iouri   http://www.quicklogic.com/images/appnote20.pdf по...   May 19 2006, 12:27
- - maksya   Прям мозговой штурм какой-то 7.5 : 2.5 в пользу ...   May 19 2006, 19:39
- - rezident   Микроконтроллер нужно выбирать в соответствии с пр...   May 19 2006, 19:39
- - prototype   ЦитатаНасчет мажоритара - если частота выборки зна...   May 20 2006, 04:44
- - DeadMoroz   Если Вам необходим микроконтроллер с 3мя UARTами, ...   May 20 2006, 08:56
|- - NiOS   Цитата(sazh @ May 21 2006, 14:56) To NIOS...   May 22 2006, 10:26
- - grigorybold   ЦитатаВариант 2. Самому делать на FPGA. В этом слу...   Jul 3 2006, 10:58
- - sazh   Не надо вырывать эту фразу из контекста обсуждения...   Jul 3 2006, 18:38
|- - Wild   Цитата(sazh @ Jul 3 2006, 22:38) Не надо ...   Jul 4 2006, 10:10
- - vikk   круто! ну вы блин даете! этож можно чело...   Jul 4 2006, 11:27
- - sazh   To Wild. Вы все правильно говорили. А я не шутил. ...   Jul 4 2006, 16:56
- - NiOS   Цитата(Wild @ Jul 3 2006, 19:41) Позвольт...   Jul 6 2006, 08:13
|- - javalenok   Допустим один проголосовал против -- и что дальше?...   Jul 10 2006, 08:57
|- - NiOS   Цитата(javalenok @ Jul 10 2006, 12:57) Вы...   Jul 10 2006, 10:20
|- - javalenok   Цитата(NiOS @ Jul 10 2006, 13:20) Цитата ...   Jul 10 2006, 11:18
|- - Wild   http://www.xilinx.com/xlnx/xweb/xil_tx_dis...hX_ID...   Jul 10 2006, 12:10
|- - NiOS   Цитата(javalenok @ Jul 10 2006, 15:18) Да...   Jul 11 2006, 08:35
|- - javalenok   Цитата(NiOS @ Jul 11 2006, 11:35) Я навер...   Jul 11 2006, 10:26
|- - NiOS   Цитата(javalenok @ Jul 11 2006, 14:26) Но...   Jul 12 2006, 07:03
|- - javalenok   Цитата(NiOS @ Jul 12 2006, 10:03) Цитата(...   Jul 12 2006, 14:18
- - NiOS   А есть ли смысл разговаривать с человеком, который...   Jul 12 2006, 15:05
|- - javalenok   Цитата(NiOS @ Jul 12 2006, 18:05) 1. Да с...   Jul 13 2006, 00:42
- - sazh   TO NIOS: А не могли бы Вы привести схему Вашего пр...   Jul 12 2006, 18:45
|- - NiOS   Цитата(sazh @ Jul 12 2006, 22:45) TO NIOS...   Jul 13 2006, 08:01
- - NiOS   //Как можно не считая биты узнать, что кадр окончи...   Jul 13 2006, 07:26
- - sazh   Сам текст понятен. А вот идея всегда будет вызыват...   Jul 13 2006, 09:46
|- - NiOS   Цитата(sazh @ Jul 13 2006, 13:46) Сам тек...   Jul 13 2006, 10:02
- - sazh   Reset не обязателен. Система сама должна переходит...   Jul 13 2006, 10:13
|- - javalenok   Теперь понял. Отслеживалка числа принятых битов со...   Jul 13 2006, 12:32
|- - NiOS   Цитата(sazh @ Jul 13 2006, 14:13) Reset н...   Jul 13 2006, 14:48
- - sazh   Этот ресет нужен обязательно при включении питания...   Jul 13 2006, 16:49
|- - NiOS   Цитата(sazh @ Jul 13 2006, 20:49) Этот ре...   Jul 18 2006, 09:08
- - sazh   Что-то вы не сразу догадались про определение не S...   Jul 18 2006, 18:57
|- - NiOS   Цитата(sazh @ Jul 18 2006, 22:57) Что-то ...   Jul 19 2006, 06:52
- - sanek78   Я диплом пишу, поэтому результат может быть только...   Sep 28 2006, 12:14
- - Леха   Товарищи, а если FPGA (ACEX) висит на PCI, то чем ...   Nov 22 2006, 10:58
|- - klop   Цитата(Леха @ Nov 22 2006, 10:58) Товарищ...   Nov 22 2006, 12:17
- - Леха   Посчитать не влом. Вопрос про корректность и надёж...   Nov 22 2006, 12:27
|- - klop   Цитата(Леха @ Nov 22 2006, 12:27) Посчита...   Nov 22 2006, 13:03
- - oval   Цитата(Леха @ Nov 22 2006, 10:58) Товарищ...   Nov 22 2006, 13:09
- - sazh   Проще Для Вас От PCI клок взять. А вообще все равн...   Nov 22 2006, 13:23
- - Леха   to sazh: Не совсем понял. Например, я рассчитаю с...   Nov 22 2006, 13:45
- - sazh   Не совсем понял. Например, я рассчитаю свой UART д...   Nov 22 2006, 14:12
|- - Леха   Цитата(sazh @ Nov 22 2006, 15:12) Если ве...   Nov 22 2006, 15:13
- - oval   Цитата(Леха @ Nov 22 2006, 13:45) to oval...   Nov 22 2006, 14:52
- - sazh   Вы правы. всегда найдутся любители журнала Upgrade...   Nov 22 2006, 15:32
|- - Oldring   Цитата(sazh @ Nov 22 2006, 15:32) Вы прав...   Nov 22 2006, 16:23
- - DeadMoroz   я использовал PCI клок для UART в двух проектах, ...   Nov 23 2006, 02:40
|- - rv3dll(lex)   насчёт того, что не должно быть сбросов полностью ...   Oct 22 2007, 11:11
|- - sazh   Цитата(rv3dll(lex) @ Oct 22 2007, 15...   Oct 22 2007, 13:07
|- - NiOS   Цитата(rv3dll(lex) @ Oct 22 2007, 15...   Oct 22 2007, 13:28
|- - rv3dll(lex)   Цитата(NiOS @ Oct 22 2007, 17:28) Стандар...   Oct 23 2007, 10:17
|- - NiOS   Цитата(rv3dll(lex) @ Oct 23 2007, 14...   Oct 23 2007, 10:38
||- - rv3dll(lex)   Цитата(NiOS @ Oct 23 2007, 14:38) На этом...   Oct 23 2007, 12:40
||- - NiOS   Цитата(rv3dll(lex) @ Oct 23 2007, 16...   Oct 23 2007, 12:51
||- - sazh   Цитата(rv3dll(lex) @ Oct 23 2007, 16...   Oct 23 2007, 14:04
||- - NiOS   Цитата(sazh @ Oct 23 2007, 18:04) А если ...   Oct 23 2007, 14:35
||- - rv3dll(lex)   Цитата(NiOS @ Oct 23 2007, 18:35) К слову...   Oct 24 2007, 06:28
|- - mse   Цитата(rv3dll(lex) @ Oct 23 2007, 14...   Oct 24 2007, 07:38
|- - rv3dll(lex)   Цитата(mse @ Oct 24 2007, 11:38) Это ерун...   Oct 24 2007, 11:09
|- - mse   Цитата(rv3dll(lex) @ Oct 24 2007, 14...   Oct 24 2007, 11:10
- - Stas   To NIOS: 1. Спору нет, вроде схема рабочая но для ...   Feb 16 2008, 06:44
- - NiOS   Цитата(Stas @ Feb 16 2008, 09:44) To NIOS...   Feb 16 2008, 19:39


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

 


RSS Текстовая версия Сейчас: 23rd June 2025 - 08:51
Рейтинг@Mail.ru


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