|
Выбор ПЛИС 16uart |
|
|
|
May 16 2012, 15:10
|
Участник

Группа: Участник
Сообщений: 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. Вот думаю через общую память как то?
|
|
|
|
|
May 16 2012, 17:56
|
Участник

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

|
Цитата(Копейкин @ May 16 2012, 21:04)  Мне кажется, что FPGA скажем Cyclon II или III, не менее EP2C8. И, может для таких скоростных последовательных интерфейсов, не UART а SPI, если проект позволяет? Спасибо за ответ. Все таки чем связать с контроллером? Там потом UART -> rs485. Расстояние 0,5-1м + помехи.
|
|
|
|
|
May 16 2012, 18:33
|
Местный
  
Группа: Участник
Сообщений: 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, напрмер прерывания завести или ещё-что нибудь может понадобиться потом.
|
|
|
|
|
May 17 2012, 06:07
|
Гуру
     
Группа: Модераторы
Сообщений: 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
|
|
|
|
|
May 17 2012, 17:37
|
Участник

Группа: Участник
Сообщений: 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
|
|
|
|
|
Jun 2 2012, 20:32
|
Участник

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

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