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.

Flip Flop Memory in FPGA: Read Write Ports

Status
Not open for further replies.

dzafar

Member level 4
Joined
Jan 17, 2017
Messages
76
Helped
1
Reputation
2
Reaction score
1
Trophy points
8
Activity points
690
Hello,

My question is regarding the image below.
Untitled.png

Question: When we say read, does the image above show reading 1 bit. How I am seeing it is a WORD (8bits: A, B, C, D, E, F, G, H) comes in to 4 Muxes. Then 4 out of 8 bits get passed on to 4 Muxes and so on. And at the end the final MUX reads only 1 bit. But this does't make sense to me. Like why would you just read 1 bit? It would either me 1 or a 0. What use is that?

Could it be that A B C D E F G H are 8 WORDS instead of bits? What does the example "Example: a 256 bit x 8 bit memory would need 2040 logic blocks just to implement one read port!" at the end mean?

And then regarding Write Ports

Even though the image below is a good explanation but can someone use a bit simpler words to descibe the image below?
Untitled.png


Thanks in advance :)
 

It doesn't make sense to you because you aren't looking at this correctly.

This is a single bit of data over 8 addresses, the hard to read low-resolution picture has some signals that look like they might be called sel(0)...sel(2) that are connected to the top of each mux. Those would be address lines for an 8 location memory. In the case of a 256 location ram you would need 8 selects.

If you have 256 deep memory it requires 255 2:1 muxes (256-1, i.e. the n-1) to implement the logic to select 1-bit of data at one of the addresses. Since the memory is 8-bits wide you need 8 of those 255 muxes to implement the muxing for all 8-bits. So that is 255*8 which just happens to be 2040 2:1 muxes.

- - - Updated - - -

You must be really lost if that simple explanation needs an even simpler description...

What they are describing is you take the 8-bit address (selecting 256 possible locations) and generate outputs that select only one address at a time. The description mentions you need 256 logic blocks (actually more than this). It really should tell you that you would need three 4-input LUTs to implement the decoding 2 for decoding 4-bit and 4-bits of the 8-bit address and a third to combine their outputs.

Decoding would mean:
Code:
wr_sel[0] = (addr[7:0] == 0)
wr_sel[1] = (addr[7:0] == 1)
...
wr_sel[255] = (addr[7:0] == 255)
so there are 256 of these selects that are used for writing.
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top