ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
22 июля
1013464 Топик полностью
Evgeny_CD, Архитектор (21.06.2020 00:08, просмотров: 585) ответил Evgeny_CD на [Перехват управления SDRAM как универсальный способ внешнего DMA. SAM9X60 гениален!] Дизайн идея
Альтернативный вариант - [эмуляция SDRAM на ZBT]. На примере Renesas RZ/A1H - 10Mbyte накристального ОЗУ 

R7S721000VCFP#AA1

ARM® Cortex®-A9 Microprocessor IC RZ/A1H 1 Core, 32-Bit 400MHz 256-LQFP (28x28)

1 34.70

10 32.00

25 30.56

100 27.32


У него 32 бита 66 МГц SDRAM.


SDRAM небольшого размера эмулируем на FPGA и ZBT. До 100 МГц умеренно сложно.


Программа сидит в 10Мбайт внутренного ОЗУ. Надеюсь, хватит :)


Внутренние переменные, стеки и прочая там же.


Переменные, описывающие состояние входов и выходов, либо тоже внутри, либо во внешней SDRAM.


Когда они живут во внешней памяти, все совсем просто. CPU просто работает с ними, в потом "внешняя сущность" подсовывает новую страницу. Да, кеш надо не забыть сбросить.


Можно по окончанию цикла закачать по DMA данные из SDRAM и обратно.


У RZ/A1H SDRAM контроллер умеет делать Burt до 16, т.е. 64 байта за транзакцию. При записи на это потратится ~66 тактов, при чтении поболее, под 70 тактов. Считаем КПД 64/70 тактов, 91%


32 бита 66 МГц = 264 Мбайт\сек. * КПД=241 Кбайт за 1 мс.


В принципе, нормально.


Важной фишкой контроллера является CL=1, что на FPGA сэмулировать не сложно.


Тогда FPGA супер скорость не нужна, и появляется неожиданно интересный вариант на Cyclone 10LP.

10CL055YF484I7G IC FPGA 321 I/O 484FBGA 260 M9K Memory

1 70.35

25 66.83

100 64.1



10CL080YF780I7G IC FPGA 423 I/O 780FBG 305 M9K Memory

1 104.48

25 99.26

100 95.28


10CL120YF780I7G IC FPGA 525 I/O 780FBGA 432 M9K Memory

1 158.76

25 150.82

100 144.79


Ни Xilinx, ни Lattice, ни китайцы не могут предложить такое количество IO за такие деньги.


Тогда в качестве гигабитного PHY пойдет

LAN8810I-AKZE 4/4 Transceiver Full GMII 72-QFN (10x10) -40°C ~ 85°C

1 5.28

25 4.40

100 4.0

00001870D.pdf


Важно, что GMII, т.е. там нет DDR, которого, в свою очередь, в Cyclone 10LP тоже официально нет (реально есть, но параметры не специфицированы).


За счет того, что все будет только BGA 1.0 и QFP разной степени извращенности можно сделать 8 слойку за умеренный деньги, что тоже важно. QFP256 это знатное извращение, запаять его непросто (шаг 0.4), но плата будет дешевле, чем BGA 0.8


Что имеем в итоге:

-- ПЛК на 1024 порта

-- каждый порт - 96 бит при передаче по сетям и 16 байт во внутреннем представлении (не важно, почему так)

-- обмен с 1024 портами за 1 мс ~ 100Мбит/сек.

-- обмен с памятью 16к + 16к*2 от дублеров = 48к

-- такт 1 мс

-- 0 такт системы всосали данные и выдали данные их предыдущего такта

-- 1 такт обработка в вычислителе

-- 2 такт системы выждали обработанные данные и всосали новые.

-- Итого получили ПЛК на 1024 порта с латентностью 3 мс. Такого на рынке и близко нет, а если и есть, то стоит астрономических денег.


Все это возможно за счет предельного упрощения структуры ПО и за счет использования ЭКБ достаточно высокого уровня технологий, но по сути своей простой и понятной. Это вам не еррата на 188 страниц :)