СОВРЕМЕННАЯ ЭЛЕКТРОНИКА 2011-7

ПРОГРАММИРОВАНИЕ ваются в нулевое значение перед началом цикла чтения памяти. Пол ный цикл чтения пакета данных мо жет включать в себя несколько пере ходов состояний TX_FIFO_BLOCK – TX_FRAG_READ . После считывания пол ного пакета данных бит frame_done_i устанавливается в единичное значе ние. Во время чтения данных в состоя нии TX_FRAG_READ отслеживается уро вень заполнения FIFO. При достиже нии порога drth (drain threshold) или после считывания полного пакета дан ных, если его размер меньше порого вого значения, устанавливается бит tx_start_o , разрешающий блоку интер фейса с физическим уровнем начать передачу данных. После окончания пе редачи блока бит frag_read_i устанав ливается в единичное значение, и ко нечный автомат переходит в следую щее состояние – TX_ADVANCE . Заметим, что изображённый на ри сунке 4 бит more_i в данной реализа ции контроллера всегда равен нулю. Этот бит используется при более слож ной организации буферной памяти, когда один пакет данных размещается в нескольких дескрипторах. В состоянии TX_ADVANCE контрол лер обновляет значение дескриптора в основной памяти, обнуляя бит own_i , и передаёт дескриптор драйве ру. В случае успешной передачи паке та данных устанавливает 27 й бит сло ва cmdsts – признак успешности пере дачи. Затем проверяется значение поля link . Если оно равно нулю, зна чит, дескриптор был последним в це почке, изображённой на рисунке 3. В этом случае конечный автомат пере ходит в состояние TX_IDLE и ждёт об новления указателя txdp драйвером, т.е. момента сброса бита ctdd_i. Если же поле link не равно нулю, автомат загружает это значение в регистр txdp , сбрасывает бит ctdd_i , устанавливает бит timer_exp_i и переходит в состоя ние TX_IDLE . Однако в этом случае сразу же осуществляется переход в состояние TX_DESC_READ (если в мо мент перехода драйвер не обнулил бит разрешения передачи cr_txen_i ). Таким образом, организация связан ных буферов данных позволяет драй веру инициализировать сразу не сколько пакетов данных и не вмеши ваться в процесс передачи до полного его окончания. Контроллер буфера передатчика ра ботает в тесном взаимодействии с бло ком интерфейса с физическим уров нем. Рассмотрим более подробно ра боту этого блока. И НТЕРФЕЙС ПЕРЕДАТЧИКА С ФИЗИЧЕСКИМ УРОВНЕМ Модуль этого интерфейса располо жен в файле tx_mac.v . К этому модулю относится и блок подсчёта контроль ной суммы crc_gen_tx.v . Основой ин терфейса является конечный автомат, изображённый на рисунке 5. В началь ныймомент времени автомат находит ся в режиме ожидания TXMAC_IDLE . После получения сигнала tx_start_i от контроллера буфера автомат перехо дит в состояние TXMAC_START , т.е. на чинает передачу данных. В состоянии TXMAC_START проверя ется режим передачи данных и готов ность среды. Данный контроллер под держивает только полнодуплексный режим передачи на скорости 1 Гб/c. При этом коллизии в линии отсутству ют; phy_crs_i (carrier sense) – сигнал от PHY о готовности среды передачи. Передача пакета данных Ethernet начинается в состоянии TXMAC_PRE 67 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 7 2011 Реклама © СТА-ПРЕСС

RkJQdWJsaXNoZXIy MTQ4NjUy