Эта программа состоит из нескольких файлов verilog, включая все связанные файлы в папке hdl и некоторые необходимые IP-ядра.
Введение в файловые функции
crc.v : в основном используется при отправке UDP для расчета значения CRC UDP-пакетов.
ethernet.v : инкапсуляция файлов udp_send.v и udp_receive.v.
ethernet_top.v : образец файла верхнего уровня всего проекта, который показывает только, как вызывать файл и другие связанные файлы ядра IP.
udp_receive.v : отвечает за процесс обработки приема udp.
udp_send.v : отвечает за процесс отправки udp.
clk : основные часы принимающего модуля.
rst_n : получает сигнал глобального сброса модуля.
rx_data_len : длина udp-пакета полученных данных, которая является параметром udp-заголовка.
rx_total_len : длина полученного IP-пакета данных, который является параметром заголовка IP-данных.
update : при получении нового пакета UDP это значение будет повышено на один цикл.
ip_header : весь полученный заголовок пакета IP-данных поддерживает только 160-битный заголовок IP-данных.
udp_header : весь полученный заголовок данных UDP поддерживает только 64-битный заголовок данных UDP.
mac : весь полученный MAC-пакет, включая MAC-адрес назначения, MAC-адрес источника и идентификацию типа IP-пакета.
data_o : Получены действительные данные.
src_mac : MAC-адрес источника пакета.
src_addr : IP-адрес источника пакета данных.
src_port : адрес исходного порта пакета данных.
DF : параметр IP-пакета данных, 0 означает, что пакет данных может быть фрагментирован, 1 означает, что он не может быть фрагментирован.
MF : параметр IP-пакета, 1 означает, что фрагменты еще есть, 0 означает, что это последний фрагмент.
e_rxdv : управляющий ввод-вывод RTL8211. Когда он высокий, это означает, что полученные данные действительны.
rxd : получение данных ввода-вывода RTL8211.
CAN_RECEIVE_BROADCAST : поддерживать ли получение широковещательных пакетов данных, то есть пакетов данных с MAC-адресом FFFFFFFFFFFF.
DST_ADDR : установите IP-адрес адреса назначения, который является адресом сетевой карты RTL8211.
DST_PORT : установите адрес порта адреса назначения, который является портом RTL8211.
DST_MAC : установите MAC-адрес адреса назначения, который является MAC-адресом RTL8211.
IDLE : состояние ожидания, пока получена преамбула, он переходит в состояние R_PRE.
R_PRE : Получить преамбулу. После получения семи преамбул и одного стартового бита войдите в состояние R_MAC.
R_MAC : получение статуса данных MAC, вход в состояние R_HEADER после завершения приема.
R_HEADER : Получите заголовок данных IP и заголовок данных UDP и войдите в состояние R_DATA после получения.
R_DATA : получите действительные данные UDP, после получения введите R_FINISH.
R_FINISH : Возврат в состояние IDLE.
clk , сигналы rst_n такие же, как указано выше;
data_i : данные, которые необходимо отправить. Когда tx_dv высокий, данные, которые необходимо отправить, передаются в пакет данных UDP через этот порт.
tx_data_len : длина отправляемых данных, параметры UDP-пакета.
crc : код проверки CRC всего пакета данных Ethernet, зарезервированный для проверки данных.
crcen : сигнал включения модуля crc, который можно рассчитать только для модуля проверки высокого crc.
crcrst : сигнал сброса модуля crc, который сбрасывает тестовый модуль с высоким crc.
start : Стартовый сигнал модуля отправки UDP, который является началом отправки кадра для модуля высокой скорости.
busy : сигнал занятости модуля отправки UDP. Этот сигнал имеет высокий уровень, когда модуль находится в процессе формирования кадра и отправки.
tx_dv : командный сигнал модуля отправки UDP, информирующий текущий модуль UDP о том, что данные могут быть отправлены, пожалуйста, отправьте данные, которые необходимо отправить.
dst_mac : MAC-адрес адреса назначения.
dst_addr : IP-адрес адреса назначения.
dst_port : адрес порта адреса назначения.
DF , MF такие же, как указано выше.
tx_en : сигнал разрешения передачи RTL8211. Когда он высокий, данные передачи действительны.
txer : сигнал ошибки отправки RTL8211.
txd : RTL8211 отправляет данные ввода-вывода.
IP_HEADER_LEN : длина IP-пакета данных. Значение по умолчанию подходит и не требует изменения.
TTL : Параметры IP-пакетов, время жизни.
SRC_ADDR : IP-адрес исходного адреса.
SRC_PORT : порт исходного адреса.
SRC_MAC : MAC-адрес адреса источника.
IDLE : состояние ожидания, начало высокого уровня и переход в состояние MAKE_IP.
MAKE_IP : генерировать пакеты IP-данных и переходить в состояние MAKE_SUM.
MAKE_SUM : вычисляет контрольную сумму заголовка IP-пакета и переходит в состояние SEND_PRE после завершения расчета.
SEND_PRE : отправить 7 кодов преамбулы и 1 стартовый код. Затем войдите в состояние SEND_MAC.
SEND_MAC : отправьте MAC-адрес назначения, MAC-адрес источника и тип IP-пакета, а затем войдите в состояние SEND_HEADER.
SEND_HEADER : отправьте заголовок данных IP и заголовок данных UDP, а затем войдите в состояние SEND_DATA.
SEND_DATA : отправьте действительные данные и войдите в состояние SEND_CRC после отправки.
SEND_CRC : отправить данные CRC и войти в состояние IDLE_CODE после отправки.
IDLE_CODE : отправьте 12 кодов простоя, что является требованием для пакетов данных Ethernet. Возврат в состояние IDLE после отправки
Чтобы соответствовать требованиям синхронизации 125 МГц, коды этих двух частей ядра были максимально изменены. Например, в udp_send при отправке заголовков MAC и данных используется конечный автомат для отправки соответствующих битовых данных. на значение счетчика. Я пробовал это раньше, отправляя старшие восемь бит напрямую, а затем непрерывно сдвигая неотправленные данные к старшим восьми битам, но этот метод не может соответствовать требованиям синхронизации 125 МГц, поэтому он был изменен на текущий. метод. Другой пример — вычисление контрольной суммы заголовка. Процесс расчета разделен на несколько этапов, что также эффективно снижает общее количество нарушений синхронизации.
Но даже в этом случае все еще существуют некоторые сигналы, которые не соответствуют требованиям синхронизации, и отчет о синхронизации будет отображать путь синхронизации около отрицательной 1 нс.
Продолжение следует, ждем заполнения дыр. . .
Статьи по заполнению ям (Изучение гигабитной сети) 1. Понимание всей структуры кадра Ethernet (Изучение гигабитной сети) 2. Усилия по обеспечению временного запаса цифровых цепей