> ДонНТУ > Портал магистров ru

Похомов Алексей Александрович

факультет

Компьютерных наук и технологий

специальность

Компьютерные системы и сети

тема выпускной работы

Разработка и исследование структуры мобильной системы на базе FPGA-технологии

научный руководитель

Зинченко Юрий Евгениевич

Контроллеры на основе микросхем FPGA

Источник http://nauchebe.net

Программируемые пользователем вентильные матрицы FPGA (Field Program­mable Gate Array) представляют собой прекрасную основу для реализации сис­тем на одной микросхеме. В отличие от контроллерных микросхем, предостав­ляющих конструктору набор готовых функциональных блоков, микросхемы FPGA предоставляют ему полную свободу разработки. В них легко включать оп­ределенные стандартные блоки и затем строить остальную часть системы по соб­ственному усмотрению. Для того чтобы проиллюстрировать возможности этого подхода, мы опишем систему Excalibur от Altera Corporation.

Функциональные возможности FPGA растут с невероятной скоростью. Одна большая микросхема FPGA может содержать систему с сотнями и тысячами ло­гических вентилей. Такие микросхемы достаточно вместительны для реализации типичных функций микроконтроллера и других схем, необходимых для создания встраиваемой системы.

Ключевым компонентом любой системы на одной микросхеме является про­цессорное ядро. Система Excalibur позволяет конструктору выбрать одно из двух альтернативных решений. Первое из них заключается в том, чтобы запрограмми­ровать процессор на микросхеме с нуля, а другая — в том, чтобы использовать микросхему FPGA с готовым процессорным ядром на кристалле кремния, встро­енным при ее производстве.

Программируемое процессорное ядро

В состав системы Excalibur входит программный модуль, созданный на языке описания аппаратного обеспечения Verilog и реализующий архитектуру процес­сора под названием Nios. Этот модуль позволяет конструктору либо выбрать для процессора один из библиотечных модулей на языке описания аппаратного обес­печения, таком как Verilog или VHDL, либо определить его самостоятельно в ви­де функционального блока путем интерактивного составления схемы. Конструк­тор может выбрать 32- либо 16-разрядную версию процессора, в зависимости от требований к производительности системы.

Модуль параллельного интерфейса, подобный приведенному на рис. 9.3.1, доступен в виде библиотечного модуля, для которого конструктор может задать параметры, соответствующие его собственным требованиям. Длина регистров выбирается в диапазоне от 1 до 32 разрядов. Конструктор может применить либо полный двунаправленный интерфейс, либо его более ограниченную версию. На­пример, можно задать только выходной порт, и тогда регистр выходных данных будет включен в состав схемы, а регистр входных данных нет. В результате ресур­сы FPGA не станут тратиться на ненужные компоненты.

Последовательный интерфейс реализуется в форме схемы UART. Конструк­тор определяет необходимые параметры, такие как количество разрядов данных, количество стоповых битов и использование бита четности. Тактовая частота приема и передачи выбирается из предопределенного стандартного диапазона. Позднее ее можно будет изменить с помощью программного обеспечения контро­лера, если включить в схему регистр деления частоты (куда можно загружать зна­чение, на которое следует разделить стандартную тактовую частоту). И снова конструктор может выбрать только необходимые функции, чтобы не выполнять ничего лишнего.

Модуль таймера позволяет реализовать функции таймера и счетчика, описан­ные в разделе 9.3.3. Его работа полностью управляется программным обеспечени­ем контролера.

Большие микросхемы FPGA содержат много памяти. Входящие в их состав блоки памяти могут использоваться для реализации RAM и ROM встроенной системы, если, конечно, ее требования к памяти не слишком велики. Конструктор может задать объем необходимой памяти в виде количества слов и количества разрядов в слове. Если памяти на микросхеме недостаточно, можно добавить ин­терфейс для внешней памяти, в результате чего на контактах микросхемы FPGA будут реализованы сигналы шины памяти.

Средства автоматизированного проектирования, входящие в состав системы Excalibur, очень облегчают создание системы на основе микросхемы FPGA. В их состав входит мастер, предлагающий конструктору ввести желаемые параметры и затем самостоятельно генерирующий нужные схемы. Таким образом, процессор и модули ввода-вывода реализуются автоматически. Они соединяются с помо­щью структуры, реализующей шинный протокол Nios. Следует заметить, что ши­на на микросхеме FPGA основана не на повторителях с тремя состояниями, как рассказывалось в главе 7. FPGA — универсальное устройство, содержащее множе­ство логических элементов, соединенных проводниками и ключами. Повторители с тремя состояниями полезны только для конкретных целей, поэтому в типичных FPGA они не используются. Их функции можно реализовать путем использова­ния мультиплексорных схем. Вместо одного двунаправленного соединения для каждого направления используется свой мультиплексор. И хотя для реализации этого подхода требуется большое количество вентилей, это хорошее решение, по­скольку необходимые логические элементы и соединения составляют очень ма­ленькую часть общего количества ресурсов FPGA.

Процессор и подсистема интерфейса занимают относительно небольшую часть микросхемы FPGA. Остальная ее часть предоставляется для реализации схем, специфических для конкретного устройства. Эти схемы можно либо непосредст­венно соединить с шиной процессора, либо подключить к портам ввода-вывода. Если вся система расположена на одной микросхеме, порты ввода-вывода в под­системе процессора не обязательно должны быть соединены с контактами вво­да-вывода микросхемы FPGA. Конструктор может их использовать для подклю­чения к процессору специфических для данной системы схем.

Процессор Nios имеет систему команд типа RISC. Его производительность мо­жет достигать 50 MIPS (Million Instructions Per Second), то есть миллионов ко­манд в секунду. Конструктор может реализовать на одной микросхеме FPGA да­же несколько процессоров, создав таким образом мультипроцессорную систему.

Аппаратное процессорное ядро

В качестве альтернативы программируемому процессорному ядру можно исполь­зовать кремниевый процессор на специализированной микросхеме FPGA. Систе­ма Excalibur предоставляет такие FPGA на основе разных процессоров. Приме­ром может служить FPGA с процессорным ядром ARM, реализованным в одной части устройства. В дополнение к процессорным схемам реализованы шина про­цессора ARM, модуль RAM и последовательный модуль UART. Подобным обра­зом можно создать значительно более мощную систему, и при этом как обычно запрограммировать остальные необходимые ресурсы, для которых в микросхеме оставлена стандартная FPGA-часть. Система с жестким процессорным ядром мо­жет достигать производительности в сотни MIPS.

С точки зрения конструктора

Конструктор встроенной системы, безусловно, ищет простейшее и самое дешевое решение. И самым лучшим выбором может оказаться микросхема микроконтрол­лера, содержащая ресурсы для реализации всей этой системы. Совсем иная си­туация получается в том случае, если для реализации системы необходимы до­полнительные микросхемы. Тогда привлекательным решением становится ис­пользование микросхем FPGA, позволяющих создать систему с минимумом микросхем.

Еще одним важным фактором, от которого зависит выбор решения, является наличие готовых модулей. Микросхема микроконтроллера содержит множество разных модулей, но все те необходимые модули, которых она не включает, прихо­дится реализовывать в виде дополнительных микросхем. Технология FPGA позво­ляет конструктору создавать любые логические схемы. Многие системы содержат схемы для выполнения достаточно типичных задач, как, например, интерфейсы ввода-вывода или схемы таймера. Такие схемы должны реализовываться в виде библиотечных модулей. Хорошо, если имеются и другие полезные модули. Скажем, для систем обработки сигналов библиотека может содержать типичные фильтры и быстрые умножители. Или же, если разрабатываемая система должна подключаться к другому компьютеру через стандартную шину, такую как PCI, за­дача конструктора будет проще, если интерфейс PCI уже реализован в виде гото­вого модуля.