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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Выбор ПЛИС 16uart
pil
сообщение May 15 2012, 08:11
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 33
Регистрация: 15-11-08
Пользователь №: 41 658



Нужна ваша экспертная помощь новичку в ПЛИС.
Нужно выбрать ПЛИС (или несколько маленьких ПЛИС)
Задача:
1. Обмен с контроллером, который получает данные по Ethernet.
Я пока вижу это через какую то двухстороннюю память, но вопрос открыт.
2. Выдача информации на 17 Uart со скоростями 5-7Мбод
3. Получение информации с 17 uart, скорость не принципиальна.
4. Uart'ы fullduplex, т.е. 17 uart на вход и 17 на выход.
5. FPGA не сложно упаковывет посылки для uart (подсчет простеньких контрольных сумм)

Вопросы:
1. Выбор FPGA
2. как принято осуществлять обмен FPGA<->CPU.
Объем данных на выход ~50 байт CPU->FPGA (с высокой скоростью)
на вход ~100-200 байт FPGZ->CPU (скорость не критична)

Заранее спасибо всем сочуствующим.

Сообщение отредактировал pil - May 15 2012, 08:15
Go to the top of the page
 
+Quote Post
Александр77
сообщение May 15 2012, 10:09
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 608
Регистрация: 10-07-09
Из: Дубна, Московская область
Пользователь №: 51 111



Не вдаваясь в подробности "чем обусловлена скорость обмена 5-7 Мбод"
Скажу следующее. Для реализации честного UARTа на скорость 115200 ушло 177 логических элементов Flex6000
Если экстраполировать на ваши 17, то получаем порядка 3000 ЛЭ на UART'ы.
Плюс добавить всякие буферы и пр.
Таким образом думаю надо ориентироваться к примеру на cyclon от 5000 ЛЭ и более
Go to the top of the page
 
+Quote Post
pil
сообщение May 16 2012, 15:10
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 33
Регистрация: 15-11-08
Пользователь №: 41 658



Цитата(Александр77 @ May 15 2012, 14:09) *
Не вдаваясь в подробности "чем обусловлена скорость обмена 5-7 Мбод"
Скажу следующее. Для реализации честного UARTа на скорость 115200 ушло 177 логических элементов Flex6000
Если экстраполировать на ваши 17, то получаем порядка 3000 ЛЭ на UART'ы.
Плюс добавить всякие буферы и пр.
Таким образом думаю надо ориентироваться к примеру на cyclon от 5000 ЛЭ и более

Скорость обусловлена задачей, как и количество абонентов.
С количеством логических элементов будет понятно при моделировании на компе

Интересен вопрос как соединить CPU <-> FPGA. отпадают всякие uart, spi. Вот думаю через общую память как то?
Go to the top of the page
 
+Quote Post
Копейкин
сообщение May 16 2012, 17:04
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 190
Регистрация: 7-11-07
Из: С-Петербург
Пользователь №: 32 134



Мне кажется, что FPGA скажем Cyclon II или III, не менее EP2C8.
И, может для таких скоростных последовательных интерфейсов, не UART а SPI, если проект позволяет?
Go to the top of the page
 
+Quote Post
pil
сообщение May 16 2012, 17:56
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 33
Регистрация: 15-11-08
Пользователь №: 41 658



Цитата(Копейкин @ May 16 2012, 21:04) *
Мне кажется, что FPGA скажем Cyclon II или III, не менее EP2C8.
И, может для таких скоростных последовательных интерфейсов, не UART а SPI, если проект позволяет?

Спасибо за ответ.
Все таки чем связать с контроллером?

Там потом UART -> rs485. Расстояние 0,5-1м + помехи.
Go to the top of the page
 
+Quote Post
maksimp
сообщение May 16 2012, 18:33
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 313
Регистрация: 2-07-11
Пользователь №: 66 023



Цитата(pil @ May 15 2012, 12:11) *
2. как принято осуществлять обмен FPGA<->CPU.
Объем данных на выход ~50 байт CPU->FPGA (с высокой скоростью)
на вход ~100-200 байт FPGZ->CPU (скорость не критична)

Если SPI по скорости подходит то он удобен. Помотрите макс скорость SPI вашего контроллера.
Если нет то можно попробовать сделать параллельную передачу. Соединяете контроллер с FPGA 11 проводами. Из них 8 проводов данных - двунаправленные. И 3 провода управления - от контроллера в FPGA.
Один провод управления - инициализация обмена. Контроллер даёт импульс, что сигнализирует начало нового обмена.
Ещё один провод - запись. Контроллер выставляет байт данных на 8 проводов данных и даёт импульс записи. Следующий байт передать - ещё раз все проделать.
И ещё один провод - чтение. Контроллер высталяет 1 на этом проводе. Тогда FPGA выставляет байт данных, контроллер его берёт. И после этого контроллер выставляет 0 на проводе чтения. И тоже следующий байт передать - ещё раз все проделать.
В таком случае скорость передчи ограничена скоростью ногодрыга контроллера делить на 3.
На всякий случай поставьте последовательные резисторы во все провода между контроллером и FPGA, чтобы не сгорели при конфликте, например 220 Ом. И заложите несколько запасных проводов между контроллером и FPGA, напрмер прерывания завести или ещё-что нибудь может понадобиться потом.
Go to the top of the page
 
+Quote Post
Koluchiy
сообщение May 17 2012, 05:03
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 972
Регистрация: 12-04-09
Из: Москва
Пользователь №: 47 543



А кто-нибудь пробовал работать на UART со скоростью 5-7Мбод?
Go to the top of the page
 
+Quote Post
blackfin
сообщение May 17 2012, 05:42
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(Koluchiy @ May 17 2012, 09:03) *
А кто-нибудь пробовал работать на UART со скоростью 5-7Мбод?

Ну, как минимум TI пробовали. Их tms320dm8146 – Supports up to 12 Mbps UART3/4/5.

Сообщение отредактировал blackfin - May 17 2012, 05:43
Go to the top of the page
 
+Quote Post
iosifk
сообщение May 17 2012, 06:07
Сообщение #9


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(pil @ May 15 2012, 12:11) *
Нужна ваша экспертная помощь новичку в ПЛИС.
Нужно выбрать ПЛИС (или несколько маленьких ПЛИС)
Задача:
....
2. Выдача информации на 17 Uart со скоростями 5-7Мбод
3. Получение информации с 17 uart, скорость не принципиальна.
4. Uart'ы fullduplex, т.е. 17 uart на вход и 17 на выход.
5. FPGA не сложно упаковывет посылки для uart (подсчет простеньких контрольных сумм)

Вопросы:
1. Выбор FPGA
...

Можно сделать один многопоточный UART. И он будет работать на 17 кратной частоте. При этом логики надо будет меньше,чем при 17 отдельных...
Теперь вот такой вопрос - насколько быстрый у Вас CPU?
Ведь одновременно вести прием-передачу по 17 каналам он не сможет. Тогда зачем нужно иметь одновременно 17 передатчиков? Может быть нужно иметь 1 передатчик и на выходе мультиплексор.
А по входу можно сделать интерфейс LIN или что-то подобное... Или по входу можно сделать запись на 17 кратной частоте в память, а оттуда по-канально принимать на 1 UART. Ведь буфер по входу все равно нужен... Так что логики нужно совсем немного, а вот с памятью проблема. В ПЛИС она довольно дорогая...
Как делать многопоточные автоматы - см. статьи у меня на сайте.
А если процессор быстрый, то многопоточность можно программно реализовать в нем. И тогда к нему нужен будет только мультиплексор на вход и на выход... Скажем у блэкфина есть параллельный порт, к которому можно подключить ДМА.

Ну и еще есть Exar с его UART...
Удачи!


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
vladec
сообщение May 17 2012, 06:43
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 167
Регистрация: 3-10-05
Из: Москва
Пользователь №: 9 158



При заявленной требуемой скорости наоборот лучше предельное распаралеливание, тем более, что, например, стандартный Xilinx-совский UART, занимает предельно мало ресурсов и 17 UART легко разметстятся в самом небольшом Spartan-не, другое дело, что для работы он требует 16-кратной тактовой, а это уже на заявленной скорости определенная проблема.
Go to the top of the page
 
+Quote Post
Konst_777
сообщение May 17 2012, 07:47
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644



Цитата(pil @ May 16 2012, 20:56) *
...Все таки чем связать с контроллером?

Используйте контроллер, встроенный в FPGA: Nios II (Altera) или Microblaze (Xilinx). Чем не устраивает такое решение?
Go to the top of the page
 
+Quote Post
Мур
сообщение May 17 2012, 08:00
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 815
Регистрация: 7-06-06
Из: Харьков
Пользователь №: 17 847



Цитата(Koluchiy @ May 17 2012, 08:03) *
А кто-нибудь пробовал работать на UART со скоростью 5-7Мбод?

20 Мегабит\Сек под RS422 на автомате на 200МГц для реализации мажоритирование 2 из 3х...
Go to the top of the page
 
+Quote Post
pil
сообщение May 17 2012, 17:37
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 33
Регистрация: 15-11-08
Пользователь №: 41 658



Цитата
Если SPI по скорости подходит то он удобен. Помотрите макс скорость SPI вашего контроллера.
Если нет то можно попробовать сделать параллельную передачу. Соединяете контроллер с FPGA 11 проводами.

Про SPI понятно, как вариант. Второе - интерфейс внешний памяти, может некую двухстороннюю память между ними поставить? Или сделать FPGA - внешней памятью для контроллера?
Цитата
А кто-нибудь пробовал работать на UART со скоростью 5-7Мбод?

Да контроллер stm32f217, 7.5Мбод UART работает.
Цитата
Можно сделать один многопоточный UART. И он будет работать на 17 кратной частоте. При этом логики надо будет меньше,чем при 17 отдельных...
Теперь вот такой вопрос - насколько быстрый у Вас CPU?

CPU - stm32f217 120МГц - пока так.
Хотелось бы распаралелить максимально, чтобы посылки в UARTы уходили одновременно.
Цитата
При заявленной требуемой скорости наоборот лучше предельное распаралеливание, тем более, что, например, стандартный Xilinx-совский UART, занимает предельно мало ресурсов и 17 UART легко разметстятся в самом небольшом Spartan-не, другое дело, что для работы он требует 16-кратной тактовой, а это уже на заявленной скорости определенная проблема.

А можно объяснить в чем проблема поподробнее?
Цитата
Используйте контроллер, встроенный в FPGA: Nios II (Altera) или Microblaze (Xilinx). Чем не устраивает такое решение?

Тоже думал об этом. Но опыта подобного нет. Программирую контроллеры, немного знаком с FPGA простенькими.
Боюсь не потяну.

+ Спасибо всем за участие.

Сообщение отредактировал pil - May 17 2012, 17:38
Go to the top of the page
 
+Quote Post
Александр77
сообщение May 17 2012, 18:17
Сообщение #14


Знающий
****

Группа: Свой
Сообщений: 608
Регистрация: 10-07-09
Из: Дубна, Московская область
Пользователь №: 51 111



Что в Вашем понимании означает "посылки уходили параллельно"?
Вчера перекомпилил проект UART под Cyclon III занял 140 ЛЭ. В принципе есть место для оптимизации - можно ужать ~ на 10..15 ЛЭ.
Т.е. по оптимистичным оценкам циклон 3 с минимальным объемом (5 кЛЭ) справится.
Go to the top of the page
 
+Quote Post
MishaN
сообщение Jun 2 2012, 20:32
Сообщение #15


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 2-06-12
Из: Минск
Пользователь №: 72 138



Посмотрите на MachXO2 и XP2 семейства Lattice. Тут есть референс для UART и сколько он занимает для разных семейств
http://www.latticesemi.com/products/intell...hronousrece.cfm
Для XO2 и XP2 есть встроенная флэш и предлагается бесплатно процессор 8/32 бит - LaticeMico, получается недорогой SoC

Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th June 2025 - 13:48
Рейтинг@Mail.ru


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