Author Topic: FPGA VGA Controller for 8-bit computer  (Read 416564 times)

0 Members and 2 Guests are viewing this topic.

Offline lintweaker

  • Contributor
  • Posts: 23
  • Country: nl
 

Offline BrianHG

  • Super Contributor
  • ***
  • Posts: 7661
  • Country: ca
Re: FPGA VGA Controller for 8-bit computer
« Reply #1001 on: April 28, 2020, 02:29:30 am »
Hang on...

Code: [Select]
   if (Write_GPU_RAM) begin   // *** WRITING TO GPU RAM
     
      Z80_245data_dir   <= 1'b1;       // Set 245 DIR to FPGA
      Z80_rData_ena     <= 1'b0;       // Set FPGA pins to input (should be by default)
      Z80_245_oe        <= 1'b0;       // Enable 245 output
      gpu_wdata         <= Z80_wData;  // Latch data bus onto GPU data bus
     
   end
   
   if (Read_GPU_RAM) begin    // *** READING FROM GPU RAM
     
      Z80_245data_dir   <= 1'b0;       // Set 245 DIR TO Z80
      Z80_245_oe        <= 1'b0;       // Enable 245 output
      Z80_rData_ena     <= 1'b1;       // Set bidir pins to output
     
   end

Above code is from z80_bridge.sv.

For a GPU RAM WRITE from the Z80, it's setting Z80_245data_dir HIGH.  That's setting the 245 to A>B direction.  This is fine for the prototype, because I've got the Z80 data bus on the A side, HOWEVER on the PCB I've got the FPGA on the A side.  :palm:

So if I'm reading it right, Z80_245data_dir is being set to the opposite value of what is required.  Amazing that I was able to write data to the GPU RAM at all...  :wtf:  Unless the 245's DIR pin never goes HIGH at all, in which case it won't matter what value Z80_245data_dir is set to, it'll always be sending data TO the FPGA.

I've reversed the values for Z80_245data_dir in the HDL to accommodate the change in layout of the PCB, but still not able to read anything from GPU RAM.  Strangely, I'm able to write to GPU RAM (and I can see the uCOM's bootstrap setting up the GPU for text display mode) but any block copies (using LDIR) just seem to write 0xB0 to every address, rather than 0x00 or any other value.

EDIT: Updated Z80_bridge.sv attached.
Have your tried completely rolling back the version of the interface, way back to 1.0 where we didn't have the interrupt or PS2 keyboard interface...
 

Offline nockieboyTopic starter

  • Super Contributor
  • ***
  • Posts: 1812
  • Country: england
Re: FPGA VGA Controller for 8-bit computer
« Reply #1002 on: April 28, 2020, 08:49:34 am »
Have your tried completely rolling back the version of the interface, way back to 1.0 where we didn't have the interrupt or PS2 keyboard interface...

Not yet, but I'm pretty confident the PS2 (and by extension the interrupt request) sections of HDL in the Z80_bridge aren't interfering with anything else.  There is no PS2 HDL to handle and read the PS2 input (there's no PS2 connector on the board at the moment), but I've attached a GND to the PS2_RDY input on the Z80_bridge just to be sure - but even if it did float HIGH, it wouldn't do anything except read PS2_DAT into a register anyway, ready to be read by an IO RD from the Z80.

I'm fairly convinced it's a bad IO on the FPGA.  I've done my best to try and get some data from the 245_DIR line between pin 143 on the FPGA and pin 1 on the 74LVC245, but I'm finding attaching a logic analyser probe impossible - I need four or five arms to hold everything in place and operate the PC at the same time.

What I did do was a very tight loop of test code:

Code: [Select]
6000   LD HL,0C000H  ; Translates to GPU RAM address 0x0000
6003   LD A,(HL)     ; Read a byte from GPU RAM into the accumulator
6004   LD A,(HL)
6005   LD A,(HL)
6006   LD A,(HL)
6007   LD A,(HL)
6008   JP 6003       ; Jump back and read again

Basically, it gets the Z80 to read an address in GPU RAM (pointed to by HL) several times and loop back to read it again constantly.  Without looking at the clock timings for the individual commands I was using, I'd say it would be fair to estimate that the 245_DIR line should have been HIGH for anything between 20-40% of the time in that loop (disclaimer: wild guess from top of my head, but supported by some logic).  As all I could reliably connect to the 245's pin 1 was my multimeter, I would have expected to see something like 1V maybe, displayed as an average on the meter if it was working properly.

At rest (i.e. no GPU RAM access by the Z80), the pin read around 40mV.  Whilst the test loop was running, it read 49-60mV, sometimes jumping to around 200mV, but it didn't seem to like being measured and I could hear some faint static from the speaker briefly, then it locked up entirely.  I'm fairly confident that the test was sensitive enough to pick up if the line was going HIGH as it should do when the Z80 read the GPU RAM, but there was little sign of that.  Very strange behaviour.

Naturally, I'd prefer to get the logic analyser to record 245_DIR during a GPU RAM RD transaction, but I just can't seem to get a logic probe to contact securely with pin 1 of the TSSOP.  Might try soldering a wire to it later and try again.

My last step is a little extreme, so I'm holding off doing it until I'm happy I've exhausted all attempts with the logic analyser and I've had the time to dig out the oscilloscope and set it up (again, I need five arms and plenty of time to do that).  Basically, I'll cut the 245_DIR trace and connect a spare FPGA IO (I have a couple) to the 245 with some wire-wrap, if need be.
 

Offline nockieboyTopic starter

  • Super Contributor
  • ***
  • Posts: 1812
  • Country: england
Re: FPGA VGA Controller for 8-bit computer
« Reply #1003 on: April 30, 2020, 02:18:04 pm »
So it was a dead/faulty IO pin on the FPGA.  :phew:  I cut the line from pin 143 to the data 245's DIR pin and bodged a connection between a spare IO on the FPGA (pin 7) and the DIR pin, updated the HDL with the new pin assignment and hey presto! It works - I can read the GPU RAM now.  ;D

Now for the next step - build the VGA output section and hope that all works as intended!  :-+
 
The following users thanked this post: BrianHG

Offline BrianHG

  • Super Contributor
  • ***
  • Posts: 7661
  • Country: ca
Re: FPGA VGA Controller for 8-bit computer
« Reply #1004 on: May 01, 2020, 12:12:10 am »

EDIT 2:
The Z80 is able to write data to the GPU RAM - I've been POKE-ing values to the GPU RAM and can see the changes in the RS232_debugger, but the Z80 cannot read the values back - all I'm getting back is $7E, which is what I get when there's no chip in the socket where the memory address resides.  Could this be a timing issue?

1. Check with a magnifying glass your soldering.
2. Check with ohm meter for continuity on the OE and DIR lines of the 245s.
3. Go with an ohm meter and make sure your IO buffer's OE/DIR aren't shorted to adjacent pins on the FPGA, or shorted to GND/VCC.
4. Double check the schematic by pin number to the Quartus pinout file since I think we moved some IOs to adapt to the PCB layout.
5.  Verify that the new IOs on the larger CycloneIV are valid free IO.  (You only need to concern yourself with the OE and DIR signals for the 245s as the write function works.
6.  Make sure during pin number swapping, you didn't accidentally label/number the OE and DIR controls coming out of the FPGA backwards.

This type of possible problem is normal with a first time brand new PCB.

Lastly, you will need to scope the 245's OE/DIR as the 'Chinese Cyclone' may have a damaged IO pin.  Make sure the signal has a good 3v high and 0v low.
:-DD Heheheh, it's always the last thing...
 

Offline nockieboyTopic starter

  • Super Contributor
  • ***
  • Posts: 1812
  • Country: england
Re: FPGA VGA Controller for 8-bit computer
« Reply #1005 on: May 01, 2020, 09:04:24 am »
:-DD Heheheh, it's always the last thing...

 ;)

And there's always another thing...   :-\ I completed the VGA section last night and switched on, blank screen (no signal).  Now I haven't had much time to look into the issue, but I noticed after a quick look at the HDL last night that there was no BLANK output from the GPU to the DAC (but the line is there on the PCB), so I quickly added an output in HDL linked to Vcc and tried again - still no output.

So here's my to-do list - feel free to chip in with any other suggestions - that I'll try to work through over the weekend. Listed in order of ease of testing (I have no easy/reliable way to get my logic analyser connected to the FPGA pins):

1) Check Quartus HDL for errors/incorrect pin allocations (done this - this is how I spotted the missing BLANK output)
2) Check for bad soldering
3) Check BLANK line for 3.3V on PCB
4) Check good 3.3VA to U13 (DAC)
5) Check U6 for good 5V supply and test for HSYNC and VSYNC signals
6) Check U3 outputs (via R7-R9 for ease of access) for R, G and B signals
7) Check R/G/B lines from FPGA
8 ) ... not wanting to jinx it, but consider possibility there's a few more bad IOs on this FPGA ...  :o
« Last Edit: May 01, 2020, 09:06:26 am by nockieboy »
 

Offline BrianHG

  • Super Contributor
  • ***
  • Posts: 7661
  • Country: ca
Re: FPGA VGA Controller for 8-bit computer
« Reply #1006 on: May 01, 2020, 09:49:13 am »
BLANK output from the GPU to the DAC (but the line is there on the PCB), so I quickly added an output in HDL linked to Vcc and tried again - still no output.

Doesn't Blank = VCC mean 'Blank' as in black, as in no picture?

Don't we have an 'active' video output which would just need to be inverted to feed this signal?
« Last Edit: May 01, 2020, 10:20:10 am by BrianHG »
 

Offline nockieboyTopic starter

  • Super Contributor
  • ***
  • Posts: 1812
  • Country: england
Re: FPGA VGA Controller for 8-bit computer
« Reply #1007 on: May 01, 2020, 10:08:17 am »
Doesn't Blank = VCC mean 'Blank' as in black, as in no picture?

The way I read the datasheet, I thought it meant no image if BLANK was not at Vcc?



Don't we have an 'active' video output which would just need to be inverted to feed this signal?

Errrr.... possibly - would that be the vid_de_out (vde at the pin) output from vid_out_stencil???
« Last Edit: May 01, 2020, 10:14:32 am by nockieboy »
 

Offline nockieboyTopic starter

  • Super Contributor
  • ***
  • Posts: 1812
  • Country: england
Re: FPGA VGA Controller for 8-bit computer
« Reply #1008 on: May 03, 2020, 10:05:43 am »
It appears there's no hs and no vs coming out of the FPGA.  I couldn't pick up any blue signals on blue[5] or blue [2] when I tested them.  As I'm using my logic analyser, connected via a Dupont lead with a pin stuck in the end to connect to one of my multimeter's leads so I can use the sharp point on the end to single out the FPGA pins I want to test, it's a shaky method but I'm consistently getting a pixel_clk signal (sort of - my logic analyser won't measure a frequency that high, but I'm getting a signal as best it can manage) and BLANK is HIGH.

Could there be something I've missed in the HDL that is stopping hs/vs output?  I'll test the rest of the colour channels later, taking a break for a bit.
 

Offline BrianHG

  • Super Contributor
  • ***
  • Posts: 7661
  • Country: ca
Re: FPGA VGA Controller for 8-bit computer
« Reply #1009 on: May 03, 2020, 05:28:06 pm »
What does the scope say?
 

Offline nockieboyTopic starter

  • Super Contributor
  • ***
  • Posts: 1812
  • Country: england
Re: FPGA VGA Controller for 8-bit computer
« Reply #1010 on: May 16, 2020, 10:19:52 am »
Quick update, as nothing has really progressed.  The scope didn't provide any meaningful data (to me, anyway) - looks like the IOs are dead on the first FPGA and a second I put together is completely dead.

I've given up on the project for the moment while I wait for some low-temperature solder to arrive.  I have a concern that I may have cooked the last FPGA as I tried soldering it with a hot air gun from the top, instead of from underneath via the... vias... and not having an IR temp gun meant I had no idea how hot I was making the chip, so I figure the wait for some low-temp solder would be worth it and should mean I can solder the exposed ground pad underneath the chip without roasting the chip.  Obviously I use normal solder for the pins - I'm quite happy I can do them without causing much hassle to the chip.

I've got two of these FPGAs sourced from AliExpress left - if I can get better results soldering them using the low-temp paste (but they still don't work fully) then I'll know they're a bad batch and it's not my caveman soldering skills.  Sourcing an FPGA from a legitimate seller is about 6x more expensive, though, so I want to make sure my soldering is up to the task before I start literally burning through cash.  I'll get an IR temp gun before I start on a legitimate FPGA build...

TLDR: going on hiatus for a while - waiting for materials - before attempting another build.  ::)
 

Offline asmi

  • Super Contributor
  • ***
  • Posts: 2728
  • Country: ca
Re: FPGA VGA Controller for 8-bit computer
« Reply #1011 on: May 16, 2020, 03:35:43 pm »
Take a look at the project in my signature. It's open source (so you can modify it if you want to adapt it to your project by adding/removing peripherals, or using some other connector as the 0.1" one on the board is not really suitable for anything high-speed), it supports rather beefy FPGAs (up to Spartan-7 S50 with 76.8K logic cells and 90 36Kbit BRAM cells), there is up to 256 MBytes of DDR2 memory with 16bit bus running at 333 MHz (so theoretical maximum bandwidth is 333 * 2 * 16 = 10656 Mbit/s), and there is an HDMI output port. But most importantly, it's tested and known to work.
 
The following users thanked this post: nockieboy

Offline BrianHG

  • Super Contributor
  • ***
  • Posts: 7661
  • Country: ca
Re: FPGA VGA Controller for 8-bit computer
« Reply #1012 on: May 16, 2020, 10:15:28 pm »
Quick update, as nothing has really progressed.  The scope didn't provide any meaningful data (to me, anyway) - looks like the IOs are dead on the first FPGA and a second I put together is completely dead.

I've given up on the project for the moment while I wait for some low-temperature solder to arrive.  I have a concern that I may have cooked the last FPGA as I tried soldering it with a hot air gun from the top, instead of from underneath via the... vias... and not having an IR temp gun meant I had no idea how hot I was making the chip, so I figure the wait for some low-temp solder would be worth it and should mean I can solder the exposed ground pad underneath the chip without roasting the chip.  Obviously I use normal solder for the pins - I'm quite happy I can do them without causing much hassle to the chip.

I've got two of these FPGAs sourced from AliExpress left - if I can get better results soldering them using the low-temp paste (but they still don't work fully) then I'll know they're a bad batch and it's not my caveman soldering skills.  Sourcing an FPGA from a legitimate seller is about 6x more expensive, though, so I want to make sure my soldering is up to the task before I start literally burning through cash.  I'll get an IR temp gun before I start on a legitimate FPGA build...

TLDR: going on hiatus for a while - waiting for materials - before attempting another build.  ::)
Heat burning a 144pin TQFP when just drag soldering the pins is tough to do.

1 IO dead, ok, maybe static electric discharge or Chinese junk.
1 bank of IOs dead, maybe an IO bank's VCCIO or GNDIO isn't soldered down or making contact.

If you see the DAC getting a clock & syncs & random data, but no picture, maybe a Chinese fake DAC ic.

You should have paid the extra 20% an purchased the read McCoys from the links I've provided when we did the price comparisons earlier and be guarantee good ICs.  (Note that I realize I also provided Aliexpress links for some FPGAs and I did warn of the possibilities of problems when purchasing from there)
« Last Edit: May 16, 2020, 10:18:39 pm by BrianHG »
 

Offline BrianHG

  • Super Contributor
  • ***
  • Posts: 7661
  • Country: ca
Re: FPGA VGA Controller for 8-bit computer
« Reply #1013 on: May 17, 2020, 03:25:02 am »
How about a detailed hi-res photograph of your assembled PCB.
 

Offline nockieboyTopic starter

  • Super Contributor
  • ***
  • Posts: 1812
  • Country: england
Re: FPGA VGA Controller for 8-bit computer
« Reply #1014 on: May 17, 2020, 11:09:50 am »
Heat burning a 144pin TQFP when just drag soldering the pins is tough to do.

Agreed - and I'm confident enough in my soldering skills to not be slightly worried about this particular risk.

Using the hot air gun, however, I'm not so sure about.  I've ordered an IR temperature gun - I can't really hot-air solder a chip as large as a QFP-144 where I can't see the solder melting on the ground pad and expect to keep it even vaguely close to any kind of soldering profile. 

You should have paid the extra 20% an purchased the read McCoys from the links I've provided when we did the price comparisons earlier and be guarantee good ICs.  (Note that I realize I also provided Aliexpress links for some FPGAs and I did warn of the possibilities of problems when purchasing from there)

I was always going to go for the cheapest FPGAs I could source initially as I had no confidence in my ability to be able to solder them (the 'hardest' I'd done before was the odd TSSOP, I hadn't gone smaller than 0805 for passives and I have no specialist or expensive equipment), so don't worry about the advice you gave me - it was good.

I'm happy that soldering a QFP-144 isn't actually that difficult now, even with the exposed ground pad, aside from my concerns with possibly overheating the chip - but I'm taking steps to prevent that now by getting the IR temp gun.  There's still no guarantee that's the issue - but I may as well deal with the obvious issues as well as the less obvious ones.

I've taken some pics with my phone - can't say they're much use, but I'll attach them anyway.  I've been using a x10 loupe magnifying glass for all my SMD soldering anyway, so I've inspected the board as best I can and can't see any bad connections on the FPGA.  The next step is to check all the power pins at the FPGA to make sure power is getting through.

Some of the resistor values are approximations (85R instead of 75R on the RGB outputs, for example), and I think I found X1 to be the fiddliest thing to solder of the lot (I used solder paste and hot air gun for it), but it's outputting a 50 MHz clock as far as I can tell (the FPGA works in terms of talking to the Z80 and operating the buzzer, anyway).

I'll attach the other four images in following posts, due to attachment size limitations.

993034-0
 

Offline nockieboyTopic starter

  • Super Contributor
  • ***
  • Posts: 1812
  • Country: england
Re: FPGA VGA Controller for 8-bit computer
« Reply #1015 on: May 17, 2020, 11:12:09 am »
This image shows the side of the FPGA closest to the video DAC.  The hs/vs booster (74HCT541) is just visible in the bottom left of the image and VGA socket at the bottom of the image.

993038-0
 

Offline nockieboyTopic starter

  • Super Contributor
  • ***
  • Posts: 1812
  • Country: england
Re: FPGA VGA Controller for 8-bit computer
« Reply #1016 on: May 17, 2020, 11:14:09 am »
90 degrees counter-clockwise from previous image, showing the FPGA side on the data and control bus input side.  The jumper lead is the bodge I made when I realised the data bus's 245_DIR IO pin wasn't working, so switched to an alternate IO pin on the FPGA.

993042-0
 

Offline nockieboyTopic starter

  • Super Contributor
  • ***
  • Posts: 1812
  • Country: england
Re: FPGA VGA Controller for 8-bit computer
« Reply #1017 on: May 17, 2020, 11:15:55 am »
Another 90 degrees counter-clockwise, looking at the side of the FPGA that connects to the clock source, serial port and AS/JTAG ports.

993050-0
 

Offline nockieboyTopic starter

  • Super Contributor
  • ***
  • Posts: 1812
  • Country: england
Re: FPGA VGA Controller for 8-bit computer
« Reply #1018 on: May 17, 2020, 11:17:37 am »
Finally, another 90 degrees counter-clockwise from previous post, showing side of FPGA that handles the system's address bus, from A0-X21.

993054-0
 

Offline cruff

  • Regular Contributor
  • *
  • Posts: 68
  • Country: us
Re: FPGA VGA Controller for 8-bit computer
« Reply #1019 on: May 17, 2020, 01:20:18 pm »
It looks like there are solder bridges on chip U3 on the upper side in the image.
 

Offline nockieboyTopic starter

  • Super Contributor
  • ***
  • Posts: 1812
  • Country: england
Re: FPGA VGA Controller for 8-bit computer
« Reply #1020 on: May 17, 2020, 01:32:58 pm »
It looks like there are solder bridges on chip U3 on the upper side in the image.

Yes, they're supposed to be there.

993202-0
 

Offline BrianHG

  • Super Contributor
  • ***
  • Posts: 7661
  • Country: ca
Re: FPGA VGA Controller for 8-bit computer
« Reply #1021 on: May 17, 2020, 05:58:52 pm »
Ok,
Have you ever drag soldered pins?
Do you have extra flux?
Do you have solder wick?

I've attached at least 2 lifted pins, the VCCA pll and VCCIO for the DAC and I think some of the Z80 port.

Things are iffy, I bet other pins are also just barely touching cold solder joints.

Also, having a lifted VCCIO may be damaging to powering up the FPGA, but from what I see, properly cleaning things up may make this PCB work fine.
993328-0
993332-1
 

Offline nockieboyTopic starter

  • Super Contributor
  • ***
  • Posts: 1812
  • Country: england
Re: FPGA VGA Controller for 8-bit computer
« Reply #1022 on: May 17, 2020, 07:01:17 pm »
Have you ever drag soldered pins?
Do you have extra flux?
Do you have solder wick?

Yes to all those.  I have sticky/waxy (applied with a tooth pick), liquid (applied with a brush) and jelly-like (applied from a syringe) flux.  I've been using solder wick on the FPGA - you can probably see where the white solder mask has been removed on a few traces with some overzealous wicking...  And drag soldering is something I've learned on this FPGA and the one before it...

I've attached at least 2 lifted pins, the VCCA pll and VCCIO for the DAC and I think some of the Z80 port.

...but I'm happy there's no bad connections to the FPGA - I've checked and re-checked all the FPGA pins' connections to the PCB with a loupe and multimeter - I can confirm that ALL the 3.3V input pins to the FPGA are receiving 3.3V (well, 3.2V actually...  ???)

The 1.3V regulator is pumping out some heat, though - it felt quite hot to the touch whilst I was testing some of the FPGA pins, so here's some voltage readings from the tabs on the AMS1117s:  :-DMM
  • 2.5V regulator is outputting 2.482V
  • 1.3V regulator is outputting 1.335V
  • 3.3VA supply to the DAC is reading 3.276V
  • 3.3V supply line is 3.225V (this is from the uCOM's power supply)
Things are iffy, I bet other pins are also just barely touching cold solder joints.

Also, having a lifted VCCIO may be damaging to powering up the FPGA, but from what I see, properly cleaning things up may make this PCB work fine.

Short of testing every single pin on the FPGA, which I think I might just have to do, I'm pretty confident of ALL the FPGA connections to the PCB (including the exposed ground pad underneath).  The photos I've taken aren't the best quality - I'd need a digital microscope that can take stills really, so the pins you think look lifted or cold-soldered are actually fine if viewed with the light source from a different angle.
 

Offline asmi

  • Super Contributor
  • ***
  • Posts: 2728
  • Country: ca
Re: FPGA VGA Controller for 8-bit computer
« Reply #1023 on: May 17, 2020, 07:48:07 pm »
The 1.3V regulator is pumping out some heat, though - it felt quite hot to the touch whilst I was testing some of the FPGA pins
That's why almost all FPGA boards I've seen use buck converters for the core voltage. Some larger devices can consume a lot of current on that rail, so using linear converters is impractical because they would generate a serious amount of heat.
Also - why 1.3V? If my memory serves me Cyclone-4's Vccint is 1.2 V nominal ±0.05 V, or 1.0 V ± 0.03 V, so 1.3 V would certainly be out of spec.
« Last Edit: May 17, 2020, 07:50:55 pm by asmi »
 

Offline nockieboyTopic starter

  • Super Contributor
  • ***
  • Posts: 1812
  • Country: england
Re: FPGA VGA Controller for 8-bit computer
« Reply #1024 on: May 17, 2020, 08:25:43 pm »
Also - why 1.3V? If my memory serves me Cyclone-4's Vccint is 1.2 V nominal ±0.05 V, or 1.0 V ± 0.03 V, so 1.3 V would certainly be out of spec.

This was recommended by BrianHG:

Since you are using the slowest -C8 versions, and, you need a C7, or even a -C6 for the higher densities, I recommend replacing the 1.2v regulator for an adjustable one and adjust it for 1.35v.  This will make a C8 perform somewhere inbetween a C7 and C6 which would be perfect.  Though, my GPU design, there are only a few critical address paths in the FPGA, so it still wont get warm or draw too much current over driving the VCCint to 1.35v.

Having checked the datasheet in more detail, you're quite right, it does appear to be out of spec, especially as the voltage coming out is actually slightly higher than the 1.3V required in the design.

I doubt that dropping the voltage to 1.2V will affect the performance in any material way (unless BrianHG can shed some more light on that) as the prototype version on the FPGA dev board runs fine with a 1.2V supply.  Interestingly, that's a linear supply as well.  Will have to check the temp on that part next time around.

Likewise, I can't see how 1.3V instead of 1.2V on Vccint is going to stop the IO at the DAC side from working, when everything else seems fine.
« Last Edit: May 17, 2020, 08:32:48 pm by nockieboy »
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf