On an FPGA, registers synchronize sections of code that execute at different rates so that data can move between the sections.
A register is a buffer that stores one data unit at a time. The number of bits stored in a register varies based on the data type specified for the register. For transferring any given data type, registers use fewer resources than FIFOs implemented in LUTs, but registers do not guarantee lossless data transfer. Use registers when you need to store a single unit of data at a time and do not require lossless transfer.
Registers support the following processes: