Библиотека

Система на одной микросхеме

К. Хамахер, З. Вранешич, С. Заки

«Огранизация ЭВМ» 5-е издание. К.: СПб.: Питер; Киев: Издательская группа BHV, 2003.

Встроенная система должна состоять из минимального количества микросхем -в идеале это может быть всего лишь одна микросхема. В очень простых случаях все необходимые функции реализуются с помощью единственного коммерческого микроконтроллера. Однако в сложных системах это невозможно. Отдельные микроконтроллеры специально ориентированы на определенные задачи, которые трудно реализовать с применением универсальных микроконтроллеров. Например, микроконтроллер для видеоигр должен включать схемы обработки видеоизображений и звука. И совершенно иные требования предъявляются к микроконтроллерам для лазерных принтеров или сотовых телефонов.

Разработка сложного микроконтроллера - задача не из простых, требующая больших усилий и времени. Однако для большинства коммерческих продуктов время разработки должно быть относительно коротким. И если конструктор воспользуется существующими и достаточно удобными модулями, разработка может значительно ускориться. Одним из необходимых модулей является ядро процессора. Заключив соответствующее лицензионное соглашение, можно приобрести процессорное ядро одной из многочисленных компаний-производителей. Кроме того, можно приобрести схемы АЦП и ЦАП, а также схемы цифровой обработки сигналов (Digital Signal Processing, DSP). Собрав готовые модули, конструктор проектирует оставшиеся схемы - и система готова.

В разделе 9.7.3 мы упоминали о том, что ядро процессора ARM разработано 3 для использования в качестве компонента более крупных систем. Еще один инте-ресный пример представляет собой ядро CompactRISC компании National Semiconductor. Одной из его особенностей является способность масштабироваться от 8 до 64 разрядов. В нем имеется простой 3-ступенчатый конвейер и встроенная память: 40 Кбайт ROM и 1,4 Кбайт RAM. Блок шинного интерфейса добавляется только, если требуется внешняя память. Таким образом, можно подобрать ядро та-кой сложности, которая соответствует потребностям разрабатываемой системы.

Производители ядер и других модулей продают не микросхемы, а их структу-ру. По сути дела, они продают идеи, а не физические компоненты. Их продукты служат примерами интеллектуальной собственности и могут использоваться дру-гими компаниями для разработки собственных микросхем.

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

Программируемые пользователем вентильные матрицы 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 уже реализован в виде готового модуля.