Hello,
I am writing RTL for a module, which interfaces with a different chip on the platform.
As part of the flow, this hardware module needs to do 10 register reads from the third party chip.
Read flow is =>
Module writes address, valid and rw signals on the first cycle and the read data is available from the third party chip on the 2nd cycle itself. Similarly hardware needs to perform 10 reads.
Assuming 10 reads are in 10 continuous cycles. Start a counter which counts upto 10.Assert valid when the counter is counting. Have a case statement where you scan for counter value and generate address. Do what you want with the incoming data(buffer it,pass it on)
Thanks sharath666 for the very quick response. I will do it this way. Is there any other way?
(i was imagining some vague and complex stuff like pushing the address into a queue and pop it one by one and driving on the third party chip interface)
A queue is required if there is a time lag between when data is generated and when it will be used. In this case generation of addresses are under your control. You can generate them whenever you want;and as soon as you generate them you can pass it to the other chip