Skip to content

Nonkill/SDRAM_memory_controller

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

День 1.

Была начата разработка контроллера памяти:

  • Создан модуль контроллера memory_controller;
  • Сделан расчёт параметров (модуль параметризирован):

- ширины адресного пространства для банок (BANK_ADRESS),

- для строк (ROW_ADRESS), колонн (COLUMN_ADRESS),

- определена ширина шины данных (4 бита).

Определены:

- время одного такта (CAS_LATENCY - 7 нс (для CAS = 3)),

- задержка для перезарядки линии слов (RP_TIME = 15 нс (для CAS = 3, -7)),

- задано время рефреша ячеек памяти (REFR_TIME = 64 мс);

CAS - количество тактов и соответственно время, которое необходимо для того что бы защёлкнулся адрес колонны и был выдан результат (CAS = 3 такта = 22,5 нс) (RAS аналогично для строк);

  • Объявлены все (или почти все, надо ещё разобраться входы/выходы);
  • Создан каркас конечного автомата: добавлены состояния INIT_HOLD, PRECHARGE, IDLE, AUTO_REFR, переходы и выходные состояния для них в рамках инициализации памяти;
  • Реализована инициализация памяти до шага заполнения внутренних регистров;
  • Добавлен флаг для инициализации init_flag;

День 2.

  • Параметры для задержек (REFR_TIME, RP_TIME, RC_TIME) были переведены из секунд в количество циклов для упрощения условий и для того, чтобы эти условия были более специфичными для данного по условию контроллеру;

  • Выходы пришлось сделать регистрами reg, иначе ModelSim ругается

  • Добавлено состояние MRS - для записи параметров burst во внутренний регистр при инициализации памяти, так как эти данные не определены при запуске платы. Параметры для burst заданные по умолчанию:

  • Full page,

  • Sequential,

  • CAS = 3,

  • Standard operation Mode,

  • Programmed Burst Length;

Данное состояние описывает команду MRS памяти. Переход из этого состояния сразу в IDLE, чтобы контроллер подавал NOP и память ушла в IDLE тоже.

  • Переходы между состояниями при инициализации были обыграны через использование двух флагов init_flag и MRS_flag. Первый необходим для того, чтобы контроллер выполнял порядок действий по маршруту инициализации (по факту был в состоянии инициализации), а второй флаг нужен для того, чтобы было возможным двойной переход к refresh_all, сначала при неактивном флаге MRS_flag переход к рефрешу, потом когда случился переход флаг выставляется активным и переход уже будет к MRS. Все команды нужные для инициализации игнорируются без флага, которой снимается при переходе в последнее состояние MRS. Чтобы установка обоих флагов не была противоречивой, было принято решение вынести установку флага в последовательностную часть, где установка происходит синхронно.
  • Так же для отсчёта, прошедшего времени нужно было отсчитать количество тактов, для этого был создан второй счётчик counter_db (дублирующий счётчик). В последовательностной части проверяется является ли следующие состояние таким, которое нуждается в подсчёте тактов и если да, то выставляется маркер времени от которого идёт отсчёт тактов. Но при этом, чтобы он не обновлялся постоянно (ведь состояние может не меняться много тактов, но при этом next_state будет состоянием, которое нуждается в подсчёте), проверяется не является ли текущее состояние этим же самым состоянием.
  • Получилось запустить симуляцию и разобраться в параметрах симуляции. Создан модуль тестбенча.
  • План на следующие дни:

Сделать рефреш, чтение и запись

и

Сделать тестбенч для проверки работы инициализации, проверить правильность отправки команд при инициализации

(В любом порядке)

Сделать тестбенч для рефреша, чтения и записи

Оформить документацию

Разработать доп.функции

  • Показана схема переходов контроллера памяти (стрелочкой показаны безусловные переходы по окончанию операции). И соответствующие этим состояниям команды для памяти (или их состояния, кажется что это одно и то же, но не совсем).

Рисунок 1 - Состояния контроллера и соответствующие иму команды для памяти

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published