PCI Card with Xilinx X3CS500E

PCI Card with Xilinx X3CS500E

Details

Category: Prototype Board

Created: January 03, 2013

Updated: January 27, 2020

Language: Verilog & VHDL

Other project properties

Development Status: Beta

Additional info: Design done, Specification done

WishBone compliant: No

WishBone version: n/a

License: LGPL

Description

part list

Various:
5V input SMT jack 3.5mm (Ebay)
PROG 10pin 2.54mm JTAG header (2.5V)
D1,D2,D3 0805 led (marking cathode side)
IO 20pins 20pins 2.54 double row male header
TX/RX PLT133_T6A/PLR135_T10 everlight
OSC50Mhz ABRACON_3V3_ASV_SERIE 50Mhz (mouser ASV-50.000MHZ-EJ-T)
L1,L2,L3 3.3uH 1.1A inductors 0806 size (mouser ref CKP20163R3)

Ics:
REG1 ASM1117-ADJ(1.25V)
IC1-IC5 QS3861PAG8 (IDT) (maybe replaced by compatible part SN74CBTD3861PWR)
IC6 XC3S500E PQ208
IC7 NCP303LSN29 open drain (DNF not required do not fit*)
IC8 FAN2012 for VCCO 3.3V
IC9 FAN2012 for VCCAUX 2.5V
IC10 FAN2012 for VCCINT 1.2V
IC11 M25P16 ST SPI flash memory

Resistor:
R1 ASM1117 resistor adj to ground 2K2
R2 ASM1117 resistor adj to Vout 1K
R3,R4,R5 resistor for 3.3V led (680R)
R6 VS1 to ground (0R)
R7 4K7 INIT_B to VCCO
R8 bus switch enable to ground 0R
R9-R10 3.3V reg. gnd-VCCO (R9 1K5 R10 4K7)
R11-R12 2.5V reg. gnd-VCCAUX (R11 4K7 R12 10K)
R13-R14 1.2V reg. gnd-VCCINT (R13 3K R14 1K5)
R15 VCCO to SPI_SS 10K
R16 VCCAUX to DONE 330R
R17 VCCAUX to PROG_B 4.7K

Capacitor:
C1,C2 ASM1117 input capacitor 10uF min
C3,C4 ASM1117 output capacitor 10uF min
C5-C10 100nF decoupling bank2
C11-C15 100nF decoupling for bus driver
C16 100nf decoupling 50Mhz oscillator
C17 capacitor for NCP303LSN29 1nF (DNF not required do not fit *)
C18-C23 input capacitors for FAN2012 10uF 0805 X6
C24-C29 output capacitors for FAN2012 22uF 0805 x6
C30-C35 100nF decoupling bank0
C36-C41 100nF decoupling bank3
C42-C47 100nF decoupling bank1
C48-C49 100nF decoupling RX/TX

*The device NCP303 assert FPGA prog_b if power fall below 3.0V. It is not required in normal use.

description1

The card is a PCI card.
Tested in 2 different PC(1 old intel and 1 recent AMD FX 64bits) , with 2 different PCI core (Raggedstone and mini-pci).
The card connect 50 PCI signals and can theorically handle all feature of the PCI bus (bus master, interrupts etc).
The FPGA used XC3S500E is very large and the PCI core currently use 2% of LUT space.
The card is basically designed from the Raggedstone V1 design from Enterpoint LTD (same bus switch, roughly same PCI connections).
The PCB is professionnaly manufactured , but the card is soldered by my hands. 3 units are currently assembled. They is spare PCB available for anyone interested.All the electronic components are available from Digikey or Mouser except for the Xilinx FPGA.

ucf

#Board leds

NET LED_OUT LOC="P96" | IOSTANDARD = LVCMOS33;
NET LED_OUT LOC="P83" | IOSTANDARD = LVCMOS33;
NET LED_OUT LOC="P82" | IOSTANDARD = LVCMOS33;

#IO extension connector pin 13 and 14 are 3.3V, pin 19 and 20 are Gnd

NET IO_EXT_1 LOC="P152" | IOSTANDARD = LVCMOS33;
NET IO_EXT_2 LOC="P153" | IOSTANDARD = LVCMOS33;
NET IO_EXT_3 LOC="P150" | IOSTANDARD = LVCMOS33;
NET IO_EXT_4 LOC="P151" | IOSTANDARD = LVCMOS33;
NET IO_EXT_5 LOC="P146" | IOSTANDARD = LVCMOS33;
NET IO_EXT_6 LOC="P147" | IOSTANDARD = LVCMOS33;
NET IO_EXT_7 LOC="P144" | IOSTANDARD = LVCMOS33;
NET IO_EXT_8 LOC="P145" | IOSTANDARD = LVCMOS33;
NET IO_EXT_9 LOC="P137" | IOSTANDARD = LVCMOS33;
NET IO_EXT_10 LOC="P138" | IOSTANDARD = LVCMOS33;
NET IO_EXT_11 LOC="P128" | IOSTANDARD = LVCMOS33;
NET IO_EXT_12 LOC="P129" | IOSTANDARD = LVCMOS33;
NET IO_EXT_15 LOC="P126" | IOSTANDARD = LVCMOS33;
NET IO_EXT_16 LOC="P127" | IOSTANDARD = LVCMOS33;
NET IO_EXT_17 LOC="P119" | IOSTANDARD = LVCMOS33;
NET IO_EXT_18 LOC="P120" | IOSTANDARD = LVCMOS33;

#TOSLINK fiber optic

NET TOSRX LOC="P106" | IOSTANDARD = LVCMOS33;
NET TOSTX LOC="P107" | IOSTANDARD = LVCMOS33;

#user oscillator

NET CLK_50Mhz LOC="P180" | IOSTANDARD = LVCMOS33;

#PCI bus card edge connector

NET PCI_CLK LOC="P177" | IOSTANDARD = PCI33_3;
NET PCI_REQ LOC="P179" | IOSTANDARD = PCI33_3;
NET "PCI_AD" LOC="P181" | IOSTANDARD = PCI33_3;
NET "PCI_AD" LOC="P186" | IOSTANDARD = PCI33_3;
NET "PCI_AD" LOC="P189" | IOSTANDARD = PCI33_3;
NET "PCI_AD" LOC="P192" | IOSTANDARD = PCI33_3;
NET "PCI_CBE" LOC="P196" | IOSTANDARD = PCI33_3;
NET "PCI_AD" LOC="P199" | IOSTANDARD = PCI33_3;
NET "PCI_AD" LOC="P202" | IOSTANDARD = PCI33_3;
NET "PCI_AD" LOC="P205" | IOSTANDARD = PCI33_3;
NET "PCI_AD" LOC="P3" | IOSTANDARD = PCI33_3;
NET "PCI_CBE" LOC="P5" | IOSTANDARD = PCI33_3;
NET PCI_nIRDY LOC="P9" | IOSTANDARD = PCI33_3;
NET PCI_nDEVSEL LOC="P12" | IOSTANDARD = PCI33_3;
NET PCI_nPERR LOC="P16" | IOSTANDARD = PCI33_3;
NET PCI_nSERR LOC="P18" | IOSTANDARD = PCI33_3;
NET "PCI_CBE" LOC="P22" | IOSTANDARD = PCI33_3;
NET "PCI_AD" LOC="P24" | IOSTANDARD = PCI33_3;
NET "PCI_AD" LOC="P28" | IOSTANDARD = PCI33_3;
NET "PCI_AD" LOC="P30" | IOSTANDARD = PCI33_3;
NET "PCI_AD" LOC="P33" | IOSTANDARD = PCI33_3;
NET "PCI_AD" LOC="P35" | IOSTANDARD = PCI33_3;
NET "PCI_AD" LOC="P39" | IOSTANDARD = PCI33_3;
NET "PCI_AD" LOC="P41" | IOSTANDARD = PCI33_3;
NET "PCI_AD" LOC="P47" | IOSTANDARD = PCI33_3;

NET PCI_nINT LOC="P171" | IOSTANDARD = PCI33_3;
NET PCI_nRES LOC="P172" | IOSTANDARD = PCI33_3;
NET PCI_GNT LOC="P178" | IOSTANDARD = PCI33_3;
NET "PCI_AD" LOC="P185" | IOSTANDARD = PCI33_3;
NET "PCI_AD" LOC="P187" | IOSTANDARD = PCI33_3;
NET "PCI_AD" LOC="P190" | IOSTANDARD = PCI33_3;
NET "PCI_AD" LOC="P193" | IOSTANDARD = PCI33_3;
NET PCI_IDSEL LOC="P197" | IOSTANDARD = PCI33_3;
NET "PCI_AD" LOC="P200" | IOSTANDARD = PCI33_3;
NET "PCI_AD" LOC="P203" | IOSTANDARD = PCI33_3;
NET "PCI_AD" LOC="P2" | IOSTANDARD = PCI33_3;
NET "PCI_AD" LOC="P4" | IOSTANDARD = PCI33_3;
NET PCI_nFRAME LOC="P8" | IOSTANDARD = PCI33_3;
NET PCI_nTRDY LOC="P11" | IOSTANDARD = PCI33_3;
NET PCI_nSTOP LOC="P15" | IOSTANDARD = PCI33_3;
NET PCI_PAR LOC="P19" | IOSTANDARD = PCI33_3;
NET "PCI_AD" LOC="P23" | IOSTANDARD = PCI33_3;
NET "PCI_AD" LOC="P25" | IOSTANDARD = PCI33_3;
NET "PCI_AD" LOC="P29" | IOSTANDARD = PCI33_3;
NET "PCI_AD" LOC="P31" | IOSTANDARD = PCI33_3;
NET "PCI_CBE" LOC="P34" | IOSTANDARD = PCI33_3;
NET "PCI_AD" LOC="P36" | IOSTANDARD = PCI33_3;
NET "PCI_AD" LOC="P40" | IOSTANDARD = PCI33_3;
NET "PCI_AD" LOC="P42" | IOSTANDARD = PCI33_3;
NET "PCI_AD" LOC="P48" | IOSTANDARD = PCI33_3;