МАРСОХОД

Open Source Hardware Project

FPGA & CPLD Блогchips

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


Симуляция SDRAM контроллера в ModelSim


modelsim altera logo

Попробую просимулировать SDRAM контроллер из предыдущей статьи mindango с помощью симулятора ModelSim Altera.
Действительно у ModelSim Altera есть ряд ограничений, очень важное ограничение - это отсутствие mixed language support. То есть, невозможно просто симулировать проекты содержащие модули одновременно и на Verilog HDL и на VHDL. Если я хочу симулировать SDRAM контроллер написаный на VHDL, а модель микросхемы памяти Micron написана на Verilog, то это проблема. Однако, выход есть. В Altera Quartus II можно скомпилировать проект, содержащий код VHDL в формат файла "Verilog Output" и он уже может быть использован в ModelSim совместно c другими модулями на Verilog.

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

Приступим.

Простейший 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-разъёма

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


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