Good news, you have many options. They boil down to pulled and interrupt driven solutions.
Since you are working with FIFOs it sounds like you want speed so I'll jump straight to the interrupt solution. If you take the component you created and use that dataavailable_n to trigger the interrupt that will be the method to alert the CPU data is ready. Then in your service routine you read in the value (and if your calculations are fast you may even want to do those and put the data into the transmit FIFO all within the interrupt service routine).
Just so you know this isn't the highest performance way to do this with FIFOs though. You can increase your thoughput if you can afford to wait a while for the FIFO to fill up. What I mean is instead of firing off an interrupt every time data enters the fifo you wait until it's filled up to 50%, 75%,.....whatever as long as there is more than one word in there and your system will be fast enough to empty it. Then you trigger the interrupt off this "almost full" signal and start pulling that data out. A side note of this idea is that you can also DMA the data into a faster memory and crunch the numbers faster (really depends on your application though which idea works best).
Hope that helps.