EmbeddedRelated.com
Forums

Using PLD or FPGA for ISA bus board with DMA

Started by Unknown April 23, 2004
I'm planning to build an ADC board with onboard buffer with DMA transfer
from onboard buffer to computer's memory.
Where can I find an ISA bus board design example with DMA functionality
using PLD or FPGA ?
What would be the max paractical speed to transfer data from ISA bus to PC's
memory?


ISA wrote:
> I'm planning to build an ADC board with onboard buffer with DMA transfer > from onboard buffer to computer's memory. > Where can I find an ISA bus board design example with DMA functionality > using PLD or FPGA ? > What would be the max paractical speed to transfer data from ISA bus to PC's > memory?
You just crossposted to a zillion groups a question about PCI bus interfacing, and now you're asking about ISA DMA. First of all, you don't need a PLD or an FPGA to do simple DMA on an ISA bus. A few gates is all it takes. I've done it a couple of times. Get a copy of "Interfacing to the IBM Personal Computer" by Eggebrecht. Second of all, decide what you want to do, post to one group at a time, and use a real email address. The people here on comp.arch.embedded are sharp, knowledgeable and helpful. They are also busy. Don't waste our time and we will be more than willing to help you.
<ISA> wrote in message
news:40895aaf$0$20662$afc38c87@news.optusnet.com.au...
> I'm planning to build an ADC board with onboard buffer with DMA transfer > from onboard buffer to computer's memory. > Where can I find an ISA bus board design example with DMA functionality > using PLD or FPGA ? > What would be the max paractical speed to transfer data from ISA bus to
PC's
> memory? > >
<Many crossposted groups deleted> Here's one for an IDE interface. http://www.smsc.com/main/tools/usb/ideadapter.pdf I don't know if the PAL design is available elsewhere on the system. Here's an article containing a reasonable description of how DMA works on the ISA bus. http://www.techfest.com/hardware/bus/isa_sokos.htm You might want to consider non DMA approaches such as: 1) Interrupt driven transfer - maybe your data rate is too high? 2) Dual port memory interface - in effect make your buffer part of the PC's memory space Maximum transfer rate is likely to be limited by the ISA bus speed, depends on system but theoretical limit is 8 Mbytes/second (each 16 bit transfer requires 2 8MHz clock cycles). If you have DRAM on same bus, don't forget to allow for refresh cycles. USB2.0 and 100baseT are faster. Cheers, Alf. alfkatz@remove.the.obvious.ieee.org --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.667 / Virus Database: 429 - Release Date: 23/04/2004
In article <40895aaf$0$20662$afc38c87@news.optusnet.com.au>, 
<ISA> says...
> I'm planning to build an ADC board with onboard buffer with DMA transfer > from onboard buffer to computer's memory. > Where can I find an ISA bus board design example with DMA functionality > using PLD or FPGA ?
ISA is trivial. A simple web search should give you all the information you need. What sort of DMA do you want? ...classic ISA DMA, busmaster? Both are possible, but both rather rot. If you really need DMA support, I'd take the plunge and go PCI. It's not all *that* hard, if you use the bridges and drivers that are available (of course you didn't mention you budget either).
> What would be the max paractical speed to transfer data from ISA bus to PC's > memory?
With a modern PC, I wouldn't expect more than 500kB/s, *maybe* twice that. ISA sucks rocks and no one cares about giving it a hand. -- Keith
Unbeliever wrote:
> > You might want to consider non DMA approaches such as: > 1) Interrupt driven transfer - maybe your data rate is too high? > 2) Dual port memory interface - in effect make your buffer part of the > PC's memory space > > Maximum transfer rate is likely to be limited by the ISA bus speed, depends > on system but theoretical limit is 8 Mbytes/second (each 16 bit transfer > requires 2 8MHz clock cycles). If you have DRAM on same bus, don't forget > to allow for refresh cycles. USB2.0 and 100baseT are faster.
The dual port memory might do very well for high speed data transfers. Memory to memory block transfers are pretty fast and since the processor runs some 100 times as fast as the ISA bus, the CPU will not limit the speed of the transfers. Although the transfer time may take up more of the CPU bandwidth. IIRC, any IO device can be used with DMA if you just provide the simple handshaking on the DACK and DRQ lines and decode AEN correctly.. -- Rick "rickman" Collins rick.collins@XYarius.com Ignore the reply address. To email me use the above address with the XY removed. Arius - A Signal Processing Solutions Company Specializing in DSP and FPGA design URL http://www.arius.com 4 King Ave 301-682-7772 Voice Frederick, MD 21701-3110 301-682-7666 FAX
<ISA> wrote in message news:<40895aaf$0$20662$afc38c87@news.optusnet.com.au>...
> I'm planning to build an ADC board with onboard buffer with DMA transfer > from onboard buffer to computer's memory. > Where can I find an ISA bus board design example with DMA functionality > using PLD or FPGA ? > What would be the max paractical speed to transfer data from ISA bus to PC's > memory?
ISA was never designed for DMA, unless you consider the 8-bit 8237 on the motherboard. Both ISA and the 8237 are very much obsolete, and even if present on current chipsets, they have probably not been verified for correct operation for generations (chip generations, that is). Unless entirely impossible, I'd suggest designing a PCI board; there are many interface chips available, and most of them include some sort of DMA. Best of all, the PCI bus was designed to use DMA as its basic data-transfer method (it's not called DMA; it's called Master transaction in PCI-speak). Designing a board around a PCI interface chip not too bad; the chip makers have lots of guides, app notes and possibly even evaluation cards available; PCI is doable using 2 signal and 2 power planes - even (if you are very careful) only 2 signal planes. OTOH, you can't wire-wrap or protoype one very easily. If going the PCI route, I'd recommend learning at least the PCI basics, since it's very different from ISA, or any single-processor async bus (which ISA basically is).
Assaf Sarfati wrote:

> ISA was never designed for DMA, unless you consider the 8-bit 8237 on the > motherboard. Both ISA and the 8237 are very much obsolete, and even if > present on current chipsets, they have probably not been verified for > correct operation for generations (chip generations, that is).
I remember the Adaptec 1542 (busmaster DMA on ISA) to be problematic with PCI chipsets. Also, DMA over ISA is limited to 16 megabytes of reachable memory. Programmed I/O over dual ported RAM (DMA to memory on the card, that is) might be the easy way out, and probably fast enough. Thomas
In article <44b0ca4e.0404242059.3b82c9e8@posting.google.com>, 
assaf_sarfati@yahoo.com says...
> <ISA> wrote in message news:<40895aaf$0$20662$afc38c87@news.optusnet.com.au>... > > I'm planning to build an ADC board with onboard buffer with DMA transfer > > from onboard buffer to computer's memory. > > Where can I find an ISA bus board design example with DMA functionality > > using PLD or FPGA ? > > What would be the max paractical speed to transfer data from ISA bus to PC's > > memory? > > ISA was never designed for DMA, unless you consider the 8-bit 8237 on the > motherboard. Both ISA and the 8237 are very much obsolete, and even if > present on current chipsets, they have probably not been verified for > correct operation for generations (chip generations, that is).
THere are three forms of ISA DMA. The 8237 DMA registers only address one. ISA can also busmaster (HOLD/ HOLDA/, IIRC). IBM had a series of modem/sound cards that did ISA busmastering. It worked rather well, though the drivers had to copy into buffers below the 16MB line.
> Unless entirely impossible, I'd suggest designing a PCI board; there are > many interface chips available, and most of them include some sort of DMA. > Best of all, the PCI bus was designed to use DMA as its basic data-transfer > method (it's not called DMA; it's called Master transaction in PCI-speak).
I wouldn't disagree with this assessment. ISA is dead, and may it stay dead. ;-)
> Designing a board around a PCI interface chip not too bad; the chip makers > have lots of guides, app notes and possibly even evaluation cards available; > PCI is doable using 2 signal and 2 power planes - even (if you are very > careful) only 2 signal planes. OTOH, you can't wire-wrap or protoype one > very easily.
You won't meet spec without the internal planes. It might work, but might not. I'd never go below 2S2P for a PCI card, which throws it out of the range of the hobbyist.
> > If going the PCI route, I'd recommend learning at least the PCI basics, > since it's very different from ISA, or any single-processor async bus > (which ISA basically is).
-- Keith
KR Williams <krw@att.biz> wrote in message news:<MPG.1af5a31ef66e903698978f@news1.news.adelphia.net>...
> In article <44b0ca4e.0404242059.3b82c9e8@posting.google.com>, > assaf_sarfati@yahoo.com says... > > <ISA> wrote in message news:<40895aaf$0$20662$afc38c87@news.optusnet.com.au>... > > > I'm planning to build an ADC board with onboard buffer with DMA transfer > > > from onboard buffer to computer's memory. > > > Where can I find an ISA bus board design example with DMA functionality > > > using PLD or FPGA ? > > > What would be the max paractical speed to transfer data from ISA bus to PC's > > > memory? > > > > ISA was never designed for DMA, unless you consider the 8-bit 8237 on the > > motherboard. Both ISA and the 8237 are very much obsolete, and even if > > present on current chipsets, they have probably not been verified for > > correct operation for generations (chip generations, that is). > > THere are three forms of ISA DMA. The 8237 DMA registers only > address one. ISA can also busmaster (HOLD/ HOLDA/, IIRC). IBM > had a series of modem/sound cards that did ISA busmastering. It > worked rather well, though the drivers had to copy into buffers > below the 16MB line.
Actually, you had 2 x 8237 chips: one was wired for 8-bit, one for 16-bit (even addresses) transfers. The two chips were cascaded (don't remember which was master and which slave); one 8-bit channel was used for DRAM refresh and one for floppy. Since the 8237 has only 16-bit address, there was an external 8-bit register to get 24-bit address (up to 16 MB, can't cross 64-KB physical address boundary in one DMA transaction). You could also program a 8237 channel to be bus arbiter only, using your own hardware to create bus cycles. However, none of this was widely used, and even when there was no PCI, many ISA DMA cards wouldn't work in all "PC Compatible" systems. IIRC, most of these high-performance cards has a default programmed-I/O mode (for example: basic ATA-controller PIO mode), which was the one used by most users. I am not at all sure that modern chipsets still support all these modes. After all, who in his right mind will use an ISA bus-mastering network or tape interface card TODAY? why waste verification CAD cycles to test these modes? I am not even sure if modern OSes still read/write floppy using DMA, and using DMA to refresh DRAM is dead as the Dodo.
> > > Unless entirely impossible, I'd suggest designing a PCI board; there are > > many interface chips available, and most of them include some sort of DMA. > > Best of all, the PCI bus was designed to use DMA as its basic data-transfer > > method (it's not called DMA; it's called Master transaction in PCI-speak). > > I wouldn't disagree with this assessment. ISA is dead, and may > it stay dead. ;-) > > > Designing a board around a PCI interface chip not too bad; the chip makers > > have lots of guides, app notes and possibly even evaluation cards available; > > PCI is doable using 2 signal and 2 power planes - even (if you are very > > careful) only 2 signal planes. OTOH, you can't wire-wrap or protoype one > > very easily. > > You won't meet spec without the internal planes. It might work, > but might not. I'd never go below 2S2P for a PCI card, which > throws it out of the range of the hobbyist.
I was assuming a hobbyist card, so he wouldn't care about failure rate in a 10,000-unit production run; one unit will most probably work - most PCs leave a reasonable noise-margin error. You may also be able to get a prototyping board with the PCI interface ready for use and a prototyping area in the local-bus side.
> > > > If going the PCI route, I'd recommend learning at least the PCI basics, > > since it's very different from ISA, or any single-processor async bus > > (which ISA basically is).