RobFPGA 11 March 13, 2020 Posted March 13, 2020 · Report post Приветствую! 2 minutes ago, vlso said: Спасибо, стало чуть понятнее. Только я не понял про "контроллер DMA". Это юзерский уровень hard IP, soft IP или это про некий контроллер в чипсете ? Контроллер DMA это user soft IP - может быть частью стандартной IP core контроллера PCIe от вендора - а можно и самому сваять как вам будет удобно по интерфесу или функционалу. 5 minutes ago, vlso said: Я всегда передаю большими пакетами больше 128kbyte. Таймаут - одна ms, после чего сливаю данные, даже если их накопилось меньше. С такой схемой думать про размер пакета уже не обязательно с точки зрения заполнения полосы пропускной способности PCIe. Главное, чтобы пакеты в PCIe не совсем маленькие были. Физический размер пакетов в PCIe может быть 128/256/512/1K байт (в обычных PC чаще всего 128 байт). Если вы сами не будете делаеть TLP уровень (будете использовать корку вендора с интерфесом к Avalon/AXI4) то вам об этом думать не надо будет так как разбивка будет делатся внутри корки вендора. Ну а если захотите все сами на TLP делать то тогда ой - об этом придется помнить. Медленность чтения из PC в переферию определяется "навороченностью" уровня DMA/TLP - на сколько он позволяет конвеезировать запросы на чтение и склеивать ответы с минимальными накладными расходами времени. Удачи! Rob. Quote Share this post Link to post Share on other sites More sharing options...
warrior-2001 0 March 13, 2020 Posted March 13, 2020 · Report post Берите сразу Cyclone 10 GX. Кристалл пошустрее, hard IP те же. Долго будет доступен для закупки. Quote Share this post Link to post Share on other sites More sharing options...
vlso 0 March 13, 2020 Posted March 13, 2020 (edited) · Report post 1 hour ago, RobFPGA said: В современных системах размер буфера в дескрипторе обычно 4K (физ страница) так как выделить большой непрерывный кусок физ-памяти бывает довольно сложно. Хотя в случае TC с его 100 MB/s может и не надо будет сильно заморачиватся. Как правильно заметили выше - TC нужно взять кит с PCIe и запустить PCIe ref-дизайн c DMA. Сразу станет понятно что и как. А, вот для чего нужны эти дескрипторы. На мосте PEX8311 как раз была непрерывная память. Эксперименты и практика показали, что 64 MBytes это предел. Дальше win7 выделять не желает. :) Впрочем этого вполне хватало пока для наших задач. Тогда вопрос. Если DMA контроллер это юзерская часть IP (soft), то дескрипторы где хранятся? В памяти PC или внутренней памяти FPGA ? Так-то если буфер в памяти PC 4 MByte, то памяти для дескрипторов надо 4k x Descriptor_size, что уже немало. То есть с непрерывной памятью DMA-контроллер от Altera не работает? Только через механизм дескрипторов? Kit купим обязательно. Всё равно хочу сначала возможности понять, какие есть. 50 minutes ago, RobFPGA said: Контроллер DMA это user soft IP - может быть частью стандартной IP core контроллера PCIe от вендора - а можно и самому сваять как вам будет удобно по интерфесу или функционалу. Спасибо, теперь стало ещё яснее. Я правильно понимаю, что контроллер DMA работает через "Transaction layer". Это и есть TLP пакеты ? 50 minutes ago, RobFPGA said: Физический размер пакетов в PCIe может быть 128/256/512/1K байт (в обычных PC чаще всего 128 байт). Если вы сами не будете делаеть TLP уровень (будете использовать корку вендора с интерфесом к Avalon/AXI4) то вам об этом думать не надо будет так как разбивка будет делатся внутри корки вендора. Ну а если захотите все сами на TLP делать то тогда ой - об этом придется помнить. Медленность чтения из PC в переферию определяется "навороченностью" уровня DMA/TLP - на сколько он позволяет конвеезировать запросы на чтение и склеивать ответы с минимальными накладными расходами времени. Спасибо. Не так уж много осталось понять для старта. Вот ещё хочу прояснить. Если я выберу Cyclone4GX, то мне надо будет использовать soft IP. Мне надо будет платить за использование IP (за каждое устройство). Тот же вопрос про DMA-контроллер. Это уже ко всем семействам, как я понял. Ну и традиционный вопрос о платности vendorID/deviceID. Сейчас я понимаю, что в cyclone 5 и 10 платить ничего не надо, так как есть аппаратный IP. А вот про cyclone4GX не понятно. Altera даёт бесплатно использовать свои vendorID/deviceID ? Edited March 13, 2020 by vlso Quote Share this post Link to post Share on other sites More sharing options...
Yuri124 0 March 13, 2020 Posted March 13, 2020 · Report post 1 hour ago, vlso said: про "контроллер DMA" Это - "софт" корка в FPGA, через которую перемещаете данные по PCIe. 1 hour ago, vlso said: Я всегда передаю большими пакетами больше 128kbyte. Таймаут - одна ms, после чего сливаю данные, даже если их накопилось меньше. Понятно. В памяти компа выделяете при старте буфер один раз, инициализируете - а дальше всё делает FPGA. Quote Share this post Link to post Share on other sites More sharing options...
RobFPGA 11 March 13, 2020 Posted March 13, 2020 · Report post Приветствую! 27 minutes ago, vlso said: Тогда вопрос. Если DMA контроллер это юзерская часть IP (soft), то дескрипторы где хранятся? В памяти PC или внутренней памяти FPGA ? Так-то если буфер в памяти PC 4 MByte, то памяти для дескрипторов надо 4k x Descriptor_size, что уже немало. Это зависит от структуры DMA и схемы работы с дескрпторами. Обычно дескрипторы хранятся в системной памяти PC и подкачиваются автоматом в DMA по мере необходимости в небольшой внутренний буффер дескрипторов. Но могут быть и варианты - например дескрипторы грузятся CPU непосредственно в DMA в большой буфер дескрипторов (типа FIFO) . Число требуемых дескрипторов не обязательно должно соответствовать всему размеру буфера. Это число выбирают исходя из максимального времени на обслуживание дескрипторов. То есть распеределили часть буфера на 1К дескрипторов. По окончанию обработки какой то части (например 128 штук) по прерыванию или по опросу на эти 128 штук рапределили следующую часть буффера и.т.д. В пределе если вы успеаете переинитить DMA по окончанию пересылки дескриптора без остановки данных (например накапливая во внутреннем буфере) то и одного дескриптора достаточно. Почитайте описание на PCIe, DMA, корок а также их режимы работы (scatter-gather, descriptor-ring,) доступные для выбранного семейства FPGA. Удачи! Rob. Quote Share this post Link to post Share on other sites More sharing options...
Yuri124 0 March 13, 2020 Posted March 13, 2020 · Report post 20 minutes ago, vlso said: контроллер DMA работает через "Transaction layer". Это и есть TLP пакеты ? нет. 24 minutes ago, vlso said: Если я выберу Cyclone4GX, то мне надо будет использовать soft IP. Мне надо будет платить за использование IP (за каждое устройство). Тот же вопрос про DMA-контроллер. Это уже ко всем семействам, как я понял. не нужно Вам 4 Циклон :) DMA у Альтеры есть бесплатные, можно самому написать или купить у кого-нибудь еще (ИМХО хватит и Альтеровского или самописного). PCIe soft IP ядро для 4 Циклона платное, но один раз платить и пользоваться или на каждое устройство - не интересовался. 27 minutes ago, warrior-2001 said: Берите сразу Cyclone 10 GX. была недавно тема с очередностью подачи и главное - снятия питания с этого чипа - меня опечалило. Quote Share this post Link to post Share on other sites More sharing options...
dvlwork 0 March 13, 2020 Posted March 13, 2020 · Report post 32 минуты назад, vlso сказал: А вот про cyclone4GX не понятно В Cycline IV GX есть аппаратное ядро PCIe (HIP PCIe). Оно заканчивается Avalon-ST интерфейсом. Мост на Avalon-MM входит в мегафункцию и реализуется на логике. Это все бесплатно. DMA контроллер тоже реализуется на логике. Как правило идет готовый пример со всем этим хозяйством. В Cyclone V все тоже самое. Принципиальных отличий нет, если конечно вы не используете HPS. Quote Share this post Link to post Share on other sites More sharing options...
vlso 0 March 13, 2020 Posted March 13, 2020 · Report post 14 minutes ago, RobFPGA said: Почитайте описание на PCIe, DMA, корок а также их режимы работы (scater-gather, descriptor-ring,) доступные для выбранного семейства FPGA. Понял. Почитаю обязательно. Большое спасибо за объяснение. Не думал, что буфер дескрипторов динамический. Тогда примерно понятно, почему на x1 Gen1 100 MBytes/sec может в теории не получится при каких-то обстоятельствах. 50 minutes ago, warrior-2001 said: Берите сразу Cyclone 10 GX. Кристалл пошустрее, hard IP те же. Долго будет доступен для закупки Планирую пообщатся с дистрибьютерами. Иногда цены интересные предлагают. Партии у нас не особо большие (сотни в год), разве что присоединиться к крупному заказу, тогда может цена приемлемая будет. Quote Share this post Link to post Share on other sites More sharing options...
Yuri124 0 March 13, 2020 Posted March 13, 2020 · Report post Вот у Xilinx статья - введение в PCIe http://xillybus.com/tutorials/pci-express-tlp-pcie-primer-tutorial-guide-1 Quote Share this post Link to post Share on other sites More sharing options...
RobFPGA 11 March 13, 2020 Posted March 13, 2020 · Report post Приветствую! 27 minutes ago, vlso said: Тогда примерно понятно, почему на x1 Gen1 100 MBytes/sec может в теории не получится при каких-то обстоятельствах. Для x1 Gen1 можно расчитывать на 200-220 MB/s при хорошем DMA/PCie контроллере и нормальной структуре системы. Удачи! Rob. Quote Share this post Link to post Share on other sites More sharing options...
vlso 0 March 13, 2020 Posted March 13, 2020 · Report post 28 minutes ago, Yuri124 said: DMA у Альтеры есть бесплатные, можно самому написать или купить у кого-нибудь еще (ИМХО хватит и Альтеровского или самописного). PCIe soft IP ядро для 4 Циклона платное, но один раз платить и пользоваться или на каждое устройство - не интересовался. 21 minutes ago, dvlwork said: В Cycline IV GX есть аппаратное ядро PCIe (HIP PCIe). Оно заканчивается Avalon-ST интерфейсом. Мост на Avalon-MM входит в мегафункцию и реализуется на логике. Это все бесплатно. DMA контроллер тоже реализуется на логике. Как правило идет готовый пример со всем этим хозяйством. В Cyclone V все тоже самое. Принципиальных отличий нет, если конечно вы не используете HPS. Как-то не всё сходится. Если есть аппаратное ядро с Avalon, то за что платить не очень понятно. Если что я компиляцию проекта вообще не считаю (считаем, что quartus честно куплен). Именно беспокоят возможные отчисления за каждое устройство. Тут идея какая. Либо плачу за soft-IP, либо оно уже в чипе аппаратно. to dvlwork: HPS не использую. Странно. По даташиту на cyclone упомянут только PIPE интерфейс. Может надо в другой pdf смотреть? PIPE это какой из уровней ? • Physical interface/media access control (PHY/MAC) layer • Data link layer • Transaction layer 35 minutes ago, Yuri124 said: Вот у Xilinx статья - введение в PCIe http://xillybus.com/tutorials/pci-express-tlp-pcie-primer-tutorial-guide-1 Спасибо, почитаю обязательно. Quote Share this post Link to post Share on other sites More sharing options...
Yuri124 0 March 13, 2020 Posted March 13, 2020 · Report post 1 minute ago, vlso said: Как-то не всё сходится Да, я напутал - считал. что в 4 Циклоне только софт ядро, сейчас глянул - есть хард, есть и софт. Хард - бесплатное, софт - платное. Но при одинаковых ценах на IV и V чипы смысл делать на 4-м... Тем более, что примеры для пятого запускаются сразу. Quote Share this post Link to post Share on other sites More sharing options...
vlso 0 March 13, 2020 Posted March 13, 2020 · Report post 8 minutes ago, Yuri124 said: Но при одинаковых ценах на IV и V чипы смысл делать на 4-м... Я тут глаз положил на самые дешёвые. Они стоят около 25$ на digikey. Там правда всего два гигабитных трансивера. Один для PCIe, второй на входящий поток (в идеале хотелось два входящих потока, но и такой вариант тоже нужен для более узких применений). Cyclone5GX с такими ценами не видел пока. Quote Share this post Link to post Share on other sites More sharing options...
Yuri124 0 March 13, 2020 Posted March 13, 2020 (edited) · Report post 15 minutes ago, vlso said: PIPE физический уровень: https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/an/an443.pdf Quote PIPE stands for PHY Interface for the PCI Express Architecture. The PIPE specification was developed by Intel. Although it is not a standard like PCI Express, the PIPE interface is the most widely adopted interface between the PHY and the MAC layers (Figure 1). См. на картинке где надпись PHY/MAC Interface (PIPE Interface) Т.е. внутри, где уже идет распараллеливание в байты. 6 minutes ago, vlso said: Они стоят около 25$ на digikey Когда-то выбирал, таких дешевых не видел. А есть ли у них интерфейс к нужной Вам памяти? И достаточно ли внутри блоков памяти, если понадобится для FIFO, например. Edited March 13, 2020 by Yuri124 Quote Share this post Link to post Share on other sites More sharing options...
vlso 0 March 13, 2020 Posted March 13, 2020 (edited) · Report post 16 minutes ago, Yuri124 said: физический уровень: https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/an/an443.pdf Спасибо! На второй странице схема. Оказывается PIPE содержит в себе: • Physical interface/media access control (PHY/MAC) layer• Data link layer• Transaction layer Действительно, похоже, что в cyclone4GX и cyclone5GX аппаратные блоки имеют одинаковый функционал. Мой выбор теперь облегчился. То есть, если и надо платить, то только за soft-IP DMA контроллера (или самому писать). Может конечно у Altera платность soft IP от семейства зависит. Надо будет выяснить у дистрибьютера. Edited March 13, 2020 by vlso Quote Share this post Link to post Share on other sites More sharing options...