Мікроконтролер з системою команд, що розширюється



Стаття | Article    

Download

Запропонована архітектура восьмирозрядного стекового процесора SM8, який призначений для реалізації у програмованих логічних інтегральних схемах (ПЛІС). Мікроконтролер з цією архітектурою має невеликі апаратні витрати, скорочений об’єм програмного забезпечення а також можливість додавати користувачем до сотні нових команд до його системи команд.

Ключові слова: стековий процесор, Forth, ПЛІС, VHDL.

Microcontroller with the expandable instruction set

Anatoly Sergienko, chief engineer, Igor Sikorsky Kyiv Polytechnic Institute, Computer Engineering Department, Ukraine.

Oleksii Molchanov, graduate student, Igor Sikorsky Kyiv Polytechnic Institute, Department of System Programming and Application Specific Systems, Ukraine.

The eight-bit stack processor architecture SM8 is proposed, which is designed for implementation in FPGAs. The microcontroller with this architecture has small hardware costs, reduced software amount, and ability to add up to hundred new user instructions to its instruction set.

Keywords: stack processor, Forth, FPGA, VHDL.

Вступ

При розробці системи на кристалі програмованої логічної інтегральної схеми (ПЛІС) часто виникає потреба організувати обмін даними через такі інтерфейси,як I2C, SPI, Ethernet та інші. Для цього часто використовують RISC-процесори,які керовані операційною системою з відповідним стеком протоколів обміну. Але у багатьох випадках обмін даними виконується за нескладним протоколом і з порівняно невеликою швидкістю, як наприклад, через інтерфейс I2C. При цьому раціональніше використати ядро мікроконтролера, яке має як невеликі апаратні витрати, так і прості процедури програмування та відлагодження. Крім того, такий мікроконтролер може замінити собою керуючий автомат.

Але для реалізаціі у ПЛІС важливо мати мінімізований об’єм матзабезпечення цього мікроконтролера, оскільки об’єм блоків пам’яті, вбудованих в ПЛІС, є суттєво обмеженим. При цьому бажано мати такий мікроконтролер, систему команд якого програміст власноруч може скоректувати під потреби проекту, для покращення зручності програмування, а також для мінімізації довжини програм.

Мікроконтролери для реалізації у ПЛІС

Найпоширенішою восьмирозрядною архітектурою мікроконтролера вважається архітектура i8051, яка реалізована у багатьох мікроконтролерних ядрах для ПЛІС. У роботі [1] досліджено особливості проектування його клона FS8051 для ПЛІС. Але навіть з відкиданням периферійних пристроїв та скороченням системи команд апаратні витрати залишаються доволі великими (см. Табл. 2).

Фірмою Xilinx для вказаних потреб пропонується поширене ядро мікроконтролера PicoBlaze. Воно описане на рівні логічних таблиць (LUT) та тригерів ПЛІС цієї фірми, як наприклад, ядро мікроконтролера KCPSM6 [2].Тому воно має мінімальні апаратні витрати та доволі високу тактову частоту (см.Табл. 2). Хоча цей мікроконтролер обробляє восьмирозрядні дані, він керується 18-розрядними командами, кожна з яких виконується за два такти. Отже, для програмування мікроконтролерів цієї архітектури необхідні програми відносно великого об’єму. Так само, як і для архітектури i8051, для цієї архітектури неможливе додавання нових команд.

Система команд стекового процесора відрізняється тим, що операнди мають неявну адресацію, тому що вони, як правило, розміщуються у небагатьох фіксованих регістрах стекової пам’яті. Тому такі команди мають короткий формат команд. Оскільки ці команди підтримують алгоритми, що активно використовують стекову адресацію, програми, які складені для такого процесора мають мінімізовану довжину [3].

Різними авторами розроблено декілька проектів стекових процесорів, які реалізовано в ПЛІС і які є доступними для відтворення [4-6]. Усі вони мають 16-розрядні команди та обробляють 16-розрядні дані. В роботі [6] показано, що стековий процесор має приблизно у 2,5 рази меншу довжину програми, ніж програма для процесора Xilinx MicroBlaze при реалізації протоколів обміну даними через інтерфейси. Крім того, усі стекові процесори дають змогу збільшити систему команд на кілька команд користувача. При цьому слід внести відповідні зміни до опису процесора на рівні регістрових передач, що часто є незручним для користувача процесора.

Отже, архітектура стекового процесора дає змогу мінімізувати об’єм вбудованого матзабезпечення та одержати мінімізовані апаратні витрати за рахунок реалізації спрощених команд. Крім того, для такої архітектури нескладно розробляти компілятори, тому що, як правило, система команд є підмножиною команд мови Forth. Відомо, що ця мова є зручною для реалізації як граматичного розбору рядків, так і для інтерпретації операторів мов високого рівня. Програма на мові асемблера стекового процесора має такий самий синтаксис, як програма на Forth [3]. Тому доцільно розробити таку архітектуру стекового процесора, яка дає не тільки мінімізовані апаратні витрати, але й спрощену реалізацію команд користувача.

Мікроконтролер SM8

Структура розробленого мікроконтролера SM8 показана на рисунку. Цей процесор має поширену двохстекову архітектуру. Він складається з лічильника команд PC, блоку пам’яті даних Data RAM, блоку пам’яті програм Program ROM, регістра команди IR, шифратора команд користувача CDC, стека адрес повернення RStack глибиною 33, стека даних DStack глибиною 34, арифметико-логічний пристрій ALU та периферійні регістри R0,..., Rn, n

Рис. 1 Структура мікроконтролера SM8

У таблиці 1 представлена система команд мікроконтролера SM8. Усі команди, крім команд CALL, LIT та IF, є однобайтовими. Команди переходу та вводу константи виконуються за два такти, а решта команд – за один. Команди виконуються у конвеєрному режимі. Типові програми на Forth мають багато викликів підпрограм, завдяки чому вони є короткими. За рахунок цього, а також через часте використання команд LIT та IF, середня тривалість виконання однієї команди в даній архітектурі складає півтора такти.

Команди користувача реалізуються наступним чином. Після запису такої команди у регістр IR її код перекодовується в CDC у адресу підпрограми. Ця підпрограма викликається з бібліотеки підпрограм команд користувача і виконує усі дії, які необхідні для реалізації даної команди. Перехід до наступної команди програми виконується за командою RET. У цій підпрограмі можна також читати та обробляти поля операндів, які слідують за байтом коду операції. При цьому належним чином коректується адреса повернення у регістрі R.

Таблиця 1. Система команд мікроконтролера SM8

Команди користувача можуть зберігатись як в Program ROM, так і в Data RAM. Таким чином, в мікроконтролер можна записувати певний динамічний сценарій обробки даних, який записано командами користувача або виконувати розбір рядка, який набраний з таких команд. Наприклад, це може бути рядок з команд десяткового калькулятора.

У таблиці 2 представлені результати синтезу мікроконтролера SM8 у ПЛІС Xilinx Spartan-6 при встановленні параметрів оптимізації за апаратурними витратами. Також для порівняння представлені параметри перелічених вище мікроконтролерів, які були синтезовані у таких самих умовах. Аналіз таблиці показує, що мікроконтролер SM8 має найнижчі апаратні витрати у числі LUT і конфігурованих логічних блоків (CLB) та найбільшу продуктивність у мільйонах команд за секунду (MIPS) серед стекових процесорів. Це роз’яснюється тим, що скорочення даних, що обробляються, до восьми розрядів,дало змогу зменшити як апаратні витрати, так і затримку в ALU.

Таблиця 2. Параметри ядер мікроконтролерів при їх конфігуруванні у ПЛІС Xilinx Spartan-6

Висновки

Запропонований мікроконтролер SM8 має невеликі апаратні витрати при високій продуктивності та скороченому об’ємі програм і призначений для реалізації нескладних алгоритмів керування, наприклад, для керування обміном даних через інтерфейс І2С. Проект мікроконтролера описано мовою VHDL і він може бути реалізований у ПЛІС будь-якої серії. Програміст має можливість додавати власні команди до його системи команд без зміни його опису. Заплановано, крім асемблера, розробити для цього мікроконтролера компілятор змови високого рівня для спрощення проектування пристроїв, які реалізують протоколи обміну через такі інтерфейси, як I2C, SPI, Ethernet.

Перелік посилань

$1.$ Сергієнко А. М., Лепеха В. Л. Деякі особливості проектування мікроконтролерів для СНК // Вісник НТУУ «КПІ», сер. Інформатика, управління та обчислювальна техніка. – Т. 50. - 2009.– С. 70-73.

$2.$ Chapman, K. Pico Blaze for Spartan-6, Virtex-6, and 7-Series (KCPSM6). - Xilinx, Inc. - 2012.—118 p.

$3.$ Koopman P. Stack computers: the new wave. — CA: Ellis Horwood, Mountain View Press. - 1989. - 234 р.

$4.$ Leong P. H. W., Tsang P.K., Lee T.K. A FPGA Based Forth Microprocessor // Proc. of the IEEE Symposium on Field-Programmable Custom Computing Machines (FCCM). - USA, Napa Valley, California. - 1998. — P. 1-2.

$5.$ Paysan B. b16-small — Less is More // EuroForth 2004 Proceedings, Jul. 9, 2006, pp. 1-8.

$6.$ Bowman J., Garage W. J1: a small ForthCPU Core for FPGAs // Proc. Euro Forth’2010, January, 2010. - Р. 1-4.

May 10, 2017