Author Topic: DDR3 using cheap PCB Fabs?  (Read 12404 times)

0 Members and 1 Guest are viewing this topic.

Offline asmi

  • Super Contributor
  • ***
  • Posts: 2732
  • Country: ca
Re: DDR3 using cheap PCB Fabs?
« Reply #25 on: December 12, 2017, 04:20:30 pm »
Hey PhillyGreg,
I hope your project is going great. Just wanted to give you an update that I've assembled my board and DDR3 on my board runs just fine at full 800 MT/s :-+ despite some minor issues with schematics (I've messed up connection of indication LED to the "DONE" ping of FPGA) and assembly (there is a "tombstone" near DDR3 IC which I decided not to fix as it's 0201 cap and it's too close to the module to get there with an iron) :palm:

Board front:

Board back:

FPGA installed:

DDR3 module:


In the end it WORKS!!!!! 8) even with full-strength drivers, so OurPCB folks did a great job of meeting trace impedance specs. Once again - highly recommend them, as combination of price and quality they bring to the table is nothing short of amazing.

Offline PhillyGregTopic starter

  • Contributor
  • Posts: 14
  • Country: us
Re: DDR3 using cheap PCB Fabs?
« Reply #26 on: December 18, 2017, 02:31:18 am »
That board looks awesome! Congrats on getting it going.
Seems like quite a few cool bits to play with there.

I'm finally getting back to my layout.
I've been working on a couple pre-req courses for my masters, ended up with a giant project that managed to suck up all my time after work :(

Hoping to finish it up this week and send it out before Christmas.
I've got the supply boards in hand, so I'll have that to bring up while I wait.

How was placing the 0201 caps?
I'm pretty used to dealing with 0402's, but they just don't fit as well.

I can't find the source now, but I remember reading that it's strongly recommended to have onboard supplies for high-speed interfaces to improve transient response.
I also remember reading a similar article, but now that I need it I can't dig it up.
I'm thinking it should be ok. I've made room for plenty of bulk capacitance on the board.
Left jumpers to either route the sense lines over to the FPGA or connect them on the PS board.
 The DDR3 VTT is staying on the FPGA side, plenty of space for that.
 

Offline asmi

  • Super Contributor
  • ***
  • Posts: 2732
  • Country: ca
Re: DDR3 using cheap PCB Fabs?
« Reply #27 on: December 18, 2017, 04:58:48 am »
That board looks awesome! Congrats on getting it going.
Seems like quite a few cool bits to play with there.
Unfortunately some of these things are implemented wrong. For example, 40 pin FRC connector for LCD has its' pins numbered wrong way around, and as a consequence 6 pin FRC connector for the LCD's touch panel is on the wrong size of the board relative to main 40 pin one - these are connected via rigid-flex board (that comes out from LCD panel) and thus relative positioning matter. It's a small consolation for this screw up, but I didn't actually have the LCD panel in my hands during design process, so I couldn't "fit check" it on a piece of paper (like I always do with any major parts/connectors that might have physical placement issues, or if it's a new part which footprint I hadn't confirmed in "metal" yet).
Another f-up is with voltage level shifter for the DDC interface of HDMI connector - but it's not as devastating as previous one because it's optional for HDMI source (the receiver will accept the stream just fine if its' parameters are among those supposed by it).

But the rest of it seems just fine.

1. I've mentioned DDR3 above. I designed a sort of memtest firmware for the Microblaze softcore, and ran it for about 2 hrs without any errors (at that mark my patience ran dry ::), and I stopped the test to anxious to run some other tests), so I'm fairly confident that my DDR3L layout is solid, and traces' impedance is close enough.

2. I've developed a simple HDMI TX block and verified it in hardware - it worked just fine in 720p@60Hz and 1080p@24Hz modes (this equates to about 750 Mbps serial rate for each of 3 HDMI data channels, I used 10:1 SERDES in DDR mode clocked at 375 MHz). As SERDES can be clocked up to over 600 MHz (if my memory serves me), I will try to find some kind of non-standard mode that brings data rate as close to the maximum of 1.25 Gbps per line just to see what I can achieve. Unfortunately whatever I do, it won't be able to output full 1080p@60Hz, but over the course of this design I realized that Artix's GTPs natively support DisplayPort, so it might be a fun project to design a board around DP. The only option that doesn't involve MGTs would be to use external HDMI TX that would accept data via parallel bus. But whatever - for this board I didn't really intended to have HDMI at all when I was originally designing it, it's primary purpose was to drive LCD with touch panel, the adding of HDMI port came as an afterthought just because I had some free FPGA pins and enough board space. Ironically that "afterthought" part ended up working just fine, while main design is f'ed-up :o Again, part of this test was desire to push diff pairs as fast as possible to verify impedance. So far it's great.

3. Over the course of two previous tests I used buttons on the board that are connected through MAX6818 "debouncer" IC, and it works just fine - so no issues with that IC nor schematics/layout.

4. As for USB3 to FIFO bridge, I'm still working on VHL core to test the actual transmission, but I've connected board's USB3 port to my computer's USB3 port, and IC was recognized properly by the system, drivers were installed with no issues, and FTDI's configuration utility was able to read IC's config and write a new one into built-in flash memory. That tells me that USB data lines are OK, but of course unless I run some actual full-bandwidth transmissions over it, I can't be certain if USB3 6G lines are OK or not - as I don't know for sure if FTDI's config utility uses those lines for reading/writing, or it uses USB 2 data lines. So more tests are needed, but this will certainly be the most interesting test in terms of confirming traces' impedance specifications. 6G lines are well known for having very little tolerance for out-of-spec traces, so I'm curious to see how it pans out. But at this stage to be honest I'm fairly certain of specs considering all previous tests indicated no SI-related issues whatsoever (so much so that DDR3L works even with full-strength drivers).
I'm finally getting back to my layout.
I've been working on a couple pre-req courses for my masters, ended up with a giant project that managed to suck up all my time after work :(

Hoping to finish it up this week and send it out before Christmas.
Yea, I'm also a bit busy tying up loose ends before the end of the year, but at least I will have enough free time during holidays to test the crap out of this board, before fixing all issues and ordering the third (and hopefully the final) revision. But I won't rush it this time around, because I can test most things on the current revision. On a final board I plan to solder the XC7A100 speed grade 2 part (which is $134 alone!), so it's worth investing into testing before installing such expensive components.

I've got the supply boards in hand, so I'll have that to bring up while I wait.
I actually designed PMIC subcircuit based on TPS6400 quite some time ago, and now I just copy the circuit and layout to whatever new board I make, so I don't have to spend any time designing PSU for every new board I do. This really cuts down on layout time, and it's outputs (1.0/1.35/1.8/3.3 V) are universal enough to be useful on pretty much any Artix or Kintex FPGA board. Another useful PMIC design I have is based around TPS65581 3-channel PMIC - this is handy if you don't need DDR3 on FPGA board as it requires very few external components (about a dozen for all 3 channels IIRC!), and I have it set up for 1.0/1.8/3.3 V, which will be needed on any Artix board.

How was placing the 0201 caps?
I'm pretty used to dealing with 0402's, but they just don't fit as well.
I use Zephyrtronics's ZT-3 vacuum pickup tool with VSC1005-BD Derlin tip specifically designed to handle 0201 parts (I've bought the full set of bent Derlin tips with the tool, except for smallest VSC0803-BD, as it wasn't available at the time of my purchase) , as well as cheap 10x stereo microscope (SE410 By AmScope, ~$175), so it's relatively painless. And after handling 0201, 0402's seem so huuge & easy to place :D This pickup is quite expensive, but it works so good - the trick is to use the right sized tip for the part - in this case a part gets automagically released the moment it touches the board. This dramatically speeds up placing parts.
Another side to this is the use of thermally stable solder paste. Aside from not having to refrigerate it (and then let it warm up before use), the paste doesn't dry out after it's printed on the board, which gives all the time in the world to place components. This is amazing for hand-assembly of complicated boards, as placing all components might take hours, so regular paste (especially lead free ones) will dry out and the reflow will fail.


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf