Thanks to all guys! For observing signals with an oscilloscope I really need a good one but I found just an ordinary one. It does not seem to be very useful. I also tried different DCM's PHASE_SHIFT values. I read a different data but no correct one. So it was not the key. Could someone tell me about data IO's? I read that all data IO's must use both INFFs, OUTFFs and one of the Tristate-FFs (one could see it in mapper report). For me all data IO's use only OUTDDR...I am confused.
DDR SDRAM Controller
Started by ●February 16, 2006
Reply by ●February 20, 20062006-02-20
Reply by ●February 20, 20062006-02-20
ada schrieb:> Thanks to all guys! > > For observing signals with an oscilloscope I really need a good one but I > found just an ordinary one. It does not seem to be very useful. I alsoThose terms are not quite tecnically. An ordinary scope of today was a high end scope 5 years ago. What you need is some numbers. Last time I had a look at a DDR RAM interface I was using a 1.5 GHz scope form Agilent with 2.5 GHz active probes. Worked fine. Anyone had success using less firepower?> tried different DCM's PHASE_SHIFT values. I read a different data but no > correct one. So it was not the key. > > Could someone tell me about data IO's? I read that all data IO's must use > both INFFs, OUTFFs and one of the Tristate-FFs (one could see it in mapper > report). For me all data IO's use only OUTDDR...I am confused.This is just fine, OUTDDR are OUTFFs. Regards Falk
Reply by ●February 21, 20062006-02-21
Hi Ada, can you perform a timing simulation including timings and synthesis results of your FPGA ? You could at least see if timings of DQS, DQ, RasN/CasN/WeN/CsN , ClkP, ClkN are correct when coming out of the FPGA ... Rgds Andr=E9
Reply by ●February 22, 20062006-02-22
>can you perform a timing simulation including timings and synthesis >results >of your FPGA ? You could at least see if timings of >DQS, DQ, RasN/CasN/WeN/CsN , ClkP, ClkN are correct when >coming out of the FPGA ...I could perform only simulation using ModelSim. With ModelSim timings of all signals which you mentioned are correct. With a real FPGA I could look only at RasN/CasN/WeN/CsN signals when they come out of the FPGA. I think I did not mentioned my clocks. The board has 3 FPGA clocks - 40MHz, 66MHz and 125MHz. Currently I am using 125MHz FPGA clock (input_clk). Then I have 2 DCMs from which I get clk, clk90 and clk270. They both have fixed CLKOUT_PHASE_SHIFT, low DLL_FREQUENCY_MODE and sure 8.0 CLKIN_PERIOD. After using FDDRRSEs I generate ddr_clks from clk. I tried to use different PHASE_SHIFT values but it did not really help.
Reply by ●February 22, 20062006-02-22
Hi ada, yes, Modelsim is the point. You can perform a timing simulation using Modelsim that is you have to include the FPGA timing information file (=2Esdf) and the FPGA netlist (.vho) in your simulation. You have simulated the VHDL description but not the synthesis result, am I right ? Try to find out how to perform a timing simulation because that kind of simulation shows real behavior of your FPGA. Rgds Andr=E9> I could perform only simulation using ModelSim. With ModelSim timings of > all signals which you mentioned are correct. With a real FPGA I could look > only at RasN/CasN/WeN/CsN signals when they come out of the FPGA. > > I think I did not mentioned my clocks. The board has 3 FPGA clocks - > 40MHz, 66MHz and 125MHz. Currently I am using 125MHz FPGA clock > (input_clk). Then I have 2 DCMs from which I get clk, clk90 and clk270. > They both have fixed CLKOUT_PHASE_SHIFT, low DLL_FREQUENCY_MODE and sure > 8.0 CLKIN_PERIOD. After using FDDRRSEs I generate ddr_clks from clk. I > tried to use different PHASE_SHIFT values but it did not really help.
Reply by ●February 22, 20062006-02-22
ALuPin@web.de wrote:> Hi ada, > > yes, Modelsim is the point. You can perform a timing simulation using > Modelsim that is you have to include the FPGA timing information file > (.sdf) > and the FPGA netlist (.vho) in your simulation. You have simulated > the VHDL description but not the synthesis result, am I right ? > Try to find out how to perform a timing simulation because that kind > of simulation shows real behavior of your FPGA. > > Rgds > Andr=E9 > > > I could perform only simulation using ModelSim. With ModelSim timings of > > all signals which you mentioned are correct. With a real FPGA I could l=ook> > only at RasN/CasN/WeN/CsN signals when they come out of the FPGA. > > > > I think I did not mentioned my clocks. The board has 3 FPGA clocks - > > 40MHz, 66MHz and 125MHz. Currently I am using 125MHz FPGA clock > > (input_clk). Then I have 2 DCMs from which I get clk, clk90 and clk270. > > They both have fixed CLKOUT_PHASE_SHIFT, low DLL_FREQUENCY_MODE and sure > > 8.0 CLKIN_PERIOD. After using FDDRRSEs I generate ddr_clks from clk. I > > tried to use different PHASE_SHIFT values but it did not really help.While you are at it, get the simualation files from DDR vendors (here, for example, is a typical page at Micron) http://www.micron.com/products/dram/ddrsdram/part.aspx?part=3DMT46V128M4TG-= 5B On the left, you'll see a range of available simulation models you can integrate into your test bench. Although this is not the same as a module, it's a lot closer than nothing at all. A module will typically add some jitter and round trip delay, but make sure your design works with a part used on the modules first :) Cheers PeteS
Reply by ●February 22, 20062006-02-22
Thanks to all! I simulated my design indeed using Micron memory models (I use mt8vddt1664a memory model for simulation - it's not exactly my model but seems to be closed enough for me) and as I wrote before it worked just fine. But I did not use the FPGA netlist in my simulation. So as ALuPin@web.de said I'd simulated the VHDL description but not the synthesis result. I am going to simulate the synthesis results (I'll do it tomorrow because first I have to find out how to do it. I've never done it before). Does somebody have a good link about it? So I'm googling around. I'll write about results tomorrow. I am open to any other ideas. Best, Ada
Reply by ●February 23, 20062006-02-23
ada wrote:> Thanks to all! > > I simulated my design indeed using Micron memory models (I use > mt8vddt1664a memory model for simulation - it's not exactly my model but > seems to be closed enough for me) and as I wrote before it worked just > fine. But I did not use the FPGA netlist in my simulation. So as > ALuPin@web.de said I'd simulated the VHDL description but not the > synthesis result. I am going to simulate the synthesis results (I'll do it > tomorrow because first I have to find out how to do it. I've never done it > before). Does somebody have a good link about it? So I'm googling around. > I'll write about results tomorrow. > > I am open to any other ideas. > > Best, > AdaOne thing I did not mention that *has* given me a great deal of grief on DDR is Vref. DDR requires this to be V(mem) / 2 and the clock crossings have to be within a tight range of this, to say nothing of the other signals. if Vref is produced by a resistive divider with a cap, you might have an issue with just *some* memory sticks - they pull more from Vref than the divider can stand (it's not stiff enough) and you'll get all sorts of flaky (particularly read) behaviour. The standard behaviour of devices is such that the current drawn from Vref is temperature dependent, too, which you are seeing. Stick a scope probe on Vref somewhere with a 'bad' stick and see if it remains at the proper level (or if it even gets to the proper level). Cheers PeteS
Reply by ●February 23, 20062006-02-23
PeteS wrote:> One thing I did not mention that *has* given me a great deal of grief > on DDR is Vref. DDR requires this to be V(mem) / 2 and the clock > crossings have to be within a tight range of this, to say nothing of > the other signals. > > if Vref is produced by a resistive divider with a cap, you might have > an issue with just *some* memory sticks - they pull more from Vref than > the divider can stand (it's not stiff enough) and you'll get all sorts > of flaky (particularly read) behaviour. The standard behaviour of > devices is such that the current drawn from Vref is temperature > dependent, too, which you are seeing. > > Stick a scope probe on Vref somewhere with a 'bad' stick and see if it > remains at the proper level (or if it even gets to the proper level). > > Cheers > > PeteSAnother point on using Virtex II and Vref. The tools will automatically determine whether Vref is required for a particular bank based on the inputs to that bank. I have had a problem in the past where I did not realize that my SSTL signals on one bank were all outputs (Address and Control lines). For this bank, I had the Vref pins tied to a source with a relatively high impedance. The Vref pins were not required for Vref on that bank and so the tools automatically defaulted them to weak pullups. The half dozen "weak" pullups were enough to bring the Vref up to almost 2 volts. This is worth checking if you are not using all of the connections on the board, for example leaving out a feedback input. If you inadvertently free up the Vref pins on a bank they could get you in trouble. In my design I fixed the problem by setting the BitGen defaults to "Float" for unused IOB pins. Regards, Gabor
Reply by ●March 6, 20062006-03-06
Hi all, sorry for keeping silence. I tried Post-Synthesis simulation with ModelSim but I had an error: # ** Error: Timing Violation Error : RST on instance * must be asserted for 3 CLKIN clock cycles. # Time: 8100 ps Iteration: 1 Process: /tbx_top/i_top/i_ddr_sdr/dcm0/dcm_inst1/check_rst_width File: C:/Programs/Xilinx/vhdl/src/unisims/unisim_VITAL.vhd This problem is caused due to Xilinx libraries. In the testbench, the DCM Reset is initially defined as "x",then it changes to "1". This initial transition is evaluated as a valid transition, and starts the DCM Reset lenght check from this transition, therefore causing the ERROR. So Xilinx proposes to update the software libraries. I did it but it did not help. Does anyone have an idea how to fix it? Any case I do not think I have to spend too much effort in order to bring the simulation to work because it's just a simulation. Nobody could guarantee that even if simulation works it would work with the real board. So I have to concentrate on a real board. I asked AVNET about connecting an oscilloscope to the board but no answer till now. And I have not found anything related to their boards and osci connections in Internet. Does anyone have a working DDR SDRAM controller example? Or some other ideas related to my problem? I would really appreciate it. And one more question. I am using 125MHz FPGA clock and I am giving clocks with the same frequency (generated with DCM primitives ) to the DDR SDRAM. I think it's ok but maybe I am mistaken. Does someone have other suggestions? Best, Ada