СОВРЕМЕННАЯ ЭЛЕКТРОНИКА 2011-7
ПРОГРАММИРОВАНИЕ if (crc_value != crc_val_acq) data_valid[psize_wr[4:0]] <= 1'b0; else data_valid[psize_wr[4:0]] <= 1'b1; Приёмник, так же как и передатчик, содержит два конечных автомата – rxmac_fsm и rx_fsm . Рассмотрим бо лее подробно работу автомата бло ка контроллера буфера приёмника, схема которого изображена на ри сунке 8. В начальный момент времени авто мат находится в режиме ожидания RX_IDLE . Для его перехода в активное состояние требуется инициализация со стороны драйвера. Организация па мяти приёмника такая же, как и у пере датчика (см. рис. 3). Драйвер сначала инициализирует указатель дескрипто ра rxdp , тем самым сбрасывая бит crdd в нулевое значение. После этого драй вер устанавливает бит разрешения приёма в регистре cr и, по истечении времени таймера, конечный автомат переходит в состояние чтения одного дескриптора из основной памяти RX_DESC_READ . После окончания цик ла чтения – установки бита xfer_done_i в единичное состояние – проверяется бит own_i дескриптора. Поскольку для приёмника производителем данных является сам контроллер, в соответ ствии с описанной выше логикой при 69 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 7 2011 Рис. 7. Фрагмент симуляции работы передатчика RX _IDLE RX_FRAG _WRITE RX_ ADVANCE RX_ SCROLL RX_FIFO _BLOCK RX_DESC _READ cr_rxen_i && ~crdd_i && timer_exp_i xfer_done_i && ~own_i xfer_done_i && own_i fifo_ready_i && data_valid_i xfer_done_i xfer_done_i fifo_ready_i && ~data_valid_i scroll_done_i Рис. 8. Конечный автомат контроллера буфера приёмника Реклама © СТА-ПРЕСС
Made with FlippingBook
RkJQdWJsaXNoZXIy MTQ4NjUy