Цитата(Serhiy_UA @ May 23 2014, 09:27)

Не совсем понял, ассемблер генерирует код на HDL, который затем можно включать в прошивку ПЛИС? Тоже, что-то новое!
По делению и корню столбиком без восстановления остатка все понятно, хотя здесь можно использовать и матричный (аппаратный) метод для ускорения, я предпочитаю его. Просто мне показалось, что для этих операций Вы использовали умножители.
Уточните, если не сложно, как и из чего выполняете загрузку конфигурации ПЛИС и программы для процессора? Используется ли для этого отдельное ядро, и как оно запускается?
И еще, почему выбрали Lattice, при более популярных Altera и Xilinx, в чем преимущество?
Да, ассемблер генерирует wrapper к процессору в виде исходника VHDL модуля, который содержит в себе код программы, константы, отладочную информацию для симуляции, всякие параметры, и инстанциацию процессора. Загрузка конфигурации производится из SPI flash, как обычно, а программа для процессора хранится в ROM на LUT-ах(она короткая, 200 инструкций в текущем проекте).
Lattice выбрали, потому что в low-end чипах есть поддержка DDR2 SDRAM с широкой шиной данных, приличная защита прошивки, чтение синхронных данных со скоростью до 800Mb/s.
С использованием аппаратного 36-битного умножителя у меня есть другой процессор попроще, который умеет только умножать и складывать, зато параллельно и за один такт с использованием конвейера, рабочая частота где-то тоже 250МГц, ограничена умножителем. Этот процессор для обсчёта нестандартных рекурсивных фильтров.