Контроллер SDRAM памяти для FPGA Altera Cyclone-4 (verilog).

 

        Есть задачи (например захват и вывод видеосигнала) в которых не обойтись только внутри-

кристальной памятью ПЛИС, т.к. объем ее ограничен.

        В таком случаи приходится рассматривать варианты подключения микросхемы внешней RAM

памяти. При этом можно использовать статическую память как самый простой вариант, но объем

микросхем подобного типа может быть недостаточен, к тому же стоимость микросхем статической

памяти весьма велика.

        Если объема статической памяти не достаточно, то следующий вариант рассмотреть применение 

динамической памяти SDRAM или DDR. При этом нужно понимать, что данный тип памяти сложнее в

работе чем статическая память.

        Динамическая память требует строгого соблюдения всех временных параметров работы с памятью и

выполнение периодического обновления записанной информации (refresh).

        Перед тем как разводить печатную плату, сначала нужно (по возможности) проверить работоспо-

собность решения на готовой плате (плате кита). Это позволяет при переходе от модели к железу

проверить работоспособность проекта или его части с минимальными потерями времени. При этом

железо (плата кита) заведомо исправно,  это позволяет сконцентрироваться на разработке программной

части и не заниматься поисками проблем в только что собранной плате !

 

        В данной стать описана реализация контроллера SDRAM памяти.

Почему не DDR ? Работать с SDRAM памятью проще, она менее требовательна, до сих пор выпускается,

устанавливается на платах китов (DE0, DE0-NANO, DE1, DE2, DE2-115 и т.п.).

        В качестве платы кита будет выступать DE0-NANO. Для отладки контроллера памяти этого хватит,

DDR оставим на следующий раз. На плате DE0-NANO установлена микросхема ПЛИС фирмы Altera

(сейчас Intel) EP4CE22F17C6 (Семейство CYCLONE 4) + микросхема SDRAM памяти фирмы ISSI

IS42S16160D-7TLI объем 32 мегабайт. Также плата содержит встроенный USB программатор.

 

DE0-NANO 

 

 

        Перед тем как начинать создавать контроллер, необходимо разыскать verilog модель микросхемы

памяти. Это необходимо для проведения моделирования работы контроллера, на модели которая

максимально приближена к реальной микросхеме памяти. Это позволит не изобретать велосипед в

виде модели SDRAM памяти, т.к. при создании модели сама модель тоже потребует времени на отладку.

Готовая модель сэкономит массу времени и сил.

        Поиск модели памяти в интернете не дал результата, поэтому пришлось обратиться в службу

поддержки производителя и запросить модель памяти. Ответили быстро и без проблем прислали

модель для is42s16160.v

 

        Теперь необходимо определить требования к контроллеру.

  Контроллер должен выполнять следующие операции:

  1. Начальная инициализация.
  2. Выполнять периодическое обновление памяти.
  3. Запись в память.
  4. Чтение из памяти.

 

        Примечание: Зададим Programmable burst length = full page. Количество записываемых и читаемых

слов будет величиной переменной, и будет варьироваться от 1 и до full page слов. Т.е. если необходимо

произвести Запись/Чтение менее одной страницы, то длинна будет усекаться контроллером при помощи

команды BURST TERMINATE. При таком подходе контролер способен читать и писать как целыми страни-

цами, так и отдельными словами.

 

        Для тестирования работы контролера был написан автомат (верхнего уровня) который производит

поочередную запись слов по всему массиву памяти: 0x0000, 0xffff, 0xaaaa, 0x5555 с последующей опера-

цией чтения и сравнения.

 

Результат операций чтения и сравнения выводятся на светодиоды.

 LED7 - Операция чтения. Свечение соответствует чтению данных.

 LED6 - Результат операции сравнения, (прочитанного с записанным значением) ОК.

 LED5 - Результат операции сравнения, ОШИБКА.

 

 

 

        Проект создан в среде Quartus v13.0, на языке verilog. Моделирование контроллера производится в

ModelSim ALTERA STARTER EDITION 10.1d. Исходники проекта доступны по ссылке.

 

       После компиляции проекта, контроллер занимает 384 из 22320 логических элементов, что составляет

в районе 2 % от общей емкости кристалла Cyclone-4. На кристалле еще полно места для размещения

дополнительной логики !!! 

 

 

продолжение следует....... :)