Ingest and egest register
Ingest
Purpose
Single address to which the entire spacecraft telemetry can be written (over multiple frames, due to 256 byte limit)
Why not FIFO
Risk of the contents of the FIFO getting stale: spacecraft telemetry writes telemetry, but maybe no image is take, spacecraft write next telemetry, next image is taken but the older telemetry to attached
Implementation
Implement as a w_pulse register. The fabric will write the value on the RAM. register -> (fabric) -> RAM. Then a reset_ram_address
bit to reset the address back to the start of the RAM.
Egest
Purpose
Single address from which the entire camera telemetry can be read (over multiple frames, due to 256 byte limit)
Why not FIFO
Similar concerns as in #79. Furthermore, if we have this egest register, we are able to read the PRESENT value of the telemetry registers, instead of the last update of the registers into the fifo/buffer. Additionally, this avoids additional memory taken by the telemetry data block.
Implementation
A single address, which when read, return the value of the register at the present RAM position. A reset_ram_address
bit exists to reset the address back to the start of the RAM. This avoids reading the wrong number of registers, and the RAM position becoming in an unknown position. Operation should go: first reset ram address, then read.
This feature potentially removes the need for #79.