pil123456789 0 15 мая, 2012 Опубликовано 15 мая, 2012 (изменено) · Жалоба Нужна ваша экспертная помощь новичку в ПЛИС. Нужно выбрать ПЛИС (или несколько маленьких ПЛИС) Задача: 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 (скорость не критична) Заранее спасибо всем сочуствующим. Изменено 15 мая, 2012 пользователем pil Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Александр77 1 15 мая, 2012 Опубликовано 15 мая, 2012 · Жалоба Не вдаваясь в подробности "чем обусловлена скорость обмена 5-7 Мбод" Скажу следующее. Для реализации честного UARTа на скорость 115200 ушло 177 логических элементов Flex6000 Если экстраполировать на ваши 17, то получаем порядка 3000 ЛЭ на UART'ы. Плюс добавить всякие буферы и пр. Таким образом думаю надо ориентироваться к примеру на cyclon от 5000 ЛЭ и более Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pil123456789 0 16 мая, 2012 Опубликовано 16 мая, 2012 · Жалоба Не вдаваясь в подробности "чем обусловлена скорость обмена 5-7 Мбод" Скажу следующее. Для реализации честного UARTа на скорость 115200 ушло 177 логических элементов Flex6000 Если экстраполировать на ваши 17, то получаем порядка 3000 ЛЭ на UART'ы. Плюс добавить всякие буферы и пр. Таким образом думаю надо ориентироваться к примеру на cyclon от 5000 ЛЭ и более Скорость обусловлена задачей, как и количество абонентов. С количеством логических элементов будет понятно при моделировании на компе Интересен вопрос как соединить CPU <-> FPGA. отпадают всякие uart, spi. Вот думаю через общую память как то? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Копейкин 0 16 мая, 2012 Опубликовано 16 мая, 2012 · Жалоба Мне кажется, что FPGA скажем Cyclon II или III, не менее EP2C8. И, может для таких скоростных последовательных интерфейсов, не UART а SPI, если проект позволяет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pil123456789 0 16 мая, 2012 Опубликовано 16 мая, 2012 · Жалоба Мне кажется, что FPGA скажем Cyclon II или III, не менее EP2C8. И, может для таких скоростных последовательных интерфейсов, не UART а SPI, если проект позволяет? Спасибо за ответ. Все таки чем связать с контроллером? Там потом UART -> rs485. Расстояние 0,5-1м + помехи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
maksimp 0 16 мая, 2012 Опубликовано 16 мая, 2012 · Жалоба 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, напрмер прерывания завести или ещё-что нибудь может понадобиться потом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Koluchiy 0 17 мая, 2012 Опубликовано 17 мая, 2012 · Жалоба А кто-нибудь пробовал работать на UART со скоростью 5-7Мбод? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 16 17 мая, 2012 Опубликовано 17 мая, 2012 (изменено) · Жалоба А кто-нибудь пробовал работать на UART со скоростью 5-7Мбод? Ну, как минимум TI пробовали. Их tms320dm8146 – Supports up to 12 Mbps UART3/4/5. Изменено 17 мая, 2012 пользователем blackfin Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 17 мая, 2012 Опубликовано 17 мая, 2012 · Жалоба Нужна ваша экспертная помощь новичку в ПЛИС. Нужно выбрать ПЛИС (или несколько маленьких ПЛИС) Задача: .... 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... Удачи! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vladec 7 17 мая, 2012 Опубликовано 17 мая, 2012 · Жалоба При заявленной требуемой скорости наоборот лучше предельное распаралеливание, тем более, что, например, стандартный Xilinx-совский UART, занимает предельно мало ресурсов и 17 UART легко разметстятся в самом небольшом Spartan-не, другое дело, что для работы он требует 16-кратной тактовой, а это уже на заявленной скорости определенная проблема. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Konst_777 0 17 мая, 2012 Опубликовано 17 мая, 2012 · Жалоба ...Все таки чем связать с контроллером? Используйте контроллер, встроенный в FPGA: Nios II (Altera) или Microblaze (Xilinx). Чем не устраивает такое решение? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Мур 1 17 мая, 2012 Опубликовано 17 мая, 2012 · Жалоба А кто-нибудь пробовал работать на UART со скоростью 5-7Мбод? 20 Мегабит\Сек под RS422 на автомате на 200МГц для реализации мажоритирование 2 из 3х... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pil123456789 0 17 мая, 2012 Опубликовано 17 мая, 2012 (изменено) · Жалоба Если 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 простенькими. Боюсь не потяну. + Спасибо всем за участие. Изменено 17 мая, 2012 пользователем pil Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Александр77 1 17 мая, 2012 Опубликовано 17 мая, 2012 · Жалоба Что в Вашем понимании означает "посылки уходили параллельно"? Вчера перекомпилил проект UART под Cyclon III занял 140 ЛЭ. В принципе есть место для оптимизации - можно ужать ~ на 10..15 ЛЭ. Т.е. по оптимистичным оценкам циклон 3 с минимальным объемом (5 кЛЭ) справится. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MMishan 0 2 июня, 2012 Опубликовано 2 июня, 2012 · Жалоба Посмотрите на MachXO2 и XP2 семейства Lattice. Тут есть референс для UART и сколько он занимает для разных семейств http://www.latticesemi.com/products/intell...hronousrece.cfm Для XO2 и XP2 есть встроенная флэш и предлагается бесплатно процессор 8/32 бит - LaticeMico, получается недорогой SoC Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться