6502.org Forum  Projects  Code  Documents  Tools  Forum
It is currently Thu Apr 25, 2024 1:48 am

All times are UTC




Post new topic Reply to topic  [ 609 posts ]  Go to page Previous  1 ... 15, 16, 17, 18, 19, 20, 21 ... 41  Next
Author Message
PostPosted: Wed Mar 06, 2013 9:08 pm 
Offline
User avatar

Joined: Tue Nov 16, 2010 8:00 am
Posts: 2353
Location: Gouda, The Netherlands
And here's a picture of the bottom of the board, with the 1.2V regulator, and the bypass caps. Light brown = 0.1 uF, dark brown = 10 uF. The 3 caps at the bottom are under the SRAM.


Attachments:
caps.jpg
caps.jpg [ 305.74 KiB | Viewed 1865 times ]
Top
 Profile  
Reply with quote  
PostPosted: Wed Mar 06, 2013 9:45 pm 
Offline

Joined: Mon Mar 02, 2009 7:27 pm
Posts: 3258
Location: NC, USA
Thanks for sharing that 12mA wave in your earlier post...

Interesting, only 3 bypass caps for your asynchronous SRAM.

There are 12 separate VDD-VSS pairs in the Synchronous RAM I'm using, which should tell any designer the stress the engineers put in the importance of bypassing this device. Which, knowing this, I still try to get away with as much as I can due to the confidence I have with my power distribution!

EDIT: In my design I put provisions for 2 bypass caps on each VDD-VSS pair "just in case", especially since there was room for this in the layout. I've noticed in designs by DigilenInc that they have some caps in parallel, so it can't be just a simple addition of capacitor values? or can it?

_________________
65Org16:https://github.com/ElEctric-EyE/verilog-6502


Last edited by ElEctric_EyE on Wed Mar 06, 2013 10:33 pm, edited 1 time in total.

Top
 Profile  
Reply with quote  
PostPosted: Wed Mar 06, 2013 10:19 pm 
Offline
User avatar

Joined: Tue Nov 16, 2010 8:00 am
Posts: 2353
Location: Gouda, The Netherlands
My RAM only has 2 VDD-VSS pairs, both in the middle of the device, on opposite sides, so I put a cap under each pair. I don't think there's a benefit to adding any more.

Of course, I haven't run any real stress tests yet.


Top
 Profile  
Reply with quote  
PostPosted: Wed Mar 06, 2013 10:44 pm 
Offline
User avatar

Joined: Tue Nov 16, 2010 8:00 am
Posts: 2353
Location: Gouda, The Netherlands
ElEctric_EyE wrote:
I've noticed in designs by DigilenInc that they have some caps in parallel, so it can't be just a simple addition of capacitor values? or can it?

No, the idea is that you use 2 caps of different value, each offering a low impedance path to ground, but at different frequencies. Combined, the low impedance path has a wider frequency range.


Top
 Profile  
Reply with quote  
PostPosted: Wed Mar 06, 2013 10:48 pm 
Offline

Joined: Mon Mar 02, 2009 7:27 pm
Posts: 3258
Location: NC, USA
I've always wondered about this, just to clarify...

So the multiple bypass caps of different values in parallel are like multiple notch filters bypassing at their different frequencies? and it is not a simple addition of capacitance?

_________________
65Org16:https://github.com/ElEctric-EyE/verilog-6502


Top
 Profile  
Reply with quote  
PostPosted: Wed Mar 06, 2013 11:02 pm 
Offline
User avatar

Joined: Fri Aug 30, 2002 1:09 am
Posts: 8427
Location: Southern California
That's more-or-less right, because each one is like a capacitor and inductor (and a little resistance) in series.

_________________
http://WilsonMinesCo.com/ lots of 6502 resources
The "second front page" is http://wilsonminesco.com/links.html .
What's an additional VIA among friends, anyhow?


Top
 Profile  
Reply with quote  
PostPosted: Wed Mar 06, 2013 11:32 pm 
Offline

Joined: Mon Mar 02, 2009 7:27 pm
Posts: 3258
Location: NC, USA
Excellent Garth, thanks for your expert input. You clearly excel in this area of board design!

I must retreat now into my 65Org16.b software and drink much coffee.

_________________
65Org16:https://github.com/ElEctric-EyE/verilog-6502


Top
 Profile  
Reply with quote  
PostPosted: Thu Mar 07, 2013 5:25 am 
Offline
User avatar

Joined: Tue Nov 16, 2010 8:00 am
Posts: 2353
Location: Gouda, The Netherlands
And of course, the inductance is also dependant on the board layout. For instance, I have my caps at the bottom, which adds a extra little inductance from the via. And TQFP packaging also adds more inductance than BGA (probably more than the vias).


Top
 Profile  
Reply with quote  
PostPosted: Fri Mar 08, 2013 2:59 am 
Offline

Joined: Mon Mar 02, 2009 7:27 pm
Posts: 3258
Location: NC, USA
Aiming in the dark here, but for the 2 bypass values that will be in parallel on each SyncRAM VDD-VSS pair of power pins, I think .1uF in parallel with .001uF should be most effective for close to 100MHz operation?

_________________
65Org16:https://github.com/ElEctric-EyE/verilog-6502


Top
 Profile  
Reply with quote  
PostPosted: Fri Mar 08, 2013 4:36 am 
Offline
User avatar

Joined: Fri Aug 30, 2002 1:09 am
Posts: 8427
Location: Southern California
ElEctric_EyE wrote:
Aiming in the dark here, but for the 2 bypass values that will be in parallel on each SyncRAM VDD-VSS pair of power pins, I think .1uF in parallel with .001uF should be most effective for close to 100MHz operation?

Doing a little more looking in Dr. Howard Johnson's articles, I find in https://web.archive.org/web/20120302190 ... s/1_17.htm: "I discourage engineers from combining together different-valued capacitors if they share the same package format (for example, 0.1 uF and 0.001 uF, both in 1206-SMT packages). Since the lead inductances are the same, you aren't really buying anything at the high-frequency end that you wouldn't have gotten with just two of the larger-valued components in parallel."

https://web.archive.org/web/20120302190 ... s/6_09.htm is a good one showing the best ways to connect the bypass capacitors in board lay-out. He made 100x size models to be able to measure inductance more easily, and shows the results. The best results came from the capacitors in the smallest packages, and putting the vias against the sides of the land pattern (not at the ends), and with no trace length between them. If you're soldering by hand, you can usually put vias in the capacitor's pads on the board further reducing inductance; but don't do that for automated assembly because the solderpaste will squirt through the hole and make a mess. I haven't tried it but that's more or less what I've read. Also, it's best to have the power and ground planes close to the surface you're putting the components on.

https://web.archive.org/web/20120302190 ... ws/1_6.htm addresses getting the bypass capacitors as close to the IC's power and ground leads as possible.

https://web.archive.org/web/20120302190 ... ws/2_3.htm, he recommends using the smallest practical capacitor package size to hold the inductance down, then getting the largest capacitance you can in that size and with an adequate voltage rating.

https://web.archive.org/web/20120302190 ... s/9_07.htm has more on how to connect bypass capacitors.

So my earlier advice was not totally the best.

_________________
http://WilsonMinesCo.com/ lots of 6502 resources
The "second front page" is http://wilsonminesco.com/links.html .
What's an additional VIA among friends, anyhow?


Top
 Profile  
Reply with quote  
PostPosted: Fri Mar 08, 2013 7:28 am 
Offline
User avatar

Joined: Tue Nov 16, 2010 8:00 am
Posts: 2353
Location: Gouda, The Netherlands
If you put the vias in the pads, or really close, they'll wick the solder paste during automated assembly. It won't make a mess, but it'll make for a very dry joint, as most of the solder will end up in the hole. Also, 2 lead components, like small caps may get pulled towards the other pad to the point where they tombstone, or don't make any contact at all.

For practical purposes, I mostly use 0603, and then I pick 0.1 uF, 50V, X7R types for bypassing. These are quite cheap (about $15 for a reel of 4000). While 0402 may be better, their small size makes them a bit more impractical for hand assembly. It's easy to get bigger capacitance in 0603, but with the higher prices, it doesn't make it attractive to sprinkle a board with those. So, that's why I settle on 0.1 uF as a good compromise, and add a few 10uF/10V here and there.


Top
 Profile  
Reply with quote  
PostPosted: Fri Mar 08, 2013 11:38 am 
Offline
User avatar

Joined: Tue Nov 16, 2010 8:00 am
Posts: 2353
Location: Gouda, The Netherlands
@ElEctric_EyE, another thing to keep in mind is that a lower drive strength reduces instantaneous power consumption by the output drivers when switching multiple output pins at the same time. So, it's better to minimize drive strength, as long as the edges don't become so slow that they mess up the timing. But if you still have, say, 6 ns of timing budget, an extra 1 ns delay from a softer edge won't hurt, but it will help current spikes, and will make optimal bypass cap selection and placement less of an issue.

Of course, we can only control the drive strength of the FPGA, not the SRAM.

By the way, can you explain how you implemented your IODELAY ? I started reading the Xilinx documentation a little better, and started some experiments of my own. For instance, I had assumed there was only an output delay, but I saw that I was wrong about that, and that you can also apply an input delay, or even both input & output delays on the tri-state signals. Given that, an input delay applied to the data signals would seem most appropriate.


Top
 Profile  
Reply with quote  
PostPosted: Fri Mar 08, 2013 1:45 pm 
Offline
User avatar

Joined: Tue Nov 16, 2010 8:00 am
Posts: 2353
Location: Gouda, The Netherlands
Here's a scope image from the SRAM interface. I have an input delay, but based on some experiments, it should be close to zero, so I might as well take it out.

Every division is 10 ns, which is about 1 clock cycle. As you can see, I generate 1 cycle OE pulse (top trace), which results in a edge on a data output D0 from SRAM, after about 6-7 ns, well within the max access time of 10 ns according to datasheet.

On the bottom trace, you can see how the FPGA reads the data, and outputs it on a GPIO pin. Round trip propagation delays from FPGA Q -> SRAM -> FPGA D look like they're about 5 ns, so with a 100 MHz clock, you can grab the data in the middle by just waiting 2 clocks, without any extra IODELAY. It's probably not much different on your board.


Attachments:
sram.png
sram.png [ 6.55 KiB | Viewed 1793 times ]
Top
 Profile  
Reply with quote  
PostPosted: Sat Mar 09, 2013 2:04 am 
Offline

Joined: Mon Mar 02, 2009 7:27 pm
Posts: 3258
Location: NC, USA
Arlet wrote:
...By the way, can you explain how you implemented your IODELAY ? I started reading the Xilinx documentation a little better, and started some experiments of my own. For instance, I had assumed there was only an output delay, but I saw that I was wrong about that, and that you can also apply an input delay, or even both input & output delays on the tri-state signals. Given that, an input delay applied to the data signals would seem most appropriate.

I've not figured out how to implement it yet. I've read that one can do it 1 of 2 ways. Either through a .UCF constraints file, or a special comment right before the 'module' declaration. I sort of gave up on the IODELAY since I couldn't figure it out. The progress I've made has been without IODELAY and using my own code for bi-directional comm. from/to the SyncRAM to the FPGA, very simple code but the RTL looked correct. In learning Verilog, the representative RTL schematic seems to be the bottom line to see if the code has been inferred correctly.

I'm about to put this board though a more stringent test very soon. Clearing screens, reading repetitive data and modifying it with a logic values and writing it back is not a real test...
I'm 1 step away from plotting 8x8 pixel characters anywhere within the 640x480 display RAM, then reading that data and replotting it. But I also am focusing on getting the cpu back up to 100MHz...

I had saved that project file immediately when I was successful with a 25MHz pixel clock at 100MHz cpu clock. The only thing that made it unsuccessful immediately afterwards was adding another blockRAM for the character ROM and the address decoding. Time for me to go 1 step backward, then hopefully 2 steps forward. I plan to use 1 blockRAM for zero & stack page at the bottom of memory, video ram starting right in the middle, and the OS and Character ROM at the top of the 4GB memory map.

A 100Mhz .b '6502type' core has always been my goal. I will strive to keep this speed and will go to great lengths to maintain it. This is where the .b core might start to morph, if all that is left to maintain speed is to start trimming address modes.

_________________
65Org16:https://github.com/ElEctric-EyE/verilog-6502


Top
 Profile  
Reply with quote  
PostPosted: Sat Mar 09, 2013 3:31 am 
Offline

Joined: Mon Mar 02, 2009 7:27 pm
Posts: 3258
Location: NC, USA
GARTHWILSON wrote:
Doing a little more looking in Dr. Howard Johnson's articles...

Thanks for the time your put into researching that info Garth! I will thoroughly check them out... Should be information to consider for the final PVB board design.

_________________
65Org16:https://github.com/ElEctric-EyE/verilog-6502


Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 609 posts ]  Go to page Previous  1 ... 15, 16, 17, 18, 19, 20, 21 ... 41  Next

All times are UTC


Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to: