Выпуск #1/2024
А.В. Строгонов, О. Бордюжа, А.И. Строгонов
ЭФФЕКТИВНЫЙ ПОДХОД В РАЗРАБОТКЕ УПРАВЛЯЮЩИХ АВТОМАТОВ МИКРОПРОЦЕССОРНЫХ ЯДЕР
ЭФФЕКТИВНЫЙ ПОДХОД В РАЗРАБОТКЕ УПРАВЛЯЮЩИХ АВТОМАТОВ МИКРОПРОЦЕССОРНЫХ ЯДЕР
Просмотры: 417
DOI: 10.22184/1992-4178.2024.232.1.78.86
В статье рассмотрен эффективный подход к разработке управляющего автомата микропроцессорного ядра с применением системы визуально-имитационного моделирования Matlab/Simulink и последующей генерацией VHDL-кода для разработки проекта в САПР Quartus II.
В статье рассмотрен эффективный подход к разработке управляющего автомата микропроцессорного ядра с применением системы визуально-имитационного моделирования Matlab/Simulink и последующей генерацией VHDL-кода для разработки проекта в САПР Quartus II.
Теги: command system control machine matlab/simulink visual simulation system microprocessor core quartus ii cad system микропроцессорное ядро сапр quartus ii система визуально-имитационного моделирования matlab/simulink система команд управляющий автомат
Эффективный подход в разработке управляющих автоматов микропроцессорных ядер
А. В. Строгонов, д. т. н., О. Бордюжа, к. т. н., А. И. Строгонов
В России при участии НИУ МИЭТ организована Ассоциация вузов ЭКБ, решающих в том числе задачу подготовки специалистов для работы с архитектурой процессоров RISC-V, а также создана Школа синтеза цифровых схем на базе курса MIT в Сколково для быстрого освоения современных подходов к проектированию цифровых БИС. Архитектура RISC-V является дальнейшим развитием архитектуры MIPS, разработанной компанией MIPS Computer Systems. На архитектуре MIPS32 построен ряд российских процессоров, таких как Baikal-T от «Байкал Электроникс», «Мультикор» от АО НПЦ «ЭЛВИС» и КОМДИВ от НИИСИ РАН. Процессоры на базе RISC-V разрабатывают несколько российских компаний, в том числе Syntacore и CloudBEAR. В статье рассмотрен эффективный подход к разработке управляющего автомата микропроцессорного ядра с применением системы визуально-имитационного моделирования Matlab / Simulink и последующей генерацией VHDL-кода для разработки проекта в САПР Quartus II.
Предлагаемый читателям микропроцессор не относится к архитектуре MIPS, но как пример может быть полезен для наполнения курса лекций Школы синтеза цифровых схем. Простейший процессор с однотактной архитектурой из работы [1] состоит из двух взаимодействующих частей: тракт данных (память, регистры, АЛУ и мультиплексоры) и управляющий автомат (обычно представлен HDL-кодом), который получает текущую команду из тракта данных и в ответ сообщает ему, как именно выполнять эту команду. В частности, управляющий автомат генерирует адресные сигналы для мультиплексоров, сигналы разрешения работы для регистров и сигналы разрешения записи в память.
Процесс разработки микропроцессорного ядра рассмотрим на примере двух проектов. Проект 1 показывает применение системы визуально-имитационного моделирования Matlab / Simulink [2] с последующей генерацией VHDL-кода для разработки управляющего автомата в САПР Quartus II. Проект 2 демонстрирует разработку микропроцессорного ядра непосредственно в САПР Quartus II с использованием редактора конечных автоматов State Machine Editor.
Общие сведения
по проектируемому процессору
Воспользуемся системой команд гипотетического синхронного процессора, реализованного с помощью конечного автомата, с циклом работы в два такта [3]. В табл. 1 представлена система команд процессора с синхронной архитектурой. Процессор основан на использовании раздельных шин данных и команд.
Процессор ограничен двумя регистрами общего назначения (A и В), содержит указатель инструкций IP (счетчик команд) и регистр R для хранения адреса, с которого произошел вызов подпрограммы, поддерживает минимальный набор из 16 команд: команда пересылки «регистр-регистр» (XCHG), команды непосредственной загрузки (MOV), команда безусловного перехода к новому адресу (JMP), команды перехода по условию (JMPZ), набор арифметико-логических операций (ADD, SUB, AND, OR, XOR, DEC), команда обращения к подпрограммам CALL и команда возврата из подпрограмм RET [3].
Проект 1
В работах [4, 5] было показано, как с применением системы визуально-имитационного моделирования Matlab / Simulink разработать микропроцессорное ядро для реализации в базисе ПЛИС. Основная идея работы [5] – это реализация управляющего автомата микропроцессорного ядра с использованием визуально-графического представления в приложении StateFlow системы Matlab / Simulink [6]. StateFlow является интер-
активным инструментом разработки в области моделирования сложных, управляемых событиями систем. Он тесно интегрирован с Matlab и Simulink и основан на теории конечных автоматов [6].
Микропроцессор состоит из следующих блоков (рис. 1): ROM – ПЗУ команд (память программ); COP – блок выделения полей команды (дешифратор команд); ALU – 8‑разрядное АЛУ (управляющий автомат); RON – блок регистров общего назначения (8‑разрядные регистры А и B); RSN – блок регистров специального назначения, 8‑разрядный регистр R (стек команд) для обеспечения выполнения команд обращения к подпрограммам (CALL) и возврата (RET) и 8‑разрядный регистр IP (для хранения значений счетчика команд). Более подробное описание всех блоков можно найти в работах [4, 5]. На рис. 1 также представлена тестовая программа (прошивка), хранящаяся в ПЗУ. На рис. 2 продемонстрирован проект управляющего автомата микропроцессора, разработанный с помощью приложения StateFlow.
Далее с использованием Simulink HDL Coder системы Matlab / Simulink извлекается VHDL-код всех функциональных блоков микропроцессора (ПЗУ, дешифратора команд, регистров RON, RSN и ALU), а затем реализуется проект с асинхронным ПЗУ и с синхронным управляющим автоматом в базисе ПЛИС Cyclone V в САПР Quartus II.
Проект 2
Была поставлена задача реализовать с помощью редактора конечных автоматов (State Machine Editor) в САПР Quartus II управляющий автомат микропроцессорного ядра, функционирование которого бы полностью соответствовало диаграмме рис. 2. ПЗУ и дешифратор команд реализованы VHDL-кодом в Проекте 1. Остальные блоки реализуются на логических элементах или с использованием мегафункций (сумматор / вычитатель, шинный мультиплексор). Для детального ознакомления Проект 2 можно запросить у авторов работы.
Вследствие ограниченного функционала редактор конечных автоматов не позволяет, в отличие от приложения StateFlow системы Mathlab / Simulink, проводить над выходными сигналами состояний какие-либо операции, приводящие к изменению их значений, то есть они должны быть константами [7]. Например, действие увеличения содержимого счетчика команд на единицу OutIP=InIP+1 в состоянии INST после выполнения очередной команды не допустимо, то есть невозможно прибавить 1 к сигналу InIP, но возможно простое присваивание OutIP = InIP. Для преодоления этого ограничения были введены дополнительные сигналы ADD_IP (0 – нет увеличения содержимого счетчика команд, 1 – увеличить содержимое на 1) и sel_RegA[2..0]. Сигнал ADD_IP принимает значение логической 1 в одном единственном состоянии Inst. Сигнал sel_RegA[2..0] принимает восемь значений от 0 до 7.
Операции с аккумулятором (регистр А)
В предложенном варианте реализации Проекта 2 логико-арифметические операции над сигналами A и B (семь команд) и все остальные команды, связанные с регистром А, реализуются на функциональном блоке (назовем его распределенный аккумулятор), который представляет собой восемь регистров, подключенных к информационным входам шинного мультиплексора 8 в 1. Многоразрядный сигнал sel_RegA[2..0] является адресным сигналом шинного мультиплексора 8 в 1, который коммутирует один из его входов на вход InA[7..0] управляющего автомата. В состояниях, связанных с битовыми операциями bit_AND, bit_OR, bit_XOR, bit_XNOR, сигнал sel_RegA[2..0] принимает значения 4, 3, 2 и 1. Битовая команда XNOR (код 0610H) была введена дополнительно для возможного использования шинного мультиплексора 8 в 1. Она отсутствует в Проекте 1 (см. табл. 1).
В состояниях, связанных с арифметическими операциями ADD, SUB, DecrementA, сигнал sel_RegA[2..0] принимает значения 7, 6 и 5. Во всех остальных состояниях – CALL, JMPZ_TEMP, JMPZ, JMP, NOP, RET, MOV A, MOV B, MOVAB, MOVBA, XCHG и таких, как ReadInst (чтение команды), Inst (в том числе было введено вспомогательное состояние JMPZ_TEMP, отсутствующее в Проекте 1), 3‑разрядный сигнал sel_RegA[2..0] принимает значение логического нуля. Условия переходов по состояниям показаны в табл. 2. На рис. 3 и 4 показаны информационные потоки во всех состояниях управляющего автомата.
Рассмотрим организацию регистра А, выполняющего роль распределенного аккумулятора в микропроцессоре. Логические (битовые) операции bit_AND, bit_OR, bit_XOR, bit_XNOR реализованы на вентилях. Арифметические операции ADD, SUB и DecrementA реализуются на мегафункции сложения / вычитания (LPM_ADD_SUB). Для арифметических операций требуется 8‑разрядный сумматор (A+B), вычитатель (A-B) и декрементатор (A‑1).
К выходам блоков, осуществляющих логические и арифметические операции (можно рассматривать как АЛУ), подключено семь 8‑разрядных регистров. А все остальные операции, не связанные с АЛУ, осуществляются на отдельном 8‑разрядном регистре. Выходы всех восьми регистров подключены к шинному мультиплексору 8 в 1, адресным входом которого управляет автомат (sel_RegA[2..0]). Регистры B и R микропроцессора реализованы на отдельных 8‑разрядных регистрах.
Операция увеличения содержимого счетчика команд на 1 (состояние Inst) реализуется с помощью сумматора, на один из входов которого подается логическая единица, и регистра для запоминания результата, подключенного к одному из входов мультиплексора 2 в 1. Если на адресном входе мультиплексора ADD_IP=1 (выходной сигнал управляющего автомата), то результат суммирования будет передан для дальнейшей обработки (для выбора адреса следующей команды), в противном случае при ADD_IP=0 должен быть произведен обход операции суммирования (например, для команды CALL).
На рис. 5 представлен граф-автомат микропроцессора на 20 состояний, созданный с помощью редактора конечных автоматов (State Machine Editor). На рис. 6 показаны выходные сигналы управляющего автомата (OUT_A, OUT_B, OUT_R, OUT_IP, ADD_IP и sel_regA[2..0]), а также поля команды inCmd и inData при функциональном моделировании работы микропроцессорного ядра. Видим, что разработанное микропроцессорное ядро корректно отрабатывает коды тестовой программы (см. рис. 1).
Разместим полученный VHDL-проект в ПЛИС Cyclone V 5CGXFC7C7F23CB, в табл. 3 показаны используемые ресурсы ПЛИС для трех проектов.
Заключение
В работе установлено, что приложение StateFlow системы Matlab / Simulink обладает большим функционалом по разработке управляющих автоматов микропроцессорных ядер, чем редактор состояний State Machine Editor САПР Quartus II. Так в Проекте 2 функцио-
нальный блок АЛУ из-за ограниченного функционала State Machine Editor пришлось разрабатывать в ручном режиме, путем введения дополнительных сигналов и вспомогательных состояний, что сказалось на незначительном повышеннии числа использования логических ресурсов ПЛИС. В целом удалось получить приемлемое быстродействие. Разработанный Проект 2 раскрывает механизм обработки информационных потоков в микропроцессорном ядре и более детально проработан на функциональном уровне.
Приложение Simulink HDL coder для управляющего автомата микропроцессора, построенного с помощью StateFlow системы Matlab / Simulink, позволяет сгенерировать код языка VHDL синхронного автомата, при этом получаем оптимальное число используемых логических ресурсов ПЛИС и выигрыш по быстродействию по сравнению с Проектом 2.
Система визуально-имитационного моделирования Matlab / Simulink c приложениями StateFlow и Simulink HDL Coder может быть эффективно использована для ускорения процесса разработки моделей микропроцессорных ядер. Проект микропроцессора с асинхронным ПЗУ на языке VHDL может быть успешно реализован в ПЛИС Cyclone V 5CGXFC7C7F23CB, при этом общее число задействованных логических ресурсов составляет менее 1%.
ЛИТЕРАТУРА
Харрис Д. М., Харрис С. Л. Цифровая схемотехника и архитектура компьютера / Пер. с англ. Imagination Technologies. М.: ДМК Пресс, 2018. 792 с.
Строгонов А. Проектирование конечных автоматов в приложении Stateflow системы Matlab/Simulink с последующей реализацией в базисе ПЛИС // ЭЛЕКТРОНИКА: Наука, Технология, Бизнес. 2023. № 3. С. 1–9.
Тарасов И. Проектирование конфигурируемых процессоров на базе ПЛИС. Часть 1 // Компоненты и технологии. 2006. № 2. С. 58–59.
Строгонов А. Проектирование учебного процессора для реализации в базисе ПЛИС // Компоненты и технологии. 2009. № 3. С. 118–121.
Строгонов А., Буслов А. Проектирование учебного процессора для реализации в базисе ПЛИС с использованием системы Matlab / Simulink // Компоненты и технологии, 2009. № 5. С. 114–118.
Строгонов А., Буслов А. Проектирование микропроцессорных ядер с использованием приложения StateFlow системы MATLAB / Simulink // Компоненты и технологии. 2010. № 1. С. 126–130.
Van der Star P. State machine editor & State machine wizard. Tutorial Quartus II. 29 April 2014 // https://ds.opdenbrouw.nl/quartus/state_machine_tutorial.pdf.
А. В. Строгонов, д. т. н., О. Бордюжа, к. т. н., А. И. Строгонов
В России при участии НИУ МИЭТ организована Ассоциация вузов ЭКБ, решающих в том числе задачу подготовки специалистов для работы с архитектурой процессоров RISC-V, а также создана Школа синтеза цифровых схем на базе курса MIT в Сколково для быстрого освоения современных подходов к проектированию цифровых БИС. Архитектура RISC-V является дальнейшим развитием архитектуры MIPS, разработанной компанией MIPS Computer Systems. На архитектуре MIPS32 построен ряд российских процессоров, таких как Baikal-T от «Байкал Электроникс», «Мультикор» от АО НПЦ «ЭЛВИС» и КОМДИВ от НИИСИ РАН. Процессоры на базе RISC-V разрабатывают несколько российских компаний, в том числе Syntacore и CloudBEAR. В статье рассмотрен эффективный подход к разработке управляющего автомата микропроцессорного ядра с применением системы визуально-имитационного моделирования Matlab / Simulink и последующей генерацией VHDL-кода для разработки проекта в САПР Quartus II.
Предлагаемый читателям микропроцессор не относится к архитектуре MIPS, но как пример может быть полезен для наполнения курса лекций Школы синтеза цифровых схем. Простейший процессор с однотактной архитектурой из работы [1] состоит из двух взаимодействующих частей: тракт данных (память, регистры, АЛУ и мультиплексоры) и управляющий автомат (обычно представлен HDL-кодом), который получает текущую команду из тракта данных и в ответ сообщает ему, как именно выполнять эту команду. В частности, управляющий автомат генерирует адресные сигналы для мультиплексоров, сигналы разрешения работы для регистров и сигналы разрешения записи в память.
Процесс разработки микропроцессорного ядра рассмотрим на примере двух проектов. Проект 1 показывает применение системы визуально-имитационного моделирования Matlab / Simulink [2] с последующей генерацией VHDL-кода для разработки управляющего автомата в САПР Quartus II. Проект 2 демонстрирует разработку микропроцессорного ядра непосредственно в САПР Quartus II с использованием редактора конечных автоматов State Machine Editor.
Общие сведения
по проектируемому процессору
Воспользуемся системой команд гипотетического синхронного процессора, реализованного с помощью конечного автомата, с циклом работы в два такта [3]. В табл. 1 представлена система команд процессора с синхронной архитектурой. Процессор основан на использовании раздельных шин данных и команд.
Процессор ограничен двумя регистрами общего назначения (A и В), содержит указатель инструкций IP (счетчик команд) и регистр R для хранения адреса, с которого произошел вызов подпрограммы, поддерживает минимальный набор из 16 команд: команда пересылки «регистр-регистр» (XCHG), команды непосредственной загрузки (MOV), команда безусловного перехода к новому адресу (JMP), команды перехода по условию (JMPZ), набор арифметико-логических операций (ADD, SUB, AND, OR, XOR, DEC), команда обращения к подпрограммам CALL и команда возврата из подпрограмм RET [3].
Проект 1
В работах [4, 5] было показано, как с применением системы визуально-имитационного моделирования Matlab / Simulink разработать микропроцессорное ядро для реализации в базисе ПЛИС. Основная идея работы [5] – это реализация управляющего автомата микропроцессорного ядра с использованием визуально-графического представления в приложении StateFlow системы Matlab / Simulink [6]. StateFlow является интер-
активным инструментом разработки в области моделирования сложных, управляемых событиями систем. Он тесно интегрирован с Matlab и Simulink и основан на теории конечных автоматов [6].
Микропроцессор состоит из следующих блоков (рис. 1): ROM – ПЗУ команд (память программ); COP – блок выделения полей команды (дешифратор команд); ALU – 8‑разрядное АЛУ (управляющий автомат); RON – блок регистров общего назначения (8‑разрядные регистры А и B); RSN – блок регистров специального назначения, 8‑разрядный регистр R (стек команд) для обеспечения выполнения команд обращения к подпрограммам (CALL) и возврата (RET) и 8‑разрядный регистр IP (для хранения значений счетчика команд). Более подробное описание всех блоков можно найти в работах [4, 5]. На рис. 1 также представлена тестовая программа (прошивка), хранящаяся в ПЗУ. На рис. 2 продемонстрирован проект управляющего автомата микропроцессора, разработанный с помощью приложения StateFlow.
Далее с использованием Simulink HDL Coder системы Matlab / Simulink извлекается VHDL-код всех функциональных блоков микропроцессора (ПЗУ, дешифратора команд, регистров RON, RSN и ALU), а затем реализуется проект с асинхронным ПЗУ и с синхронным управляющим автоматом в базисе ПЛИС Cyclone V в САПР Quartus II.
Проект 2
Была поставлена задача реализовать с помощью редактора конечных автоматов (State Machine Editor) в САПР Quartus II управляющий автомат микропроцессорного ядра, функционирование которого бы полностью соответствовало диаграмме рис. 2. ПЗУ и дешифратор команд реализованы VHDL-кодом в Проекте 1. Остальные блоки реализуются на логических элементах или с использованием мегафункций (сумматор / вычитатель, шинный мультиплексор). Для детального ознакомления Проект 2 можно запросить у авторов работы.
Вследствие ограниченного функционала редактор конечных автоматов не позволяет, в отличие от приложения StateFlow системы Mathlab / Simulink, проводить над выходными сигналами состояний какие-либо операции, приводящие к изменению их значений, то есть они должны быть константами [7]. Например, действие увеличения содержимого счетчика команд на единицу OutIP=InIP+1 в состоянии INST после выполнения очередной команды не допустимо, то есть невозможно прибавить 1 к сигналу InIP, но возможно простое присваивание OutIP = InIP. Для преодоления этого ограничения были введены дополнительные сигналы ADD_IP (0 – нет увеличения содержимого счетчика команд, 1 – увеличить содержимое на 1) и sel_RegA[2..0]. Сигнал ADD_IP принимает значение логической 1 в одном единственном состоянии Inst. Сигнал sel_RegA[2..0] принимает восемь значений от 0 до 7.
Операции с аккумулятором (регистр А)
В предложенном варианте реализации Проекта 2 логико-арифметические операции над сигналами A и B (семь команд) и все остальные команды, связанные с регистром А, реализуются на функциональном блоке (назовем его распределенный аккумулятор), который представляет собой восемь регистров, подключенных к информационным входам шинного мультиплексора 8 в 1. Многоразрядный сигнал sel_RegA[2..0] является адресным сигналом шинного мультиплексора 8 в 1, который коммутирует один из его входов на вход InA[7..0] управляющего автомата. В состояниях, связанных с битовыми операциями bit_AND, bit_OR, bit_XOR, bit_XNOR, сигнал sel_RegA[2..0] принимает значения 4, 3, 2 и 1. Битовая команда XNOR (код 0610H) была введена дополнительно для возможного использования шинного мультиплексора 8 в 1. Она отсутствует в Проекте 1 (см. табл. 1).
В состояниях, связанных с арифметическими операциями ADD, SUB, DecrementA, сигнал sel_RegA[2..0] принимает значения 7, 6 и 5. Во всех остальных состояниях – CALL, JMPZ_TEMP, JMPZ, JMP, NOP, RET, MOV A, MOV B, MOVAB, MOVBA, XCHG и таких, как ReadInst (чтение команды), Inst (в том числе было введено вспомогательное состояние JMPZ_TEMP, отсутствующее в Проекте 1), 3‑разрядный сигнал sel_RegA[2..0] принимает значение логического нуля. Условия переходов по состояниям показаны в табл. 2. На рис. 3 и 4 показаны информационные потоки во всех состояниях управляющего автомата.
Рассмотрим организацию регистра А, выполняющего роль распределенного аккумулятора в микропроцессоре. Логические (битовые) операции bit_AND, bit_OR, bit_XOR, bit_XNOR реализованы на вентилях. Арифметические операции ADD, SUB и DecrementA реализуются на мегафункции сложения / вычитания (LPM_ADD_SUB). Для арифметических операций требуется 8‑разрядный сумматор (A+B), вычитатель (A-B) и декрементатор (A‑1).
К выходам блоков, осуществляющих логические и арифметические операции (можно рассматривать как АЛУ), подключено семь 8‑разрядных регистров. А все остальные операции, не связанные с АЛУ, осуществляются на отдельном 8‑разрядном регистре. Выходы всех восьми регистров подключены к шинному мультиплексору 8 в 1, адресным входом которого управляет автомат (sel_RegA[2..0]). Регистры B и R микропроцессора реализованы на отдельных 8‑разрядных регистрах.
Операция увеличения содержимого счетчика команд на 1 (состояние Inst) реализуется с помощью сумматора, на один из входов которого подается логическая единица, и регистра для запоминания результата, подключенного к одному из входов мультиплексора 2 в 1. Если на адресном входе мультиплексора ADD_IP=1 (выходной сигнал управляющего автомата), то результат суммирования будет передан для дальнейшей обработки (для выбора адреса следующей команды), в противном случае при ADD_IP=0 должен быть произведен обход операции суммирования (например, для команды CALL).
На рис. 5 представлен граф-автомат микропроцессора на 20 состояний, созданный с помощью редактора конечных автоматов (State Machine Editor). На рис. 6 показаны выходные сигналы управляющего автомата (OUT_A, OUT_B, OUT_R, OUT_IP, ADD_IP и sel_regA[2..0]), а также поля команды inCmd и inData при функциональном моделировании работы микропроцессорного ядра. Видим, что разработанное микропроцессорное ядро корректно отрабатывает коды тестовой программы (см. рис. 1).
Разместим полученный VHDL-проект в ПЛИС Cyclone V 5CGXFC7C7F23CB, в табл. 3 показаны используемые ресурсы ПЛИС для трех проектов.
Заключение
В работе установлено, что приложение StateFlow системы Matlab / Simulink обладает большим функционалом по разработке управляющих автоматов микропроцессорных ядер, чем редактор состояний State Machine Editor САПР Quartus II. Так в Проекте 2 функцио-
нальный блок АЛУ из-за ограниченного функционала State Machine Editor пришлось разрабатывать в ручном режиме, путем введения дополнительных сигналов и вспомогательных состояний, что сказалось на незначительном повышеннии числа использования логических ресурсов ПЛИС. В целом удалось получить приемлемое быстродействие. Разработанный Проект 2 раскрывает механизм обработки информационных потоков в микропроцессорном ядре и более детально проработан на функциональном уровне.
Приложение Simulink HDL coder для управляющего автомата микропроцессора, построенного с помощью StateFlow системы Matlab / Simulink, позволяет сгенерировать код языка VHDL синхронного автомата, при этом получаем оптимальное число используемых логических ресурсов ПЛИС и выигрыш по быстродействию по сравнению с Проектом 2.
Система визуально-имитационного моделирования Matlab / Simulink c приложениями StateFlow и Simulink HDL Coder может быть эффективно использована для ускорения процесса разработки моделей микропроцессорных ядер. Проект микропроцессора с асинхронным ПЗУ на языке VHDL может быть успешно реализован в ПЛИС Cyclone V 5CGXFC7C7F23CB, при этом общее число задействованных логических ресурсов составляет менее 1%.
ЛИТЕРАТУРА
Харрис Д. М., Харрис С. Л. Цифровая схемотехника и архитектура компьютера / Пер. с англ. Imagination Technologies. М.: ДМК Пресс, 2018. 792 с.
Строгонов А. Проектирование конечных автоматов в приложении Stateflow системы Matlab/Simulink с последующей реализацией в базисе ПЛИС // ЭЛЕКТРОНИКА: Наука, Технология, Бизнес. 2023. № 3. С. 1–9.
Тарасов И. Проектирование конфигурируемых процессоров на базе ПЛИС. Часть 1 // Компоненты и технологии. 2006. № 2. С. 58–59.
Строгонов А. Проектирование учебного процессора для реализации в базисе ПЛИС // Компоненты и технологии. 2009. № 3. С. 118–121.
Строгонов А., Буслов А. Проектирование учебного процессора для реализации в базисе ПЛИС с использованием системы Matlab / Simulink // Компоненты и технологии, 2009. № 5. С. 114–118.
Строгонов А., Буслов А. Проектирование микропроцессорных ядер с использованием приложения StateFlow системы MATLAB / Simulink // Компоненты и технологии. 2010. № 1. С. 126–130.
Van der Star P. State machine editor & State machine wizard. Tutorial Quartus II. 29 April 2014 // https://ds.opdenbrouw.nl/quartus/state_machine_tutorial.pdf.
Отзывы читателей