Maker Pro
Maker Pro

Build your own add-on board for PCI bus

G

Guest

Jan 1, 1970
0
Is there any "simple step-by-step guide to PCI bus interfacing" like
documentation+example circuit showing how one can build his/her own add-on
board for PCI bus?
 
J

John Larkin

Jan 1, 1970
0
Is there any "simple step-by-step guide to PCI bus interfacing" like
documentation+example circuit showing how one can build his/her own add-on
board for PCI bus?

PLX has a nice bunch of general-purpose PCI interface chips, plus lots
of appnotes and eval boards. But PCI can be a little nasty, first
time.

http://www.plxtech.com/products/io_accelerators/default.asp

Lately, for test systems, we've been buying motherboards that have
both PCI and ISA slots ($10!), a CPU chip, and a nice rackmount
enclosure ($70 maybe). ISA interfacing is a jillion times easier.

Has anybody ever done a PCI interface made out of just standard logic
chips? *That* would be a challenge!


John
 
L

Leon Heller

Jan 1, 1970
0
John Larkin said:
PLX has a nice bunch of general-purpose PCI interface chips, plus lots
of appnotes and eval boards. But PCI can be a little nasty, first
time.

http://www.plxtech.com/products/io_accelerators/default.asp

Lately, for test systems, we've been buying motherboards that have
both PCI and ISA slots ($10!), a CPU chip, and a nice rackmount
enclosure ($70 maybe). ISA interfacing is a jillion times easier.

Has anybody ever done a PCI interface made out of just standard logic
chips? *That* would be a challenge!

An FPGA or a large CPLD would be quite feasible.

Leon
 
I

Ingo Cyliax

Jan 1, 1970
0
PCI is not for the faint of heart. You would have to use either
a pre-existing PCI interface chip (PLX or equiv.), or an FPGA/CPLD
which has PCI compatible IO pins. In either case you have to
define what your interface looks like, and deal with providing
information for enumeration. I have designed from scratch target
and master implementations in FPGA using the PCI specification.
They finally worked, but it took some time and involved a fair
amount of time with a logic and bus analyzer to figure out what
is going on.

In addition you will have to deal with device drivers. I don't
know what OS you are considering. In Linux it's pretty easy to
find a card and write a kernel module to map it into IO/address
space, so you can talk to it via an application program. Never
tried in Windows, I explored it, but it looked daunting.

In many cases, you are probably better off starting with a generic
digital/analog PCI IO board and programming it at a higher level;
the card's vendor will usually supply you with a device driver.

I guess in the end, it depends on what you want to do and how
many you need to build, etc... I.e. are you considering PCI
because of connectivity, throughput, etc...

Alternate interfaces, which are a bit more friendly to develop
with.

ISAbus - this is pretty easy. Lot's of examples and you can use
simple TTL/CMOS logic chips to implement. You can access via user
program under Windows 98/DOS and Linux, without writing a low
level driver. PC104, PCMCIA and CompactFlash are all form factor
adaptation of ISA bus. PCMCIA/CompactFlahs is more complex to
implent.

USB - easier than PCI. there are inteface chips available which
make it trivial to design with. E.g. TPD245BM is a USB to parallel
FIFO interface, which looks like a VCOM under windows.

See ya, -ingo
 
J

John Larkin

Jan 1, 1970
0
PCI is not for the faint of heart. You would have to use either
a pre-existing PCI interface chip (PLX or equiv.), or an FPGA/CPLD
which has PCI compatible IO pins. In either case you have to
define what your interface looks like, and deal with providing
information for enumeration. I have designed from scratch target
and master implementations in FPGA using the PCI specification.
They finally worked, but it took some time and involved a fair
amount of time with a logic and bus analyzer to figure out what
is going on.

In addition you will have to deal with device drivers. I don't
know what OS you are considering. In Linux it's pretty easy to
find a card and write a kernel module to map it into IO/address
space, so you can talk to it via an application program. Never
tried in Windows, I explored it, but it looked daunting.

We do a lot of our test software under DOS, in PowerBasic mostly, so
we can directly access the hardware without driver overhead. We have
written a couple of utilities that make BIOS calls to locate the PCI
devices in config space and then drag them down into "real" memory
below 1M so we can thrash the hardware directly. Klugy, but fast.

John
 
K

krw

Jan 1, 1970
0
PLX has a nice bunch of general-purpose PCI interface chips, plus lots
of appnotes and eval boards. But PCI can be a little nasty, first
time.

I didn't find PCI terribly hard the first time out, though I let PLX do
all the hard stuff too. ;-) The only screw-up I made was the length of
the clock trace. It "worked" anyway (I wasn't going into production so
it got left as is).
http://www.plxtech.com/products/io_accelerators/default.asp

Lately, for test systems, we've been buying motherboards that have
both PCI and ISA slots ($10!), a CPU chip, and a nice rackmount
enclosure ($70 maybe). ISA interfacing is a jillion times easier.

No question. ISA is a piece of cake.
Has anybody ever done a PCI interface made out of just standard logic
chips? *That* would be a challenge!

It can be done in an FPGA, but it needs to be one designed with PCI in
mind (some can, some can't). There are cores available for some FPGAs.
I used the PLX chip (9054) in front of my FPGA as a bridge. I didn't
see any reason to use expensive FPGA logic and pins to do what was
cheap (and working) in a fairly cheap PLX chip. PCI simply can't be
done, and meet specs anyway, with "standard logic" chips.

I highly recommend "PCI System Architecture" by Shanley/Anderson
(MindShare) for anyone contemplating tackling a PCI project. (ISBN 0-
201-30974-2). It's also available on the web ($20, IIRC) at
http://www.mindshare.com/
 
C

cpex

Jan 1, 1970
0
On a related note. How difficult would it be to control a single pci device
with a microcontroller?

I am asking this because I want to add 802.11 to a project I am working on.
I only need a very small subset of 802.11 functionality. I dont need to send
tcp/ip packets just get some network statistics (signal strengths and such).
And as I am on a shoe string budget (computer interfacing project for
university) dont want to shell out for some 802.11 developers kit.

Josiah
 
K

KR Williams

Jan 1, 1970
0
On a related note. How difficult would it be to control a single pci device
with a microcontroller?

If you can get ahold of an FPGA with PCI I/O, it shouldn't be too
tough to interface to a target-only device. You're talking about
all the development overhead of an FPGA though.
I am asking this because I want to add 802.11 to a project I am working on.
I only need a very small subset of 802.11 functionality. I dont need to send
tcp/ip packets just get some network statistics (signal strengths and such).
And as I am on a shoe string budget (computer interfacing project for
university) dont want to shell out for some 802.11 developers kit.

Perhaps you could use a cast-out laptop from EBay?
 
I

Ingo Cyliax

Jan 1, 1970
0
implementing a single port PCI host adapter that talks to one card
is easier than implementing a target controller that has to talk
to various host adapters and OSes. You do not have to implement
all of the xfer modes and worry about enumerting devices, or
interrupts etc... I don't know if any of the miniPCI/PCI WLAN cards
require bus mastering or not.

If you want a simple WLAN interface for WiFi consider PRISM chipset
based PCMCIA/CF cards. They will run in 8bit mode, require few
address lines and don't require DMA to read/write to them. The hardware
interface is quite trivial and software isn't too bad. There are
Linux drivers.

ZWorld/RabbitSemiconductor has a devkit which is reasonably cheap,
and provides hardware, a WiFi card and software drivers. One of the
sample application does what you describe, it scans for hosts and
reads out signals/noise figures.

See ya, -ingo

Sr. Application Engineer, ZWorld Inc.

On a related note. How difficult would it be to control a single pci device
with a microcontroller?

I am asking this because I want to add 802.11 to a project I am working on.
I only need a very small subset of 802.11 functionality. I dont need to send
tcp/ip packets just get some network statistics (signal strengths and such).
And as I am on a shoe string budget (computer interfacing project for
university) dont want to shell out for some 802.11 developers kit.

Josiah
 
Z

Zak

Jan 1, 1970
0
cpex said:
On a related note. How difficult would it be to control a single pci device
with a microcontroller?

I am asking this because I want to add 802.11 to a project I am working on.
I only need a very small subset of 802.11 functionality.

If you get an old card (PCMCIA, not Cardbus) it behaves more or less as
an ISA card.


Thomas
 
Top