Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекция 8

.pdf
Скачиваний:
61
Добавлен:
11.04.2019
Размер:
280.56 Кб
Скачать

Встраиваемые процессоры.Микропроцессорное ядроPicoblaze.

Уменьшение литографических размеров и другие усовершенствования процессов производства интегральных схем ведут к непрерывному росту уровня их интеграции, который для наиболее сложных СБИС в настоящее время оценивается уже десятками миллионов вентилей. Быстродействие таких СБИС характеризуется рабочими частотами в несколько сотен мегагерц. На кристаллах с подобными параметрами можно разместить законченную систему обработки данных, обладающую к тому же высокой производительностью. В последние годы появились микросхемы, называемые «система на кристалле», «система на программируемом кристалле», «программируемая система на кристалле» и т. д. (обозначаются как SOC, System On Chip, или как SOPC, System On Programmable Chip, или как PSOC, Programmable System On Chip, или как CSOC, Configurable System On Chip и т. д.). Далее в качестве обобщающего термина будет применяться обозначение SOPC.

Стратегическая значимость возможности создания законченной системы на одном кристалле очевидна — такая система обладает высокими качественными показателями. Для подавляющего большинства разработчиков создание системы на одном кристалле осуществимо только на основе программируемых СБИС, т. к. заказное проектирование по экономическим соображениям возможно только при массовом производстве. Задача создания высококачественных законченных систем на одном кристалле решается более чем десятком крупных фирм в обстановке активной состязательности. Состязательность выражается как в конкурентном развитии двух направлений, отраженных в принятой нами классификации СБИС программируемой логики, так и в разработке многих разновидностей СБИС в рамках каждого из этих направлений. Представителями первого направления являются SOPC с однородной структурой (с конфигурируемостью всех областей кристалла, с полностью синтезируемыми блоками). Заметим, что однородность здесь понимается только как признак конфигурируемости всех областей кристалла, поскольку эти области содержат однотипные программируемые схемные ресурсы. Исключение составляют лишь некоторые области кристалла (схемы встроенной памяти, которые стали появляться в архитектурах ПЛИС, начиная с семейства FLEX10K, схемы управления тактовыми импульсами типа PLL или DLL и т. п.). В однородных SOPC реализуемые блоки могут размещаться в разных областях и создаваться соответствующим программированием. По своим архитектурным признакам SOPC, как правило, относятся к структурам комбинированного типа, в которых сочетаются признаки CPLD и FPGA с преобладанием признаков FPGA. В иностранной литературе применительно к однородным в указанном смысле SOPC иногда используют термин generic. SOPC блочного типа включают в себя как программируемые, так и фиксированные области, в которых жестко реализованы блоки с предопределенными функциями — аппаратные ядра (Hardcores, hard -ядра). В других областях кристалла размещается программируемая пользователем часть, чаще всего типа FPGA. В ходе развития блочных SOPC характер и сложность

1

аппаратных ядер изменяются. Вначале аппаратные ядра были относительно простыми, сейчас основным ядром сложных блочных SOPC нередко служит микропроцессор или микроконтроллер.

Встраиваемые процессоры Рассмотрим преимущества и недостатки СБИС двух развивающихся

направлений. В однородных SOPC уровень интеграции уже позволяет сконфигурировать на кристалле области процессора, памяти и периферийных схем. Современные средства САПР с их приспособленностью к взаимозаменяемым и стандартным решениям позволяют объединять на одном кристалле виртуальные компоненты (soft -ядра, IP) разных разработчиков. Правда, при использовании IP возникает проблема их приобретения, поскольку стоят они достаточно дорого. В однородных SOPC не достигаются предельные быстродействия ядер.

Hard -ядра реализуют блоки, полученные методами проектирования заказных схем. Такие блоки в сравнении с их soft - аналогами занимают на кристалле значительно меньшую площадь (в несколько раз), поскольку они не содержат средств конфигурирования и оптимизированы для выполнения заданной конкретной функции. Если принять площадь, занимаемую цифровым устройством, реализованным по методу «на стандартных ячейках», за единицу, то при реализации того же устройства в технологии LPGA (на БМК с лазерным программированием) площадь составит в среднем 3,3 единицы, для технологии MPGA — 1,6 единиц, а для ПЛИС— 10—20 единиц. По этим же причинам существенно (на 20—50%) возрастает быстродействие hard -ядер в сравнении с soft -ядрами. В то же время предопределенность функций hard -ядер снижает универсальность микросхемы (как говорят, уменьшает ее функциональную гибкость) и может сузить круг ее потребителей, что с точки зрения экономики является негативным фактором. Hard -ядра фиксированы на площади кристалла, что может затруднять решение задач размещения и трассировки для конфигурируемых областей микросхемы, препятствуя тем. самым реализации максимальных показателей логической емкости и быстродействия для программируемых ресурсов схемы. Во избежание больших потерь универсальности СБИС с hard -ядрами, для этих ядер отбираются только такие функциональные блоки, которые занимают значительную долю рынка.

Характерными примерами hard -ядер, помимо микропроцессоров и микроконтроллеров, могут служить блоки для реализации интерфейсов различных шин (в том числе шин PCI, VME), схемы поддержки интерфейса JTAG, множительные устройства для систем цифровой обработки сигналов. Заметим, что современные ПЛИС с hard -ядрами имеют архитектурную преемственность с прошлыми разработками. Например, уже несколько лет в состав микропроцессорных систем вводят FPGA, создавая тем самым как бы «островок программируемости» среди блоков жесткой структуры. С другой стороны, в составе ПЛИС тоже несколько лет назад стали появляться несложные аппаратные ядра, т. е. участки фиксированной структуры в окружении массива синтезируемой логики. Поэтому говорить о том, что во что встроено, порою можно по-разному.

2

Чем выше процент синтезируемой части микросхемы, тем больший контроль над реализацией получает разработчик проекта, но тем больше блоков при этом теряют оптимальность своих параметров. По поводу перспектив применения двух разновидностей SOPC высказываются разные мнения. Одни считают, что структуры однородного типа с их высокой степенью регулярности схем легче переводятся на новый технологический уровень, поэтому освоение новых технологий для блочных структур должно всегда несколько запаздывать, а замедленный выход продукции на рынок наносит изготовителю экономический ущерб. С другой стороны отмечается, что аппаратные ядра не только гарантируют улучшенные параметры блоков, но и упрощают деловую часть разработки проекта, устраняя для проектировщика взаимоотношения с третьими лицами (поставщиками IP). При этом отпадают лицензионные проблемы, платежи роялти и т. п., и вся техническая поддержка сосредотачивается в руках одного партнера — поставщика микросхем, а все затраты концентрируются в одном показателе (цене микросхемы). Так или иначе, но при решении вопроса о выборе той или иной SOPC приходится учитывать целый комплекс показателей.

СБИС программируемой логики образуют динамичный, быстро растущий сектор рынка. Интеграция все большего числа функциональных блоков в одном кристалле сопровождается сокращением площади плат при реализации проектов, повышением быстродействия устройств и систем и их надежности, уменьшением потребляемой мощности и стоимости. Возможность быстрой реконфигурации схем непосредственно в работающем устройстве открывает перспективы не только эффективной отработки прототипа проекта, но и создания принципиально новых структур с динамическим реконфигурированием и многофункциональным использованием аппаратных средств. При обсуждении вопросов применения SOPC возникает проблема выбора между однородными и блочными архитектурами, т. е. между soft- и hard-ядрами. Как отмечалось, в этой сфере имеются различные мнения. Наиболее бесспорной областью использования блочных SOPC являются системы высшего быстродействия, поскольку, как бы соблазнительно ни выглядели рекламные преувеличения, процессоры с рабочими частотами в сотни мегагерц, осуществимые для hard -ядер, находятся за пределами возможностей soft - ядер FPGA. В других, менее очевидных ситуациях, оценивается весь комплекс характеристик SOPC.В настоящее время развиваются обе разновидности SOPC, и успехи видны в обоих направлениях. Например, для SOPC типа generic фирмой Altera применено процессорное soft -ядро Nios, размещаемое на кристаллах семейств АРЕХ20К/КЕ и АРЕХ II. Уровень интеграции этих кристаллов настолько велик, что процессор занимает лишь малую долю их логических ресурсов, что считается вполне приемлемым. Фирма Xilinx разработала soft -ядро процессора Microblaze для своего семейства Virtex II. Это ядро обладает наивысшей для soft - ядер производительностью и работает на частотах до 125 МГц. Впечатляют успехи разработок hard -ядер процессоров. Эти ядра базируются на RISC -архитектурах процессоров фирм ARM Limited, MIPS Technologies и IBM Microelectronics, работают на частотах до 200 МГц и более, имеют 5—6 -ступенчатые конвейеры, выполняют скалярные операции, совершают большинство операций за один такт, занимают на

3

кристалле площадь 2—3 мм2 и ориентированы на малое потребление мощности. Стандартность архитектур таких процессоров позволяет пользоваться при их применении обширными инструментами и средствами проектирования, что снижает трудоемкость разработок и уменьшает время выхода продукции на рынок.

Микропроцессорное ядро Picoblaze

В качестве примера встраиваемого процессора рассмотрим софт - микропроцессорное ядро, спроектированное фирмой Xilinx для ПЛИС серий

Spartan-3, Virtex-2, Virtex-2PRO.

Рисунок 1 — Структура процессорного ядра Picoblaze для Xilinx Spartan-3, Virtex-2, Virtex-2PRO

Структурно ядро представляет собой блочную память программ и модуль KCPSM3 — собственно ядро, и обладает следующими характеристиками:

Разрядность шины данных — 8 бит;

разрядность шины адресов — 10 бит;

разрядность шины команд — 18 бит;

восьмиразрядное арифметическо-логическое устройство (АЛУ), реализующее логические функции, операции сложения, вычитания и сдвига;

поддержка 49 команд;

постоянное время выполнения всех команд — два машинных цикла;

объем блока регистров общего назначения —16 восьмиразрядных регистра;

возможность поддержки до 256 входных и выходных портов;

объем встроенного ППЗУ микропрограмм, реализуемого на основе блочной памяти ПЛИС, составляет 1024(18 разрядов);

объем ресурсов кристалла, необходимых для реализации микропроцессорного ядра PicoBlaze в ПЛИС семейства Spartan-3, ограничивается 96 ячейками , что составляет 5% от объема логических ресурсов кристалла XC3S200 и менее 0,3% от логической емкости ПЛИС

XC3S5000;

4

Производительность достигает 43–66 MIPS (в зависимости от типа используемого кристалла).

Архитектура микропроцессорного ядра Picoblaze Микропроцессорное ядро PicoBlaze основана на гарвардской архитектуре

(раздельные шины данных и команд). Такая организация магистралей процессора позволяет добиться высокой скорости выполнения операций. Структурное представление архитектуры микропроцессорного ядра PicoBlaze, предназначенного для применения в кристаллах семейств Spartan-3, Virtex-2, Virtex-2PRO, показано на рис. 2.

Рисунок 2 — Архитектура ядра PicoBlaze

Основными элементами архитектуры микропроцессорного ядра PicoBlaze,

реализуемого на основе ПЛИС семейств Spartan-II, Spartan-IIE, Virtex, Virtex-E,

являются:

восьмиразрядное АЛУ;

блок регистров общего назначения;

регистр статуса (флагов);

регистр фиксации флагов при выполнении

5

прерываний;

программный счетчик (счетчик команд);

блок управления вводом-выводом;

Стек имеет 32 уровня;

схема управления прерываниями;

блок управления выбором адреса следующей команды

блок дешифрации команд;

память программ.

Блок АЛУ выполняет логические и арифметические операции над

восьмиразрядными операндами. В качестве операндов может использоваться содержимое любого из шестнадцати регистров общего назначения, а также константы, указанные непосредственно в тексте команды. Результат выполнения операции заносится в тот же регистр, который являлся источником первого операнда. Регистр статуса содержит значения флагов (признаков), формируемых блоком АЛУ при выполнении арифметических и логических операций. Этот регистр содержит два разряда. В первый разряд записывается состояние флага нулевого результата ZERO Flag, а во второй — значение флага переноса CARRY Flag. Флаг нулевого результата ZERO Flag переключается в установленное состояние (состояние высокого логического уровня) в случае, если результатом арифметической или логической операции является нуль. При получении других результатов этот флаг сбрасывается в состояние низкого логического уровня. Флаг переноса CARRY Flag устанавливается в том случае, если в результате операции сложения из самого старшего разряда происходит перенос или заем при выполнении вычитания. Анализ состояния флагов, записанных в соответствующие разряды регистра статуса, производится при выполнении условных команд. Кроме того, регистр статуса принимает участие в процессе выполнения операций сдвига. Регистр фиксации флагов предназначен для сохранения текущих значений признаков результата операции АЛУ, записанных в регистр статуса, перед выполнением процедуры обслуживания прерывания.

Блок регистров общего назначения содержит шестнадцать восьмиразрядных регистров, обозначаемых по порядку s0... sF. Эти регистры предназначены для хранения данных, поступающих из входных портов ввода-вывода, операндов и результатов выполнения операций. Все регистры имеют одинаковый статус (полностью равноправны). Любой из них может использоваться в качестве аккумулятора.

Схема управления прерываниями формирует комбинацию управляющих сигналов, необходимых для выполнения процедуры обработки прерываний. Микропроцессорное ядро PicoBlaze изначально содержит единственную цепь сигнала прерывания. Для создания комплексной системы прерываний, поддерживающей комбинацию нескольких линий сигналов, следует использовать дополнительную логику, которая реализуется на основе свободных ресурсов кристалла.

Блок управления вводом-выводом предназначен для формирования адреса входного или выходного порта PORT_ID[7:0], к которому производится обращение,

6

а также сигналов WRITE_STROBE и READ_STROBE, указывающих тип выполняемой операции (записи или чтения в указанный порт). Адрес порта ввода-вывода может задаваться в программе в виде абсолютного значения или в форме ссылки на один из регистров общего назначения, содержимое которого определяет номер порта. Во время выполнения операции ввода INPUT данные из входного порта, номер которого определяет комбинация значений сигналов в шине адреса порта PORT_ID[7:0], могут быть загружены в любой из шестнадцати регистров общего назначения. Эта процедура сопровождается формированием импульсного сигнала READ_STROBE. При осуществлении операции вывода OUTPUT информация из любого регистра общего назначения может быть передана в выходной порт, номер которого указывает комбинация значений сигналов в шине адреса порта PORT_ID[7:0]. Выполнение операции вывода сопровождается стробом записи WRITE_STROBE. Память программ представляет собой запоминающее устройство, реализуемое в виде однопортового ОЗУ на основе блочной памяти кристалла Block SelectRAM, в котором хранится последовательность выполняемых команд.

Блок дешифрации команд на основании данных, поступающих с выходов программной памяти, формирует совокупность управляющих сигналов, необходимых для выполнения соответствующей операции, которые подаются на все блоки микропроцессорного ядра. Управление последовательностью выполнения команд в составе программы осуществляется с помощью программного счетчика. Сигналы на его выходах образуют адрес выборки следующей команды. Эти сигналы по шине адресов команд передаются на адресные входы программной памяти. Режим работы программного счетчика (счет или загрузка) определяется состоянием сигналов, формируемых в блоке управления выбором следующего адреса команды. В основном режиме при отсутствии прерываний, команд переходов, вызовов и возврата из подпрограмм содержимое программного счетчика автоматически увеличивается на единицу при исполнении текущей операции. Таким образом, реализуется последовательная выборка и выполнение команд программы. В процессе выполнения команд перехода в программный счетчик производится загрузка значения, соответствующего адресу, по которому осуществляется передача управления в программе. После исполнения команды перехода программный счетчик продолжает работу в инкрементном режиме, но, уже начиная с нового значения, которое было записано при ее выполнении. При вызове подпрограмм также осуществляется принудительное изменение содержимого программного счетчика. В него загружается значение, которое соответствует начальному адресу выполняемой подпрограммы. Перед этим прежнее содержимое программного счетчика заносится в стек (в регистр, адрес которого определяется текущим значением указателя стека). В процессе выполнения команд подпрограммы производится последовательное инкрементирование нового содержимого программного счетчика. После завершения подпрограммы, при выполнении команды возврата в основную программу, из стека извлекается последнее записанное значение адреса, которое увеличивается на единицу и загружается в программный счетчик. Тем самым осуществляется переход к выполнению

7

очередной команды, следующей после вызова подпрограммы. Так как глубина стека составляет 32 уровня, то он может хранить одновременно до 32 адресов возврата. Поэтому в процессе исполнения подпрограмм допускаются вложенные вызовы других подпрограмм. При очередном вложенном вызове подпрограммы содержимое программного счетчика заносится в следующий регистр стека. Процесс выполнения каждой вложенной подпрограммы завершается «выталкиванием» из стека последнего записанного значения, которое, увеличиваясь на единицу, заносится в программный счетчик. Процедура обработки прерывания выполняется подобно вызову подпрограммы, но имеются несколько отличий. Одно из них заключается в том, что при наличии активного уровня сигнала на входе прерывания в программный счетчик загружается адрес вектора соответствующей процедуры обработки. При этом кроме записи в стек адреса текущей исполняемой команды производится сохранение состояния признаков результата операции АЛУ (содержимого регистра статуса) на момент прерывания в регистре фиксации флагов. После завершения процесса обработки прерывания происходит автоматическое восстановление значений флагов в регистре статуса. В начальный момент времени функционирования микропроцессорного ядра, а также при подаче внешнего сигнала сброса, выходы программного счетчика устанавливаются в нулевое состояние (низкого логического уровня). Таким образом управление передается первой команде программы.

Команды, поддерживаемые процессорным ядром PicoBlaze

Совокупность команд, поддерживаемых микропроцессорным ядром PicoBlaze, можно разбить по функциональному признаку на шесть групп. К первой группе относятся команды, управляющие последовательностью выполнения операций в программе, и команды обработки подпрограмм. В эту группу входят команды переходов JUMP, вызова подпрограмм CALL и возврата из подпрограмм RETURN. Каждая из перечисленных команд представлена как в безусловной форме, так и в условном формате (то есть может исполняться только при выполнении определенного условия). Вторую группу образуют логические команды. Эти команды выполняют поразрядные операции «Логическое И» (поразрядное умножение) AND, «Логическое ИЛИ» (поразрядное сложение) OR, «Исключающее ИЛИ» XOR. В качестве операндов могут выступать содержимое любого регистра общего назначения и константа, указанная в тексте команды, а также содержимое двух регистров блока РОН. К этой же группе относится команда загрузки значения в регистр общего назначения LOAD. С помощью этой команды в выбранный регистр может записываться константа, указанная в тексте команды, или содержимое другого регистра блока РОН. В третью группу входят арифметические команды. Команды ADD и ADDCY предназначены для получения суммы двух операндов без учета и с учетом входного переноса соответственно. Операция вычитания также может выполняться без учета и с учетом флага переноса с помощью команд SUB и SUBCY соответственно. Значение одного из операндов, участвующих в арифметических операциях, содержится в регистре общего назначения, номер которого указан в тексте команды. В качестве второго операнда может использоваться значение, заданное непосредственно в коде

8

команды, или содержимое другого регистра блока РОН. Четвертую группу составляют команды сдвига. Они позволяют реализовать операции логического (арифметического) или циклического сдвига данных, записанных в регистре общего назначения, номер которого указан в тексте команды. В процессе выполнения одной команды сдвиг производится на один разряд. Сдвиг может осуществляться как влево (в сторону младшего разряда), так и вправо (в сторону старшего разряда). Операции циклического сдвига могут выполняться с участием разряда переноса регистра статуса. Пятая группа включает в себя команды вводавывода. Эти команды предназначены для организации обмена данными между регистрами, входящими в блок РОН, и портами ввода-вывода. Последняя группа объединяет команды, используемые для обслуживания прерываний. В нее входят команды разрешения ENABLE INTERRUPT и запрета прерываний DISABLE INTERRUPT.

Для симулирования и отладки программы рекомендуется использовать отладчик, разработанный для Picoblaze: pBlazIDE, распространяемый свободно.

Программирование микропроцессорного ядра Picoblaze

Исходный текст программы в кодах ассемблера записывается в файл с расширением [.psm]. Из этого файла ассемблер формирует VHDL-описание начального содержимого блочного ОЗУ, исполняющего роль программной памяти. Результирующий файл с расширением [.v] включается в состав разрабатываемого проекта и используется далее в процессе синтеза, моделирования, размещения и трассировки в кристалле. Ассемблер выполнен в виде DOS-приложения с названием KCPSM3.EXE. Этот файл должен располагаться в рабочем каталоге проекта вместе с шаблонами ROM_form.v и ROM_form.coe. Для активизации ассемблера используется командная строка, которая имеет формат kcpsm <название_файла_программы>[.psm]. Инициализация программной памяти микропроцессорного ядра с помощью набора данных, которые соответствуют машинным кодам разработанной программы, выполняется автоматически в процессе загрузки конфигурационной последовательности проекта в кристалл.

9

Соседние файлы в предмете Программирование логических интегральных схем