Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Block RAM "read" enable

Status
Not open for further replies.

shaiko

Advanced Member level 5
Joined
Aug 20, 2011
Messages
2,644
Helped
303
Reputation
608
Reaction score
297
Trophy points
1,363
Activity points
18,302
After looking into various implementations of Altera block RAM, I noticed that non of them have a "READ" enable pin.
Does this mean that all RAM blocks are of a "look ahead" ("first word fall through") type?
 

Re: Block RAM "read" enable

What have you been reading? the documentation Im reading says the have a read_enable input.
 
Last edited:

Please look at following examples.
Each of the examples is using only a subset of available RAM functionality.

Apparently you did not yet read the respective Altera device handbook or the RAM Megafunction user manual.
 

These are just design examples. But there is this interesting quote in the HDL coding style section of the quartus handbook:

In addition to reset signals, other control logic can prevent memory logic from being
inferred as a memory block. For example, you cannot use a clock enable on the read
address registers in Stratix® devices because doing so affects the output latch of the
RAM, and therefore the synthesized result in the device RAM architecture would not
match the HDL description. You can use the address stall feature as a read address
clock enable in Stratix II, Cyclone® II, Arria® GX, and other newer devices to avoid
this limitation. Check the documentation for your device architecture to ensure that
your code matches the hardware available in the device.

If you read the FPGA documentation, the IV family have read enables. But the enable does not connect directly to the register, it has the address stall instead. The readenable is for asynchronous data output.
 
  • Like
Reactions: shaiko

    shaiko

    Points: 2
    Helpful Answer Positive Rating
The readenable is for asynchronous data output.
What do you mean? Please give an example by code...
 

Re: Block RAM "read" enable

I think its diffcult to give an example by code, as there are no code examples. Some things just have to be directly instantiated. But to my knowledge, it would be something like:

read_data <= ram(addr_reg) when rd_en = '1' else old_data;

- - - Updated - - -

PS. I dont think I have ever used a read_enable directly on an internal ram. Usually you just keep the read_address constant.
 
  • Like
Reactions: shaiko

    shaiko

    Points: 2
    Helpful Answer Positive Rating
TrickyDicky,
Do you agree with the following statement:
A FIFO implemented with a block ram that doesn't have a read enable signal - will always be a "First Word Fall Through FIFO"
 

Yes, as it wont have an output register.
 
  • Like
Reactions: shaiko

    shaiko

    Points: 2
    Helpful Answer Positive Rating
Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top