@samarth jain: I think I now understand what you are doing. The main problem with that setup is that there are no "general purpose" registers in housekeeping that are available just to store and retrieve data (probably we should have added some). However, there is something close to it, which is a number of registers that have no effect on anything unless something else is enabled. Here are some examples:
(1) DLL trim (3 bytes, only used when the DLL is enabled and running in DCO mode)
(2) GPIO configure (this is a 12-bit configuration for 38 GPIO channels, so every other register is a full byte, and there are 38 of them. The GPIO configure bits in housekeeping are used initially to set the GPIO configuration, but after that they are free to be used for data)
You can read/write to these registers from either the CPU on the wishbone bus, or through the SPI (for access from your FPGA). The addresses are mapped differently for SPI (1-byte address) vs. wishbone (4-byte address):
(1) DLL trim: SPI registers 0x0d, 0x03, and 0x0f = Wishbone address 0x2610001c to 0x2610001e (do a 32-bit read or write at address 0x2610001c, look only at lower 24 bits)
(2) GPIO configure: SPI registers 0x1e, 0x20, 0x22, 0x24, ..., 0x66, 0x68 = Wishbone addressses 0x26000024, 0x26000028, 0x2600002c, ..., 0x260000b4, 0x260000b8, look only at lower 8 bits of each word)
Does that make sense to you?