Для изучения программирования FPGA я планирую кодировать простую Нейронную сеть в FPGA (так как это с массовым параллелизмом; это - одна из нескольких вещей, где реализация FPGA могла бы иметь шанс того, чтобы быть быстрее, чем реализация ЦП).
Хотя я знаком с C, программирующим (10 + годы). Я не так уверен с материалом разработки FPGA. Можно ли предоставить ведомый список того, что я должен сделать / учатся / покупают?
Спасибо!
Независимо от того, что говорит Чарльз Стюарт, Verilog - прекрасное место для начала. Это напоминает мне C, так же как VHDL напоминает мне ADA. Оккама никто не использует в промышленности, и это не принято в университетах.
Для книги Verilog я рекомендую эти , особенно Verilog HDL . Verilog тривиально выполняет параллельную работу, в отличие от C.
. Чтобы купить, приобретите относительно дешевую плату Cyclone III eval от [Altera] или Altera 3 (например, эту Cyclone III с NIOS ). за 449 долларов или это за 199) или Xilinx.
Я дам тебе еще третью рекомендацию: Используйте VHDL. Да, на поверхности это похоже на ADA. В то время как Verilog имеет мимолетное сходство с C. Однако, с Verilog вы получаете только те типы, которые поставляются с ним из коробки. С помощью VHDL вы можете определить свои собственные новые типы, что позволит вам программировать на более высоком уровне (все равно RTL, конечно же). Я уверен, что бесплатные инструменты Xilinx и Altera поддерживают как VHDL, так и Verilog. "A Designers Guide to VHDL" от Ashenden - хорошая книга по VHDL.
VHDL имеет стандартный математический пакет с фиксированной точкой, который может облегчить реализацию NN.
Он старый, потому что я не особо задумывался о ПЛИС почти 20 лет, и он использует язык параллельного программирования, который довольно неясен, но Пейдж и Лук, 1991, Компиляция Оккама в ПЛИС охватывает некоторые важные темы в хорошей форме, я думаю, достаточно для ваших целей. Две ссылки для опробования:
Оккам-> FPGA - это не то место, где происходит действие, но это может быть гораздо лучшим местом для начала, чем, скажем, Verilog.
Я хочу указать на потенциальную проблему с реализацией нейронной сети в FPGA. ПЛИС имеют ограниченное количество ресурсов маршрутизации. В отличие от логических ресурсов (флопов, справочных таблиц, памяти), ресурсы маршрутизации сложно определить количественно. Может быть, простая нейронная сеть будет работать, но «массово-параллельная» с ячеистыми межсоединениями - нет.
Я бы посоветовал начать с простого ядра из OpenCores.org, чтобы познакомиться с потоком FPGA, а затем перейти к созданию прототипа нейронной сети. Скачивание бесплатного Xilinx WebPack, который включает симулятор ISIM, является хорошим началом. Позже вы можете приобрести дешевое устройство. плата с небольшой ПЛИС (например, Xilinx Spartan 3) для запуска ваших проектов.