Interfacing via ISA bus is very easy but slow and it is getting difficult to find ISA based PCs. USB bus easy to use but its packet stucture and therefore the latency is an issue for some real-time applications.
So, I want to learn how to build and work/play with PCI interfaces. Can you suggest what is the easiest and low-cost way of involving with the PCI bus to learn with hands on experiments?
This is the reason I keep ISA bus based PCs around and working.
Well, ponying up to PCI will not be cheap. First, you need to understand the difference between reflection wave and incident wave -- PCI is reflection wave. Second, there are very tight constraints implied by the technology. Your PCI clock line must be 1.5" +/- 0.1" in length, signal lines are to be less than
2.5" (if memory serves), and you will often find weird serpentine clock lines to meet that 1.5" requirement. Third, because of the loading requirements (at
33MHz, some 10pF total; at 66Mhz, 5pF), you will be using an ASIC. No discrete logic with multiple loads on single lines, for example. Fourth, you will pay much more dearly for instruments that can monitor and display PCI bus signals. Fifth, PCI mandates plug-and-play and certain minimum register requirements and the ability to assign block addresses, if needed.
You can get low cost ASICs. But the rest makes this not low-cost and there is a high threshold of knowledge required, as well. PCI was almost designed from the ground up to exclude basement developers.
Most modern PCB design packages will tell you the length of a trace. No real problem here.
ASIC? FPGA will do just fine, but the chips made by PLX are often found as a universal piece of glue.
??? The 96 channel / 100MHz logic analyzer I picked up on Ebay for US$
66 works very nice to monitor PCI signals.
Creating a PCI implementation is difficult, but there are numerous ways to get a PCI core or bridge (like the PLX chips). No need to bother with tedious timing. The PCI specification can be downloaded from several sites. It just comes down to a proper PCB layout on the PCI side.
The fastest way to get started with PCI is using a PLX chip.
AFAIK the PLX chips have a rather straight-forward backend bus, and I think some of them can even do PCI to ISA if you really want to, so apart from the requirement that you need to have a decent PCB if you want it to work reliably it shouldn't be that difficult and PLX most likely have an app-note on how the PCB should look.
For the sake of argument... ISA boards are still very available in the industrial market, and I think will be for many years. Cost is an issue there, however. Since you are looking to learn, it is a good entry level bus. Agreed, ISA is not exactly up to date technology.
Nico, you didn't say what your price point is.
Someone else prove me wrong, but this is the lowest cost PCI proto board I've seen. $150 USD. But wait -- there's more -- it includes USB, too. It is CPLD based, so in theory you can use it for some other purposes as well.... not as many options available as with a full FPGA, but a good trade for the cost.
We wrote a little DOS app that makes PCI bios calls. It can find a PCI board and drag it down into a hole in the 640K-1M real address space where you can bang the registers all you want. Works under DOS or Win9x.
I wonder if there are any equivalent true-Windows programs.
I've made this card exactly for this application: to allow myself to interface to a modern PC without fighting with the PCI bus every time. It is basically a simple ISA-like PCI bridge. You can attach a douther-card on top of it and add whaterver circuit you like. You don't even need a driver if you can go without interrupts.
You really don't have to get into it in that detail unless you're pushing the envelope.
2.5" +- /1", though that isn't generally a problem. For a product, sure.
Must be less than .75", IIRC. They really need to be as short as possible. 2.5" likely *won't* work. Stubs are badness!
Yes, almost always (2.5").
Yes, and the receivers aren't typical CMOS. Many FPGAs have PCI I/O. Either is a bad plan for one-off designs though. As mentioned before in this thread, PLX bridges are the way to go. They have PCIISA brifges that work quite well. There are also PCIISA cards.
Not really true. There are some relatively cheap bus monitors. If one sticks to a known bridge design a scope is all that's needed. I got a PLX-9054 based card running with no more than a scope.
Another reason to go with a known design. ;-)
Not ASICs. ASSPs (Application Specific Standard Products).
Designed to exclude? Are you implying that they intentionally raised the entry bar? That's some charge! There is a reason for complication. It makes life simpler. ;-)
Like most other people, I'd recommend PLX, it's cheap enough especially for simple targets (no bus mastering). You probably won't understand the PCI bus much more after you've done it though- you are insulated from all that if you just follow the reference design.
For drivers, TVicH co0mes to mind, it's shareware, so you get a bother screen until you buy it, but it's reasonably cheap.
Generic cards are hard to come by and probably wouldn't work. There can only be one PCI-to-ISA bridge in a system and that's usually in the chipset (nowdays it is the bridge towards the LPC bus). PLX has a board with the PCI9052 that has an ISA bus slot on it (the PCI 9052RDK-LITE for $299) but that's far from being a universal solution.