Oleg82 0 27 мая, 2021 Опубликовано 27 мая, 2021 · Жалоба Доброго времени суток. Начал вникать в тему программирования FPGA устройств. Много непонятно. Подскажите такие моменты: 1. Каким образом, разработаное ПО (на С++) , поток, может взаимодействовать с FPGA-устройством? Например: как ПО может отправить, на обработку FPGA-устройству, заранее сформированый массив данных, и дождатся и получить результат? 2. Любые ли FPGA-устройства можно программировать на verilog, Open CL? 3. Сильно ли страдает производительность от применения высокоуровневого языка Open CL, если операции, над массивом данных, простейшие? 4. Какие FPGA-устройства, для настольного ПК, доступны на рынке (за адекватную цену). Заранее спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gridinp 2 27 мая, 2021 Опубликовано 27 мая, 2021 · Жалоба вы чего делать то собрались? хоть примерно, а то упоминание open cl, как то пугает Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrewkrot 0 27 мая, 2021 Опубликовано 27 мая, 2021 · Жалоба 1. Зависит от железа, на котором выполняется разработанное ПО. Вариантов много - от контроллера AVR до суперкомпьютеров. В общем случае используется шина/протокол. 2. На Verilog - практически все. На OpenCL более емкие семейства. 3. Тема для исследований. 4. Не понятно что имеется в виду под словами "FPGA-устройства для настольного ПК". Возможно это Вам подойдет - https://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=47&No=862 Все сильно зависит от объемов массивов и нужной скорости обработки Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
new123 0 27 мая, 2021 Опубликовано 27 мая, 2021 (изменено) · Жалоба 1) Самое очевидное - это через PCIe. Менее очевидное - это сетевой порт. Далее уже менее скоростные протоколы. Изменено 27 мая, 2021 пользователем new123 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 27 мая, 2021 Опубликовано 27 мая, 2021 · Жалоба Приветствую! 17 minutes ago, Oleg82 said: 1. Каким образом, разработаное ПО (на С++) , поток, может взаимодействовать с FPGA-устройством? Например: как ПО может отправить, на обработку FPGA-устройству, заранее сформированый массив данных, и дождатся и получить результат? Любое взаимодействие предполагает интерфейс и протокол через который это взаимодействие будет осуществляется. Это может быть как с любой из стандартных начиная c простейших от UART, I2С, SPI, и заканчивая PCIe, SRIO, Etheret, ... Так и любой другой нестандартный который вы можете реализовать как в FPGA так и в ответном устройстве. Чаще всего "пляшут от печки" - смотрят что есть в устройстве где будет работать "разработанное ПО (на С++)" и выбирают тот который может обеспечить требуемые параметры - пропускную, latency, надежность, .... и который можно реализовать в выбранной/доступной FPGA. 17 minutes ago, Oleg82 said: 2. Любые ли FPGA-устройства можно программировать на verilog, Open CL? Теоретически любые. Практически те для которых есть соответствующий софт и имеющие достаточный объем. 18 minutes ago, Oleg82 said: 3. Сильно ли страдает производительность от применения высокоуровневого языка Open CL, если операции, над массивом данных, простейшие? Как и в программировании. Чем выше абстракции - тем больше накладных расходов как в производительности (чаще всего) так и в объеме (всегда). Все зависит от задачи и возможности ее оптимизации в железе . 23 minutes ago, Oleg82 said: 4. Какие FPGA-устройства, для настольного ПК, доступны на рынке (за адекватную цену). Ответ зависит от критерия "адекватная цена" Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oleg82 0 27 мая, 2021 Опубликовано 27 мая, 2021 · Жалоба 7 минут назад, gridinp сказал: вы чего делать то собрались? хоть примерно, а то упоминание open cl, как то пугает Есть ПО, собирающее определенные числа, из БД, в массив. Размер массива всегда один и тот же. Как и выходной массив. Кажое число массива нужно обработать integer max value раз. И вернуть результат. Смісл таков: отправить, множеством потоков, множество массивов на оработку. Операции над числами - простейшие. 1 минуту назад, RobFPGA сказал: Ответ зависит от критерия "адекватная цен Спасибо за обширный ответ. 3 минуты назад, new123 сказал: 1) Самое очевидное - это через PCIe. Менее очевидное - это сетевой порт. Далее уже менее скоростные протоколы. PCIe. Я никогда не работал с портами. По-этому, не понимаю, как. с ними, можна обмениваться информацией. 3 минуты назад, RobFPGA сказал: Приветствую! Любое взаимодействие предполагает интерфейс и протокол через который это взаимодействие будет осуществляется. Это может быть как с любой из стандартных начиная c простейших от UART, I2С, SPI, и заканчивая PCIe, SRIO, Etheret, ... Так и любой другой нестандартный который вы можете реализовать как в FPGA так и в ответном устройстве. Чаще всего "пляшут от печки" - смотрят что есть в устройстве где будет работать "разработанное ПО (на С++)" и выбирают тот который может обеспечить требуемые параметры - пропускную, latency, надежность, .... и который можно реализовать в выбранной/доступной FPGA. Теоретически любые. Практически те для которых есть соответствующий софт и имеющие достаточный объем. Как и в программировании. Чем выше абстракции - тем больше накладных расходов как в производительности (чаще всего) так и в объеме (всегда). Все зависит от задачи и возможности ее оптимизации в железе . Ответ зависит от критерия "адекватная цена" Удачи! Rob. Адекватная цена.... ну, 700- 1000 у.е.(+ -) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gridinp 2 27 мая, 2021 Опубликовано 27 мая, 2021 (изменено) · Жалоба ну если обьём данных не очень большой, тогда один из наиболее простых путей, это виртуальный COM-порт VCP на USB<->RS232 контроллере от FTDI, то есть со стороны операционной системы USB, а в FPGA делаете TTL RS232 Изменено 27 мая, 2021 пользователем gridinp Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
new123 0 27 мая, 2021 Опубликовано 27 мая, 2021 · Жалоба 4 minutes ago, Oleg82 said: PCIe. Я никогда не работал с портами. По-этому, не понимаю, как. с ними, можна обмениваться информацией. я прочитал, что вы написали про задачу. Конечно, вам наверное надо попроще, чем pcie ) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oleg82 0 27 мая, 2021 Опубликовано 27 мая, 2021 · Жалоба 6 минут назад, new123 сказал: я прочитал, что вы написали про задачу. Конечно, вам наверное надо попроще, чем pcie ) Как вы оцените, для моей задачи, подобное ПО https://www.jungo.com/st/support/documentation/windriver/12.7.0/wdpci_manual.mhtml/index.html Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
new123 0 27 мая, 2021 Опубликовано 27 мая, 2021 (изменено) · Жалоба 1 minute ago, Oleg82 said: Как вы оцените, для моей задачи, подобное ПО https://www.jungo.com/st/support/documentation/windriver/12.7.0/wdpci_manual.mhtml/index.html я с ходу в этой штуке не разобрался года три назад. Написал свой драйвер, с отладкой, месяца за 4 базовый вариант Им можно написать, они мануал раньше высылали подробный. Правда потом спамят звонками с целью продажи Изменено 27 мая, 2021 пользователем new123 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leka 0 27 мая, 2021 Опубликовано 27 мая, 2021 · Жалоба 18 minutes ago, Oleg82 said: Размер массива всегда один и тот же И какой, и какая скорость передачи требуется? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oleg82 0 27 мая, 2021 Опубликовано 27 мая, 2021 · Жалоба 2 минуты назад, Leka сказал: И какой, и какая скорость передачи требуется? 20 4-байтных чисел. последнее число, с каждым циклом, увеличивается на 1. Скорость...даже не знаю. Цикл состоит из 100 суммирований. Хочется реализовать конвеер, например, чтоб такт обрабатывал, к примеру, 10000 шагов (100 циклов по 100 вариантам последнего числа). Например, если использовать FPGA-ускоритель, к нему идет драйвер? Или обмен данными, через PCIe, я должен программировать сам? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leka 0 27 мая, 2021 Опубликовано 27 мая, 2021 · Жалоба 3 minutes ago, Oleg82 said: 20 4-байтных чисел Тогда с самого простого можно начать - готового USB-UART или USB-SPI переходника, и любой простой платы с ПЛИС. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oleg82 0 27 мая, 2021 Опубликовано 27 мая, 2021 · Жалоба 3 минуты назад, Leka сказал: Тогда с самого простого можно начать - готового USB-UART или USB-SPI переходника, и любой простой платы с ПЛИС. Посоветуйте плату(ы), пжл. 52 минуты назад, andrewkrot сказал: 1. Зависит от железа, на котором выполняется разработанное ПО. Вариантов много - от контроллера AVR до суперкомпьютеров. В общем случае используется шина/протокол. 2. На Verilog - практически все. На OpenCL более емкие семейства. 3. Тема для исследований. 4. Не понятно что имеется в виду под словами "FPGA-устройства для настольного ПК". Возможно это Вам подойдет - https://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=47&No=862 Все сильно зависит от объемов массивов и нужной скорости обработки Да. Это похоже на то, что нужно. Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
izerg 9 27 мая, 2021 Опубликовано 27 мая, 2021 · Жалоба 14 minutes ago, Oleg82 said: Скорость...даже не знаю ... дальше пошла игра цифрами, но о скорости таки ни слова нет. начните с того - что посчитайте - сколько "байт в секунду" нужно отправить в FPGA и сколько "байт в секунду" получить обратно? Цифра - даст понимание - какой интерфейс пропустит через себя такой поток. попробуйте почитать готовые проекты на marsohod.org... https://marsohod.org/11-blog/308-mars3-sync-fifo - например www.terasic.com.tw - Вам уже говорили, ... к каждой плате они дают документацию и примеры ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться