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 |
... пардон что ввел в заблуждение "кривым" вопросом Посмотрел 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/ |