Fpga communicate to pc through usb
Slow down. 

There's a long way from implementing USB HID (which is really typically only USB1, and by far the simplest USB profile) and a full/high/superspeed storage medium interface.

What you present in effort doesn't look like you're getting close to a working solution. So, re-evaluate your choices:

Depending on the USB standard you want to support, you will need an external PHY – just because you can run USB1 HID with bare access to the USB lines to your FPGA doesn't mean that'll work at higher speeds, which you will undoubtedly want for a storage device.

So, you  will need something external to speak USB, electrically.

If you're buying an external IC anyway, you should simply buy something that does all the USB handling, and implementation of the necessary state machines for a storage device, for you. It's not lazy, it's the right thing to do!

Then, instead of attaching flash memory directly to that controller, you attach your FPGA, which "hides" the actual memory behind a cryptographic interface (or whatever you're doing).

The Cypress FX3 would probably be what you want. That way, you can concentrate on the secure part, and need not implement a humongously complex standard like USB, which, I'm sad to say, even companies like Xilinx themselves get wrong.
There's little chance you'll write a good USB implementation in a student thesis, and there's also no real benefit: no sane person would do that, but try to buy hardware that takes the effort of handling USB from one's shoulders.

With something like the Cypress FX3, you could offload the USB handling to the Cypress IC, and just use the parallel ("GPIF") bus to talk to your FPGA. I know several very high-rate products that do exactly that.