Перейти к содержанию
    

Нужна ваша экспертная помощь новичку в ПЛИС.

Нужно выбрать ПЛИС (или несколько маленьких ПЛИС)

Задача:

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не вдаваясь в подробности "чем обусловлена скорость обмена 5-7 Мбод"

Скажу следующее. Для реализации честного UARTа на скорость 115200 ушло 177 логических элементов Flex6000

Если экстраполировать на ваши 17, то получаем порядка 3000 ЛЭ на UART'ы.

Плюс добавить всякие буферы и пр.

Таким образом думаю надо ориентироваться к примеру на cyclon от 5000 ЛЭ и более

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не вдаваясь в подробности "чем обусловлена скорость обмена 5-7 Мбод"

Скажу следующее. Для реализации честного UARTа на скорость 115200 ушло 177 логических элементов Flex6000

Если экстраполировать на ваши 17, то получаем порядка 3000 ЛЭ на UART'ы.

Плюс добавить всякие буферы и пр.

Таким образом думаю надо ориентироваться к примеру на cyclon от 5000 ЛЭ и более

Скорость обусловлена задачей, как и количество абонентов.

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

 

Интересен вопрос как соединить CPU <-> FPGA. отпадают всякие uart, spi. Вот думаю через общую память как то?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мне кажется, что FPGA скажем Cyclon II или III, не менее EP2C8.

И, может для таких скоростных последовательных интерфейсов, не UART а SPI, если проект позволяет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мне кажется, что FPGA скажем Cyclon II или III, не менее EP2C8.

И, может для таких скоростных последовательных интерфейсов, не UART а SPI, если проект позволяет?

Спасибо за ответ.

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

 

Там потом UART -> rs485. Расстояние 0,5-1м + помехи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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, напрмер прерывания завести или ещё-что нибудь может понадобиться потом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А кто-нибудь пробовал работать на UART со скоростью 5-7Мбод?

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

Изменено пользователем blackfin

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нужна ваша экспертная помощь новичку в ПЛИС.

Нужно выбрать ПЛИС (или несколько маленьких ПЛИС)

Задача:

....

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...

Удачи!

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

При заявленной требуемой скорости наоборот лучше предельное распаралеливание, тем более, что, например, стандартный Xilinx-совский UART, занимает предельно мало ресурсов и 17 UART легко разметстятся в самом небольшом Spartan-не, другое дело, что для работы он требует 16-кратной тактовой, а это уже на заявленной скорости определенная проблема.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А кто-нибудь пробовал работать на UART со скоростью 5-7Мбод?

20 Мегабит\Сек под RS422 на автомате на 200МГц для реализации мажоритирование 2 из 3х...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что в Вашем понимании означает "посылки уходили параллельно"?

Вчера перекомпилил проект UART под Cyclon III занял 140 ЛЭ. В принципе есть место для оптимизации - можно ужать ~ на 10..15 ЛЭ.

Т.е. по оптимистичным оценкам циклон 3 с минимальным объемом (5 кЛЭ) справится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Посмотрите на MachXO2 и XP2 семейства Lattice. Тут есть референс для UART и сколько он занимает для разных семейств

http://www.latticesemi.com/products/intell...hronousrece.cfm

Для XO2 и XP2 есть встроенная флэш и предлагается бесплатно процессор 8/32 бит - LaticeMico, получается недорогой SoC

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...