https://sudonull.com/usb-controller-on-fpga-development-for-hid-devices-using-the-example-of-a-keyboard
Practical guide to creating a USB 1.1 controller on FPGA. Module architecture, device initialization, analysis of HID descriptors and keyboard connection. Verilog code examples.