Проектирование и разработка оборудования
Процесс создания цифровой логики мало чем отличается от процесса разработки встроенного программного обеспечения написанного на языке описания аппаратного обеспечения высокого уровня (обычно VHDL или Verilog), и этот код затем компилируется и загружается на выполнение. Конечно, схематическая реализация является так же вариантом проектирования, но это стало менее популярным, поскольку конструкции стали более сложными, а инструменты языков улучшались. Общий процесс разработки аппаратного обеспечения для программируемой логики описан в последующих параграфах.
Возможно, самое выразительное различие между аппаратной и программной разработкой – это то, как разработчик должен думать о проблеме. Разработчики программного обеспечения склонны думать последовательно, даже когда они разрабатывают многопоточное приложение. Строки исходного кода, которые они пишут, всегда исполняются в одном порядке, по крайней мере в пределах одного потока. Если есть операционная система, она используется для создания параллелизма, но есть ещё один механизм выполнения. Во время ввода разработки аппаратные разработчики должны думать и программировать параллельно. Все входные сигналы обрабатываются параллельно, поскольку они проходят через наборы исполнительных механизмов, каждый из которых представляет собой ряд макроячеек и межсоединений к назначенным им выходным сигналам. Поэтому команды языка описания аппаратных средств создают структуры, которые выполняются в одно и то же время. (Обратите внимание, что перенос с макроячейки на макроячейку обычно синхронизируется с каким-то другим сигналом, как таймер.)
Как правило, шаг разработки сопровождается или пересекается с функциональным моделированием. Именно здесь используется симуляция для выполнения проекта, что подтверждает, что для данного набора тестовых входных сигналов создаются правильные выходные. Хотя проблема с размером и временем разработки аппаратного обеспечения могут появиться позже, разработчик может, по крайней мере, убедиться, что функциональная логика верна, прежде чем перейти к следующему этапу разработки.
Компиляция начинается только после того, как корректно выполнено функциональное представление аппаратного обеспечения. Аппаратная компиляция состоит из двух отдельных шагов. Во-первых, создается промежуточное представление конструкция аппаратного обеспечения. Этот шаг называется синтезом, а результатов является представление, называемое список соединений. Список соединений не зависит от устройства, поэтому его содержимое не зависит от данных ПЛИС или СПЛУ; он обычно хранится в стандартном формате, называемом форматом обмена электронной конструкцией.
Второй шаг в процессе разработки это размещение элементов и трассировка соединений. Этот шаг включает отображение логических структур, описанных в списке соединений, на фактические макроячейки, межсоединения и входные и выходные контакты. Этот процесс аналогичен эквивалентному этапу разработки печатной платы, и он так же может допускать автоматическое или ручное размещение элементов на макете. Результатом процесса размещения элементов и трассировки соединений является битовый поток. Это название используется во всех случаях, не смотря на то, что каждый тип ПЛИС или СПЛУ (или семейство) имеет свой собственный формат битового потока. Достаточно сказать, что битовый поток – это двоичные данные, которые должны быть загружены в ПЛИС или СПЛУ, чтобы заставить этот чип выполнить конкретную конструкцию оборудования.
Все чаще встречаются так же отладчики, которые, по крайней мере, допускают одноэтапное аппаратное конструирование, выполняемое в программируемом логическом устройстве. Но они дополняют среду моделирования, которая использует некоторую информацию, созданную во время размещения элементов и трассировки соединений, чтобы обеспечить имитация на уровне вентилей. Очевидно, что такой тип интеграции информации, специфичный для устройства, требует взаимопонимание между чипов и производителями инструментов моделирвоания.
Программирование устройства
После того, как вы создали битовый поток для конкретной ПЛИС или СПЛУ, вам нужно как-то загрузить его на устройство. Детали этого процесса зависят от технологического процесса чипа. Программируемые логические устройства подобны энергонезависимым запоминающим устройствам, поскольку в них есть некоторые базовые технологии. На самом деле используется точно такой же набор: программируемое ПЗУ(для программ программируемых один раз), стираемое программируемое ПЗУ, электрически стираемое программируемое ПЗУ и флеш-память.
Подобно копиям памяти, логически устройства на основе ППЗУ и СППЗУ могут быть запрограммированы только с помощью отдельного лабораторного оборудования, называемого устройством программиста. С другой стороны, многие устройства, основанные на технологии ЭСППЗУ или флеш-памяти, программируются встроенно. Другими словами, дополнительные схемы, необходимые для выполнения (пере)программирования, предусмотрены так же в кремнии ПЛИС или СПЛУ. Это позволяет стереть все и перепрограммировать внутренние устройства через интерфейс JTAG(Join Test Action Group) или встроенный процессор. (Обратите внимание, что, поскольку эта дополнительная система занимает пространство и увеличивает общие затраты на чипы, некоторые из программируемых логических устройств на базе ЭСППЛУ или флеш-памяти по прежнему требуют использования устройства программирования.)
В дополнение к энергонезависимым технология существуют также программируемые логические устройства, основанные на технологии СППД (статическая память с произвольным доступом). В таких случаях содержимое устройства нестабильно. Это имеет как преимущества, так и недостатки. Очевидным недостатком является то, что внутренняя логика должна быть загружена после каждой перезагрузки системы или чипа. Это означает, что вам понадобится дополнительный чип памяти, в котором будет храниться битовый поток. Но это также означает, что содержимым логического устройства можно манипулировать «на лету». Фактически, вы моли быть приставить сценарий, в котором фактический битовый поток загружается из удаленного источника (через какую-то сеть?). Так что аппаратная конструкция может быть обновлена так же просто, как и программное обеспечение.
Что это для тебя?
Надеюсь, теперь ваше понимание этого нового вида программирования стало лучше, оно действительно замаскировано под аппаратными средствами. (Или это новый вид аппаратного обеспечения, которое действительно скрывает программное обеспечение?) Это должно дать вам хорошую основу для общения с разработчиками оборудования по вопросам распределения, например: Какие функции в вашем следующем проекте должны быть реализованы в специализированной логике, программируемой логике, и/или в программном обеспечении? Я обнаружил, что существуют обоснованные причины выбора всех этих методов внедрения и что вы должны уделять пристальное внимание требованиям конкретного приложения. Поскольку программное обеспечение и аппаратные средства продолжают одновременно развиваться и пересекаться, мы должны все расширять наши знания и быть готовыми изучать новые вещи.