Configurable 32 Bit PCI Target

Configurable 32 Bit PCI Target


Category: System controller

Created: April 29, 2005

Updated: January 27, 2020

Language: VHDL

Other project properties

Development Status: Stable

Additional info: Design done, FPGA proven

WishBone compliant: Yes

WishBone version: n/a

License: LGPL


The PCI32tLite IP core provides the funtionality of a PCI TARGET. The core has been designed to permit interface between a PCI Master and simple WHISBONE Slaves, and fitting into smallest FPGA (about 200 LC's in ALTERA CYCLONE II FPGA).

Whisbone databus size and endianess configurable: "BIG"/"LITTLE",32/16/8 bits.

PCI memory or I/O map configurable.

Uses BAR0 register; occupies 32Mbytes on PCI memory map or 512Bytes on PCI I/O map.


Tested on HW:

- XILINX Raggedstone1 board.
- Other custom HW.

PCI32TLITE_OC_HOWTO. Document to evaluate the PCI32TLITE IP Core creating "maxii_uart" project:

- Project to create a UART 16550 PCI peripheral using IP Cores from
- PCI32TLITE_OC(Peio Azkarate)
- A_VHDL_16550_UART(Howard LeFrevre)
- GH_VHDL_LIBRARY(George Huber and Howard LeFrevre)
- Permits easy evaluation of the IP on HW.
- Using PCI32TLITE_OC UART with LINUX serial standard driver.


R02 2007-09-19:

- "intb" and "serr" signals not defined as TRI. They have to be defined Opendrain in the FPGA (externally to the IP Core).
- Small changes due to onalib.vhd improvement.
- Removed TIMEOUT. Added wb_rty_i for Target termination with RETRY.
- Support Burst Cicles.
- Add Whisbone data bus configuration generics: WBSIZE and WBENDIAN
- Add wb_adr_o(1..0) signals.
- wb_dat_i,wb_dat_o,wb_sel_o size depends on WBSIZE.
- Advice: Change WB to/from PCI databus routing for "BIG"/16 WB configuration and DWORD PCI transactions (DWORD is not recomended when WB 16 configuration).

R03 2008-06-16:

- PCI32TLITE_OC_HOWTO Document added and maxii_uart project
- Add "1BARIO" configuration option for BARS generic.
- fix bug with WBENDIAN generic in pciwbsequ.
- Change PCI Burts to WB traslation behavior.
- Add "classcode" generic.
- Change BAR0 reset state to "0".
- Fix pcidmux bug for LITTLE/8 configuration.

R04 Next release.Not ready yet.

- Add "pci_" prefix to PCI Bus signals names.
- Change "rst" signal name to "pci_rst". And change from active High to active Low. Allowing straight-forward connection of the PCI32TLITE Core to PCI bus (without inverter on rst).
- Add PCI Can Controller project. Uses PCI32TLITE (Peio Azkarate) and CAN (Igor Mohor) IP Cores from Opencores.
- Add Linux driver for PCI Can Controller project.
- Add basic Linux driver for PCI32TLITE IP Core.
- Some suggestion or wishes contact me. Thanks.