Site Home   Archive Home   FAQ Home   How to search the Archive   How to Navigate the Archive   
Compare FPGA features and resources   

Threads starting:
1994JulAugSepOctNovDec1994
1995JanFebMarAprMayJunJulAugSepOctNovDec1995
1996JanFebMarAprMayJunJulAugSepOctNovDec1996
1997JanFebMarAprMayJunJulAugSepOctNovDec1997
1998JanFebMarAprMayJunJulAugSepOctNovDec1998
1999JanFebMarAprMayJunJulAugSepOctNovDec1999
2000JanFebMarAprMayJunJulAugSepOctNovDec2000
2001JanFebMarAprMayJunJulAugSepOctNovDec2001
2002JanFebMarAprMayJunJulAugSepOctNovDec2002
2003JanFebMarAprMayJunJulAugSepOctNovDec2003
2004JanFebMarAprMayJunJulAugSepOctNovDec2004
2005JanFebMarAprMayJunJulAugSepOctNovDec2005
2006JanFebMarAprMayJunJulAugSepOctNovDec2006
2007JanFebMarAprMayJunJulAugSepOctNovDec2007
2008JanFebMarAprMayJunJulAugSepOctNovDec2008
2009JanFebMarAprMayJunJulAugSepOctNovDec2009
2010JanFebMarAprMayJunJulAugSepOctNovDec2010
2011JanFebMarAprMayJunJulAugSepOctNovDec2011
2012JanFebMarAprMayJunJulAugSepOctNovDec2012
2013JanFebMarAprMayJunJulAugSepOctNovDec2013
2014JanFebMarAprMayJunJulAugSepOctNovDec2014
2015JanFebMarAprMayJunJulAugSepOctNovDec2015
2016JanFebMarAprMayJunJulAugSepOctNovDec2016
2017JanFebMarAprMayJunJulAugSepOctNovDec2017
2018JanFebMarAprMayJunJulAugSepOctNovDec2018
2019JanFebMarAprMayJunJulAugSepOctNovDec2019
2020JanFebMarAprMay2020

Authors:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Custom Search

Messages from 149075

Article: 149075
Subject: Re: question when using asmi_parallel ip core
From: =?ISO-8859-2?Q?G=F3rski_Adam?= <gorskiamalpa@wpkropkapl>
Date: Wed, 29 Sep 2010 10:31:51 +0200
Links: << >>  << T >>  << A >>
Hi Paul,

First of all try to use Indirect flash programming using jtag interface.
If it will work fine your EPCS is connected correctly and your fpga 
should start automatically.
If not , check epcs connection to fpga and msel pins configuration.

Second step is to write and read back epcs config using your rs connection.

Then you have to prepare flash image using
sof2flash" --epcs --input="example.sof" --output="example.flash"

Adam

> Hi,all
>
> I'm Paul Ham in Korea and have some difficulties in using ASMI_PARALLEL
> altera ip core.
> Anyone who knows well this problem could advice to me.
>
> I'm using Cyclone FPGA with EPCS4 and Quartus V9.1 without service pack.
> My design is very simple like below :
> 1) receive the data from PC via RS232.
>     The data is .rpd file made by Conver Programming Files of Quartus menu.
>     Due to the EPCS spec, its size is 512KByte.
> 2) write the data to internal dpram. (double buffering)
> 3) read the data from dpram to asmi_parallel every 256 bytes.(page write)
>
> When I simulated it with signaltap, it wrote other .rpd file into EPCS4
> well.
> And it configured well after power-up.
>
> But it didn't work when I programmed itself directly to EPCS4.
> It always generate the illegal_erase and illegal_write.
>
> I found some ways to solve the problem like below but anything didn't work
> well.
> 1) make 4 pins related to configuration, nCS/ASDO/DCLK/DATA0, "USE AS
> REGULAR IO" at .qsf file.
>     ->  set_global_assignment -name RESERVE_ASDO_AFTER_CONFIGURATION "USE AS
> REGULAR IO"
>        set_global_assignment -name RESERVE_DATA0_AFTER_CONFIGURATION "USE AS
> REGULAR IO"
>        set_global_assignment -name RESERVE_DCLK_AFTER_CONFIGURATION "USE AS
> REGULAR IO"
>        set_global_assignment -name RESERVE_FLASH_NCE_AFTER_CONFIGURATION
> "USE AS REGULAR IO"
> 2) modify the value of "ncs_reg" in asmi_parallel.v as below.
>     ->  always @ ( negedge clkin_wire or  posedge end_ophdly)
> 	 if (end_ophdly == 1'b1) ncs_reg<= 1'b1;
> 	 else if  (wire_ncs_reg_ena == 1'b1)   ncs_reg<= 1'b0;
> 3) install the service pack 1 : I didn't try it
>
> I guess that the problem is related to the setting of 4 configuration
> pins.
> But I'm not sure what could I do.
> If you have any advice or solution, please let me know.
>
> Thanks advance
> Regards
> Paul
>
>
> 	
> 					
> ---------------------------------------		
> Posted through http://www.FPGARelated.com


Article: 149076
Subject: Re: FPGA For Image Processing[Economical]
From: Martin Thompson <martin.j.thompson@trw.com>
Date: Wed, 29 Sep 2010 10:21:03 +0100
Links: << >>  << T >>  << A >>
"mitho" <adnan.siddiq@n_o_s_p_a_m.live.com> writes:

> Hi.
> We are working on a image processing based on FPGA. But we are confused
> about which FPGA to select. We looked for ML 410 virtex-4. But its too
> costly around $3000. Can anybody suggest a relative cheap and efficient
> FPGA. Thanks

As others have said, the Spartan range is much cheaper if you want to
stick to Xilinx.  

And a lot depends on what signal processing you want to do... If no-one
minds a small commercial:

I've built the low-level image processing for an automotive
lane-departure-warning system in a Spartan 3E 250 in this system:

http://www.conekt.co.uk/images/stories/Products_FILES/t%20cam_web.pdf

Or a bigger job - the image processing part of a Visual SLAM system -
(corner detector, Haar feature extraction, and DVI output) needed
quite a lot of the Spartan 3ADSP 3400 on this board:

http://www.conekt.co.uk/images/stories/Products_FILES/t%20cam%20stereo_web.pdf

Or if you want to do full-HD 60Hz stereo matching, you might find the
board you initially mentioned a bit on the small side :)

Give us more idea as to what algorithms you want to run and we can
give you more idea as to an appropriate way of implementing them.  And
don't fixate on FPGAs until you're sure they're the right answer -
why can't you do it on a PC?

Cheers,
Martin

-- 
martin.j.thompson@trw.com 
TRW Conekt - Consultancy in Engineering, Knowledge and Technology
http://www.conekt.co.uk/capabilities/39-electronic-hardware

Article: 149077
Subject: SDRAM for specific use - performance and timing questions
From: Johannes <johannes@excito.com>
Date: Wed, 29 Sep 2010 05:07:23 -0700 (PDT)
Links: << >>  << T >>  << A >>
I hope this is the correct group, I suspect there is more people here
really understanding how an SDRAM works than in the embedded group.

We are working on a design proposal with FPGA and DRAM to replace an
obsolete EEPROM memory. Consequently, we need to emulate standard ROM/
SRAM-style reads, with a maximum read cycle timing of 80 ns. (The
loading to SRAM would be from a serial flash, handled by FPGA, but
this is a one-time-per-power-on, non-critical operation).

I first figured this should be doable with a 100 MHz standard SDRAM,
since it has about 60 ns worst-case random read timing, but, it then
struck me that it needs refreshing as well.

Q1: Am I assuming correctly that this will _not_ be doable with a 100
MHz SDRAM, since there is no time for refreshing in between two reads?
There is no way to do two fully random reads within 80 ns? What if I
stick within the same bank (yes, leaving 75% of the DRAM unused, but
still)?

Q2: Further; am I assuming correctly that it wont help me to step up
to DDR or DDR2, since the only thing improved is the burst rates,
fully random byte reads are still as slow (active-to-active command
period, Trc)?


Nothing else is guaranteed from the host system, there are no
guaranteed pauses we could use for refresh, and it is not guaranteed
that the host system reads the entire memory sequentially, which also
would have solved the refresh issue. It is simply a host processor
without cache executing it's code from this emulated EEPROM.

A million thanks in advance for anything bringing me forward in this
process.

Best Regards,
/Johannes




Article: 149078
Subject: Re: SDRAM for specific use - performance and timing questions
From: Gabor <gabor@alacron.com>
Date: Wed, 29 Sep 2010 05:33:21 -0700 (PDT)
Links: << >>  << T >>  << A >>
On Sep 29, 8:07=A0am, Johannes <johan...@excito.com> wrote:
> I hope this is the correct group, I suspect there is more people here
> really understanding how an SDRAM works than in the embedded group.
>
> We are working on a design proposal with FPGA and DRAM to replace an
> obsolete EEPROM memory. Consequently, we need to emulate standard ROM/
> SRAM-style reads, with a maximum read cycle timing of 80 ns. (The
> loading to SRAM would be from a serial flash, handled by FPGA, but
> this is a one-time-per-power-on, non-critical operation).
>
> I first figured this should be doable with a 100 MHz standard SDRAM,
> since it has about 60 ns worst-case random read timing, but, it then
> struck me that it needs refreshing as well.
>
> Q1: Am I assuming correctly that this will _not_ be doable with a 100
> MHz SDRAM, since there is no time for refreshing in between two reads?
> There is no way to do two fully random reads within 80 ns? What if I
> stick within the same bank (yes, leaving 75% of the DRAM unused, but
> still)?
>
> Q2: Further; am I assuming correctly that it wont help me to step up
> to DDR or DDR2, since the only thing improved is the burst rates,
> fully random byte reads are still as slow (active-to-active command
> period, Trc)?
>
> Nothing else is guaranteed from the host system, there are no
> guaranteed pauses we could use for refresh, and it is not guaranteed
> that the host system reads the entire memory sequentially, which also
> would have solved the refresh issue. It is simply a host processor
> without cache executing it's code from this emulated EEPROM.
>
> A million thanks in advance for anything bringing me forward in this
> process.
>
> Best Regards,
> /Johannes

Completely random access in any SDRAM will not be very fast.  Unless
you can
keep everything in one row per bank (you can keep all banks open at
once) you
have to take a hit for a new random row access.  How big was the
original
memory device you're trying to emulate?  Would it make sense to use
something else like SRAM to emulate it?

Article: 149079
Subject: Re: SDRAM for specific use - performance and timing questions
From: Johannes <johannesmannen@gmail.com>
Date: Wed, 29 Sep 2010 05:40:35 -0700 (PDT)
Links: << >>  << T >>  << A >>
On 29 Sep, 14:33, Gabor <ga...@alacron.com> wrote:
> On Sep 29, 8:07=A0am, Johannes <johan...@excito.com> wrote:
>
>
>
>
>
> > I hope this is the correct group, I suspect there is more people here
> > really understanding how an SDRAM works than in the embedded group.
>
> > We are working on a design proposal with FPGA and DRAM to replace an
> > obsolete EEPROM memory. Consequently, we need to emulate standard ROM/
> > SRAM-style reads, with a maximum read cycle timing of 80 ns. (The
> > loading to SRAM would be from a serial flash, handled by FPGA, but
> > this is a one-time-per-power-on, non-critical operation).
>
> > I first figured this should be doable with a 100 MHz standard SDRAM,
> > since it has about 60 ns worst-case random read timing, but, it then
> > struck me that it needs refreshing as well.
>
> > Q1: Am I assuming correctly that this will _not_ be doable with a 100
> > MHz SDRAM, since there is no time for refreshing in between two reads?
> > There is no way to do two fully random reads within 80 ns? What if I
> > stick within the same bank (yes, leaving 75% of the DRAM unused, but
> > still)?
>
> > Q2: Further; am I assuming correctly that it wont help me to step up
> > to DDR or DDR2, since the only thing improved is the burst rates,
> > fully random byte reads are still as slow (active-to-active command
> > period, Trc)?
>
> > Nothing else is guaranteed from the host system, there are no
> > guaranteed pauses we could use for refresh, and it is not guaranteed
> > that the host system reads the entire memory sequentially, which also
> > would have solved the refresh issue. It is simply a host processor
> > without cache executing it's code from this emulated EEPROM.
>
> > A million thanks in advance for anything bringing me forward in this
> > process.
>
> > Best Regards,
> > /Johannes
>
> Completely random access in any SDRAM will not be very fast. =A0Unless
> you can
> keep everything in one row per bank (you can keep all banks open at
> once) you
> have to take a hit for a new random row access. =A0How big was the
> original
> memory device you're trying to emulate? =A0Would it make sense to use
> something else like SRAM to emulate it?

Thanks for your reply.
Yes, SRAM is an option but not wanted due to it's high price (it's for
a high volume product), hence the preference of DRAM. The original
memory size is 4 MByte so it's not a lot of data, but DRAM is still a
lot cheaper.

Article: 149080
Subject: Re: SDRAM for specific use - performance and timing questions
From: "Morten Leikvoll" <mleikvol@yahoo.nospam>
Date: Wed, 29 Sep 2010 14:48:15 +0200
Links: << >>  << T >>  << A >>

"Johannes" <johannes@excito.com> wrote in message 
news:0aad6682-bdc6-40cf-86c6-ece9be74dd94@l20g2000yqm.googlegroups.com...
>I hope this is the correct group, I suspect there is more people here
> really understanding how an SDRAM works than in the embedded group.
>
> We are working on a design proposal with FPGA and DRAM to replace an
> obsolete EEPROM memory. Consequently, we need to emulate standard ROM/
> SRAM-style reads, with a maximum read cycle timing of 80 ns. (The
> loading to SRAM would be from a serial flash, handled by FPGA, but
> this is a one-time-per-power-on, non-critical operation).

Is there really no Flash chip that could do this job?
I guess EEPROM has its erase/write issues similar to the the flash. Maybe 
that could be emulated..



Article: 149081
Subject: Re: SDRAM for specific use - performance and timing questions
From: Johannes <johannesmannen@gmail.com>
Date: Wed, 29 Sep 2010 05:59:36 -0700 (PDT)
Links: << >>  << T >>  << A >>
On 29 Sep, 14:48, "Morten Leikvoll" <mleik...@yahoo.nospam> wrote:
> "Johannes" <johan...@excito.com> wrote in message
>
> news:0aad6682-bdc6-40cf-86c6-ece9be74dd94@l20g2000yqm.googlegroups.com...
>
> >I hope this is the correct group, I suspect there is more people here
> > really understanding how an SDRAM works than in the embedded group.
>
> > We are working on a design proposal with FPGA and DRAM to replace an
> > obsolete EEPROM memory. Consequently, we need to emulate standard ROM/
> > SRAM-style reads, with a maximum read cycle timing of 80 ns. (The
> > loading to SRAM would be from a serial flash, handled by FPGA, but
> > this is a one-time-per-power-on, non-critical operation).
>
> Is there really no Flash chip that could do this job?
> I guess EEPROM has its erase/write issues similar to the the flash. Maybe
> that could be emulated..


Yes, we have actually done a solution already with Flash, but the
customer whishes to move on to another memory solution for two
reasons:
- standard nor flash is getting obsolete in a few years
- since the cycle time required is 80 ns, a standard 70 ns NOR flash
isn't enough when adding some FPGA timing, we need 55 ns NOR flash,
which is virtually impossible to buy these days

Regarding the writes this is not an issue since this is not done in
standard operating modes. (Writes are only done in a machine firmware
upgrade, and is another story).

Thanks for your replies so far. I really need a DRAM wizard to show me
if there are any tricks to fit a refresh cycle in between two random
reads, all in 80 ns. Moving up to DDRx is no problem, if required.

Best Regards,
/Johannes




Article: 149082
Subject: Re: SDRAM for specific use - performance and timing questions
From: John Adair <g1@enterpoint.co.uk>
Date: Wed, 29 Sep 2010 06:13:46 -0700 (PDT)
Links: << >>  << T >>  << A >>
I think you have grasped the problem correctly in that latency is the
biggest issue. We have done similar things on our Craignell1
http://www.enterpoint.co.uk/component_replacements/craignell.html and
Craignell2  http://www.enterpoint.co.uk/component_replacements/craignell2.html
modules that are aimed at obsolete component replacement.

Refresh can be an issue but you can design a controller to do refresh
after a EEprom access cycle that may solve that issue. Success of that
depends on how often the virtual EEprom is accesssed and how fast the
host microprocessor is.

One technique to consider is to use the FPGA RAM for this. It is much
faster and works well for small EEprom. The RAM can be preloaded at
configuration or loaded after from SPI Flash. If you know how the
memory space is used you can also use a page swapping technique and
preload the FPGA RAM before an access cycle occurs for a guven memory
location.

To make any of these work you may need a higher clock frequency.
Remember your incoming signals are probably asynchronous to your
module clock and you may lose half a clock or more just synchronising.
To do anything different may cause problems.

In the extreme think about using an external SRAM as an alternative to
SDRAM.

John Adair
Enterpoint Ltd.

On 29 Sep, 13:07, Johannes <johan...@excito.com> wrote:
> I hope this is the correct group, I suspect there is more people here
> really understanding how an SDRAM works than in the embedded group.
>
> We are working on a design proposal with FPGA and DRAM to replace an
> obsolete EEPROM memory. Consequently, we need to emulate standard ROM/
> SRAM-style reads, with a maximum read cycle timing of 80 ns. (The
> loading to SRAM would be from a serial flash, handled by FPGA, but
> this is a one-time-per-power-on, non-critical operation).
>
> I first figured this should be doable with a 100 MHz standard SDRAM,
> since it has about 60 ns worst-case random read timing, but, it then
> struck me that it needs refreshing as well.
>
> Q1: Am I assuming correctly that this will _not_ be doable with a 100
> MHz SDRAM, since there is no time for refreshing in between two reads?
> There is no way to do two fully random reads within 80 ns? What if I
> stick within the same bank (yes, leaving 75% of the DRAM unused, but
> still)?
>
> Q2: Further; am I assuming correctly that it wont help me to step up
> to DDR or DDR2, since the only thing improved is the burst rates,
> fully random byte reads are still as slow (active-to-active command
> period, Trc)?
>
> Nothing else is guaranteed from the host system, there are no
> guaranteed pauses we could use for refresh, and it is not guaranteed
> that the host system reads the entire memory sequentially, which also
> would have solved the refresh issue. It is simply a host processor
> without cache executing it's code from this emulated EEPROM.
>
> A million thanks in advance for anything bringing me forward in this
> process.
>
> Best Regards,
> /Johannes


Article: 149083
Subject: Re: SDRAM for specific use - performance and timing questions
From: glen herrmannsfeldt <gah@ugcs.caltech.edu>
Date: Wed, 29 Sep 2010 13:28:39 +0000 (UTC)
Links: << >>  << T >>  << A >>
Johannes <johannesmannen@gmail.com> wrote:
(snip)

>> > We are working on a design proposal with FPGA and DRAM to replace an
>> > obsolete EEPROM memory. Consequently, we need to emulate standard ROM/
>> > SRAM-style reads, with a maximum read cycle timing of 80 ns. (The
>> > loading to SRAM would be from a serial flash, handled by FPGA, but
>> > this is a one-time-per-power-on, non-critical operation).

>> Is there really no Flash chip that could do this job?
>> I guess EEPROM has its erase/write issues similar to the the flash. Maybe
>> that could be emulated..

A suggestion which could work for DRAM or Flash, though may
or may not help, is to use two devices with the same data, and
access them alternately.  That gets the average access rate up,
though you have to pipeline the data. 

(snip) 
> - since the cycle time required is 80 ns, a standard 70 ns NOR flash
> isn't enough when adding some FPGA timing, we need 55 ns NOR flash,
> which is virtually impossible to buy these days

-- glen

Article: 149084
Subject: Re: SDRAM for specific use - performance and timing questions
From: Gabor <gabor@alacron.com>
Date: Wed, 29 Sep 2010 10:21:01 -0700 (PDT)
Links: << >>  << T >>  << A >>
On Sep 29, 9:28=A0am, glen herrmannsfeldt <g...@ugcs.caltech.edu> wrote:
> Johannes <johannesman...@gmail.com> wrote:
>
> (snip)
>
> >> > We are working on a design proposal with FPGA and DRAM to replace an
> >> > obsolete EEPROM memory. Consequently, we need to emulate standard RO=
M/
> >> > SRAM-style reads, with a maximum read cycle timing of 80 ns. (The
> >> > loading to SRAM would be from a serial flash, handled by FPGA, but
> >> > this is a one-time-per-power-on, non-critical operation).
> >> Is there really no Flash chip that could do this job?
> >> I guess EEPROM has its erase/write issues similar to the the flash. Ma=
ybe
> >> that could be emulated..
>
> A suggestion which could work for DRAM or Flash, though may
> or may not help, is to use two devices with the same data, and
> access them alternately. =A0That gets the average access rate up,
> though you have to pipeline the data.
>
> (snip)
>
> > - since the cycle time required is 80 ns, a standard 70 ns NOR flash
> > isn't enough when adding some FPGA timing, we need 55 ns NOR flash,
> > which is virtually impossible to buy these days
>
> -- glen

In this case, having multiple copies in the same device may do the
trick since an SDRAM has multiple banks.  Single data rate SDRAM
and DDR 1 generally has four banks and larger DDR 2 parts have 8
banks.  Sticking with the single data rate parts you can do refresh
just by activating a row, but remember this requires an activate to
every
row in every bank within the refresh period, while the auto-refresh
command refreshes a row in all four banks at once.  In this way
if you had to do an access while one bank / row is doing a "refresh"
you can get the data from another bank.

-- Gabor

Article: 149085
Subject: Re: SDRAM for specific use - performance and timing questions
From: nico@puntnl.niks (Nico Coesel)
Date: Wed, 29 Sep 2010 18:57:18 GMT
Links: << >>  << T >>  << A >>
Johannes <johannesmannen@gmail.com> wrote:

>On 29 Sep, 14:48, "Morten Leikvoll" <mleik...@yahoo.nospam> wrote:
>> "Johannes" <johan...@excito.com> wrote in message
>>
>> news:0aad6682-bdc6-40cf-86c6-ece9be74dd94@l20g2000yqm.googlegroups.com...
>>
>> >I hope this is the correct group, I suspect there is more people here
>> > really understanding how an SDRAM works than in the embedded group.
>>
>> > We are working on a design proposal with FPGA and DRAM to replace an
>> > obsolete EEPROM memory. Consequently, we need to emulate standard ROM/
>> > SRAM-style reads, with a maximum read cycle timing of 80 ns. (The
>> > loading to SRAM would be from a serial flash, handled by FPGA, but
>> > this is a one-time-per-power-on, non-critical operation).
>>
>> Is there really no Flash chip that could do this job?
>> I guess EEPROM has its erase/write issues similar to the the flash. Maybe
>> that could be emulated..
>
>
>Yes, we have actually done a solution already with Flash, but the
>customer whishes to move on to another memory solution for two
>reasons:
>- standard nor flash is getting obsolete in a few years

I don't think so. NOR flash has many advantages over NAND flash.
Staying available for a long time is one of them.

>- since the cycle time required is 80 ns, a standard 70 ns NOR flash
>isn't enough when adding some FPGA timing, we need 55 ns NOR flash,
>which is virtually impossible to buy these days

Sure about that? Did you talk to ISSI? They sell devices targeted for
industrial applications. Not high tech but they claim to keep devices
active for many years.

>Regarding the writes this is not an issue since this is not done in
>standard operating modes. (Writes are only done in a machine firmware
>upgrade, and is another story).
>
>Thanks for your replies so far. I really need a DRAM wizard to show me
>if there are any tricks to fit a refresh cycle in between two random
>reads, all in 80 ns. Moving up to DDRx is no problem, if required.

The problem is CAS latency. DDR memory is just wider memory in
parallel banks. This increases the burst transfer bandwidth but the
latency is still very long. 

Did you look into SRAM?

-- 
Failure does not prove something is impossible, failure simply
indicates you are not using the right tools...
nico@nctdevpuntnl (punt=.)
--------------------------------------------------------------

Article: 149086
Subject: Re: SDRAM for specific use - performance and timing questions
From: nico@puntnl.niks (Nico Coesel)
Date: Wed, 29 Sep 2010 18:58:39 GMT
Links: << >>  << T >>  << A >>
Gabor <gabor@alacron.com> wrote:

>On Sep 29, 9:28=A0am, glen herrmannsfeldt <g...@ugcs.caltech.edu> wrote:
>> Johannes <johannesman...@gmail.com> wrote:
>>
>> (snip)
>>
>> >> > We are working on a design proposal with FPGA and DRAM to replace an
>> >> > obsolete EEPROM memory. Consequently, we need to emulate standard RO=
>M/
>> >> > SRAM-style reads, with a maximum read cycle timing of 80 ns. (The
>> >> > loading to SRAM would be from a serial flash, handled by FPGA, but
>> >> > this is a one-time-per-power-on, non-critical operation).
>> >> Is there really no Flash chip that could do this job?
>> >> I guess EEPROM has its erase/write issues similar to the the flash. Ma=
>ybe
>> >> that could be emulated..
>>
>> A suggestion which could work for DRAM or Flash, though may
>> or may not help, is to use two devices with the same data, and
>> access them alternately. =A0That gets the average access rate up,
>> though you have to pipeline the data.
>>
>> (snip)
>>
>> > - since the cycle time required is 80 ns, a standard 70 ns NOR flash
>> > isn't enough when adding some FPGA timing, we need 55 ns NOR flash,
>> > which is virtually impossible to buy these days
>>
>> -- glen
>
>In this case, having multiple copies in the same device may do the
>trick since an SDRAM has multiple banks.  Single data rate SDRAM
>and DDR 1 generally has four banks and larger DDR 2 parts have 8
>banks.  Sticking with the single data rate parts you can do refresh
>just by activating a row, but remember this requires an activate to
>every
>row in every bank within the refresh period, while the auto-refresh
>command refreshes a row in all four banks at once.  In this way
>if you had to do an access while one bank / row is doing a "refresh"
>you can get the data from another bank.

This gets you into trouble when writing. If you allow random writes,
you'll need some fancy caching algorithm to allow for any random write
sequences.

-- 
Failure does not prove something is impossible, failure simply
indicates you are not using the right tools...
nico@nctdevpuntnl (punt=.)
--------------------------------------------------------------

Article: 149087
Subject: Re: SDRAM for specific use - performance and timing questions
From: glen herrmannsfeldt <gah@ugcs.caltech.edu>
Date: Wed, 29 Sep 2010 19:46:20 +0000 (UTC)
Links: << >>  << T >>  << A >>
Nico Coesel <nico@puntnl.niks> wrote:
(snip)
 
> This gets you into trouble when writing. If you allow random writes,
> you'll need some fancy caching algorithm to allow for any random write
> sequences.

This is supposed to be an EPROM replacement.  As I understand it,
the DRAM is loaded at powerup with the appropriate bits, and read,
randomly.  Most likely the load is sequential and not speed
sensitive.

It does seem to me that the multiple bank with the same data
solution should work, but the OP will have to decide.

-- glen 

Article: 149088
Subject: Re: SDRAM for specific use - performance and timing questions
From: Ulf Samuelsson <ulf@invalid.atmel.com>
Date: Thu, 30 Sep 2010 00:23:21 +0200
Links: << >>  << T >>  << A >>
Johannes skrev 2010-09-29 14:07:
> I hope this is the correct group, I suspect there is more people here
> really understanding how an SDRAM works than in the embedded group.
>
> We are working on a design proposal with FPGA and DRAM to replace an
> obsolete EEPROM memory. Consequently, we need to emulate standard ROM/
> SRAM-style reads, with a maximum read cycle timing of 80 ns. (The
> loading to SRAM would be from a serial flash, handled by FPGA, but
> this is a one-time-per-power-on, non-critical operation).

Hi Johannes,
If you only need to emulate "read", then a parallel flash should
do the job...

You could also check out PSRAMs.


>
> I first figured this should be doable with a 100 MHz standard SDRAM,
> since it has about 60 ns worst-case random read timing, but, it then
> struck me that it needs refreshing as well.
>
> Q1: Am I assuming correctly that this will _not_ be doable with a 100
> MHz SDRAM, since there is no time for refreshing in between two reads?
> There is no way to do two fully random reads within 80 ns? What if I
> stick within the same bank (yes, leaving 75% of the DRAM unused, but
> still)?
>
> Q2: Further; am I assuming correctly that it wont help me to step up
> to DDR or DDR2, since the only thing improved is the burst rates,
> fully random byte reads are still as slow (active-to-active command
> period, Trc)?
>
>
> Nothing else is guaranteed from the host system, there are no
> guaranteed pauses we could use for refresh, and it is not guaranteed
> that the host system reads the entire memory sequentially, which also
> would have solved the refresh issue. It is simply a host processor
> without cache executing it's code from this emulated EEPROM.
>
> A million thanks in advance for anything bringing me forward in this
> process.
>
> Best Regards,
> /Johannes
>
>
>



-- 
Best Regards
Ulf Samuelsson
These are my own personal opinions, which may
or may not be shared by my employer Atmel Nordic AB

Article: 149089
Subject: Re: Spartan 3 DCM problem
From: Kim Povlsen <kim@rtldesign.dk>
Date: Thu, 30 Sep 2010 10:30:17 +0200
Links: << >>  << T >>  << A >>
On Mon, 27 Sep 2010 05:53:16 -0500, "mokhoo"
<amn257@n_o_s_p_a_m.yahoo.com> wrote:

>Dear All,
>I am working on project using Xilinx Spartan3 XC3S2000. I have used one DCM
>and it worked well. However, when I tried to instantiate another It lone for
>other purpose, errors appeared in the building phase as follows:
>
>ERROR:NgdBuild:604 - logical block 'CLK_1/DCM_inst' with type 'DCM_2'
>could
>   not be resolved. A pin name misspelling can cause this, a missing edif
>or ngc
>   file, or the misspelling of a type name. Symbol 'DCM_2' is not supported
>in
>   target 'spartan3'.
>
>ERROR:NgdBuild:604 - logical block 'CLK_2/DCM_IFCLK' with type 'DCM_1'
>   could not be resolved. A pin name misspelling can cause this, a missing
>edif
>   or ngc file, or the misspelling of a type name. Symbol 'DCM_1' is not
>   supported in target 'spartan3'.
> 
>Concerning the above problem I have two questions:
>1. Why adding another DCM fails?
>2. Why adding another DCM affects the first one although they are not
>related to each other in the design?
>
>Thanks and best regards,
>
>
>	   
>					
>---------------------------------------		
>Posted through http://www.FPGARelated.com


Hi,

It looks like you have been using the Xilinx Core Generator in order
to instantiate the DCM?

If this is the case, a black-box .ngc file for the DCM will be
generated by the tool, and you will have to add a macro search path
pointing to this .ngc file. You can do this from the
translate-options, if you are using ISE. 
If not, you can use the "-bd <search-path>" option.

Regards, Kim

Article: 149090
Subject: Re: question when using asmi_parallel ip core
From: =?ISO-8859-2?Q?G=F3rski_Adam?= <gorskiamalpa@wpkropkapl>
Date: Thu, 30 Sep 2010 11:47:38 +0200
Links: << >>  << T >>  << A >>
Hi Paul,

Any progress ?

Adam

> Hi Paul,
>
> First of all try to use Indirect flash programming using jtag interface.
> If it will work fine your EPCS is connected correctly and your fpga
> should start automatically.
> If not , check epcs connection to fpga and msel pins configuration.
>
> Second step is to write and read back epcs config using your rs connection.
>
> Then you have to prepare flash image using
> sof2flash" --epcs --input="example.sof" --output="example.flash"
>
> Adam
>
>> Hi,all
>>
>> I'm Paul Ham in Korea and have some difficulties in using ASMI_PARALLEL
>> altera ip core.
>> Anyone who knows well this problem could advice to me.
>>
>> I'm using Cyclone FPGA with EPCS4 and Quartus V9.1 without service pack.
>> My design is very simple like below :
>> 1) receive the data from PC via RS232.
>> The data is .rpd file made by Conver Programming Files of Quartus menu.
>> Due to the EPCS spec, its size is 512KByte.
>> 2) write the data to internal dpram. (double buffering)
>> 3) read the data from dpram to asmi_parallel every 256 bytes.(page write)
>>
>> When I simulated it with signaltap, it wrote other .rpd file into EPCS4
>> well.
>> And it configured well after power-up.
>>
>> But it didn't work when I programmed itself directly to EPCS4.
>> It always generate the illegal_erase and illegal_write.
>>
>> I found some ways to solve the problem like below but anything didn't
>> work
>> well.
>> 1) make 4 pins related to configuration, nCS/ASDO/DCLK/DATA0, "USE AS
>> REGULAR IO" at .qsf file.
>> -> set_global_assignment -name RESERVE_ASDO_AFTER_CONFIGURATION "USE AS
>> REGULAR IO"
>> set_global_assignment -name RESERVE_DATA0_AFTER_CONFIGURATION "USE AS
>> REGULAR IO"
>> set_global_assignment -name RESERVE_DCLK_AFTER_CONFIGURATION "USE AS
>> REGULAR IO"
>> set_global_assignment -name RESERVE_FLASH_NCE_AFTER_CONFIGURATION
>> "USE AS REGULAR IO"
>> 2) modify the value of "ncs_reg" in asmi_parallel.v as below.
>> -> always @ ( negedge clkin_wire or posedge end_ophdly)
>> if (end_ophdly == 1'b1) ncs_reg<= 1'b1;
>> else if (wire_ncs_reg_ena == 1'b1) ncs_reg<= 1'b0;
>> 3) install the service pack 1 : I didn't try it
>>
>> I guess that the problem is related to the setting of 4 configuration
>> pins.
>> But I'm not sure what could I do.
>> If you have any advice or solution, please let me know.
>>
>> Thanks advance
>> Regards
>> Paul
>>
>>
>>
>>
>> ---------------------------------------
>> Posted through http://www.FPGARelated.com
>


Article: 149091
Subject: Re: SDRAM for specific use - performance and timing questions
From: Johannes <johannesmannen@gmail.com>
Date: Thu, 30 Sep 2010 06:12:17 -0700 (PDT)
Links: << >>  << T >>  << A >>
Sorry for the late reply, stuck in meetings all day. Thanks a lot for
your replies!

@John: Thanks, I'm right now checking if there might be time for the
refresh after the reads, would be the simplest solution. Most likely
not possible though, but I'm checking anyways, just in case. Thanks!

@glen
Two identical devices is also a great idea, will of course work!
Pricing may be an issue, am looking into it.

@gabor
Also a great idea, but I'm not following you all the way. Is it
possible to: 1) Initiate a read 2) initiate a refresh in another bank,
all in 80 ns? Because as I said, there are no guaranteed pauses
whatsoever to do anything else than responding to reads every 80 ns.

@Nico
-Yes, believe me we have checked thoroughly all flash vendors. I know
ISSI is good with keeping parts in production, but they don't do FLASH
at all as far as I know.
-SRAM is also out of the question because of the price. High volume
product + 4 MByte SRAM is not a good combination.
-And as glen pointed out correctly, writes is not an issue, write is
performed only on power-on and is not timing critical

@Ulf
Yes, thanks. Have looked into both FLASH and PSRAM, and would prefer
not to use any of those for the above mentioned reasons, price and
availability is not sufficient. Nice seing you here btw, long
time... :)


So this leaves me with the following options:
- using two SDRAM's with separate interfaces to the FPGA. One in
refresh while reading the other.
- using a 4 time as large SDRAM and keep identical data in at least
two banks (assuming this works, see comment to gabor above)
- dismiss the idea of using DRAM and re-evaluate the other options
(parallel flash etc.)

Thanks a lot for your time so far, great help. If you get any more
ideas, I'm eternally grateful.

/Johannes

Article: 149092
Subject: Re: SDRAM for specific use - performance and timing questions
From: rickman <gnuarm@gmail.com>
Date: Thu, 30 Sep 2010 07:18:21 -0700 (PDT)
Links: << >>  << T >>  << A >>
On Sep 30, 9:12=A0am, Johannes <johannesman...@gmail.com> wrote:
> Sorry for the late reply, stuck in meetings all day. Thanks a lot for
> your replies!
>
> @John: Thanks, I'm right now checking if there might be time for the
> refresh after the reads, would be the simplest solution. Most likely
> not possible though, but I'm checking anyways, just in case. Thanks!
>
> @glen
> Two identical devices is also a great idea, will of course work!
> Pricing may be an issue, am looking into it.
>
> @gabor
> Also a great idea, but I'm not following you all the way. Is it
> possible to: 1) Initiate a read 2) initiate a refresh in another bank,
> all in 80 ns? Because as I said, there are no guaranteed pauses
> whatsoever to do anything else than responding to reads every 80 ns.
>
> @Nico
> -Yes, believe me we have checked thoroughly all flash vendors. I know
> ISSI is good with keeping parts in production, but they don't do FLASH
> at all as far as I know.
> -SRAM is also out of the question because of the price. High volume
> product + 4 MByte SRAM is not a good combination.
> -And as glen pointed out correctly, writes is not an issue, write is
> performed only on power-on and is not timing critical
>
> @Ulf
> Yes, thanks. Have looked into both FLASH and PSRAM, and would prefer
> not to use any of those for the above mentioned reasons, price and
> availability is not sufficient. Nice seing you here btw, long
> time... :)
>
> So this leaves me with the following options:
> - using two SDRAM's with separate interfaces to the FPGA. One in
> refresh while reading the other.
> - using a 4 time as large SDRAM and keep identical data in at least
> two banks (assuming this works, see comment to gabor above)
> - dismiss the idea of using DRAM and re-evaluate the other options
> (parallel flash etc.)
>
> Thanks a lot for your time so far, great help. If you get any more
> ideas, I'm eternally grateful.
>
> /Johannes

I think there is one other solution that has not been mentioned.  Why
are you limited to 100 MHz SDRAM?  Can't you go with a 133 MHz SDRAM?
Then you would have more clock cycles to do your read and still
initiate a refresh on a separate bank.  I guess it has been a long
time since I've worked with SDRAM, so I'm not sure a faster interface
actually would give you more time for a refresh.  I would need to look
at a data sheet again.

Rick

Article: 149093
Subject: Re: SDRAM for specific use - performance and timing questions
From: Johannes <johannesmannen@gmail.com>
Date: Thu, 30 Sep 2010 08:13:30 -0700 (PDT)
Links: << >>  << T >>  << A >>

> I think there is one other solution that has not been mentioned. =A0Why
> are you limited to 100 MHz SDRAM? =A0Can't you go with a 133 MHz SDRAM?
> Then you would have more clock cycles to do your read and still
> initiate a refresh on a separate bank. =A0I guess it has been a long
> time since I've worked with SDRAM, so I'm not sure a faster interface
> actually would give you more time for a refresh. =A0I would need to look
> at a data sheet again.
>

Yes, but this doesn't help. 100, 133 or even 1100 MHz DDR-III has the
same random access times (about 50-60 ns for a full random read
cycle). It's only burst that has improved.

Article: 149094
Subject: Re: SDRAM for specific use - performance and timing questions
From: Gabor <gabor@alacron.com>
Date: Thu, 30 Sep 2010 09:36:19 -0700 (PDT)
Links: << >>  << T >>  << A >>
On Sep 30, 11:13=A0am, Johannes <johannesman...@gmail.com> wrote:
> > I think there is one other solution that has not been mentioned. =A0Why
> > are you limited to 100 MHz SDRAM? =A0Can't you go with a 133 MHz SDRAM?
> > Then you would have more clock cycles to do your read and still
> > initiate a refresh on a separate bank. =A0I guess it has been a long
> > time since I've worked with SDRAM, so I'm not sure a faster interface
> > actually would give you more time for a refresh. =A0I would need to loo=
k
> > at a data sheet again.
>
> Yes, but this doesn't help. 100, 133 or even 1100 MHz DDR-III has the
> same random access times (about 50-60 ns for a full random read
> cycle). It's only burst that has improved.

I think the point is how many accesses you can make during the 80
ns you have.  If you need to read one bank while activating another,
the cycle timing doesn't change, but the number of commands you
can send to the device does.  By the way you don't really need to do
a "refresh" to a bank, only activate the row followed by a precharge.
That takes two commands on the address / command interface
anyway you look at it.  This represents a smaller portion of the
80 ns when you are running a faster clock rate.

When I have designed SDRAM controllers, I generally start with
a chart to show on each clock cycle what I am doing on the
address / command interface, and what is happening on the
DQ interface.  When using multiple banks, this is highly
pipelined and interleaved, so charting it out helps to visualize
what I need to do.  For example, when doing high data-rate
access, I have a favorite controller that always moves to the
next bank after a single burst access.  It also always uses
the autoprecharge commands for read or write.  This means
that I can activate a row, read (or write), and precharge it
in two commands.  Interleaving the banks allows an access
to any random row in the next bank with no dead cycles
as long as I have a burst of at least 2 words, and don't change
direction (read v. write).  If I look at a single burst to the
same row of each of the four banks as my minimum access
or "word size", then I have essentially a really random access
memory that runs at the device clock rate.  Note that since
I am usually doing video and image processing, I'm less
concerned about latency and more concerned with
throughput.  In your case however, you can map the
cycle of reading a bank while "refreshing" another and look
at the worst case latency if the external request comes at
any point in the current cycle.  By the way, you realize that
some of the latency necessarily comes in the path from
registering the data in the FPGA to placing it on the outputs
of the pseudo-EEPROM bus.  This should also be helped
with a hight clock rate.

One more point about refresh.  Like the early DRAM devices,
single-data-rate SDRAM only requires a refresh to each
row (of each bank) within the stated refresh period, usually
32 or 64 ms.  Any row/bank that you have read or written
in that time does not need additional refresh.  In the early days
there were DRAM refresh controllers that kept a log (1 bit
per row) of row accesses and only refreshed the untouched
rows as required, usually in one big burst.  Assigning your
address such that row address is in the lower bits usually
causes the additional refresh requirement to be very small
because the access is typically sequential.

All of the above bit is not true of DDR SDRAM.  There are
additional reasons to use the auto-refresh command in
these devices, namely giving the chip a window to re-
calibrate its DLL without creating jitter in the DQ interface.
These devices typically require a distributed refresh with
a maximum time between refreshes of 15.6 us.  I
don't think this helps in your case.

Regards,
Gabor

Article: 149095
Subject: Re: SDRAM for specific use - performance and timing questions
From: rickman <gnuarm@gmail.com>
Date: Thu, 30 Sep 2010 10:22:35 -0700 (PDT)
Links: << >>  << T >>  << A >>
On Sep 30, 11:13=A0am, Johannes <johannesman...@gmail.com> wrote:
> > I think there is one other solution that has not been mentioned. =A0Why
> > are you limited to 100 MHz SDRAM? =A0Can't you go with a 133 MHz SDRAM?
> > Then you would have more clock cycles to do your read and still
> > initiate a refresh on a separate bank. =A0I guess it has been a long
> > time since I've worked with SDRAM, so I'm not sure a faster interface
> > actually would give you more time for a refresh. =A0I would need to loo=
k
> > at a data sheet again.
>
> Yes, but this doesn't help. 100, 133 or even 1100 MHz DDR-III has the
> same random access times (about 50-60 ns for a full random read
> cycle). It's only burst that has improved.

But if the read takes 60 ns and you have 80, can't you get a refresh
in between the reads?  Or does the full read cycle require the full 80
ns?

Looking at the data sheet, I see that you can interleave banks which
appears to add nothing to the time of a random read.  You would need
to use more then two banks with duplicate data, but you could start a
read on bank 0, then do a refresh on bank 1.  Next read bank 1 and
refresh bank 2.  Finally read bank 2 and refresh bank 0.  By the time
this is complete, you can go back to reading bank 0.  I'm not sure if
you you can do this with two banks.  It depends on the time required
between the refresh to starting the next read.

Rick

Article: 149096
Subject: Re: SDRAM for specific use - performance and timing questions
From: glen herrmannsfeldt <gah@ugcs.caltech.edu>
Date: Thu, 30 Sep 2010 18:01:49 +0000 (UTC)
Links: << >>  << T >>  << A >>
Gabor <gabor@alacron.com> wrote:
(snip)
 
> One more point about refresh.  Like the early DRAM devices,
> single-data-rate SDRAM only requires a refresh to each
> row (of each bank) within the stated refresh period, usually
> 32 or 64 ms.  Any row/bank that you have read or written
> in that time does not need additional refresh.  In the early days
> there were DRAM refresh controllers that kept a log (1 bit
> per row) of row accesses and only refreshed the untouched
> rows as required, usually in one big burst.  Assigning your
> address such that row address is in the lower bits usually
> causes the additional refresh requirement to be very small
> because the access is typically sequential.

This reminds me, some years ago I was working on a design with
a very large finite state machine, with the possibility of
storing it in SDRAM.  I had thought about the possibility of
positioning the states in memory such that the row access
pattern would be sufficient for refresh.  Normally, it might
stay in a small number of states, so I had thought about 
duplicating some of the states to supply enough that it
would reliably satisfy the refresh requirement.

Still, with random input, one might be able to statistically
get the probability of missing a row refresh within the refresh
time very small, but maybe not zero.

-- glen

Article: 149097
Subject: Re: SDRAM for specific use - performance and timing questions
From: Brian Drummond <brian_drummond@btconnect.com>
Date: Thu, 30 Sep 2010 23:08:26 +0100
Links: << >>  << T >>  << A >>
On Thu, 30 Sep 2010 08:13:30 -0700 (PDT), Johannes <johannesmannen@gmail.com>
wrote:

>
>> I think there is one other solution that has not been mentioned.  Why
>> are you limited to 100 MHz SDRAM?  Can't you go with a 133 MHz SDRAM?
>> Then you would have more clock cycles to do your read and still
>> initiate a refresh on a separate bank.  I guess it has been a long
>> time since I've worked with SDRAM, so I'm not sure a faster interface
>> actually would give you more time for a refresh.  I would need to look
>> at a data sheet again.
>>
>
>Yes, but this doesn't help. 100, 133 or even 1100 MHz DDR-III has the
>same random access times (about 50-60 ns for a full random read
>cycle). It's only burst that has improved.

But a typical device has (say) RAS-CAS) latency of 2. Therefore if in Cycle 1
you open Bank 1 and present the read row address, it will be in Cycle 3 that you
present the column address. (Then there are a couple more cycles before you get
the data back)

That leaves Cycle 2 spare. 

Use it to start a Refresh in the alternate bank; Refresh will take a few cycles
in its own right...

If the Refresh is not complete by the end of the current 80ns period, you cannot
read from the Bank 2 in the second 80ns period, so you need to cycle through 4
banks. (That will give 240ns for a refresh; ample time including any precharge
requirements.

Gabor is right - you need something like a spreadsheet to map out what happens
in each cycle, in each bank.

The importance of 133MHz or higher is not to achieve faster random reads, but to
increase degrees of freedom for aligning other activities (refresh, precharge)
in the gaps during the reads - 133MHz memory (clocked at 125) would give 10
cycles rather than 8.

- Brian




Article: 149098
Subject: SPI ROM use for holding bitstreams
From: Patrick <Patrick@hotmail.com>
Date: Fri, 01 Oct 2010 01:08:49 +0100
Links: << >>  << T >>  << A >>
Hi all,

I have a quite sparse evaluation board: you can find on it a Virtex 5, a 
SPI-ROM, SRAM as well as a JTAG interface. I am trying to do some 
experiments with partial reconfiguration, so I need to put somewhere
into memory the partial bitstreams. Has anyone tried to put them on a 
SPI-ROM? Of course it is possible to put one on it, but can I put 
several of those there? Further, this is a very simple interface, is
there a possibiltiy to address the content of the ROM somehow? 
Obviously, I would need different offsets from where I read when
I access the different bitstreams.

Many thanks for your help,
Patrick

Article: 149099
Subject: Flash Card Reader
From: Phil <Phil@yahoo.com>
Date: Fri, 01 Oct 2010 10:22:27 +0100
Links: << >>  << T >>  << A >>
Hi,

I am just wondering how difficult it is to add a flash card reader to an 
FPGA. In other words, I have 64 free I/O pins on my board and I wanna
connect there a reader so that I can read data from a flash card. Anyone
experience with that and can point me to a good source where this is
described in detail how to do that.

Any helpful comments are very much appreciated.

Phil



Site Home   Archive Home   FAQ Home   How to search the Archive   How to Navigate the Archive   
Compare FPGA features and resources   

Threads starting:
1994JulAugSepOctNovDec1994
1995JanFebMarAprMayJunJulAugSepOctNovDec1995
1996JanFebMarAprMayJunJulAugSepOctNovDec1996
1997JanFebMarAprMayJunJulAugSepOctNovDec1997
1998JanFebMarAprMayJunJulAugSepOctNovDec1998
1999JanFebMarAprMayJunJulAugSepOctNovDec1999
2000JanFebMarAprMayJunJulAugSepOctNovDec2000
2001JanFebMarAprMayJunJulAugSepOctNovDec2001
2002JanFebMarAprMayJunJulAugSepOctNovDec2002
2003JanFebMarAprMayJunJulAugSepOctNovDec2003
2004JanFebMarAprMayJunJulAugSepOctNovDec2004
2005JanFebMarAprMayJunJulAugSepOctNovDec2005
2006JanFebMarAprMayJunJulAugSepOctNovDec2006
2007JanFebMarAprMayJunJulAugSepOctNovDec2007
2008JanFebMarAprMayJunJulAugSepOctNovDec2008
2009JanFebMarAprMayJunJulAugSepOctNovDec2009
2010JanFebMarAprMayJunJulAugSepOctNovDec2010
2011JanFebMarAprMayJunJulAugSepOctNovDec2011
2012JanFebMarAprMayJunJulAugSepOctNovDec2012
2013JanFebMarAprMayJunJulAugSepOctNovDec2013
2014JanFebMarAprMayJunJulAugSepOctNovDec2014
2015JanFebMarAprMayJunJulAugSepOctNovDec2015
2016JanFebMarAprMayJunJulAugSepOctNovDec2016
2017JanFebMarAprMayJunJulAugSepOctNovDec2017
2018JanFebMarAprMayJunJulAugSepOctNovDec2018
2019JanFebMarAprMayJunJulAugSepOctNovDec2019
2020JanFebMarAprMay2020

Authors:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Custom Search