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

Одновременно с этой командой уста навливается в лог. 1 линия адреса adr_o[10] – сигнал того, чтонеобходима подзарядка всех банков. Затем через промежуток времени T_RP автомат пе реходит в состояние DDR_REF1 – вто рая стадия процесса регенерации. В этом состоянии памяти выдаётся ко манда OP_REF (refresh) – регенерация строки. Адрес для регенерации фор мируется памятью автоматически, по этому от контроллера требуется толь ко выдача команды. Через промежуток времени T_RP + T_RFC процесс регене рации завершается, и автомат вновь переходит в состояние ожидания. При запросе чтения/записипервона чальные действия конечного автомата одинаковыкакдляоперациичтения, так и для операции записи – необходимо активировать строку. Для этого автомат переходит в состояниеDDR_ACT_Pивы даёт памятикомандуOP_ACT. Вэтотмо мент на адресных линиях банка и стро ки должны быть достоверные данные, полученные в результате преобразова ния адресамодулемddr_adrc. Черезпро межуток времени T_RCD конечный ав томат переходит в состояние DDR_ACT, что сигнализирует об окончании про цесса открытия строки. Далее определяется, что необходи мо выполнить – запись или чтение. При равенстве единице регистра rd_flag автомат переходит в состояние DDR_RDAP, т.е. выполняет операцию чтения. Во время инициализации па мять была сконфигурирована на 8 пакетный приём данных – каждая операция считывает пакет размером 8 × 16бит. Блок, непосредственно считы вающийданные памятиво внутренний буфер, находится в модуле ddr3_top. В зависимостиот латентностипамятидля операций чтения, также задаваемой во времяинициализации, устанавливается параметр RD_START. Память типа DDR (DoubleDataRate) выдаёт данные какна положительном, так и на отрицатель номфронтах синхросигнала. В данной версии контроллера час тота памяти равна 333,5 МГц, однако блок записи данных памяти работает на частоте вдвое ниже – примерно 167 МГц. Это происходит потому, что данные на скорости 333,5МГц для обо их фронтов принимаются блоками ISERDES, работа которых будет рас смотрена ниже, и затем эти данные на пониженной частоте записываются во внутренний буфер. То есть за один пе риод сигнала 167МГц память передаёт четыре единицы данных – 4 × 16. Имен но поэтому ширина шины dq_i в моду ле ddr3_top равна 64 битам. Следова тельно, для приёма полного пакета дан ных размером 8 × 16 бит требуются две операции чтения на частоте 167 МГц: if (rd_count_pos == `RD_START) {bufr[1],bufr[0]} <= dq_i; else if (rd_count_pos == (`RD_START + 1)) begin {bufr[3],bufr[2]} <= dq_i; rd_done_r <= 1'b1; end Внутренние регистры буфера bufr имеют размерность 32 бита, счётчик rd_count_pos отсчитывает время с мо мента выдачи команды чтения. После завершения операции чтения конеч ный автомат ожидает промежуток вре мени, необходимый для подзарядки банков (так как операция чтения зада ётся с автоматическимпредзарядом), и после этого переходит в состояние DDR_IDLE. Рассмотрим цикл записи. Для опера ции записи также вначале выдаётся ко манда активации строки. Затем конеч ный автомат из состоянияDDR_ACTпе реходит в состояние DDR_WRAP и выдаёт команду OP_WRITE с установ леннымв лог. 1битомадреса adr_o[10] – команда записи с автоматическим предзарядом банков. Блок, непосред ственно записывающий данные в память, также находится в модуле ddr3_top. ПараметрWR_START зависит от латентности памяти для записи CWL (CASWrite Latency), задаваемой во вре мя инициализации. По аналогии с опе рацией чтения, данные выдаются паке тами по 64 бита на частоте 167 МГц в режиме работы SDR (Single Data Rate) только на отрицательном фронте синхросигнала. Затем эти данные пре образуются в блоки по 16 бит на часто те 333,5 МГц для режима работы DDR. Через промежуток времени T_WRAP конечный автомат переходит в состо яние DDR_IDLE – запись блока данных и предзаряд банков (precharge) завер шены. Команды записи и чтения выдаются блоком управления шиной Wishbone. Рассмотрим более подробно работу этого блока. Б ЛОК ИНТЕРФЕЙСА С ШИНОЙ W ISHBONE Блок интерфейса с шинойWishbone, исходный код которого приведён в файле wb_ddr3_cntr.v, обеспечивает связь контроллера памяти с другими устройствами на шине Wishbone. Он также содержит конечный автомат, изображённый на рисунке 5. В состоя нии DDR_WB_IDLE автомат ожидает запросы на чтение или запись, кото рые регистрируются по значениям управляющих линий шины Wishbone wb_we_i, wb_cyc_i и wb_stb_i. При по лучении запроса на чтение автомат пе ПРОГРАММИРОВАНИЕ 70 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 2 2012 DDR_WB _IDLE ~wb_we_i && wb_cyc_i && wb_stb_i DDR_WB _READ DDR_WB _READ_H DDR_WB_ READ_M DDR_WB _WRITE DDR_WB_ WR_WAIT DDR_WB_ WR_DONE data_avail ~data_avail ~data_avail && wb_cyc_i data_avail ~wb_cyc_i wb_we_i && wb_cyc_i && wb_stb_i && buf_rdy next_state1 wb_cyc_i && buf_full ~buf_full Рис. 5. Конечный автомат блока интерфейса с шиной Wishbone © СТА-ПРЕСС

RkJQdWJsaXNoZXIy MTQ4NjUy