Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: реализация многоканального приемника UART с буферизацией
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
VadimNic_nt
Здравствуйте форумчане!

Интересует возможность разработки на ПЛИС многоканального приемника UART с буферизацией по каждому каналу и интерфейсом с МК.
Какая ПЛИС по емкости подойдет для такого проекта, если количество каналов будет от 10 до 15, размер кольцевого буфера для каждого канала
32...64 байта. Встречал ли кто на просторах интернета модули на vhdl, которые можно было бы взять за основу при разработке?
Zig
Цитата(VadimNic_nt @ Nov 29 2014, 21:00) *
Встречал ли кто на просторах интернета модули на vhdl, которые можно было бы взять за основу при разработке?

Посмотрите вкладку Communication controller. Там есть много UART...
des00
Цитата(VadimNic_nt @ Nov 30 2014, 02:00) *
Какая ПЛИС по емкости подойдет для такого проекта, если количество каналов будет от 10 до 15, размер кольцевого буфера для каждого канала 32...64 байта.

сыклон 3-4 на 10 тыс плиток.
iosifk
Цитата(VadimNic_nt @ Nov 29 2014, 22:00) *
Здравствуйте форумчане!

Интересует возможность разработки на ПЛИС многоканального приемника UART с буферизацией по каждому каналу и интерфейсом с МК.

На самом деле ядро контроллера может быть только одно, но оно может поочередно обрабатывать 15 каналов...
VadimNic_nt
Цитата(iosifk @ Nov 30 2014, 11:51) *
На самом деле ядро контроллера может быть только одно, но оно может поочередно обрабатывать 15 каналов...


В этом случае в FPGA необходимо будет использовать встроенный процессор, я правильно понимаю?
iosifk
Цитата(VadimNic_nt @ Nov 30 2014, 14:08) *
В этом случае в FPGA необходимо будет использовать встроенный процессор, я правильно понимаю?

нет, не правильно... Одно аппаратное ядро приемника и мультиплексор каналов. У меня на сайте "Краткий Курс", глава "многопоточность"...
Или если хотите, могу по скайпу объяснить...
Koluchiy
Поясните, МК располагается внутри ПЛИС (программный) или это отдельная микросхема снаружи?
iosifk
Цитата(Koluchiy @ Dec 1 2014, 16:47) *
Поясните, МК располагается внутри ПЛИС (программный) или это отдельная микросхема снаружи?

А какая разница? Либо 15 каналов по приему можно сделать вообще программными, либо это же сделать в ПЛИС и разгрузить МК от приема байтов...
VadimNic_nt
Цитата(iosifk @ Dec 1 2014, 16:05) *
А какая разница? Либо 15 каналов по приему можно сделать вообще программными, либо это же сделать в ПЛИС и разгрузить МК от приема байтов...

У меня сейчас выбор - реализовать поставленную задачу на трех МК типа STM32F1xx c 4 UART (с корпусами TQFP47 7х7 мм) и интерфейсом с host контроллером по SPI или сделать такой контроллер на FPGA, тоже с интерфейсом SPI для связи с HOST контроллером.
По конструктивным причинам возможно использование ПЛИС только в корпусе TQFP100.
Вариант с 4-мя МК кажется более легким, так как проблем по программной реализации не предвидеться, но возникает вопрос по суммарному потреблению.
Вариант с ПЛИС кажется привлекательным, так как в устройстве уже есть CPLD на 128 макроячеек, и было бы интересно объединить все в одной ПЛИС.
Но опять же, возникает вопрос по току потребления, так как судя по ответам выше нужно применять FPGA, а величина тока потребления очень критична.

Хотелось бы еще узнать мнение спецов о стоимости разработки такого контроллера по ТЗ под ключ.

Цитата(iosifk @ Dec 1 2014, 16:05) *
А какая разница? Либо 15 каналов по приему можно сделать вообще программными, либо это же сделать в ПЛИС и разгрузить МК от приема байтов...

Я имел ввиду программный процессор типа NIOS
SM
Цитата(VadimNic_nt @ Dec 1 2014, 18:26) *
Я имел ввиду программный процессор типа NIOS


Это называется "из пушки по воробьям". полный UART с FIFO - это, утрированно, сотни четыре триггеров, и небольшая логическая обвязка. То есть, по меркам ПЛИС, мелочь. А процессорное ядро - это целый монстр, там уже не сотни триггеров, а тысячи. Так зачем нужен монстр?

Для информации: полный UART с FIFO и модемными сигналами, совместимый с 16550 (1 штука) в LatticeXP2 занимает примерно 300 слайсов (600 LUT), что есть примерно 13% от самой маленькой LFXP2-5E-xxxx. То есть, туда можно запихать штук шесть уартов плюс некая обвязка. Вот и считайте... В LFXP2-8E-xxx 10 уартов войдет. А, смотря какая функциональность нужна, и где можно сэкономить, может и все 15.

Если хотите процессорное ядро впихнуть, то берите объемы на порядок больше... И приготовьтесь к куче геморроя - еще софт писать, еще его отлаживать...
iosifk
Цитата(VadimNic_nt @ Dec 1 2014, 19:26) *
У меня сейчас выбор - реализовать поставленную задачу на трех МК типа STM32F1xx c 4 UART (с корпусами TQFP47 7х7 мм) и интерфейсом с host контроллером

А еще есть EXAR, он еще жив...
Вот ставить NIOS ради 15 UART и лепить на нем обработчик верхнего уровня - это дорого, но об этом уже написали...
SM
Цитата(iosifk @ Dec 1 2014, 19:05) *
А еще есть EXAR, он еще жив...

Еще TI жив... http://www.ti.com/product/tl16c554a http://www.ti.com/product/TL16C754B
Еще и новомодные UARTы со SPI - http://www.nxp.com/documents/leaflet/75015676.pdf http://www.maximintegrated.com/en/products...rs/MAX3107.html
Не говоря о FT232 и иже с ними, если у основного МК есть УСБ хост.

count_enable
TI Cortex M4 TM4C12x имеют по 8 уартов на кристалл, и DMA . А я еще глупый думал кому столько может понадобиться. С частотами порядка 120 МГц думаю вполне реально сделать недостающие 8 чисто программно.
RobFPGA
Приветствую!

Все этоти варианты конечно же хороши НО вот маленький вопрос к ТС а какую скорость портов ему требуется?
И каков будет траффик по этим портам?

Успехов Rob
VadimNic_nt
Цитата(RobFPGA @ Dec 1 2014, 20:10) *
Приветствую!

Все этоти варианты конечно же хороши НО вот маленький вопрос к ТС а какую скорость портов ему требуется?
И каков будет траффик по этим портам?

Успехов Rob

Скорости стандартные - 115200 бод...
Александр77
Ну если скорость одна на всех, то вполне можно закладывать FPGA на 5...10 тыс вентилей, выбросив 120-титриггерную CPLD.
Mahagam
QUOTE (iosifk @ Nov 30 2014, 10:51) *
На самом деле ядро контроллера может быть только одно, но оно может поочередно обрабатывать 15 каналов...

вот тут хотелось бы поподробнее. это как?
VadimNic_nt
Цитата(Mahagam @ Dec 2 2014, 12:44) *
вот тут хотелось бы поподробнее. это как?


Есть статья в интернете "Многоканальный UART c эффективным использованием ресурсов кристалла ПЛИС" автор Алексей Шабалин.
Там все объяснено хорошо. Прикрепил ее.

Максимальная скорость 115200 бод, а по каналам может быть разной.

Цитата(Александр77 @ Dec 1 2014, 21:35) *
Ну если скорость одна на всех, то вполне можно закладывать FPGA на 5...10 тыс вентилей, выбросив 120-титриггерную CPLD.


Используемая сейчас CPLD потребляет порядка 15 мА от напряжения 3,3 В. А FPGA на 5...10 тыс вентилей сколько будет потреблять, примерно?
SM
Если взять за базу LFXP2-8E (размер - 8K LUT, заполнение на 75-80%) - то потребление, так, оценочно, при условии работы "потрохов" на 40 МГц, будет:
от 1.2V - 65 мА (из них статическое - 20 мА)
от 3.3V - 32 мА (из них статическое - 25 мА)

от 3.3 - из всех 32 - 18 мА - потроха, и 14 мА - I/O - это самое I/O очень сильно зависит от проекта, на какой частоте что там дергается и как нагружено.
Если еще будете заводить PLL, то примерно +10 мА на каждую.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.