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

а сигнал cke_o сохраняет значение лог. 0. Когда счётчик времени достигает значения I_NOP_T, автомат переходит в состояние DDR_I_NOP. В этом состоя нии сигнал cke_o принимает значение лог. 1, т.е. входной тактовый сигнал на чинает обрабатываться памятью. В момент времени I_MRS1_T начи нается инициализация контрольных регистров памяти MR0–MR3. Все ко манды задаются 3 битным регистром opcode_o, который подсоединяется к управляющим линиям памяти ras_n_o (Raw Access Strobe), cas_n_o (Column Access Strobe), we_n_o (Write Enable). При этом команда должна быть актив на в течение одного периода тактовой частоты памяти; всё остальное время регистр opcode_o должен иметь значе ние OP_NOP (NO Operation) – нет ак тивных команд. Список всех команд памяти приведён в файле параметров ddr3_parms.v. Конечный автомат рабо тает на частоте 83 МГц, а команды для памяти выдаются с частотой 167 МГц. Блок ввода/вывода, работа которого будет рассмотрена ниже, преобразует частоту выдачи команд в необходимую для DDR3 частоту 333,5 МГц. Парамет рыдля команд инициализации переда ются через адресные линии adr_o и ли нии адресации банков ba_o. Динамическая память DDR3 SDRAM имеет четыре контрольных регистра MR (Mode Register), задающих важней шие параметры работы памяти. Ре гистры инициализируются в после довательности MR2–MR3–MR1–MR0. Рассмотрим некоторые параметры, за даваемые этими регистрами. РегистрМR0 . Burst length – длина па кета данных. Динамическая память мо жет обмениваться толькопакетамидан ных. ДляDDR3–это восемь единицдан ных, четыре единицы, а также возмож ность устанавливать размерность четы ре или восемь перед каждой транзак цией (on the fly mode). Под единицей данных понимается размерность ши ны данных памяти. В данном примере размерность шины равна 16, длина па кета 8, т.е. каждая операция чтения или записи содержит пакет данных разме ром 16 бит × 8 = 16 байт данных. CAS La tency – задержка для операций чтения между выдачей команды и данных па мяти; для данного примера равна 7. Регистр MR2. CWL – CAS Write La tency. Задержка для операций записи между выдачей команды и данных для записи. В рассматриваемом контрол лере CWL = 6. Регистр MR3. MPR – Multi Purpose Register. При активации этого регистра память вместо данных из массива для всех операций чтения выдаёт значе ние регистра MPR, т.е. заранее задан нуюпоследовательность данных. Этот регистр удобно использовать во вре мя настройки контроллера для провер ки корректности операций чтения. В нормальном режиме работы регистр MPR деактивирован. Более подробнофункции регистров, а также все временные задержки памя ти DDR3 SDRAM описаны в [1]. Для всех команд время активации контролируется счётчикомhspd_count, работающим на частоте 167 МГц. Этот счётчик в заданные промежутки вре мени устанавливает в лог. 1 линию cmd_out на время одного периода. Именно в этот период времени выдаёт ся активная команда: if (cmd_out) begin ba_o = 3'b000; adr_o = `IA_MRS0; opcode_o = `OP_MRS; end ba_o задаёт номер регистра MR (при ba_o = 3’b000 программируется ре гистрMR0), adr_o – значение регистра, opcode_o – команда конфигурации ре гистров. При cmd_out = 1’b0 все выходные сигналы, указанные в примере, прини мают значения по умолчанию для ко нечного автомата: ba_o = 3'b000; adr_o = 13'h0; opcode_o = `OP_NOP; После инициализации всех четырёх регистров автомат переходит в состоя ние DDR_I_ZQCL. В этом состоянии па мять выполняет операции калибровки. От контроллера не требуется каких ли бо активных действий, кроме выдачи команды OP_ZQCL. В момент времени I_ZQCL_T, т.е. после завершения калиб ровкипамяти, автомат переходит в сле дующее состояние –DDR_I_CLB. В этом состоянии автомат ждёт завершения процесса калибровки блоков IODELAY линий данных памяти dq (эти блоки находятся в файле sopc.v). Весь процесс калибровки блоков IODELAY проходит в несколько этапов. В состоянии автомата DDR_I_MRS4 ак тивируется линия io_clb_o. Это – сиг нал начала калибровки для линий IODELAY. В семействе ПЛИС Spartan 6 калибруется только входная задержка, а выходная должна быть задана. В дан ной реализации контроллера входная задержка данных блока IODELAY отно сительно тактового сигнала сконфигу рирована как VARIABLE FROM ZERO. При такомзначениипараметра задерж ка данных относительно тактового сиг нала равна нулю. Процесс калибровки занимает 12 – 20 циклов тактового сиг нала. После завершения калибровки IODELAY блок запоминает значение внутреннего 8 битного регистра, при котором получается нулевая задержка. Однако это новое значение вступает в силу только после активации сигнала сброса блока. Именно это и происхо дит вмомент перехода конечного авто мата из состоянияDDR_I_ZQCL в состо яние DDR_I_CLB. Сигнал io_rst_o акти вируется на время одного периода тактового сигнала (частотой 83 МГц). До момента вступления в силу новой величины задержки, обеспечивающей ПРОГРАММИРОВАНИЕ 68 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 2 2012 DDR_I _IDLE next_state DDR_I _WAIT DDR_I _NOP ~next_state DDR_I _MRS1 next_state DDR_I _MRS2 ~next_state DDR_I _MRS3 next_state DDR_I _MR S4 ~next_state DDR_I _ZQCL next_state DDR_I _CLB ~next_state DDR_I _DONE ~io_busy_i Рис. 3. Конечный автомат инициализации © СТА-ПРЕСС

RkJQdWJsaXNoZXIy MTQ4NjUy