"alpha" <email@example.com> wrote in message
> > > Uncle Noah wrote:
> > >> Xilinx block RAM is synchronous read. Is this the source of your
> > >> problem?
> [YES, Xilinx's sync read give me trouble.]
You may already know about it, but there's a useful trick you might be able
to make use of to obtain "asynchronous-looking" BRAM in Xilinx parts. It
should work with anyone else's parts as well.
If you disable the output registers of the BRAM, your latency of data out is
a single cycle. More precisely: you set up the read address, apply a clock
edge, and your data comes out a little while later. The key thing is, you
only need a single edge. Now, if you use the opposite edge from the
surrounding logic (i.e. usually the falling edge instead of the rising
edge), you can get the read done within a single cycle (instead of having to
wait until the next rising edge for the data). In the timing diagram below,
point 'B' is the edge used for the BRAM, where the address is sampled. As
you can see, the data addressed by the address value presented at 'A' is
ready by the next edge 'C'. The region marked 'x' is the clock-to-out delay
from the BRAM (2ns or more depending on the device family).
A B C
-----+ +------+ +------+ +----
| | | | | |
+------+ +------+ +------+
------------+ Addr +------------------
--------------------+xx| Data +----------
The only problem with this approach is that it limits the speed of your
circuit. Since you were talking about 33MHz, this won't hurt you at all,
whatever family you're targeting.
Senior FPGA Firmware Engineer (Herndon, VA) VT iDirect is dedicated to providing next generation solutions for broadband IP networking via satellite networks. As the leading innovators in this space, our diverse and talented team of Internet, satellite and telecommunications professionals continues to break new ground and create significant opportunities for network operators, for service providers and resellers, and for corporate networking professionals. A Senior FPGA Firmware Engineer at VT iDirect works within the engineering department in a multi-disciplinary SCRUM team using agile framework.