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

 
 
> 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

Сообщений в этой теме
- 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
- - sazh   To NIOS Хороший подход. Можно пойти еще дальше. От...   May 21 2006, 10:56
|- - NiOS   Цитата(sazh @ May 21 2006, 14:56) To NIOS...   May 22 2006, 10:26
|- - Wild   Цитата(sazh @ May 21 2006, 14:56) To NIOS...   Jul 3 2006, 15:41
- - 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 Текстовая версия Сейчас: 22nd June 2025 - 19:47
Рейтинг@Mail.ru


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