Thanks for the png of the design; I was trying to remember how it works from memory.
But that said, I still think I'm right. A single word is a concatenation of 4 32-bit integers consisting of a 30-bit counter and the top two bits reserved as an "integer counter". Note that the freeze counter is 29 bits, but the DRAM can only see 2^24 addresses. The DRAM is therefore written 2^5 times before it stops. This is why you see the five 1's in bits 25-29. Laura On Tue, Mar 13, 2012 at 3:58 PM, Ryan Monroe <[email protected]> wrote: > Hi Laura, > > Thanks for the quick response! To clarify, in the image I posted, each row > is a 'word' in the DRAM. They are separated into 32-bit chunks for clarity. > So, there are as many rows under this (conceptually) as there are addresses > in the dram. > > The first row is address 0, so we shouldn't see counter wrapping. IMHO, > there shouldn't be any '1's in the upper bits -- besides the top two, which > are set by the concat block in the model (picture attached for convenience) > > Thanks for the tip about the controller! For this application, we only need > 2^20 memory locations, so we're good this time. > > --Ryan Monroe > > > > On 03/13/2012 12:47 PM, Laura Spitler wrote: >> >> Hi Ryan, >> >> I believe I understand what's going on assuming that your output >> should be read by columns and not by rows (and that there are more >> rows for each column below what you printed out). >> >> The counter in the design is something like 29-bits (I may have the >> exact value off). For a DRAM with 1 GB of memory, there are only 2^25 >> address, so extra 1's you're seeing at the top of the word is the >> counter wrapping. >> That said, there was a bug in the original verliog code >> >> ( >> mlib_devel_10_1/xps_lib/XPS_ROACH_base/pcores/dram_controller_v1_00_a/hdl/verilog/dram_controller.v >> ) >> >> where ROW_WIDTH = 13 instead of ROW_WIDTH = 14. >> >> This should have been fixed, but you should probably double check it. >> If the bug is still there, only 2^24 addresses are written. >> >> Hope that helps. >> Laura >> >> >> On Tue, Mar 13, 2012 at 3:09 PM, Ryan Monroe<[email protected]> >> wrote: >>> >>> Hey all, >>> >>> I'm trying to use the dram as a coefficient buffer, but I'm having some >>> problems with the demos. >>> >>> I tried to use test_dram_10_1 to fill the dram and subsequently read out >>> the >>> results, but it looks like the upper eight bits of every 32-bit word are >>> being corrupted (or used as some kind of parity bits??) >>> >>> Attached is a printout of the first couple of words read from the dram. >>> As >>> expected, the lower bits are a counter and the upper two bits increase >>> across the row, so to speak. However, the following six bits (which >>> should >>> be '0's, since they're part of a counter which starts at '0'), are all >>> 1s! >>> >>> Anyone else seen this? (note: I'm using ISE 13.4. Might be the >>> problem...) >>> >>> Thanks guys! >>> >>> --Ryan Monroe > >

