Что ж, новейшее поколение деталей Xilinx только что объявило о похвале 4.7TMACS и логике общего назначения на частоте 600 МГц. (В основном это Virtex 6s, созданный для меньшего процесса.)
На таком звере, как вы, если вы можете реализовать свои алгоритмы в операциях с фиксированной запятой, в первую очередь умножать, складывать и вычитать, и пользоваться преимуществами широкого параллелизма и конвейерного параллелизма, вы можете съесть большинство ПК живыми, с точки зрения как мощности, так и обработки .
Вы можете плавать на них, но это приведет к снижению производительности. Блоки DSP содержат MACC 25x18 бит с суммой 48 бит. Если вы можете обойтись без странных форматов и обойти некоторую нормализацию с плавающей запятой, которая обычно происходит, вы все равно можете извлечь из этого нагрузку. (т. е. используйте 18-битный вход как прямую фиксированную точку или число с плавающей запятой с 17-битной мантиссией вместо обычных 24-битных.) Двойные числа с плавающей запятой съедят много ресурсов, поэтому, если вам это нужно, вам, вероятно, будет лучше на ПК.
Если ваши алгоритмы могут быть выражены в терминах операций сложения и вычитания, то логика общего назначения в них может использоваться для реализации сумматоров gazillion. Такие вещи, как алгоритмы линии / круга / Ядды / Ядды / Ядды у Брезенхэма, ОЧЕНЬ хорошо подходят для разработки ПЛИС.
Если вам нужно деление ... Э-э ... это больно и, вероятно, будет относительно медленным, если вы не сможете реализовать свои деления как умножения.
Если вам нужно много функций триггера с высоким разрешением, не так уж много ... Опять же, это МОЖЕТ быть сделано, но это не будет красиво или быстро. (Точно так же, как это можно сделать на 6502.) Если вы можете справиться только с помощью справочной таблицы на ограниченном диапазоне, тогда ваш золотой!
Говоря о 6502, демо-кодер 6502 может заставить одну из этих вещей петь. Любой, кто знаком со всеми старыми математическими приемами, которые программисты обычно использовали на старой школьной машине, будет применяться. Все хитрости, которые современный программист говорит вам: «пусть библиотека сделает за вас», - это то, что вам нужно знать, чтобы реализовать на них математику. Если вам удастся найти книгу, в которой рассказывается о том, как сделать 3d на Atari или Amiga на базе 68000, они обсудят множество способов реализации всего лишь целочисленного типа.
В действительности любые алгоритмы, которые могут быть реализованы с использованием справочных таблиц, ОЧЕНЬ хорошо подойдут для ПЛИС. Мало того, что у вас есть блокрамы, распределенные по всей детали, но и сами логические ячейки могут быть сконфигурированы как LUTS различного размера и мини-оперативки.
Вы можете рассматривать такие вещи, как фиксированные битовые манипуляции, БЕСПЛАТНО! Это просто справиться с маршрутизацией. Фиксированные сдвиги или изменения битов ничего не стоят. Динамические битовые операции, такие как сдвиг на переменную сумму, будут стоить минимального количества логики и могут выполняться до тех пор, пока коровы не вернутся домой!
Большая часть имеет 3960 множителей! И 142 200 срезов, КАЖДЫЙ из которых может быть 8-битным сумматором. (4 6-битных реза на срез или 8 5-битных реза на срез в зависимости от конфигурации.)