- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi there, I want to generate a 2 port RAM using MegaWizard.
I need that the rdaddress and rdenable inputs without register them first, because this will cause a one clock cycle delay and the internal bus that I use expects that the result shows on the next rising edge of clock when rdaddress and rdenable is high. I also found that write port has to be registered no matter whether M20K or MLAB is used. Read port is different. If I use M20k, I can not choose "no registered" read port. If use MLAB I can. I wonder is that means I can not use M20K in my situation? Thanks for any comments!Link Copied
7 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Yes, writing to the RAMs is a clocked event. There is no way around this. Reading from the M20K is also always one clock cycle. Hopefully there is some other way you can design around this.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
--- Quote Start --- Yes, writing to the RAMs is a clocked event. There is no way around this. Reading from the M20K is also always one clock cycle. Hopefully there is some other way you can design around this. --- Quote End --- Thanks for your comments. I actually found one user manual from Altera. One page 4-12, it shows that the read data shows at the very first rising edge of clock cycle. However, if it is registered, it should happen at the second rising edge of clock cycle, since the first rising edge is to fill the input register. https://www.altera.com/content/dam/altera-www/global/en_us/pdfs/literature/ug/ug_ram.pdf Is the manual incorrect here?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Here is the figure showing the register.https://www.alteraforum.com/forum/attachment.php?attachmentid=12999
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
You can read in one clock cycle on M20K. There is an optional output register which brings it up to two cycles, and is necessary for high speed designs to meet timing. (High speed being a lose term, very dependent on your device, speed grade and frequency requirement)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
--- Quote Start --- You can read in one clock cycle on M20K. There is an optional output register which brings it up to two cycles, and is necessary for high speed designs to meet timing. (High speed being a lose term, very dependent on your device, speed grade and frequency requirement) --- Quote End --- Can I assume that there is still a register for the input ports, after the first clock cycle, the value and enable will be registered. If take memory similar as a "combinational logic", it will show the data once there is address and read enable. The desired value will be at the output port. And also if using output buffer as you said, there will be two clock cycle. So I can understand memory like that? Thanks!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Yes, that sounds right. Once you start simulating the block it's in, you'll quickly confirm.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
--- Quote Start --- Yes, that sounds right. Once you start simulating the block it's in, you'll quickly confirm. --- Quote End --- Thanks Rysc! I appreciate it very much!
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page