Создание системы автоматической генерации HDL-кода

Protected the diploma

Сегодня утром я защитил диплом, нет не от захватчиков, а перед ГАКом. Защитил на отлично, теперь у меня научная степень бакалавра!

Тема диплома вынесена в название поста и касается системы "кремниевой компиляции" предложенной товарищем Рюкзаком в своем блоге.

В двух словах об этой системе. Разрабатываемая нашей студенческой научной группой система высокоуровневого синтеза облегчает для разработчика создание новых СнК, обеспечивающих реальное время. Ему (разработчику) достаточно лишь описать желаемое поведение системы на языке высокого уровня и на выходе он получает готовую железку, а точнее ее HDL-описание.

Моя задача во всем этом проекте — сделать систему HDL-синтеза, которая будет генерить описание целевой системы из данных, получаемых с верхних уровней инструментальной цепочки. Это набор неких стандартных и/или написанных пользователем системы функциональных блоков и описание взаимосвязей между ними, называемое описанием инфраструктуры стрелочного вычислителя.

Чтобы упростить разрабатываемую нами инструментальную цепочку, а также облегчить введение новых синтезируемых HDL, я ввел дополнительный уровень трансляции в виде специализированного языка описания аппаратуры Vericlo. Это что-то вроде verilisp’а, только на Clojure, как и вся наша инструментальная цепочка, и не мертвое.

Теперь, сначала описание инфраструктуры стрелочного вычислителя транслируется в Vericlo (планируется для этого описания использовать свой DSL, выполненный в виде еще одного этажа над Vericlo, который сам является надстройкой над Clojure). Ну а затем из Vericlo, все это транслируется в какой-нибудь синтезируемый HDL, на первых порах это будет Verilog.

Кто хочет узнать об этом подробнее:

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

P.S. Забавно, казалось бы только недавно спорил с товарищем udpn’ом на тему актуальности использования всяких ФП во встраиваемых системах и теперь я внезапно сам всем этим занимаюсь О_о. Жизнь иногда выкидывает абсолютно удивительные штуки…​

23.06.2011

Org-mode - вся твоя жизнь в plain-text формате!

Сегодня я собираюсь написать об одном расширении Emacs'а, которое способно изменить ваш распорядок жизни раз и навсегда. Эта небольшая программа, написанная на EmacsLisp'е, называется org-mode. Она создана, чтобы сделать человеческую жизнь организованной, чтобы не растрачивать зря драгоценные секунды и минуты...

11.04.2011

Управление своим временем

Этот пост будет несколько необычным - он не будет посвящен встраиваемым системам, линуксу и прочим штукам. Он будет посвящен тому, как я планирую свое время, что я для этого применяю и какую выгоду получаю от этого. Сравнивая свою производительность до и после я могу сказать только одно - она повысилась как минимум на порядок, я стал успевать делать гораздо больше разных полезных вещей, чем раньше. Возможно, мой опыт окажется кому-нибудь полезен.

Огромные изменения в разработке ядра компонентов "умного дома"

На днях я поговорил со своим научным руководителем о своих "достижениях" по "умному дому". Результатом разговора стало понимание того, что все, что я делал и придумывал раньше - ошибочно и не подлежит использованию в реальном проекте.

Разрабатываем ядро для компонентов исполнительного уровня "умного дома"-3

Потерпев неудачу с ATtiny2313 (по причине отсутствия поддержки нужного мне режима работы SPI) я решил использовать что-нибудь столь же недорогое и простое - например восьмую ATmeg'у.

xv6 - учебная операционная система для курса 6.828 в MIT

В MIT'шном курсе "Разработка операционных систем" (Operating System Engineering) используется простая, учебная операционная система, названная xv6. На нее я наткнулся, читая пост "Примеры хорошого кода" в блоге "Программирование — это просто!".

24.02.2011

Разрабатываем ядро для компонентов исполнительного уровня "умного дома"-2

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

Разводим печатные платы топором

Сегодня я расскажу о том, как использовать САПР Eagle в связке с топологическим трассировщиком печатных плат TopoR.

16.01.2011

CMSIS - code less, create more!

Столкнувшись с необходимостью написать кое-что под имеющийся у меня в наличии чип LPC1768 (на плате LPCXpresso), я приуныл - видимо снова придется читать огроменный даташит, вручную инициализировать кучу периферии и так далее. Но оказалось, что все мои опасения были беспочвенны, ведь существует готовая библиотека, решающая эти и многие другие проблемы, например проблему отсутствия драйверов к периферии ядра микроконтроллера (USB, I2C, SPI и все остальное). Эта библиотека называется CMSIS - Cortex Microcontroller Software Interface Standard.

13.01.2011

Разрабатываем ядро для компонентов исполнительного уровня "умного дома"

Согласно моему техзаданию в исполнительный уровень "умного дома" входят различные датчики, исполнительные устройства и так далее. У всех этих устройств должно быть некое ядро, которое обеспечивает выполнение функций, необходимых для работы устройства в системе "умного дома". Рассмотрим, для начала, какие действия должно уметь выполнять каждое устройство исполнительного уровня системы...