МАРСОХОД

Open Source Hardware Project

FPGA & CPLD Блогchips

САПР Altera Quartus II / Quartus Prime, язык Verilog HDL, ПЛИС Cyclone III, Cyclone IV, MAX II, MAX10.
Платы разработчика серии Марсоход, Марсоход2, Марсоход3.


Простейший SDRAM-контроллер на VHDL

 

micron Micron MT48LC4M16A2-75

Рис. 1. Micron MT48LC4M16A2-75

Большинство современных микросхем программируемой логики имеет некоторый объём внутренней памяти, удовлетворяющий минимальные потребности разработчика. Например, в ПЛИС Cyclone III, на которой базируется плата Марсоход2, есть около 51 Кбайт собственной памяти. Этого достаточно, например, для реализации простого текстового VGA-режима, однако для полноценного кадрового буфера, который бы хранил информацию о цветовых величинах каждого отдельного пикселя, памяти ПЛИС явно мало. Тут на помощь разработчику приходят внешние запоминающие устройства различного типа.

На плате Марсоход2 установлена микросхема динамического ОЗУ (SDRAM) ёмкостью 8 Мбайт. К сожалению, по сравнению со статической памятью ПЛИС управлять этой микросхемой сложнее: требуется специальный контроллер, для самой SDRAM характерны задержки, которые необходимо учитывать разработчику, а если долго не обращаться к записанным в ОЗУ данным, они начинают деградировать и могут быть безвозвратно утеряны. Но так ли всё сложно на самом деле? В этой статье я попытаюсь рассказать о том, что представляет из себя динамическое ОЗУ и как им следует управлять на примере платы Марсоход2 и установленной на ней микросхемы Micron MT48LC4M16A2-75 (Рис. 1.).

Плата Марсоход2 и Matlab/Simulink

mathlab

Вот есть такие проекты, которые бывает просто необходимо сделать для платы Марсоход2, но не хватает времени. И все время откладываешь на потом, и все некогда.

И вот в один прекрасный момент видишь, что кто-то уже сделал этот давно задуманный тобою проект, на который у небя не хватило времени! Просто не могу не дать ссылку на статью.
Очень рекомендую: http://we.easyelectronics.ru/plis/marsohod2-matlab-simulink.html, автор kest.на we.easyelectronis.

 

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

altera max 10 overview

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

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

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

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

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

Male VGA connector


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

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

Brainfuck

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

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

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

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

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

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

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

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


GitHub YouTube Twitter
Вы здесь: Начало