СОВРЕМЕННАЯ ЭЛЕКТРОНИКА 2011-1
После выполнения задачи флаг ко манды устанавливается в значение NOP_VJ – режим ожидания. Vj_cmd_flag <= NOP_VJ; //Write cycle is done Вфункции этого блока также входит регенерация памяти, когда на входе блока нет никаких команд и значение основного счётчика превышает 30Ch, т.е. величину tREFI : Default: if (ddr_count > 32'h0000030C) //Need to do refresh case ({fsm_stat, fsm_next_stat}) {IDLE,IDLE}: fsm_cmd_i <= REFA_T; default: fsm_cmd_i <= NOP_T; endcase Данный код посылает последо вательность команд конечному авто мату для выполнения цикла реге нерации. Когда цикл регенерации практически завершился – текущее состояние автомата равно AR , а следу ющее состояние равно IDLE , – проис ходит сброс основного счётчика. Всё остальное время счётчик инкремен тируется: If ({fsm_stat, fsm_next_stat} != {AR,IDLE}) ddr_count <= ddr_count + 1'b1; else ddr_count <= ddr_count – 32'h0000030C; // 30Ch is tREFI time К ОММУТАЦИЯ ЛИНИЙ DQ И DQS Линии DQS – это стробы данных. В памяти с 16 битными словами таких линий две – для младшего и старшего байтов. При записи данных они явля ются выходными для контроллера, при чтении – входными. В специфи кации на память подробно указаны временные требования для этих сиг налов. При записи данных слова в памяти фиксируются по фронтам сигнала DQS. После регистрации команды за писи WRITE динамической памятью, что происходит по положительному фронту синхросигнала ( ddr_clk[0] ), необходимо подождать время tDQSS, обычно равное одному периоду. По сле этого положительный фронт DQS записывает в память первое слово, а отрицательный фронт – второе. Так как линии DQS обычно находятся в высокоимпедансном состоянии, так же задаётся время перехода этих линий в активное состояние при цикле записи и возврата в высокоим педансное состояние после заверше ния записи. Эти временные парамет ры называются соответственно пре амбулой tWPRES и постамбулой tWPST . Включение и выключение ли ний DQS контролируется сигналом ddr_dqs_en , который отвечает выше перечисленным временным требова ниям: assign ddr_dqs = (ddr_dqs_en)? {ddr_pll_in[0],ddr_pll_in[0]} : 2'bzz; Поскольку номинальное значение tDQSS равно одному периоду и дан ные записываются по обоим фрон там синхросигнала, необходим до полнительный сигнал, сдвинутый на 90 ° , который заранее подготавлива ет данные для записи. С этой целью блок P L L выра б атыв а е т си г на л ddr_pll_90 . Логика подготовки дан ных для записи выглядит следующим образом: case (ddr_pll_90) 1'b1: ddr_dq_drv[15:0] = ddr_data_in[15:0]; 1'b0: ddr_dq_drv[15:0] = ddr_data_in[31:16]; endcase Линии данных DQ, так же как и DQS, переводятся в активное и высо коимпедансное состояния сигналом ddr_dqs_en : assign ddr_dq = (ddr_dqs_en)? ddr_dq_drv: 16'hzzzz; При чтении данных важным явля ется параметр латентности, который определяет количество периодов по сле подачи команды чтения READ , че рез которые данные появляются на шине. При первоначальной конфигу рации этот параметр устанавливается равным двум. Заметим, что в данной реализации контроллера в качестве строба чтения используется сигнал ddr_pll_90 , а не DQS . В контроллере также есть блок тестовой логики, который позволяет при отладке записывать значения основных регистров и затем пере давать их пользователю для анали за. Частота записи значений регист ров равна удвоенной частоте рабо ты основной логики контроллера, т.е. 200 МГц. М ОДЕЛИРОВАНИЕ РАБОТЫ КОНТРОЛЛЕРА Как уже было отмечено выше, моде лирование проекта было выполнено в программеModelSim, которая входит в состав пакетаQuartus. Моделировалось поведения блока ddr_cntr.v . В ориги налы файлов для Quartus были внесе нынекоторые изменения, которые не существенны при моделировании, а именно: ● величина первоначальной задерж ки в файле ddr_cntr.v была изменена с 16'h4E20 на 16'h0010. Этот цикл ожидания необходим только для физического устройства и никак не влияет на результаты модели рования; ● по той же самой причине в файле ddr_init_fsm.v время T_RDY было из менено с 8'hDC на 8'h20. Для удобства чтения результатов был создан командныйфайл radix1.do , который после выполнения его ко мандой do позволяет заменить число вые значения векторов состояния контроллера на более удобные в вос приятии символические, как на рисун ках 3 и 5. З АКЛЮЧЕНИЕ Построение контроллера памяти DDR SDRAM на языке Verilog в сочета нии с отладочной платой, такой как DK START 3C25N, является хорошим учебным материалом для отработки навыков программирования на языках описания цифровых устройств (HDL) и освоения методов проектирования конечных автоматов. Л ИТЕРАТУРА 1. Гребенников А. Интерфейс VJTAG для отла дочной платы DK START 3C25N. Совре менная электроника. 2010. № 9. 2. 256Mb DDR SDRAM Specification. Power chip Semiconductor Corp. 3. Double Data Rate (DDR) SDRAM. Micron Technology, Inc. 4. Clifford E. Cummings. State Machine Coding Styles for Synthesis. Sunburst Design, Inc. 5. Clifford E . Cummings. The Fundamentals of Efficient Synthesizable Finite State Machine Design using NC Verilog and BuildGates. Sun burst Design, Inc. ПРОГРАММИРОВАНИЕ 64 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 1 2011 © СТА-ПРЕСС
Made with FlippingBook
RkJQdWJsaXNoZXIy MTQ4NjUy