Я только вхожу в FPGA, и если я правильно понимаю, вы соединяете логические элементы вместе, используя код. Поэтому, если я спроектирую процессор в Verilog, он должен соединить некоторые логические элементы и работать, но как узнать, как быстро может работать мой самодельный процессор? От чего это зависит?
fpga
cpu
homebrew-cpu
Уве Кейм
источник
источник
Ответы:
Скорость дизайна ограничена несколькими вещами. Наиболее вероятной будет задержка распространения через комбинаторную логику в вашем проекте, называемую критическим путем . Если вы используете быструю FPGA и очень осторожно пишете HDL, вы, вероятно, могли бы достичь частоты 700 МГц на чем-то вроде Virtex Ultrascale +. На более низком уровне FPGA, например, Spartan 6, разумная цифра, вероятно, больше похожа на 250 МГц. Это требует повсеместной конвейерной обработки, поэтому у вас есть абсолютное минимальное количество комбинаторной логики между компонентами с состоянием (минимизировать уровни логики), низкими разветвлениями (минимизировать нагрузку на логические элементы) и отсутствием перегруженных крысиных гнезд (эффективных путей маршрутизации).
Логика фабрики разных ПЛИС будет иметь разные параметры синхронизации. Более быстрые, более дорогие ПЛИС будут иметь меньшие задержки и, как следствие, могут достигать более высоких тактовых частот с тем же дизайном, или выполнять более сложный дизайн или дизайн с меньшим количеством конвейеров на той же частоте. Производительность в конкретном процессе может быть схожей - например, Kintex Ultrascale и Virtex Ultrascale производятся по одному и тому же процессу и имеют одинаковые задержки в ячейках и маршрутизации. Невозможно сказать, насколько быстрым будет данный проект, не прогоняя его по цепочке инструментов и не просматривая отчеты о времени из статического анализа времени.
При выполнении наборов инструментов для определения максимальной тактовой частоты имейте в виду, что инструменты зависят от времени: они будут пытаться соответствовать указанным ограничениям времени. Если временные ограничения не указаны, результат может быть очень плохим, так как инструменты не будут пытаться оптимизировать дизайн по скорости. Как правило, инструменты должны запускаться несколько раз с различными ограничениями тактового периода, чтобы найти максимально достижимую тактовую частоту.
Если вы можете оптимизировать свой дизайн так, чтобы критический путь не был пределом, то вы столкнетесь с ограничениями в генерации и распределении тактовых импульсов (PLL, DCM, тактовые буферы и глобальные тактовые сети). Эти ограничения можно найти в таблицах деталей, но приблизиться к ним с нетривиальным дизайном сложно. Я работал на Virtex Ultrascale с частотой 500 МГц, но это было всего лишь несколько счетчиков, которые давали сигналы запуска другим компонентам.
источник
Вы синтезируете свой дизайн в целевой технологии (конкретной FPGA) и позволяете инструментам статического анализа синхронизации сказать вам, каков минимальный тактовый период.
Или вы сначала добавляете ограничения к дизайну, а затем инструменты сообщают вам, соблюдались ли они или нет.
источник
Скорость, с которой будет работать ваш процессор, будет зависеть от самой длинной задержки флопа-флопа в вашем синтезированном дизайне. Задержка флоп-флоп будет включать в себя часы до Q, маршрутизацию, логику / LUT и время настройки флопа. Они, сложенные вместе, образуют критический путь вашего времени, который вы можете проверить в отчете о времени с помощью инструмента «место и маршрут».
Существуют целые дисциплины проектирования, посвященные созданию архитектур, которые минимизируют эту задержку для получения максимальной отдачи от данного процесса - конвейерная обработка, параллельное выполнение, спекулятивное выполнение и так далее. Это увлекательная, захватывающая задача - выжать последнюю унцию производительности из ПЛИС (или, если на то пошло, ASIC).
Тем не менее, производители ПЛИС будут давать различные оценки скорости для своих частей, которые соответствуют максимальной частоте МГц. Например, -2 Xilinx Artix - это, грубо говоря, часть «250 МГц», хотя она способна к более высокой тактовой частоте для высокотрубных конструкций.
Когда вы взаимодействуете с инструментами синтеза FPGA и инструментами определения местоположения и маршрутизации, вам нужно будет дать ограничения для вашего проекта. Они сообщают инструменту о целевой задержке флоп-флоп, которую вы пытаетесь достичь. В Quartus (Altera) и Vivado (Xilinx) эти ограничения используют синтаксис, называемый SDC, который обозначает ограничения проектирования Synopsys. SDC изначально пришла из мира ASIC, а также была принята индустрией FPGA. Познакомьтесь с SDC - это поможет вам получить желаемые результаты.
У Altera и Xilinx есть онлайновые сообщества для помощи в использовании синтаксиса SDC и многие другие темы.
Тем не менее, если вы заботитесь о скорости, вы должны рассмотреть FPGA, в которой есть жесткий макрос процессора, такой как Zynq.
источник
Процессор не будет работать быстрее, чем глобальные часы, так что это определит верхнюю границу скорости его работы. Обычно информация о максимальной тактовой частоте указана в технических данных FGPA.
источник