РАЗРАБОТКА ВЫСОКОПРОИЗВОДИТЕЛЬНОЙ ВЫЧИСЛИТЕЛЬНОЙ СИСТЕМЫ НА БАЗЕ IP-ЯДРА ДЛЯ КОСМИЧЕСКОЙ НАУЧНОЙ АППАРАТУРЫ

Автор: К. И. Сухачёв, К. Е. Воронов, А. С. Дорофеев, Д. А. Шестаков, А. А. Артюшин

Журнал: Научное приборостроение @nauchnoe-priborostroenie

Рубрика: Разработка приборов и систем

Статья в выпуске: 4 т.32, 2022 года.

Бесплатный доступ

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

ПЛИС, IP-ядро процессора, микроконтроллеры, бортовые системы

Короткий адрес: https://sciup.org/142235508

IDR: 142235508   |   DOI: 10.18358/np-32-4-i88106

Текст научной статьи РАЗРАБОТКА ВЫСОКОПРОИЗВОДИТЕЛЬНОЙ ВЫЧИСЛИТЕЛЬНОЙ СИСТЕМЫ НА БАЗЕ IP-ЯДРА ДЛЯ КОСМИЧЕСКОЙ НАУЧНОЙ АППАРАТУРЫ

При разработке научной аппаратуры (НА) для космических исследований приоритетным является использование высоконадежной элементной базы. Часто дополнительным условием является применение отечественной элементной базы. При наличии импортных аналогов, более выгодным и удобным является проведение макетирования и отладки электронных систем именно на них с дальнейшим переводом разработанных систем на электрорадиоизделия (ЭРИ) отечественного производства. В связи с чем возникает необходимость разработки универсального решения, которое можно было бы применять для систем управления, обработки и сбора информации вне зависимости от применяемой элементной базы [1]. Использование стандартных микроконтроллеров (МК) для данных целей затруднительно, т.к. перенос проекта с одного типа МК на другой часто вызывает необходимость существенной доработки программы. А многие стойкие образцы МК снабжены однократной памятью, что существенно усложняет процесс отладки программы. К тому же использование максимально мощного, стойкого к внешним воздействиям МК с развитой периферией часто бывает не выгодно экономически. Для решения данных проблем известны несколько конструкций синтезированных микропроцессоров, описанных в научных статьях [1–8].

В данной статье приводится пример реализации мощной вычислительной системы на базе интегральных микросхем (ИМС) вида ПЛИС — программируемых логических интегральных схем различных производителей. Предложенное решение является универсальным и подходит для реа- лизации на любых микросхемах FPGA (Field-Programmable Gate Array, программируемая пользователем вентильная матрица, ППВМ) как отечественного, так и импортного производства.

ОПИСАНИЕ ГЛАВНОГО ПРОЦЕССОРНОГО ЯДРА

Вычислительная система построена на базе разработанного процессорного IP-ядра, названного "NMR", являющегося процессором с гарвардской архитектурой, и содержит отдельные шину команд, шину данных и несколько шин периферии. Разрядность адреса памяти программ составляет 32 бита, разрядность шины инструкций 16 бит, однако сами инструкции могут иметь различную длину: 16 бит или 32 бита. Разделение некоторых команд на две части предусмотрено архитектурой ядра и не отражается на программе, т.к. система управления процессора по типу команды автоматически определяет смещение адреса. Структура командного слова представлена на рис. 1.

Система команд и архитектура "NMR" разработана специально для работы с внешней памятью программ, организованной в слова по 16 бит, т.к. данная организация памяти является распространенной как в импортной, так и отечественной номенклатуре ЭРИ, в том числе существуют высоконадежные однократно программируемые ПЗУ, например РР45РТ3У. Данная память имеет повышенную стойкость к внешним факторам и организацию 128 К × 16 [9]. Структура IP-ядра "NMR" представлена на рис. 2.

Предполагается, что память программ будет работать на пониженной относительно ядра процессора частоте. Поэтому в организации системы

Основная часть командного слова

р Расширение

Код команды

Операнд 1

__VАдрес регистра

£7 Адрес младшего сектора ОЗУ

I I VI ГП ГППI I Ы АдРес части периферии

Операнд 2

Операнд 3

„Дополнительный указатель

Дополнительная часть командного слова

1 Информация из памяти программ

| ^    | | | | | 15 71 | | | | | У Полный адрес ОЗУ

Полный адрес периферии

'—Ардеса регистров блока А и блока В

Рис. 1. Структура командного слова

256X16 510byte

RAM L

-^■А-сектор ОЗУ

Q ^ddress | data

65279X16 130kbyte

Обработчик прерываний

IP-ядро "NMR"

Буфер инструкции

Системный счетчик

Системный буфер

Рис. 2. Структура IP-ядра процессора "NMR"

RAM

REG_A

Q | address, data | WE

REG_B

Q [address | data | WE

Старший ..сектор ОЗУ Младший

Шина у пр. АЛУ

Декодер и конбейер

Главный КА

Счетчик инструкций

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

со считыванием частей команд из памяти, что позволяет повысить быстродействие процессора, т.к. память перестает быть узким местом и длительность процессорного такта в среднем соответствует длительности считывания 32-битного командного слова из памяти программ.

В архитектуру "NMR" входит массив регистров общего назначения (РОН), разделенный на два независимых блока REG_A и REG_B. Каждый блок содержит 256 32-битовых регистров. С регистровой памятью возможны все доступные операции, кроме специальных инструкций из системы команд процессора. Система команд "NMR" приведена в Приложении (табл. П1–П5).

Блок работы с оперативной памятью состоит из нескольких частей. Первая часть — для работы с быстрым внутренним банком ОЗУ, который имеет строение, схожее с регистрами общего назначения, и использует внутреннюю ОЗУ ПЛИС, которая имеет разрядность шин данных и адреса по 16 бит, что позволяет адресовать до 131 Кбайт памяти. Первые 256 ячеек ОЗУ (младший сектор) позволяют выполнять большее количество доступных операций, чем с остальным объемом ОЗУ, что позволяет снизить нагрузку на блоки РОН. В "NMR" предусмотрена возможность подключения внешнего ОЗУ через IP-контроллер, для чего предназначены регистры расширения и входные линии внешних сигналов. В зависимости от типа внешнего ОЗУ (SRAM, SDRAM, DDR) IP-контроллер может отличаться.

В системе команд процессора предусмотрены инструкции для работы с динамической памятью, такие как пакетная запись и чтение блоками объемом до 131 Кбайт, остальные функции по взаимодействию непосредственно с ИМС внешнего ОЗУ выполняет IP-контроллер внешнего ОЗУ.

Процессор содержит коммутатор, внешние порты которого буферизированы регистрами специального назначения (РСН). РСН необходимы для работы с блоками регистровой памяти, банком ОЗУ, а также с внешними шинами процессора. В системе команд (Приложение, табл. П1) содержатся инструкции прямого взаимодействия с РСН, что позволяет осуществлять гибкое управление (различные варианты косвенной адресации) и ускорять операции чтения / записи, копирования секторов, потоковое чтение периферии регистровой памяти и ОЗУ. При использовании стандартных операций, связанных с перемещением данных (Приложение, табл. П2), система управления процессором автоматически выполняет все операции с системными регистрами: адресацию, тактирование блоков, выставление и чтение данных с банков памяти. Все периферийные модули подключаются через универсальную адресуемую шину "HAVOC" (Hexadecimal Addressable Vast Outer Connection).

Для чтения данных из шины "HAVOC" используется внешний модуль мультиплексора шины, управляемый адресным пространством данной шины. Ядро "NMR" универсально и было испытано на разных ИМС ПЛИС, полученные характеристики ядра сведены в таблицу и представлены в Приложении (табл. П6).

Система команд "NMR" поддерживает условные и безусловные команды переходов, список которых представлен в Приложении (табл. П3).

В систему команд включены команды mark , позволяющие делать аппаратные отметки по ходу исполнения программы, для данной операции доступны как блоки РОН, так и младший сектор ОЗУ. Условные переходы при выполнении условия позволяют увеличить значения счетчика инструкции от 1 до 255. В пропущенной области может находиться ветвь программы, обрабатываемая при невыполнении условия, либо переход на другой сектор памяти, если данной ветви 255 ячеек памяти недостаточно.

Логические и арифметические операции выполняются на 32-битном АЛУ. Доступные на АЛУ операции представлены в Приложении, табл. П4. Ядро "NMR" разработано как универсальное решение для любых ИМС FPGA, поэтому из команд исключены операции аппаратного деления и умножения, т.к. не во всех ИМС есть соответствующие аппаратные блоки. Для выполнения более сложных математических, вычислительных и специальных операций предусмотрена возможность подключения и взаимодействия с вычислительным сопроцессором, который, если ресурсы ИМС это позволяют, может быть размещен как на той же FPGA, так и в отдельной ИМС [10].

Для взаимодействия с сопроцессором существует выделенная скоростная шина, которая позволяет блоками до 256 байт осуществлять пересылку информации между банком ОЗУ "NMR" и ОЗУ сопроцессора. Сопроцессор имеет выделенную линию прерывания. За работу со специальными средствами процессора отвечает последний блок команд (см. Приложение, табл. П5).

Для удобства работы с системой команд в настоящий момент ведется разработка компилятора, сейчас для отладки используется транслятор команд с функцией определения величины смещения при условном переходе, автоматического назначения РОН и навигации по памяти программ. Пример кода и этапы его преобразования представлены в табл.

Программа состоит из объявления параметров памяти, обнуления необходимых РОН, инициализации блоков периферии, в том числе контроллера прерывания. Далее запускается бесконечный цикл с периодической отправкой на внешний порт инкрементируемой переменной.

Табл. Этапы преобразования программы

Исходная программа

Команды процессора

Данные в MIF-файле

#memory size: 8192

A0<=16'd0

0 : 1024

#first address: 1024

A0><

1 : 8000

#interrupt file: C:\NMR\inter1.txt

A0<=16'd0

2 : 8100

// zeroing the register, optional:

B0<=16'd0

3 : 1024

A0<=16'd0

B0><

A0><

B0<=16'd100

1022

: 1024

A0<=16'd0

A1<=16'd0

1023

: 7424

// zeroing and writing regB0:

A1><

1024

: 0

B0<=16'd0

A1<=16'd200

1025

: 7936

B0><

PRH41<=16'd25

1026

: 7424

B0<=16'd100

PRH42<=16'd25

1027

: 0

// zeroing and writing regA1:

PRH40<=A0

1028

: 7680

A1<=16'd0

PRH1<=16'd1

1029

: 0

A1><

marck RAM1

1030

: 8192

A1<=16'd200

marck RAM2

1031

: 7680

// peripheral module configuration:

if(A0

1032

: 100

PRH41<=16'd25

PRH65535<=A0

1033

: 7425

PRH42<=16'd25

A0++

1034

: 0

PRH40<=A0

jamp RAM2

1035

: 7937

// activation of vector "1" interrupt:

A0<=16'd0

1036

: 7425

PRH1<=16'd1

jamp RAM1

1037

: 200

// naming, optional:

address>>8000

1038

: 7209

name A0 as counter;

delayA1

1039

: 25

name B0 as limit;

PRH40<=A0

1040

: 7210

let PRH40 as SINT;

intoff

1041

: 25

let PRH65535 as outport1;

1042

: 4352

// program:

1043

: 40

pointA:

1044

: 7169

while (counter

1045

: 1

outport1=counter;

1046

: 10753

counter++;

1047

: 10754

}

1048

: 12032

A0<=16'd0

1049

: 4

goto pointA;

1050

: 4352

// sectop program at 8000:

1051

: 65535

address>>8000

1052

: 16384

delayA1

1053

: 11522

SINT=counter;

1054

: 7424

intoff

1055

1056

1057

8000

8001

8002

8003

: 0

: 11521

: 0

: 32001

: 4352

: 40

: 32515

Рис. 3. Осциллограммы исполнения тестовой программы из табл.

Процесс прерывается по сигналу о готовности от модуля передатчика, который захватывает значение переменной и начинает отправку, по завершении которой вызывает прерывание. Программа прерывания описана по адресу начиная с 8000-й ячейки.

На рис. 3 и 4 показаны осциллограммы выполнения программы из табл. на тестовой плате с EP3C25 на частоте ядра и периферии 50 МГц. На рис. 3 представлен полный цикл, в котором выполнение основной программы (инкремент и вывод переменной из РОН в шину периферии (ШП). Сигнал 4 на рис. 3 — младший выводимый разряд переменной counter. Проверка условия и условный переход, инкремент одного из РОН, вывод значения в ШП и прыжок на проверку условия (основная программа) занимают примерно 260 нс. На рис. 4 показана реакция на прерывание и разброс времени реакции.

Рис. 4. Отладочные комплекты систем на ядре "NMR" с использованием разных ИМС FPGA

Система управления на базе процессора "NMR"

Для настройки и испытания разработаны две отладочные платы (Приложение, рис. П) на базе ИМС ВЗПП 5578ТС034 и ИМС Intel EP3C25, которая также имеет аналог из каталога ПЛИС ВЗПП 5578ТС094 [9]. Для удобства отладки и испытаний в EP3C25, для хранения небольших программ использовалась ROM-память на базе M9K блоков с загрузкой из конфигурационной flash-памяти EPCS16 в начальный момент. Для исполнения больших программ применялась внешняя ИМС ОЗУ с загрузкой из внешней flash сторонним IP-модулем. Для подачи инструкций ядру внутри 5578ТС034 использовалась плата с EP3C25, подключенная шлейфом — шиной памяти программ.

Результаты, представленные в Приложении, табл. П6, для данных ИМС (рис. 3), изначально получены средствами моделирования в среде Quar-tusII и подтверждены испытаниями. По вре-меннόму анализу QuartusII, разработанное ядро в семействе FPGA Flex может работать на частотах от 23.5 МГц, однако стабильная работа ядра в 5578ТС034 (аналог) была получена на частоте 20 Мгц, что не является критичным, и, скорее всего, данное явление вызвано особенностями печатной платы и применением шлейфового соединения по шине памяти программ. Ядро в ИМС EP3C25 стабильно работало на частоте до 100 МГц (был применен модуль PLL).

По результатам проделанной работы, проведенным виртуальным и реальным испытаниям, а также с учетом ранее разработанных IP-модулей была предложена структурная схема высокопроизводительной системы обработки и управления на отечественной компонентной базе повышенной стойкости. Применялись и компоненты без повышенной стойкости, например накопитель на flash-памяти, было предусмотрено резервирование. Структурная схема разработанной системы представлена на рис. 5.

Накопитель данных

16М (2М х 8)

4 /

-г—► 1636РР4У

2Q,

20,

20,

Интерфейсы и порты ббода-быбойа,

Внешняя ОЗУ

ВыбоЗы программируемые пользователем (ВПП)

4М(512Кх8)

■Х^ 1645РУ5У

4М(512Кх8 )

-X 1645РУ5У

4М(512Кх8) 8

-\ 1645РУ5У

1636РР4У

16М (2М х 8)

1636РР4У

16М (2М х 8)

Flash память

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

2М (128К х 16)

2М(128Кх 16)

1645РТЗУ

2М(128Кх 16)

1645РТЗУ

1645РТЗУ

ISE ВПП стойкая ИМС

5578ТС034

СОПРОЦЕССОР

ПРОЦЕССОР "NIGHTMARE"

5578ТЕ034, 5576ХС6Т

Генератор 20МГц

Генератор 20МГц

5578ТЕ034, 5576ХС6Т

Блок периферии

прерывании периферии

Регистры расширения

Стойкая однократная ПЗУ

Рис. 5. Структурная схема системы обработки и управления на базе процессорного IP-ядра "NMR"

ВЫВОДЫ

Показана возможность создания производительный вычислительной системы на базе отечественной стойкой элементной базы, в качестве основного компонента выступает ИМС ПЛИС типа 5578ТС034 или более емкие образцы. Предложен вариант создания системы управления и обработки с использованием разработанного процессорного ядра и периферийных модулей. Проведено

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

ПРИЛОЖЕНИЕ

Табл. П1. Система команд с регистрами специального назначения (РСН)

Команда

Основ. часть

Доп. часть

Описание команды

о

О

СЯ

&

В

О

в О

ATA<=X

1

X

Запись числа в системный регистр адреса ATA блока рег. А

ATB<=X

2

X

Запись числа в системный регистр адреса ATA блока рег. В

ATR<=X

3

1

X

Запись числа в системный регистр адреса ATR ОЗУ

ATP<=X

3

2

X

Запись числа в системный регистр адреса ATR ШП "HAVOC"

ATA<=B#

8

#

Запись в специальные регистры адресов (ATA, ATB, ATR, ATH) содержимого ячеек с адресом [#] из блоков рег. А или рег. В в зависимости от команды

ATB<=A#

9

#

ATR<=A#

10

#

ATP<=A#

11

#

A<=RAM

4

1

Запись в блок рег. А или рег. В по заранее установленным адресам в регистрах адреса ATA, ATB данных из ОЗУ или ШП "HAVOC" по также заранее установленным адресам в специальных регистрах адреса ATR, ATH соответственно

A<=PRH

4

4

B<=RAM

5

1

B<=PRH

5

4

Табл. П1. Продолжение

Команда

Основ. часть

Доп. часть

Описание команды

о

О

СЯ

&

В

О

в О

A<=RAM+

4

2

Запись в блок рег. А или рег. В по заранее установленным адресам в регистрах адреса ATA, ATB данных из ОЗУ или "HAVOC" по также заранее установленным адресам в специальных регистрах адреса ATR, ATH соответственно, значения в которых после записи инкрементируются

A<=PRH+

4

5

B<=RAM+

5

2

B<=PRH+

5

5

A+<=RAM+

4

3

Запись в блок рег. А или рег. В по заранее установленным адресам в регистрах адреса ATA, ATB данных из ОЗУ или ШП "HAVOC" по также заранее установленным адресам в специальных регистрах адреса ATR, ATH соответственно, значения всех регистров адреса инкрементируются

A+<=PRH+

4

6

B+<=RAM+

5

3

B+<=PRH+

5

6

RAM<=A

6

1

Запись в ОЗУ или ШП "HAVOC" по заранее установленным адресам в регистрах ATR и ATH соответственно данных из блоков рег. А или рег. В

с также предустановленными адресами в регистрах ATA и ATB

RAM<=B

6

4

PRH<=A

7

1

PRH<=B

7

4

RAM+<=A

6

2

Запись в ОЗУ или ШП "HAVOC" по заранее установленным адресам в регистрах ATR и ATH соответственно данных из блоков рег. А или рег. В

с также предустановленными адресами в регистрах ATA и ATB. Значения ATR или ATH после операции записи инкрементируются

RAM+<=B

6

5

PRH+<=A

7

2

PRH+<=B

7

5

Табл. П1. Окончание

Команда

Основ. часть

Доп. часть

Описание команды

s

ci

О

(N ci

О

ci в

О

RAM+<=A+

6

3

Запись в ОЗУ или ШП "HAVOC" по заранее установленным адресам в регистрах ATR и ATH соответственно данных из блоков рег. А или рег. В

с также предустановленными адресами в регистрах ATA и ATB. Значения всех регистров адреса после записи инкрементируются

RAM+<=B+

6

6

PRH+<=A+

7

3

PRH+<=B+

7

6

RAM<=PRH

6

7

Обмен данными между ОЗУ и ШП "HAVOC" с предустановленными адресами в РСН ATR и ATH с инкрементированием адреса в регистрах ATR и ATH или без в зависимости от команды

PRH<=RAM

7

7

RAM+<=PRH

6

8

PRH+<=RAM

7

8

P=>R(X)

12

Запись из ШП в ОЗУ (код 12) или наоборот (код 13) блока данных объемом X слов, по предустановленным адресам в регистрах ATR, ATH с инкрементом адреса ОЗУ в ATR

R(X)=>P

13

Табл. П2. Система команд перемещения и записи

Команда

Основ. часть

Доп. часть

Описание команды

о

ci в

О

СЯ ci в

О

ci в

О

RAM•<=A#

15

#

Запись в ОЗУ или ШП "HAVOC" по адресу [•] содержимого ячейки [#] блоков рег. А или рег. В в зависимости от команды

RAM•<=B#

16

#

PRH•<=A#

17

#

PRH•<=B#

18

#

Табл. П2. Окончание

Команда

Основ. часть

Доп. часть

Описание команды

s

ci

О

(N ci

О

ci в

О

A#<=RAM•

19

#

Запись в ячейку [#] блоков рег. А или рег. В из адреса [•] ОЗУ или ШП в зависимости от команды

A#<=PRH•

20

#

B#<=RAM•

21

#

B#<=PRH•

22

#

B#<=A•

23

#

Запись в ячейку [#] блока рег. В из ячейки [•] блока рег. А

A#<=B•

24

#

Запись в ячейку [#] блока рег. А из ячейки [•] блока рег. В

RAM#<= X

27

#

X

Запись ОЗУ, ШП "HAVOC" или блоки рег. А или рег. В с адресом [#] числа ## из памяти программ. Для ОЗУ и ШП доступны только первые 256 адресов. Для 32-битных регистров запись осуществляется в младшие 16 бит

PRH#<= X

28

#

X

A#<= X

29

#

X

B#<= X

30

#

X

А#><

31

#

Обмен старших 16 бит на младшие в 32-битной ячейке с адресом [#] блоков рег. А или рег. В

B#><

32

#

A#<=A•

33

#

Перемещение внутри блока одного блока РОН: запись в ячейку [#] ячейки [•]

B#<=B•

34

#

Табл. П3. Система команд переходов по пространству адреса программ

Команда

Основ. часть

Доп. часть

Описание команды

о

ci в

О

СЯ ci в

О

ci в

О

mark A#

40

#

Сохранение в ячейке [#] блока регистров А или В текущего номера инструкции (значение счетчика инструкций)

mark B#

41

#

Табл. П3. Окончание

Команда

Основ. часть

Доп. часть

Описание команды

о

О

СЯ

&

В

О

в О

mark RAM#

42

#

Сохранение в ячейке [#] младшего сектора ОЗУ текущего номера инструкции (значение счетчика инструкций)

jamp A#

43

#

Безусловный переход по адресу из ячейки [#] блоков регистров А или В, а также из ячейки [#] младшего сектора ОЗУ (присвоение счетчику инструкций значения из ячейки [#])

jamp B#

44

#

jamp RAM#

45

#

if(A#>B•)up X

46

#

X

Условный переход. Если условие выполняется, происходит прыжок на X значений вперед, иначе выполнение программы идет по порядку. Для проверки условия берутся ячейки [#] и [•] из РАЗНЫХ блоков регистров А и В соответственно

if(A#

47

#

X

if(A#=B•)up X

48

#

X

if(A#!=B•)up X

49

#

X

Табл. П4. Логические и арифметические команды

Команда

Основ. часть

Доп. часть

Описание команды

£

в О

СЯ

&

В

О

в О

A#+X

60

#

X

Операция: сложение содержимого ячейки [#] блоков регистров А или В и 16 битного числа X из памяти программ

B#+X

61

#

A#-X

62

#

Операция: вычитание содержимого ячейки [#] блоков регистров А или В и 16 битного числа X из памяти программ

B#-X

63

#

A#++

64

#

Инкремент ячейки [#] блока регистров A

B#++

65

#

Инкремент ячейки [#] блока регистров B

A#--

66

#

Декремент ячейки [#] блока регистров A

Табл. П4. Продолжение

Команда

Основ. часть

Доп. часть

Описание команды

о

О

СЯ

&

В

О

в О

B#--

67

#

Декремент ячейки [#] блока регистров B

A#<=A•andB◊

68

#

Логические операции (and; or; xor) между ячейками РАЗНЫХ блоков регистров: ячейка блока регистров А с адресом [•] и ячейка из блока регистров B с адресом [◊]; результат помещается в ячейку [#] блока регистров A, адрес помещения результата может совпадать с адресом [•] операнда блока регистров А, в таком случае исходное значение будет замещено результатом операции

B#<=A•andB◊

69

#

A#<=A•orB◊

70

#

B#<=A•orB◊

71

#

A#<=A•xorB◊

72

#

B#<=A•xorB◊

73

#

A#<=A•+B◊

74

#

Математические операции сложения или вычитания между ячейками [◊], [•] РАЗНЫХ блоков рег. А и рег. В; результат операции помещается в ячейку [#] блоков рег. А и рег. В в зависимости от команды

B#<=A•+B◊

75

#

A#<=A•-B◊

76

#

A#<=B•-A◊

77

#

B#<=A•-B◊

78

#

B#<=B•-A◊

79

#

notA#

80

#

Логическое побитовое отрицание содержимого ячейки [#] блоков рег. А и рег. В в зависимости от команды

notB#

81

#

mask(X)AL#

82

#

X

Побитовая маска младших (код 82) или старших (код 83) 16 бит 32-битной ячейки [#] блока регистров А с числом X

mask(X)AH#

83

#

X

mask(X)BL#

86

#

X

Побитовая маска младших (код 86) или старших (код 87) 16 бит 32-битной ячейки [#] блока регистров В с числом X

mask(X)BH#

87

#

X

Табл. П4. Окончание

Команда

Основ. часть

Доп. часть

Описание команды

о

О

СЯ

&

В

О

в О

rotAL#

84

#

Операция вращения числа в младшей (код 84) и старшей (код 86) области ячейки [#] блока рег. А или всего 32битового числа ячейки [#] рег. В (код 88)

rotAH#

85

#

rotBF#

88

#

A#<< X

89

#

0

X

Сдвиг вправо или влево содержимого ячейки [#] блока регистров А или В на число X

A#>> X

89

#

1

X

B#<< X

90

#

0

X

B#>> X

90

#

1

X

<

91

#

Сдвиг вправо или влево содержимого ячейки [#] блока регистров А или В на 1 разряд

>>A#

92

#

Табл. П5. Система дополнительных команд

Команда

Основ. часть

Доп. часть

Описание команды

о ^

в О

СЯ

&

В

О

О

R#+X =>DTD

93

#

X

Отправка или получение в/от сопроцессора пакета данных из/в ОЗУ объемом до X слов, начиная с адреса [#] ОЗУ

R#+X <=DTD

94

#

X

adr<=A#

95

#

Запись в специальный регистр ADR ячейки [#] блока рег. А

A#<=adr

96

#

Запись в ячейку [#] блока рег. А содержимого регистра ADR

adr+8'd X

97

X

Увеличение содержимого специального регистра ADR на X

stat<=A#

##

#

Запись в специальный регистр Status ячейки [#] блока рег. А

Табл. П5. Окончание

Команда

Основ. часть

Доп. часть

Описание команды

о

О

СЯ

&

В

О

в О

A#<=stat

##

#

Запись в ячейку [#] блока рег. А содержимого регистра Status

A#<=GPI1

##

#

Запись данных со входа GPI1 в ячейку [#] блока рег. А

B#<=GPI2

##

#

Запись данных со входа GPI1 в ячейку [#] блока рег. А

intoff

##

Команда выхода из прерывания

sleep

##

Остановка процессора, запуск процессора возможен по сигналам прерывания

delayA255

##

#

Аппаратная задержка на кол-во тактов из ячейки [#] рег. А

Табл. П6. Характеристики ядра "NMR" в разных ИМС ПЛИС

Параметр

ПЛИС

5578 ТС034

EPF10K100-EBC356-3

EP2C8F-256C6

EP3C16-U484C6

EP3C40-F484С6

EP355F-780C8

Занимаемый объем

4807 (96%)

4807 (96%)

3519 (43%)

3540 (23%)

3535 (9%)

3560 (6%)

Занимаемая память [бит]

32768 (67%)

32768 (67%)

147456 (85%)

81920 (82%)

147456 (13%)

278528 (12%)

Кол-во РОН

512

512

512

512

512

512

Объем ОЗУ

2 КБ

2 КБ

16 КБ

8 КБ

16 КБ

32 КБ

Операций в секунду

6.4 MIPS

7.5 MIPS

25.4 MIPS

47.0 MIPS

45.3 MIPS

37.2 MIPS

Макс. частота

20 МГц

23.5 МГц

79 МГц

149 МГц

141 МГц

116 МГц

Система команд

108 инстр.

108 инстр.

полная

полная

полная

полная

Доп. проц.

внешний

внешний

Akeron

Akeron

Akeron + Sip CPU

Akeron + Sip CPU

Время отклика на прерывание, не более

300 нс

255 нс

76 нс

40 нс

42 нс

51 нс

Рис. П. Отладочные комплекты систем на ядре "NMR" с использованием разных ИМС FPGA

Список литературы РАЗРАБОТКА ВЫСОКОПРОИЗВОДИТЕЛЬНОЙ ВЫЧИСЛИТЕЛЬНОЙ СИСТЕМЫ НА БАЗЕ IP-ЯДРА ДЛЯ КОСМИЧЕСКОЙ НАУЧНОЙ АППАРАТУРЫ

  • 1. Воронов К.Е., Сухачев К.И., Воробьев Д.С. Разработка бортового модуля управления на базе вычислительного IP-ядра // Ракетно-космическое приборостроение и информационные системы. 2021. Т. 8, № 1. C. 24–38. DOI: 10.30894/issn2409-0239.2021.8.1.24.38
  • 2. Haskell R.E., Hanna D.M. A VHDL--Forth Core for FPGAs // Microprocessors and Microsystems. 2004. Vol. 28, is. 3. P. 115–125.
  • 3. Ehliar A., Karlstrom P., Liu D. A high performance microprocessor with DSP extensions optimized for the virtex-4 FPGa // 2008 International Conference on Field Programmable Logic and Applications. IEEE. 2008. P. 599–602.
  • 4. Tamagnone M., Martina M., Masera G. An application specific instruction set processor based implementation for signal detection in multiple antenna systems // Microprocessors and Microsystems. 2012. Vol. 36, is. 3. P. 245–256.
  • 5. Зотов В. PicoBlaze — семейство восьмиразрядных микропроцессорных ядер, реализуемых на основе ПЛИС фирмы Xilinx // Компоненты и технологии. 2003. № 30. С. 194–198.
  • 6. Jesman R., Vallina F.M., Saniie J. MicroBlaze tutorial creating a simple embedded system and adding custom peripherals using Xilinx EDK software tools. Embedded Computing and Signal Processing Laboratory, Illinois Institute of Technology, 2006.
  • 7. Atehortúa J.C.B. Desarrollo e implementación del procesador soft-core LatticeMico32 en una FPGA. 2016. URL:
  • https://1library.co/document/ye9524eq-desarrolloimplementacion-procesador-soft-core-latticemicofpga.html
  • 8. Pokale M.S.M., Kulkarni M.K., Rode S.V. NIOS II processor implementation in FPGA: an application of data logging system // Int. J. Sci. Technol. Res. 2012. Vol. 1, is. 11.
  • 9. АО "Воронежский завод полупроводниковых приборов" (ВЗПП-С). Каталог изделий 2020 г. URL: http://www.vzpp-s.ru/production/catalog.pdf (дата обращения: 01.07.2022).
  • 10. Никитин А.А. Реализация радиационно-стойкого кодирования в рамках межкристальной связи систем, состоящих из нескольких программируемых логических интегральных схем // Космическая техника и технологии. 2018. № 4 (23). C. 100–110.
Еще
Статья научная