Current Status / News changed on the 7th of May, 2003. - WebPack 5.2 project file with constraints for VGA Test Application (pci crt) was contributed by Uwe Bonnes (bon@elektron.ikp.physik.tu-darmstadt.de) - CVS link - PCI Bridge COMPLETE & TESTED. We are waiting for FEED-BACK! - TESTBENCH for 32-bit PCI bridge (PCI IP Core) is done. - PCI IP Core Design document is done (rev. 0.1). - PCI IP Core Specification is updated (rer. 0.6). - Sample application, bit-stream for Insight's PCI development kit, also available. - Design synthesized and tested in a FPGA with Insight's PCI development kit (Spartan II 150k gates, speed grade -5). Demo is a VGA Test Application. See Test Application page and its subpages. - RTL design for 32-bit PCI bridge (PCI IP Core) is done.
The PCI IP core (PCI bridge) is a member of a family of open source cores. It is a bus bridge device between the WISHBONE SoC bus and the PCI local bus. Both sides of bridge can operate at totally independent clock frequencies. It consists of two independent units, one handling transactions originating on the PCI bus, the other one handling transactions originating on the WISHBONE bus. Performance features include 32-bit bus interfaces on both sides, high level of performance and flexibility like burst data transfers, memory access optimizing command usage etc. The code is completely GENERIC (except for RAM primitives), which makes the core easily retargetable for any FPGA or ASIC technology.
FIRST: All commercial PCI soft cores, that we noticed, are PCI interfaces. They have different backend interfaces. A system designer using PCI interface for some application must also be aware of the PCI protocol. With a PCI bridge a designer considers only the system bus (WISHBONE SoC bus) and can easily focus on his application. (It is true, that PCI interfaces occupy less space, but they do not incorporate a back-end) SECOND: The same code for FPGA prototypes and ASIC end-products. The code is completely GENERIC, which makes it retargetable for any FPGA or ASIC technology. THIRD: We believe that the PCI bridge will be better tested and more improved because it is an open source PCI bridge core. Any help testing will be appreciated. Go to PCI Forum or contact mihad@opencores.org and tadej@opencores.org.
The core has been designed to offer as much flexibility as possible to all kinds of applications. You can download the latest documents on the download page or from the following links: - PCI Bridge Datasheet, - PCI Bridge Databook, - PCI Bridge Specification (describes the PCI IP Core operation and it's registers), - PCI Bridge Design document (describes the PCI IP Core structure, PCI Testbench with testcases and all defines).
The PCI bridge Testbench was designed to test most of possibilities: - All tests run several times with all combinations of typical Initial and Subsequent wait states - Configuration operation of HOST bridge; finding devices, interrupt acknowledge cycle, etc. - Configuring GUEST bridge - Many combinations of WB to PCI single and burst transactions with various terminations on WB and on PCI bus and with address translation enabled/disabled - Many combinations of PCI to WB single and burst transactions with various terminations on WB and on PCI bus and with address translation enabled/disabled - Many combinations of error and interrupt handling with reporting of errors and interrupts enabled/disabled - Fast Back-to-Back testing (PCI Target is capable of Fast Back-to-Back responding from different PCI masters) - Many combinations of transaction ordering For better tested design, we prepared a script for running a simulator with defines set by an user or 13 times (we use Cadence NCsim) with different combinations of defines (HOST/GUEST, different clocks, different number of images, etc.). The last test has defines set by the user. There are also LOG files created from all compiling and from testbench. The main testbench LOG file is pci_tb.log, which marks all testcases as SUCCESSFUL or FAILED. Other LOG files are from PCI and WB monitors. All are included in the PCI project and are downloaded together from download page or are available separately from PCI CVS. The PCI bridge Testbench is described in the PCI Bridge Design document and can be downloaded from the download page or from the link at the Documentation chapter.
The list of the main features of the PCI bridge IP core:
- 32-bit PCI interface
- Fully PCI 2.2 compliant (with 66 MHz PCI specification)
- Separated initiator and target functional blocks
- Supported initiator commands and functions:
- Memory Read, Memory Write
- Memory Read Multiple (MRM)
- Memory Read Line (MRL)
- I/O Read, I/O Write
- Configuration Read, Configuration Write
- Bus Parking
- Interrupt Acknowledge
- Host Bridging
- Supported target commands and functions:
- Type 0 Configuration Space Header
- (Type 0 is used to configure agents on the same bus segment)
- (Type 1 is used to configure across PCI-to-PCI bridges)
- Parity Generation (PAR), Parity Error Detection (PERR# and SERR#)
- Memory Read, Memory Write
- Memory Read Multiple (MRM)
- Memory Read Line (MRL)
- Memory Write and Invalidate (MWI)
- I/O Read, I/O Write
- Configuration Read, Configuration Write
- Target Abort, Target Retry, Target Disconnect
- Fast Back-to-Back Capable response
- Full Command/Status registers
- WISHBONE SoC Interconnection Rev. B compliant interface on processor side (master with Target PCI and slave with Initiator PCI interface)
- Configurable on-chip FIFOs
The following picture shows the PCI bridge architecure which is implemented as a Host PCI bridge.
FILE: PCI_HOST_architecture.jpg
DESCRIPTION: Host PCI Bridge Architecture
We made a synthesis for FPGA and for ASIC. For ASIC we synthesised just a PCI Bridge, while for FPGA we implemented a whole Test Application (PCI Bridge and CRT cores).
Technology | FPGA size | Silicon Area | Speed | Power Consumption |
FPGA Xilinx Spartan II -5 | * 1300 slices | / | * 33MHz PCI, 42MHz WB | TBD |
ASIC .18u VS library | / | * 1.0965 mm2 | 66MHz PCI, 200MHz WB | TBD |