- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I want to generate a FIFO that is not 2^n in size. So, I can't use the MegaWizard. What are my options? Using Cyclone III.
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
As far as I know, there are no other options. If you aren't losing too much space why not use the 2^X? If you aren't using a dual clocked fifo just write your own. It's pretty much just a ring buffer as you would implement in C.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks for the quick reply. That does answer my question although not helpful. I am using dual clock and the current FIFO size is already huge (16x131,072). Doubling it would not fit in even the largest Cyclone III.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Build two FIFOs, one that is asynchronous and131,072, and once you've crossed clock domains, a smaller one that tops off the depth you need. A little more latency through, but pretty easy.
(Asynchronous FIFOs use gray coding to compare pointers, which are only off by one digit, even at the rollover point. If you arbitrarily had the counters rollover at some point that is not a power of 2, then you would have a transition where many bits are changing, potentially causing errors. So there's some technical reason why it doesn't allow that. Synchronous FIFOs could allow for any size technically, just the megawizard wasn't designed to do that.)
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page