СОВРЕМЕННАЯ ЭЛЕКТРОНИКА 2011-1

основной конфигурационный ре гистр динамической памяти . Значе ние регистра также выставляется на адресные линии а12 – а0. Биты а6 – а4 определяют латентность памяти – время между подачей команды чте ния данных ( READ ) и появлением данных на выходных линиях DQ. При инициализации этот параметр устанавливается в значение 3'b010, что соответствует времени задержки в два периода тактового сигнала. Биты а2 – а0 определяют размер па кета данных при чтении/записи (burst length). Допустимыми значе ниями являются 2, 4 или 8 шестнад цатибитных слов. При инициализа ции эти биты устанавливаются рав ными 3'b001 (два слова). После установки конфигурационно го регистра конечный автомат снова переходит в состояние PRE_I и затем выполняет два цикла регенерации памяти в состоянии AR_I . Все перехо ды осуществляются через состояние NOP_I . Фрагмент процесса инициали зации по результатаммоделирования в программе ModelSim показан на ри сунке 3. Состояние RDY_I характеризует окон чание процесса инициализации – сиг нал fsm_init_done устанавливается в единичное значение, тем самым управ ление передаётся основному конечно му автомату ddr_fsm.v : fsm_init_state[RDY_I]: begin fsm_init_done = 1'b1; fsm_init_next_state[RDY_I] = 1'b1; end Рассмотрим более подробно работу основного конечного автомата. О СНОВНОЙ КОНЕЧНЫЙ АВТОМАТ Автомат ddr_fsm.v относится к классу конечных автоматов Мили, т.е. выход ной сигнал зависит как от состояния автомата, так и от входных сигналов. Стильпрограммирования–с двумябло ками always , бинарным описанием со стоянийавтомата (binary encoded) ире гистровым выходом (registered output). Состояния динамической памяти в рабочем режиме описываются конеч ным автоматом, полная схема которо го приведена в спецификациифирмы производителя [2]. Автомат ddr_fsm.v , граф которого показан на рисунке 4, является упрощённой версией полной схемыи реализует только циклы запи си, чтения и регенерации, а также функцию установки конфигурацион ного регистра. Первоначально конечный автомат устанавливается в состояние IDLE и затем ожидает дальнейших команд от контролирующего блока. Выходной сигнал, т.е. команды для динамичес кой памяти, зависит от состояния автомата и от значения счётчика времени fsm_state_counter . Значение счётчика устанавливается в момент переключения автомата из одного состояния в другое, который характе ризуется разными значениями ре гистров fsm_state и fsm_next_state (те кущее и следующее состояния соот ветственно): case ({fsm_state,fsm_next_state}) {RA,WRITE}: fsm_state_counter <= TRCDW; {RA,READ}: fsm_state_counter <= TRCDR; default: if (fsm_state_counter !== 16'h0000) fsm_state_counter <= fsm_state_counter – 1'b1; endcase Во все остальные моменты времени счётчик декрементируется. На рисун ке 5 изображён результат моделирова ния цикла записи. При поступлении команды ACT_T на вход fsm_cmd_i (все команды поступают по положитель ному фронту сигнала ddr_clk[0] ) ре гистр fsm_next_state устанавливается в значение RA (Row Active). При сле дующем отрицательном фронте так тового сигнала регистр fsm_state при нимает значение fsm_next_state , то есть RA : fsm_state <= fsm_next_state; Одновременно с переходомавтомата в состояние RA на выходе устанавлива ется команда ACT , которая активирует строку памяти, при этом адрес строки присутствует на адресных линиях а12 – а0. В следующий положительный такт на вход автомата поступает команда WRITE_T , которая приводит к пере ПРОГРАММИРОВАНИЕ 62 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 1 2011 Рис. 3. Инициализация памяти IDLE C = NOP_T C = REFA_T C = MRS_T MRS AR RA PC C = NOP_T C = ACT_T C = PRE_T C – значение регистра fsm_cmd_in, T – значение регистра fsm_state_counter C = PRE_T C = PRE_T T = 0 C = WRITE_T II (C = NOP_T&&T > 0) C = READ_T II (C = NOP_T&&T > 0) T > 0 T > 0 T = 0 C = WRITE_T C = NOP_T&&T = 0 C = NOP_T&&T = 0 C = READ_T READ WRITE Рис. 4. Граф основного конечного автомата контроллера © СТА-ПРЕСС

RkJQdWJsaXNoZXIy MTQ4NjUy