СОВРЕМЕННАЯ ЭЛЕКТРОНИКА №2/2012

ПРОГРАММИРОВАНИЕ assign c_adr_o = {adr_i[10:4],3'b000}; assign r_adr_o = adr_i[23:11]; assign ba_o = adr_i[26:24]; Поскольку память имеет объём 1 Гбит = 128 Мб, для её полной побайт нойадресациитребуется27линийадре са. Три старших бита, 26 – 24, адресуют банк памяти. Следующие тринадцать бит, 23 – 11, адресуют строки. Для адре сации столбцов используются десять адресных линий. Однако линии шины Wishbone 3 – 1 заменяются нулями, так какобменспамятьюпроизводитсяфик сированными пакетами длиной по во семь 16 битных слов. В связи с тем, что обмен данными производится 16 бит ными словами, нулевой бит адреса не используется для адресации столбцов. После включения питания контроль шины адреса и команд памяти переда ётся конечному автомату инициализа ции, при этом основной конечный ав томат и счётчик находятся в режимах ожидания. После выполнения проце дуры инициализации памяти и калиб ровки блока ввода/вывода сигнал за вершения инициализации init_done_w принимает значение лог. 1, и основ ной конечный автомат и счётчик на чинают работать в основном режиме. Конечный автомат ddr_fsm обрабаты вает команды от основного счётчика и контроллера шиныWishbone. Задача основного счётчика – отсчёт времени с момента последней регенерации памяти. Когда значение счётчика до стигает T_REFI (константа в файле ddr3_parms.v), сигнал необходимости регенерации ref_req принимает значе ние лог. 1: if ((ddr_count == `T_REFI) && init_done_w) ref_req <= 1'b1; При получении этого сигнала конеч ный автомат начинает процедуру ре генерации памяти. После завершения регенерации основной счётчик обну ляется сигналом count_reset и начина ет отсчёт времени снова. Команда счёт чика имеет более высокий приоритет, чем команды контроллерашиныWish bone, так как своевременная регенера ция памяти необходима для сохране ния целостности данных, а операции чтения/записи можно отложить. Рассмотрим более подробно работу отдельных блоков контроллера памяти. К ОНЕЧНЫЙ АВТОМАТ ИНИЦИАЛИЗАЦИИ Для правильной работы динамичес кой памяти необходима её первона чальная инициализация. Эту процеду ру выполняет специальный конечный автомат, исходный код которого нахо дится в файле ddr_init_fsm.v, а блок схема изображена на рисунке 3. После подачи питания или после системного сброса включается счёт чик времени init_count, при этом ко нечный автомат находится в состоя нии DDR_I_IDLE. В этом состоянии активируется сигнал сброса памяти reset_n_o = 1’b0 и отключается сигнал разрешения тактового сигнала cke_o = = 1’b0. Через промежуток времени I_WAIT_T автомат переходит в состоя ние DDR_I_WAIT. При этом деактиви руется сигнал сброса памяти reset_n_o, 67 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 2 2012 Конечный автомат инициализации ddr_init_fsm.v Калибровка Регенерация count_reset Данные Инициализация завершена init_done_w Мультиплексор команд и адреса К блоку контроля ввода/вывода clk_mgmt.v Основной конечный автомат ddr_fsm.v Модуль трансляции адреса ddr_adrc.v Контроллер шины Wishbone wb_ddr3_cntr.v Основной счётчик Рис. 2. Блок схема контроллера памяти Реклама © СТА-ПРЕСС

RkJQdWJsaXNoZXIy MTQ4NjUy