Forth
http://fforum.winglion.ru/

Простой контролер SD-RAM на AHDL
http://fforum.winglion.ru/viewtopic.php?f=11&t=341
Страница 2 из 2

Автор:  Hishnik [ Вт авг 24, 2010 22:54 ]
Заголовок сообщения:  Re: Простой контролер SD-RAM на AHDL

Я поэтому и пишу, что для таких объемов непонятно, есть там регенерация, или нет. Надо все-таки конкретное наименование смотреть.

Автор:  LasyUser [ Ср авг 25, 2010 18:17 ]
Заголовок сообщения:  Re: Простой контролер SD-RAM на AHDL

... пардон что ввел в заблуждение "кривым" вопросом :oops:
Посмотрел datasheet http://www.alldatasheet.com/datasheet-pdf/pdf/127338/ETC/NN514256ALJ-60.html- встроенная регенерация в DRAM есть. Хотел прицепить память к Z180 - со "статикой" конечно проще и работать будет пошустрее, но без буфера много не повесишь, поэтому и вспомнил про DRAM (c CPLD и печатная плата должна поменьше быть и разводить попроще ...) - для экспериментов самое то. Режимов регенерации несколько - RAS only, CAS before RAS, hidden refresh ... какой проще с точки зрения реализации ?
... хотел запихнуть логику в EPM7032 - понятно что мультиплексоры адреса можно использовать в виде отдельных корпусов...

Автор:  WingLion [ Ср авг 25, 2010 18:49 ]
Заголовок сообщения:  Re: Простой контролер SD-RAM на AHDL

LasyUser писал(а):
CAS before RAS


Вот этот вариант проще всего:

Сначала генерируются периодические CAS и RAS для циклов чтения/записи.
Затем формуруется сигнал WE перед спадом RAS (при записи 0, при чтении 1, для регенерации - тоже 1), и в свободные циклы сигналы CAS и RAS меняются местами.

t.e. на AHDL что-то вроде:

Код:
-- предупреждение: схема накидана за 15 минут без всякой проверки и отладки

SUBDESIGN control(
   CLK : input  --  входная частота (шестикратная частота работы памяти)
                     --  для 60нс DRAM - CLK=50MHz, а рабочая частота памяти - ~8MHz
   WR,RD : input -- сигналы запросов записи и чтения
   RASout,CASout,WEout : output   -- выходные сигналы управления
)
VARIABLE
  CT[2..0]  : DFF;
  RAS,CAS : DFF;
  WE,REFRESH  : DFFE;
BEGIN
CT[2..0].clk = CLK;
CT[] = (CT[] + 1) and (CT[] < 5);
CAS.clk = CLK; RAS.clk = CLK;
CASE CT[] IS
  WHEN 0 => RAS = VCC; CAS = VCC;
  WHEN 1 => RAS = GND; CAS = VCC;
  WHEN 2,3 => RAS = GND; CAS = GND;
  WHEN 4 => RAS = VCC; CAS = GND;
  WHEN others => RAS = VCC; CAS = VCC;
END CASE;

REFRESH.clk = CLK; WE.clk = CLK;
REFRESH.ena = (CT[] == 1); WE.ena = (CT[] == 1);
  CASE (RD,WR) IS
    WHEN B"11" => REFRESH = VCC;  WE = VCC; -- цикл регенерации
    WHEN B"X0" => REFRESH = GND;  WE = GND;-- цикл записи
    WHEN B"01" => REFRESH = GND;  WE = VCC; -- цикл чтения
  END CASE;

  IF !REFRESH  THEN
    RASout = RAS; CASout = CAS; -- циклы чтения/записи
  ELSE
    -- режим "CAS перед RAS"
    RASout = CAS; CASout = RAS; -- цикл регенерации
  END IF;
    WEout = WE;

END;

Автор:  LasyUser [ Ср авг 25, 2010 19:26 ]
Заголовок сообщения:  Re: Простой контролер SD-RAM на AHDL

2 WingLion
Спасибо. На выходных займусь с MaxPlus - буду разбираться... :)

Страница 2 из 2 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/