Добро пожаловать, Гость
Логин: Пароль: Запомнить меня

ТЕМА: Минималистичный FS USB-хост для клавиатуры

Минималистичный FS USB-хост для клавиатуры 5 года 3 мес. назад #5961

Не понятно как вот это получается:

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Минималистичный FS USB-хост для клавиатуры 5 года 3 мес. назад #5962

  • Leka
  • Leka аватар Автор темы
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54
См. программные реализации crc-алгоритмов на Википедии, там используется 0xEDB88320 - зеркальное отображение полинома 0x04C11DB7. Для crc-32 не приведен алгоритм поразрядного вычисления, но можно посмотреть для crc-8.
0xEDB88320, если сдвигать вправо, и 0x04C11DB7, если сдвигать влево. Но тогда и результат зеркально отличается.

На картинке выше 0x104C11DB7.
33-я "1" явно не хранится в программных реализациях.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Leka.

Минималистичный FS USB-хост для клавиатуры 5 года 3 мес. назад #5966

  • Leka
  • Leka аватар Автор темы
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54
100base-tx приемник, PHY + разбор MAC/IP/UDP-заголовка для выделения нужных пакетов - на логике, ~200ЛЕ на все, без использования блочной памяти и софт-процессора. Проверил посылкой байта на светодиоды, загораются, как надо.

PHY, правда, не полностью отладил - только для случая, когда опорная частота приемника в ПЛИС выше опорной частоты передатчика в компе (для другого варианта нет подходящего компа под рукой).

Затраты ЛЕ: разбор 50-байтового заголовка ~50 ЛЕ, синхронизация ~50 ЛЕ, остальное сложно разделить, тк не в отдельных модулях, а свалено в топ-модуль. Потом разделю на более мелкие модули.

UPD: модуль разбора заголовка для фильтрации пакетов.
h - эталонные значения полей,
b - маска проверяемых полей.
В данном случае проверяется адресация приемника в ПЛИС:
MAC-адрес, IP-адрес, протокол, порт.
module chk(clk,clr,en,d,ok,err);
input clk,clr,en;
input [3:0] d;
output reg ok,err;
localparam N=100-1;
reg [N:0][3:0] h =  {
	64'h_55555555555555D5, // преамбула+SFD 
	48'h_112233445566, // dst MAC
	48'h_000000000000,
	16'h_0800, // IP
	16'h_4500, // IP 
	16'h_0000,
	16'h_0000,
	16'h_0000,
	16'h_0011, // UDP  
	16'h_0000,
	32'h_00000000,
	32'h_C0010102, //dst IP
	16'h_0000,
	16'h_1DE6, //dst PORT
	16'h_0000,
	16'h_0000};
reg [N:0] b =  {
	16'b_1111111111111111, // SFD
	12'b_111111111111, // dst MAC
	12'b_000000000000,
	4'b_1111, // IP
	4'b_1111, // IP
	4'b_0000,
	4'b_0000,
	4'b_0000,
	4'b_0011, // UDP
	4'b_0000,
	8'b_00000000,
	8'b_11111111,  //dst IP
	4'b_0000,
	4'b_1111, //dst PORT
	4'b_0000,
	4'b_0000};	
reg [6:0] cnt;
always@(posedge clk)begin
	if(clr)begin
		cnt <= N;
		ok <= 0;		
		err <= 0;
	end else if(en&~err&~ok)begin
		if(cnt == 0) ok <= 1; else cnt <= cnt-1;
		if((b[cnt^1]!=0)&&(d!=h[cnt^1])) err <= 1;
	end
end		
endmodule
Чтобы комп отправил пакет без ARP-запросов, надо дать консольную команду "arp -s" c нужными аргументами.
Упакованные массивы только в SystemVerilog, поэтому в Квартусе надо включить поддержку SV.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Leka.

Минималистичный FS USB-хост для клавиатуры 5 года 3 мес. назад #5968

  • Leka
  • Leka аватар Автор темы
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54
Поделил на модули, отчет Квартуса, с округлением:
~15 ЛЕ - передатчик скремблированного idle-потока,
~40 ЛЕ - синхронизация 2х семплирования (250МГц),
~45 ЛЕ - дескремблер входного потока (со синхронизацией),
~20 ЛЕ - выделение начала кадра и синхронизация тетрад,
~10 ЛЕ - декодер 5B/4B,
~50 ЛЕ - фильтрация пакетов,
~20 ЛЕ - топ-модуль, вывод байта данных (из UDP) на LED.
Так что на PHY пришлось ~130 ЛЕ (из ~200).

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Leka.

Минималистичный FS USB-хост для клавиатуры 5 года 3 мес. назад #5970

Leka пишет: Поделил на модули, отчет Квартуса, с округлением:
~50 ЛЕ - фильтрация пакетов,

правильно ли я понимаю, что это разбор Ethernet + IP + UDP?

И контрольные суммы проверяет? А если расширенный заголовок IP-пакета с опциональными параметрами, тоже работать будет?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Минималистичный FS USB-хост для клавиатуры 5 года 3 мес. назад #5971

  • Leka
  • Leka аватар Автор темы
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54
В конкретном случае (50 ЛЕ) проверяется только МАС-адрес приемника, IP-адрес приемника, порт приемника, и тип пакета(IPv4/UDP). Я не делаю универсальное решение, тк меня не интересует SoC с операционной системой, а без ОС с TCP и прочими пакетами делать нечего. Поэтому только фиксированные UDP-пакеты. Интересует простая быстрая связь с компом (в тч беспроводная), как замена UART. Простая и в плане железа(на стороне ПЛИС), и в плане софта(на стороне компа). Ничего другого более подходящего для данной задачи не вижу.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Leka.

Минималистичный FS USB-хост для клавиатуры 5 года 3 мес. назад #5980

  • Leka
  • Leka аватар Автор темы
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54
Ура! Заработало! ПЛИС может принимать, проверять, и отправлять пакеты без софт-процессора. ~350 ЛЕ на все, включая вычисление на "лету" и отправку CRC-32.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Leka.

Минималистичный FS USB-хост для клавиатуры 4 года 7 мес. назад #6761

  • Leka
  • Leka аватар Автор темы
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54
Начал приводить в порядок и объединять свои разрозненные проекты.
Для начала VGA + беспроводная USB-мышка. Курсор пока в виде квадратика - бегает по экрану.
Беспроводную клавиатуру уже выкладывал (для DE0-nano), кто-нибудь пробовал перевести в Марсоход?
Могу и мышку выложить, если кто-то переведет и выложит для Марсохода.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Минималистичный FS USB-хост для клавиатуры 4 года 3 мес. назад #7088

  • Leka
  • Leka аватар Автор темы
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54
USB == квадратные колеса.
Сейчас попробовал другую USB-мышку в своем проекте - проводную, и другого производителя - не работает...

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Минималистичный FS USB-хост для клавиатуры 4 года 3 мес. назад #7089

Leka пишет: USB == квадратные колеса.
Сейчас попробовал другую USB-мышку в своем проекте - проводную, и другого производителя - не работает...

Как правило , проводные мыши и клавиатуры "LS". Из хидов "FS" только какие-нибуть "навороченные" девайсы, имеющие в составе хаб и т.п. и т.д
Спасибо сказали: Leka

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Время создания страницы: 0.218 секунд
Работает на Kunena форум