Марсоход

МАРСОХОД

Open Source Hardware Project

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Блог о плате-конструкторе Марсоход, САПР Altera Quartus II, Verilog

и еще про всякое-разное!



Обзор семейства ПЛИС Altera MAX10

E-mail Печать PDF

altera max 10 overview

Компания "ЭФО" подготовила видеопрезентацию о новом семействе ПЛИС MAX10 на русском языке. Думаю, что будет многим интересно посмотреть ее.

 

Текстовый VGA-модуль на VHDL

E-mail Печать PDF
 

После нескольких экспериментов с платой Марсоход2 у меня возникла необходимость выводить на экран монитора различные данные. Плата оборудована разъёмом VGA и цифро-аналоговым преобразователем, но, разумеется, реализация работы видеоинтерфейса ложится на плечи разработчика. Для машины Brainfuck был использован текстовый адаптер, созданный Николаем для своих нужд, мне же это решение не подходит по нескольким причинам.

Во-первых, модуль адаптера написан на языке Verilog, с которым я практически не знаком. Таким образом, при необходимости внесения каких-либо правок в модуль и подстройке его под особенности моего проекта мне бы пришлось обращаться за помощью к знающим людям. А это и трата времени, и причинение определённых неудобств тем самым "знающим людям". Во-вторых, академический интерес – знание принципов работы аналогового видеоинтерфейса (пускай и на самом начальном уровне) не будет лишним в копилке знаний будущего инженера. В-третьих, известное правило "10 тысяч часов" – чтобы добиться успеха в какой-либо области, нужно потратить очень, очень много времени на практику.

Итак, вернёмся к видеоадаптеру. VGA – это стандартный интерфейс для управления аналоговыми мониторами. Источник сигнала – в нашем случае это будет ПЛИС платы Марсоход2 – снабжает монитор сигналами цветовых величин красного, зелёного и синего компонента, а также сигналами горизонтальной (строчной) и вертикальной (кадровой) синхронизации. Последние два являются цифровыми, в то время как данные о цвете предварительно превращаются в уровень напряжения в цифро-аналоговом преобразователе. Модуль требует входного сигнала тактовой частоты (pixel clock).

Male VGA connector


Стандартная вилка VGA-разъёма

Также в интерфейсе есть четыре вывода, которые используются для загрузки расширенных данных идентификации дисплея из ПЗУ монитора. В простейшем случае их можно не подключать. Кроме того, некоторые из мониторов поддерживают синхронизацию по зелёному – в этом случае сигналы вертикальной и горизонтальной синхронизации передаются по каналу зелёного цветового компонента, а необходимость в отдельных синхронизирующих линиях, соответственно, исчезает. Заострять внимание на этом сейчас тоже нет смысла, но....

 

Brainfuck

E-mail Печать PDF

Beware of the Turing tar-pit in
which everything is possible
 but nothing of interest is easy.
Alan J. Perlis

В 1936 году, за семь лет до создания первого в мире электронного компьютера общего назначения, и за 22 года до изобретения интегральной схемы, перевернувшей весь мир цифровых вычислений, английский математик Алан Тьюринг предложил концепцию абстрактного исполнителя, который впоследствии был назван в честь своего автора – машина Тьюринга. Эта гипотетическая модель обладает удивительным свойством – любое вычисление, которое может быть описано при помощи машины Тьюринга, может быть реализовано физически, в виде некоего исполнительного устройства.

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

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

Машина Тьюринга в представлении художника.

"Машина Тьюринга в представлении художника.

Таким образом, машина Тьюринга – это абстрактное устройство, представляющее собой простейший вычислитель с памятью, имеющей линейную организацию. Данные в памяти преобразуются посредством элементарных действий, последовательность которых задаётся правилами перехода, причём число возможных действий конечно. Становится очевидно, что на машине Тьюринга можно реализовать любую алгоритмическую разрешимую функцию, множество которых называется вычислимым, причём из последнего вытекает определение полноты по Тьюрингу. Проще говоря, тьюринг-полным называется исполнитель, если на нём можно реализовать любую вычислимую функцию.

Я не буду погружаться в теорию – в контексте математической науки данная тема неисчерпаема. Между тем, я не зря начал с абстрактных определений, ведь ниже речь пойдёт об одном из наиболее известных эзотерических языков программирования, по своему устройству имитирующему самую настоящую машину Тьюринга. Речь идёт о языке с нецензурным названием – Brainfuck.

 

Игра Жизнь внутри ПЛИС

E-mail Печать PDF

bacteria

Пришло мне в голову реализовать игру «жизнь» в ПЛИС в плате Марсоход2.
Не знаю, стоит ли объяснять правила этой игры — они, кажется, общеизвестны. Очень хорошее описание есть в википедии.

Ну, ладно, вкратце повторюсь:

  • есть прямоугольная решетка, в каждой ячейке решетки может жить «микроорганизм», клетка. Есть два состояния клетки решетки — «живая» или «не живая»;
  • каждая клетка имеет восемь возможных соседей. Даже на краях решетки у клеток есть 8  соседей. Решетка рассматривается как «бесконечная плоскость»: нижний край соединен без шва с верхним, а правый край с левым. Такая поверхность называется «тор». По тору-бублику можно ходить бесконечно, в любом направлении, не встречая препятствия;
  • если живых соседей меньше двух, то клетка умирает от одиночества;
  • если живых соседей больше трех, то клетка умирает от перенаселения;
  • если у клетки живых соседей ровно три, то в клетке зарождается новая жизнь;
  • если у клетки два живых соседа — ее жизнь продолжается;
  • в начале игры пространство как-то заполняется живыми клетками — на каждом шаге в каждой клетке происходит таинство жизни — где-то кто-то рождается, а где-то кто-то и умирает. Ну а зритель просто наблюдает за эти процессом.

Эта модель жизни получила название «клеточный автомат».
Программных реализаций для клеточного автомата существует огромное множество. Игру «жизнь» наверное уже написали на всех возможных языках программирования: C/C++, Javascript, Python, Pascal..

Я решил написать клеточный автомат игры «жизнь» для ПЛИС на Verilog HDL.
Меня заинтересовала эта игра тем, что в некотором роде на этой модели я могу попытаться реализовать эдакий «суперпроцессор». Это как раз задача для ПЛИС.

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

 

Блог новичка: Hello World

E-mail Печать PDF

board4

Первое сентября традиционно ассоциируется с началом учебного года и возвращением в отдохнувшее за время летних каникул здание школы или иного учебного заведения за новыми знаниями. Как человек, давно закончивший школу, и по случайному стечению обстоятельств студент-заочник, волнующих переживаний в связи с началом календарной осени я не испытываю. Тем не менее, я тоже решил заняться изучением чего-нибудь нового, интересного и полезного. Тема была выбрана не самая простая – проектирование цифровых устройств, ПЛИС и языки описания аппаратуры (в частности, VHDL).

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

Наверное, поэтому я захотел поделиться своим опытом изучения ПЛИС с аудиторией блога Марсоход. С программируемой логикой ранее мне сталкиваться не приходилось, а идея познакомиться с ПЛИС поближе возникла после изучения курса схемотехники – появилось желание почувствовать процесс разработки изнутри, а отсутствие практических навыков заставляет действовать именно в таком формате. Свои заметки – эту, и, надеюсь, будущие – я бы хотел представлять в виде "докладов" и "лабораторных работ", нарочно уделяя повышенное внимание возможно очевидным аспектам затронутой темы. Разумеется, любое описываемое устройство будет протестировано в плате Марсоход2, а соответствующие проекты для Quartus II будут доступны для загрузки.

 


Страница 1 из 45

GitHub YouTube Twitter
Баннер

Подписка RSS

marsohod.org - лента

Последние комментарии:

На форуме:

Нет новых сообщений.