Utilize SpaceWire to communicate with the European Space Agency and NASA equipment utilizing the ECSS-E-ST-50-12C specification. SpaceWire is configured using routers to create a heirarchical point-to-point system with high speed parallel paths.
PCI SpaceWire implements SpaceWire in a convenient PCI format. With PCI-SpaceWire the four channels fit on the Bezel. The SpaceWire specification calls for LVDS signaling and a specific 9 pin micro-D connector. You can connect PCI-SpaceWire to other SpaceWire compliant devices without electrical interface issues.
Four fully independent and highly programmable LVDS IO channels are provided by the PCI-SpaceWire design. In the SpaceWire implementation the channels pass tokens between two independent state-machines to provide the proper protocol. The SpaceWire protocol is advanced with link testing, error handling, command and data protocols built in. The SpaceWire electrical interface is point-to-point. With the SpaceWire protocol it is easy to build a heirarchical architecture system with routers or a home-run wired system. Your equipment can interact with any other node in the system. PCI-SpaceWire provides a bridge from PCI <=> SpaceWire. Channel based DMA offloads your CPU and increases performance in your system. Time Code support provides a complete solution. Please refer to the manuals at the bottom of this page for detailed information
Each channel has FIFO memory with 4[K]/64K[BK] Kbytes TX and 4[K]/64K[BK] bytes RX standard with an option for an additional 512Kbytes. The FIFO´s are 32 bits wide to optimize data transfer from the PCI bus. The base FIFO´s are internal to the FPGA and utilize dual ported RAM configured as a FIFO. Two external positions are available for larger FIFO´s to be installed to support one of the channels in both directions or two of the channels in one direction.
The interface is optimized to minimize the latency on the PCI bus. The loop-back test can be used for BIT and for software development. The programmable FIFO flags are supported for interupt driven or polled operation. Programmable Almost Full, Programmable Almost Empty, plus Full, Half Full, and Empty. The programmable flags can be set to any debth to allow the software a programmable delay from event to empty or full. The interrupts can be very useful when sending or receiving messages larger than the FIFO size.
SpaceWire features automatic link testing when a node is brought on line - released for operation via software. The transmitter sends NULLs until NULLs are received and then sends FCTs until FCTs are received. The initial frequency is specified [ECSS-E-ST-50-12C] to be 10 MHz. Once the auto link test has passed, the hardware can switch to the programmed rate. A local oscillator is used to supply the 10 MHz reference clock for initialization. A programmable PLL is used to support operation once the link is established. The PLL is programmed via software and is referenced to the oscillator.
The SpaceWire protocol has flow control. The local memory on the PCI-SpaceWire will not overrun. In situations where the data being sent to the PCI-SpaceWire card is not buffered it is recommended to use a "
-128" model with large FIFO´s on channel 0. The issue is upstream - if there is an unbuffered or under-buffered data source that will loose data if the link is throttled back the larger FIFO´s will help. The larger FIFO´s will provide more room to accumulate data if the system is not ready to allow the PCI-SpaceWire to DMA transfer it immediately. The DMA transfers are higher bandwidth than the SpaceWire transfers allowing the system to catch-up once the DMA transfers restart. At 100 MHz and 80% data transfer the 128x32 FIFO will provide about 52 mS of data storage. The host would have to ignore the PCI-SpaceWire interrupt requests for longer than 52 mS before throttling would occur. In most systems this is sufficient time to stay out of the throttled mode. To unload a full FIFO with DMA running it will take 128K/33M = .4mS => the unload to load multiplier is stongly in favor of the host side allowing the host to catch-up to the SpaceWire link once the delaying event has passed.
With the 10-2006-0103 and later PCB´s, PCI-SpaceWire uses a Spartan 6 FPGA. The revision "K" design has been ported to this FPGA and will be the default FLASH program going forward. New versions of the card will have an additional "-BK"
Beyond
K added to the part number to make sure orders for current systems are filled with compatible HW. New features are planned to make use of the new larger Industrial Temperature FPGA. All 10-2006-0103 and later boards will be Industrial Temperature as a standard feature. Features include larger internal FIFO´s, [planned]error injection, rearranged memory map to make room for additional features, wider counters and more options for interrupts. Please send in your requests for added features.
Model -BK is recommended for new projects and projects that want an upgrade. The K revision will continue to be available for any current projects.
PCI-SpaceWire is supported with the
DESWBO Dynamic Engineering SpaceWire BreakOut tool for debugging SpaceWire systems,
cables, and the
DESWCB Dynamic Engineering SpaceWire Connector Board which provides a SpaceWire Cable to system cable interface.
If your situation demands a custom application then we will update the Xilinx FPGA. Send us your timing and we will send you the interface....
email us your wish list or call today!
PCI-SpaceWire Block Diagram
Model K diagram shown
The standard timing uses the data and strobe to transmit and to receive the data. The data is transmitted as a command or data. The strobe provides the transitions for clocking when the data is unchanged between adjacent bit times.
PCI-SpaceWire Standard Timing