PCI Bus Design & Windows Drivers

Source: Presco, Inc.

PCI Bus Design & Windows Drivers
Whatever circuit function your PCI card requires, it is likely to be implemented using a Field Programmable Gate Array such as the Xilinx Virtex LCA.
The most common computer plug-in card today is the PCI card used in IBM-PC compatible computers. There are a number of companies which provide dedicated general purpose controllers for connection to the PCI bus, including PLX Technologies which offers the PCI90xx line of chips. For most applications, these dedicated interface chips do a good job.

Whatever circuit function your PCI card requires, it is likely to be implemented using a Field Programmable Gate Array such as the Xilinx Virtex LCA. Xilinx provides a completely engineered "PCI Core" function which can be added to any of their larger devices, resulting in a fully compliant electrical interface to the PCI bus. The PCI Core has the advantage that it can be configured to meet your specific needs regarding features such as DMA controllers, DRAM interface, PCI burst length and FIFO depth.

Those Pesky Device Drivers
A big problem for clients who need to add custom circuit functions to an IBM-PC is that operating systems such as Windows-NT and Windows 2000 do not permit user level code to gain direct access to the new hardware. Instead, you have to write a Windows device driver. This can be difficult because of the many rules for interfacing to the operating system, and the problems with debugging kernel mode programs.

Presco has the in-house skills to generate Windows device drivers for custom plug-in cards, including the specialized features required to support complex (multiple PCI bus master) drivers that will work properly across different platforms or utilize a multi-processor environment.

Is Your PCI Bus Too Slow?
People often complain that their devices hit a "speed limit" at about 20 to 30 Mbytes per second on the PCI bus, despite the advertised 132 Mbyte/second transfer rate. The key to good transfer rates is to remember that the PCI bus protocol is burst oriented. It can take quite a few bus cycles to negotiate for bus ownership, contact your intended respondent, and get the first word transferred. Bus efficiency rises rapidly with burst length. A burst capability of just four words will bring about a significant speed increase, but to get high throughput you need at least 16 word transfers. You are unlikely to get sustainable bursts if the data transfers are program controlled, i.e. individual reads and writes via software, so you will need a DMA controller. Don't forget that the memory allocation scheme in the IBM-PC will often break up the logically contiguous memory space of your application, scattering it across physical memory in chunks of as little as 4Kbytes. You will need to use a chaining DMA controller with scatter/gather capability to make your transfers.

Compact-PCI For Higher Performance and Reliability
Many industrial products utilize the Compact PCI bus instead of the IBM-PC version of the bus. Compact-PCI has a number of advantages, including its use of a pin-and-socket bus connector which offers better reliability, higher current ratings, and a much larger pin count. By designating more power pins, Compact-PCI permits higher power dissipation for each card, overcoming a major limitation of IBM-PC cards. And ground bounce during bus transactions is sharply reduced because of the increased number of ground pins. It's easy to configure a Compact-PCI chassis with dual redundant power supplies for increased reliability. The power supply modules and the individual circuit cards (if so designed) can be hot plugged so that the system can remain operational despite one or more failed modules.

Combining this type of chassis with a redundant RAID disk drive produces an exceptionally robust system. Presco has performed a number of Compact-PCI product design cycles and we are familiar with the requirements.

Presco, Inc., 8 Lunar Drive, Woodbridge, CT 06525. Tel: 203-397-8722; Fax: 203-389-1129.