Текущая Активность Вокруг Mipsfpga И Не Только



Текущая активность вокруг MIPSfpga и не только

Есть несколько событий и тем, которыми я хотел бы поделиться с сообществом.

По-хорошему, под каждого можно написать отдельную статью, но общая нехватка времени вынуждает немного схитрить.

Наши темы сегодня:

  • Выпуск MIPSfpga 2.0;
  • процессор schoolMIPS и Летняя школа юных программистов в Новосибирске;
  • школа-семинар по цифровому дизайну и компьютерной архитектуре в Томске;
  • запуск ванильного ядра Linux на MIPSfpga-plus;
  • поддержка АЦП Altera MAX10 в MIPSfpga-plus;
  • Логотип MIPSfpga-plus.
Если тема MIPSfpga-plus вам небезразлична, то в конце небольшой опрос на тему о чем мне писать (или не писать) следующую статью.

Ваш выбор поможет мне сориентироваться и расставить приоритеты.

Добро пожаловать !

Выпуск MIPSfpga 2.0

Спустя 2 года после первого выпуска MIPSfpga компания Imagination Technologies выпустила вторую версию пакета: MIPSfpga 2.0 [ Л1 ].

На что нужно обратить внимание:

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

    И это здорово, ведь в комплекте идет недавно переведенная на русский язык книга «Цифровая схемотехника и компьютерная архитектура» (H&H).

    Л2 ] получаем очень качественный и доступный набор теории и практики, изложенный на примере архитектуры MIPS;

  • на недавнем симпозиуме в Торонто [ Л3 ] Сара Харрис (один из авторов H&H) представила коллективную статью [ Л14 ], где дано достаточно подробное описание MIPSfpga 2.0, а также анализ распространения образовательной инициативы Imagination Technologies по университетам.

    И (вау!) там даже упоминается мое имя в связи с моей деятельностью в проекте MIPSfpga-plus.

  • если первый релиз был в основном ориентирован на то, как собрать систему на кристалле (SoC) на базе MIPSfpga, то второй релиз сместил акцент именно на работу самого процессора:
Перечень лабораторных работ 1 Создайте проект в Vivado или Quartus-II 2. Узнайте, как компилировать, отлаживать и запускать программы на языке C. 3 Изучите систему программирования сборки MIPS Еще 4 практики программирования на C (необязательно) 5 Расширьте систему, добавив 7-сегментные дисплеи.

6 Расширьте систему, чтобы добавить счетчик 7 Расширьте систему, чтобы добавить зуммер.

8. Расширьте систему, добавив датчик SPI-Light. 9 Расширьте систему, добавив SPI-LCD. 10 Взаимодействие с периферийными устройствами с помощью прерываний 11. Создайте механизм DMA для передачи данных между периферийными устройствами.

12. Создайте механизм стандарта шифрования данных (DES).

13 Узнайте, как использовать счетчики производительности 14 Выполнение ADD и других арифметических инструкций 15 Выполнение AND и других логических инструкций 16 Выполнение LW и других связанных с ним инструкций 17 Выполнение BEQ и других связанных инструкций 18 Узнайте, как реализован блок рисков 19 Узнайте, как использовать интерфейс CorExtend 20 Знакомство с кэшами, доступными в MIPSfpga 21. Анализ D$ и внедрение новых конфигураций 22 Контроллер кэша: анализ попадания и промаха в кэше 23 Контроллер кэша: анализ политик управления D$ 24 Контроллер кэша: анализ хранилища и заполнение буферов 25. Реализация инструкции.

Блокнот оперативной памяти.

  • Само ядро, по предварительной информации, особых изменений не претерпело, это все тот же MIPS microAptiv UP, на базе которого построен, например, микрочип PIC32MZ;
  • Акцент на Xilinx при создании SoC в лабораторных работах также остался неизменным.

    Таким образом, общая схема используемой в лабораторных работах SoC выглядит следующим образом, что несколько ограничивает запуск на платах на базе Altera:

    Текущая активность вокруг MIPSfpga и не только

Если учесть, что Digilent искусственно ограничивает поставки своих плат без ПЛИС Xilinx в Россию и Украину, то картина получается не очень приятная.

Но здесь нам на помощь приходит MIPSfpga-plus — opensource-проект по построению SoC на базе MIPSfpga с платформонезависимой периферией[ Л4 ].

Для корректного взаимодействия с MIPSfpga 2.0, возможно, потребуется немного модифицировать его.



schoolMIPS и Летняя школа молодых программистов

Летняя школа молодых программистов открылась сегодня в Новосибирске.

Л5 ].

Школьная программа разделена на мастер-классы [ Л6 ], один из которых посвящен обучению Verilog и архитектуре микросхем.

Воспитателем детей станет Юрий Панчул.

ЮрийПанчул , прилетевший из Штатов специально по этому делу.

Мастерская чип-архитекторов Мастер: Юрий Панчул Цифровое оборудование, от логических элементов до собственного процессора Хотите знать, как устроены чипы в современных устройствах — от телефонов до космических кораблей? Последние 25 лет это делается с использованием методологии синтеза логического кода на языках описания аппаратуры.

Именно эту технологию мы будем изучать в нашей мастерской и использовать для проектирования собственных устройств.

Мы начнем с трех ключевых строительных блоков цифровой электроники — логического элемента, тактового сигнала и D-триггера, памяти для одного бита информации.

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

Затем повторим построенные схемы на языке описания аппаратуры SystemVerilog и смоделируем их с помощью программы-симулятора.

Но как мы можем превратить их в чипсы? Ведь заказывать коммерческий чип с завода — это очень дорого? К счастью, существуют «перестраиваемые» программируемые логические интегральные схемы (FPGA), платы, которые мы будем использовать на наших занятиях.

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

Заодно изучим немного программирование на языке ассемблера, понятие прерываний, сравним наш процессор с промышленными микроконтроллерами и встраиваемыми микропроцессорами, вплоть до микропроцессора EyeQ5 для беспилотного автомобиля, выпуск которого запланирован на 2020 год. Это круто, и я, честно говоря, немного завидую этим школьникам – в моем детстве такого не было.

Специально к этому событию мы написали небольшой процессор с архитектурой MIPS: schoolMIPS [ Л7 ], которую планируется использовать в образовательном процессе.

Он создан путем упрощения процессора Сары Харрис, описанного в H&H [ Л2 ].

Ключевая особенность:

  • язык описания оборудования Verilog;
  • подмножество архитектуры MIPS с памятью инструкций, с регистрами общего назначения, но без памяти данных;
  • однотактная микроархитектура;
  • минимальный набор инструкций, изначально достаточный для итеративного вычисления числа Фибоначчи и целого квадратного корня;
  • микроархитектура и код максимально упрощены для целей обучения;
  • Компиляция программы осуществляется с помощью инструментальной цепочки MIPS.
В комплект входят небольшие инструкции и слайды, описывающие конструкцию ядра процессора в стиле, похожем на H&H[ Л2 ].

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

Я не буду касаться этой темы, потому что.

не участвовал, полагаю, что Юрий ЮрийПанчул Подробнее об этом напишем в будущем.



Школа-семинар по цифровому дизайну и компьютерной архитектуре в Томске

С 18 по 22 сентября в Томском государственном университете пройдет Школа-семинар «Цифровой дизайн и компьютерная архитектура в эпоху систем на кристалле (SoC) и интернет-технологий (IoT).

Предварительная программа школы и список участников опубликованы на сайте [ Л8 ].

Там же выступит ваш покорный слуга: я планирую рассказать об AHB-Lite, подключении периферии к MIPSfpga, работе с SDRAM — это со сцены.

А неформально мы можем обсудить Linux, подключив отладчик и любой код, который я принес на MIPSfpga-plus. Приходить!

Запуск Linux на MIPSfpga-plus

Лаборатории MIPSfpga описывают запуск Linux на SoC, построенном с использованием периферийных модулей, специфичных для Xilinx. Вкупе с уже упомянутой выше проблемой доступа к платам это создавало некоторые трудности.

Минимум, необходимый для запуска ОС Linux: MMU (доступен как часть MIPS fpga), достаточный объем памяти и UART. При этом большая часть работы по портированию системы уже выполнена компанией Imagination Technologies, соответствующий код включен в основную ветку ядра [ Л9 ].

Буквально неделю назад мне удалось запустить Linux на Terasic DE10-Lite и не скажу, что необходимый для этого патч оказался очень сложным.

Ключевая особенность:

  • конфигурация системы: FPGA Altera MAX10, SDRAM 64MB, MIPSfpga-plus, UART16550;
  • Ядро загружается в память с помощью EJTAG[ Л10 ];
  • mmc/sdcard пока не поддерживаются, поэтому о загрузке с карты памяти говорить не приходится.

    С другой стороны, в лабораторной работе MIPSfpga о загрузке с флешки речи не идет.

Скачать журнал
   

Linux version 4.12.2+ (stas@ubuntu) (gcc version 4.9.2 (Codescape GNU Tools 2016.05-03 for MIPS MTI Linux) ) #67 Wed Jul 19 00:07:19 MSK 2017 CPU0 revision is: 00019e60 (MIPS M14KEc) MIPS: machine is terasic,de10lite Determined physical RAM map: memory: 04000000 @ 00000000 (usable) Initrd not found or empty - disabling initrd Primary instruction cache 4kB, VIPT, 2-way, linesize 16 bytes. Primary data cache 4kB, 2-way, VIPT, no aliases, linesize 16 bytes Zone ranges: Normal [mem 0x0000000000000000-0x0000000003ffffff] Movable zone start for each node Early memory node ranges node 0: [mem 0x0000000000000000-0x0000000003ffffff] Initmem setup node 0 [mem 0x0000000000000000-0x0000000003ffffff] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256 Kernel command line: console=ttyS0,115200 PID hash table entries: 256 (order: -2, 1024 bytes) Dentry cache hash table entries: 8192 (order: 3, 32768 bytes) Inode-cache hash table entries: 4096 (order: 2, 16384 bytes) Memory: 60512K/65536K available (1827K kernel code, 97K rwdata, 320K rodata, 948K init, 184K bss, 5024K reserved , 0K cma-reserved) NR_IRQS:8 clocksource: MIPS: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 38225208935 ns sched_clock: 32 bits at 50MHz, resolution 20ns, wraps every 42949672950ns Console: colour dummy device 80x25 Calibrating delay loop. 10.81 BogoMIPS (lpj=21632) pid_max: default: 32768 minimum: 301 Mount-cache hash table entries: 1024 (order: 0, 4096 bytes) Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes) devtmpfs: initialized clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns futex hash table entries: 256 (order: -1, 3072 bytes) clocksource: Switched to clocksource MIPS random: fast init done workingset: timestamp_bits=30 max_order=14 bucket_order=0 Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled console [ttyS0] disabled b0400000.serial: ttyS0 at MMIO 0xb0401000 (irq = 0, base_baud = 3125000) is a 16550A console [ttyS0] enabled Freeing unused kernel memory: 948K This architecture does not have kernel memory protection. mount: mounting devpts on /dev/pts failed: No such device mount: mounting tmpfs on /dev/shm failed: Invalid argument mount: mounting tmpfs on /tmp failed: Invalid argument mount: mounting tmpfs on /run failed: Invalid argument Starting logging: OK Initializing random number generator. done. Starting network: ip: socket: Function not implemented ip: socket: Function not implemented FAIL Welcome to MIPSfpga mipsfpga login: root Jan 1 00:00:09 login[43]: root login on 'console' # uname -a Linux mipsfpga 4.12.2+ #67 Wed Jul 19 00:07:19 MSK 2017 mips GNU/Linux # free -m total used free shared buffers cached Mem: 60 3 56 0 0 2 -/+ buffers/cache: 0 59 Swap: 0 0 0

В ближайшее время я планирую подготовить небольшой HOWTO о том, как воспроизвести эти результаты.

И наверное напишу большую статью после добавления в MIPSfpga-plus модуля для работы с mmc/sdcard, доделки загрузчика и отладки всего, что необходимо для автономного запуска.

Если кому-то нужно "прямо сейчас" - дайте знать.



MIPSfpga-plus и АЦП Altera MAX10

В июне я завершил работу по интеграции АЦП, который есть на борту Altera MAX10, в MIPSfpga-plus. Соответствующий код добавлен в основную ветку проекта [ Л11 ], с документацией [ Л12 ] и пример [ Л13 ].

Модуль, по сути, представляет собой преобразователь между шиной AHB-Lite и Avalon-ST, выполненный с учетом специфики конкретного АЦП.

По архитектуре он очень прост — я постарался сделать его программный интерфейс максимально похожим на АЦП микроконтроллера Atmel ATmega88. Были, конечно, и некоторые подводные камни, так как на ПЛИС, используемой в Terasic DE10-Lite, доступны 2 канала АЦП (с независимыми наборами входов на каждом); при подключении этих входов второй канал оказался полностью заземлен, т.е.

параллельная работа каналов на DE10-Lite невозможна:

Текущая активность вокруг MIPSfpga и не только

Хочется верить, что в академических проектах MIPSfpga-plus будет использоваться чуть чаще там, где раньше ради встроенного АЦП приходилось брать микроконтроллер или конфигурацию MAX10+NIOS-II. Опять же, нужна ли отдельная статья, где подробно рассматривается работа с АЦП? Или для того, чтобы разобраться, вам достаточно уже приведенных мною ссылок на исходный код модуля, пример и документацию?

Логотип MIPSfpga-plus

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

На ум почему-то приходит только «Большое Ухо» из одноименного мультфильма (см.

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

И в принципе мне очень нравится этот персонаж.

Что вы думаете об этой теме? Может быть, вы предложите какой-то альтернативный вариант, а может, среди читателей найдется художник, который сможет изобразить «персонажа мультфильма, отдалённо напоминающего Большое Ухо, но не до степени растерянности»?

Благодарности

Автор выражает благодарность команде переводчиков учебника «Цифровое схемотехнико и компьютерная архитектура» Дэвида Харриса и Сары Харрис [ Л2 ], Технологии воображения [ Л1 ] за академическую лицензию на современное процессорное ядро и учебные материалы, а также лично Юрию Панчулу ЮрийПанчул за его работу по продвижению MIPSfpga. Особая благодарность Александру Романову (НИУ ВШ?, МИЭМ) [ Л15 ] за практичный и основательный подход к микроархитектуре schoolMIPS, а также всем участникам рассылки Young Russian Chip Architects, принявшим участие в обсуждении.



Ссылки

[Л1] — Пресс-релиз о выходе MIPSfpga 2.0 ; [Л2] — Цифровая схемотехника и компьютерная архитектура ; [Л3] — Семинар по образованию в области компьютерной архитектуры (Торонто) ; [Л4] — Проект MIPSfpga-plus на github ; [Л5] — Летняя школа для программистов (Новосибирск) ; [Л6] — Летняя школа программистов (Новосибирск).

Программа обучения ; [Л7] — Проект schoolMIPS на GitHub ; [Л8] — Школа-семинар по цифровому дизайну и компьютерной архитектуре (Томск) ; [Л9] — Поддержка MIPSfpga в ядре Linux ; [Л10] — MIPSfpga и внутрисхемная отладка ; [Л11] — MIPSfpga-плюс.

Модуль поддержки АЦП Altera MAX10 ; [Л12] — MIPSfpga-плюс.

Модуль поддержки АЦП Altera MAX10. Документация ; [Л13] — MIPSfpga-плюс.

Модуль поддержки АЦП Altera MAX10. Пример ; [Л14] — Практический опыт на основе MIPSfpga ; [Л15] — Профиль Александра Романова на сайте ВС? .

В опросе могут участвовать только зарегистрированные пользователи.

Войти , Пожалуйста.

О чем написать в следующий раз 30% перевод статьи Практический опыт на базе MIPSfpga 6 25% подробная статья об интеграции MIPSfpga и АЦП Altera MAX10 5 30% статья о запуске Linux на MIPSfpga в его нынешнем виде 6 15% не надо Не отвлекайтесь на написание, сделайте это лучше, загрузив Linux с mmc/sdcard 3 Проголосовали 20 пользователей.

6 пользователей воздержались.

Теги: #FPGA #verilog #mips #mips #mipsfpga #mipsfpga #MIPS microAptiv UP #C++ #Системное программирование #soc #Системный анализ и проектирование #Системное программирование #FPGA #Программирование микроконтроллеров

Вместе с данным постом часто просматривают: