UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Visitor efis
Visitor
6,697 Views
Registered: ‎09-26-2009

spartan 3E XC3S100E write to memory problem

Jump to solution

 i am making a project where i am getting data. each data is equal to a memory address.i want to add 1 to each of this memory addresses

 the clock of the memory is twice fater then the clock of the data so i can get the value in this memory address and then add 1

 in the test bench i am sending data of a counter so every address should have value of 1

 the problem is the write takes me more time then the double rate clock period so i am ending with 1,2,3,4...N and not with 1 in every address

 i checked the frequency in wich the memory can work & it is about 150MHz. i am using a 50ns clock and half of this is the double clock rate and still i have the delay i mentioned

does any one have any idea why is that

 

 

thank for every body!!!

 

 

0 Kudos
1 Solution

Accepted Solutions
Instructor
Instructor
8,501 Views
Registered: ‎08-14-2007

Re: spartan 3E XC3S100E write to memory problem

Jump to solution

Can you post your code?  It sounds to me like you are not looking at the

read data on the correct clock cycle.  The incrementing pattern you

describe would happen if the Block RAM is running in the default mode

of write-first, and you are looking at the read data on the first of the

two cycles that your address is stable.  This would actually give you the

write data from the previous address due to the write-through logic

in the block RAM.  The read data is actually valid during the second

of the two cycles of valid address, so your addition needs to happen

combinatorially (without a clock delay).

 

Regards,

Gabor

-- Gabor
0 Kudos
5 Replies
Instructor
Instructor
6,687 Views
Registered: ‎08-14-2007

Re: spartan 3E XC3S100E write to memory problem

Jump to solution

If you are using block RAM, you need to be aware that the memory has a register on the

read output so the old data comes out on the cycle after you apply the address.  Then

your addition needs to happen in the same clock cycle you write the memory back.  So

you have in one clock cycle: the clock to output time of the memory plus the combinatorial

delay of your adder and the setup time to write memory.  If you find that you need to pipeline

the addition to meet timing (I'm not sure you do at 25 ns) then you would need more clock cycles

or you need to change your approach to interleave read and write cycles from successive

data inputs.  I have used the latter approach on Virtex 5 at 200 MHz, so it shouldn't have

any problems in Spartan 3 at 40 MHz.  Still I'm a bit confused on your statement

 "the write takes me more time then the double rate clock period"

Is this in the real hardware or is your testbench showing you this during behavioral

simulation?

 

Regards,

Gabor

-- Gabor
0 Kudos
Visitor efis
Visitor
6,684 Views
Registered: ‎09-26-2009

Re: spartan 3E XC3S100E write to memory problem

Jump to solution

first thank you for your time and knowledge

 

as an answer to your question i ment that i see that in test bench (behavioral imulation)

 

i think that you are right and it not supposed to be a problem to implement that in 40Mhz

 

( i check that with xilinx definitions )

 

regards

 

 Efi 

0 Kudos
Instructor
Instructor
8,502 Views
Registered: ‎08-14-2007

Re: spartan 3E XC3S100E write to memory problem

Jump to solution

Can you post your code?  It sounds to me like you are not looking at the

read data on the correct clock cycle.  The incrementing pattern you

describe would happen if the Block RAM is running in the default mode

of write-first, and you are looking at the read data on the first of the

two cycles that your address is stable.  This would actually give you the

write data from the previous address due to the write-through logic

in the block RAM.  The read data is actually valid during the second

of the two cycles of valid address, so your addition needs to happen

combinatorially (without a clock delay).

 

Regards,

Gabor

-- Gabor
0 Kudos
Visitor efis
Visitor
6,627 Views
Registered: ‎09-26-2009

Re: spartan 3E XC3S100E write to memory problem

Jump to solution

just want to say TNX for your time

 

as you can see the problem was solved  THANKS

0 Kudos
Highlighted
Newbie kamalbhugra
Newbie
5,126 Views
Registered: ‎01-30-2013

Re: spartan 3E XC3S100E write to memory problem

Jump to solution
i (kamal) want to make my major project on fpga..my clg provided me xilinx spartan 3e xcs100e fpga board..so kindly help me in deciding topic of the project..
my email id is kamal.bhugra7@gmail.com
Tags (1)
0 Kudos