I'm one of that "old" engineer with a bit of experience on ISA bus cards. Over the years I've designed and manufactured various cards for the ISA bus. But as the technology runs faster than I'm, my good-old cards become obsolete.
I would like to ask what would be the simplest way of learning and experimenting on PCI bus ?
I'm assuming you are interested in implementing your PCI interfaces in an FPGA because you posted to this newsgroup.
As for learning about PCI, you can buy the PCI System Architecture book by Mindshare. That's a good book, especially if you don't have a copy of the spec itself. If you can get a copy of the spec, that's an added bonus. Check out
Also, Xilinx offers PCI and PCI-X classes through the Customer Education group. If you are willing and able to enroll, they are not free but I think a great value.
As for experimentation, you have a lot of options. It comes down to finding hardware you like and can afford. For example, several Xilinx distributors sell low cost (less than $500) PCI prototyping boards. You can also get one from
for less than $300. If you have easy access to manufacturing and assembly, and want to build a batch of boards for a project, try
To use the hardware, you'll need the logic for a PCI interface. You can buy one from Xilinx, other vendors have similar products. You can write your own from the spec. I think there are some people on this newsgroup that have written their own and sell it. Also, there is
which has a PCI interface.
Finally, you will need some kind of software tools to write a device driver. Perhaps someone else can give some recommendations on this topic.
Have a look at PCI-to-"simplebus"-bridges, like PLX90xx
They are very easy to use and quite flexible...
The PCB-layout on the PCI side is not that critical for experimenting, Vero-Wire-wrapping from a PCI breadboard to a QFP-adaptor-PCB works absolutely flawless. I don't know what generic drivers PLX has for Windows, for Linux you don't need one (if you can live without busmaster DMA or IRQs).
Doing an PCI-interface on your own in an FPGA is possible, but for a start (getting the driver stuff right) a ready-made chip is IMHO better.
Georg Acher, email@example.com
From another "old" engineer who had to update some ISA cards, you might want to consider a USB interface. If your quantities are small (as mine are) there are some nice USB products that will do wonders for your "time to market". Especially from a software/firmware standpoint. The software requirements for PCI compared to ISA is like comparing a bicycle to a Porsche.
As a 'not quite so old, but getting there' engineer I have done a couple of ISA based designs but realised that the ability to implement a PCI interface is becoming essential.
I designed my 'EASY PCI' core to be as easy to integrate as possible. The PCI side of things is taken care of, the local bus side gives you an address bus, data bus in and out, 4 * CS lines and a Wr and Rd line.
It's target only, a master version has been on the cards for a year but I haven't had the time to design/test it yet. The target will give 10MBytes/second write performance, about 8MBytes/second read. (The PCI bus allows burst transfers, but all the data I have found says that PC PCI bridge chips don't implement burst reads from target devices. If you want to get near to the theoretical PCI transfer bandwidth with a PC you have to use a device which can act as a bus master then transfer the data in bursts).
The core's targeted at an Altera Cyclone, but is written with no architecture specific features implemented so could easily be re-targeted at Xilinx devices.
It builds smaller than the Altera target only core so should be a good fit with the new MaxII development boards, I'll probably produce a cut-down version for that.
I have also designed a proto-board to accompany the core, but again haven't had the time to get this produced in quantity.
There's a core/board description on my web site if you want a look.
I haven't finalised costs for the core, but it's _v_cheap_ compared to the Altera equivalent and the board space/design risk of a specific PCI interface IC.
Good luck with the transition!
------------------------------------------------ Nial Stewart Developments Ltd FPGA and High Speed Digital Design Cyclone Based 'Easy PCI' proto board
That's not entirely true. PCI bridges can of course do burst reads. They do it only if requested by the CPU and that depends on the MMU-attributes of the memory "behind" the PCI device. If the memory space is marked as prefetchable or cacheable, a burst read is issued to fill a cache line even for a single read.
Georg Acher, firstname.lastname@example.org