ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
22 июля
1013440
Evgeny_CD, Архитектор (20.06.2020 21:01, просмотров: 12635)
[Перехват управления SDRAM как универсальный способ внешнего DMA. SAM9X60 гениален!] Дизайн идея 

Задача:

-- нужно быстро доставить много данных из | в FPGA MCU, CPU.

-- кратковременная остановка CPU допустима в этот момент (отключение основной задачи)


Анализ:

В идеале MCU должен иметь 2 шины, то такое нормально только у TI DSP и их сотоварищи реализовано.


Хорош для этого PCI, но обычный PCI в современных чипах не встречается (хотя имеющие его чипы производятся, и будут еще долго производиться). PCIe вызывает тоску в части стоимости FPGA, хотя ECP5 с трансиверами достаточно демократичен.


CPU с PCIe бывают, но все не просто с ценой. Самый дешевый - i.MX 6Solo, MCIMX6S7CVM08AC , 10 - $30.93, но там errata полный писец, 188 страниц! Собственно, TI DSP я стал смотреть по причине сопоставимой (можно найти и дешевле) цены и очень небольшого количества багов, в PCI их нем просто нет.


Идея:

-- Берем SAM9X60 с внешней SDRAM 32 бита 200 МГц (на 16 бит чипы бывают индустриальные и стоят дешево)

-- Ставим шинный коммутатор на SDRAM между CPU и FPFA

-- CLK всегда идет от MCU и не коммутируется.


Алгоритмы:

-- CPU чистит кеш, прыгает в SRAM, дергает за пин

-- FPGA перехватывает управление SDRAM, пишет читает нужное

-- дергает за пин


Тонкости:

-- SAM9X60 гениален тем, что может делать длинные burst до конца страницы, и тактовой 200 МГц при 32 битах

-- с DDR все было бы сложнее, скорее невозможно, SDRAM сильно проще в управлении и времянках

-- 200 МГц - это 800Мбайт/сек при 32 битах. За 1 мс можно прокачать 800 Кбайт (очень грубо), но даже 400Кбайт решат поставленную задачу

-- Кардинальное упрощение алгоритмов ПО: CPU получило блок данных, обработало по своей оптимизированной программе, подождало 1 мс или 500 мкс, пока данные не закачаются/скачаются, и снова обработало

-- можно сделать так, что поток управления CPU в ходе основной программы вообще не будет прерываться. Кешем можно управлять, прогревать его, и будет предельная скорость. 600 МГц ARM926 это весьма и весьма быстро. В нем нет плавучки, и хрен с ней, не всегда нужна, иногда и программно прокатит.


Женя, ты идиот? FPGA за $50 для процессора за $5?

-- Упрощение программы бесценно

-- Я не сказал, что не будут продавать устройство за $1k, думаю о реальном проекте, где его можно и за большее продать.

-- FPGA объединяет несколько процессоров. Один решает чисто задачу управления, второй под Linux с максимальным количеством готового ПО решает сетевые задачи, третий собирает данные с сети датчиков и выкачивает данные на устройства управления

-- отказостойчивость. Я могу взять гигабитный сдвоенный PHY SGMII VSC8552XKS-05 (25 -$ 12.94, индустриальный!), подключить его к паре трансверов Artix™-7 и таким же тупым методом крупноблочного обмена получить алгоритмически несложное резервирование. Можно и троирование замутить. Уже не смешно, правда?

-- уменьшение зависимости от поставщиков. Таким путем можно проапгрейдить любой CPU, MCU со SDRAM. iMX.RT, например, даже лучше пойдет - у него шина SDRAM 166 МГц и мегабайт ОЗУ. iMX RT1170 будет иметь 32 битную SDRAM и 2М ОЗУ. FPGA - Xilinx, Intel (Altera), Lattice, Efinix, GOWIN, Microsemi (Microchip).


Критика?


Примеры ключей. Их очень много. Стоят $0.3 катушками

PI3C3245.pdf

sn74cbt16233.pdf


SDRAM 200 MHz. Стоят менее $2 хотя бы сотнями.

42-45S32200L.pdf

EM639165_Industrial_rev2.3.pdf

NDS76Pv1.6-128Mbx1620180927.pdf


FPGA. Spartan-7 -1 должен сдюжить 200 МГц, судят по ДШ.

XC7S50-1FGA484I 1- $53,7


Artix™-7 - чуток быстрее, 4 трансивера

XC7A50T-1FGG484I 1- $88.69

ds180_7Series_Overview.pdf

ds189-spartan-7-data-sheet.pdf

ds181_Artix_7_Data_Sheet.pdf


сдвоенный PHY SGMII. -5 индустриальный. BGA 1.0 - красота по нынешним временам.

VMDS-10508.pdf