Level triggered IRQ's are better in general though.
Absolutely no argument here. I was just wondering because I'm working on my first bit of programmable logic design -- a simple UART written in Verilog. Of course, I have no way to realize the chip in hardware yet, but maybe someday...
I personally prefer the level-triggered interrupt for peripheral design because it's actually easier to generate. It's the logical OR or AND of a set of bits in an interrupt pending register. With an edge-triggered interrupt scheme, you still need that interrupt pending register *anyway*. Might as well go with a purely combinatorial solution to generating the final IRQ signal.
When people design a peripheral they want edge-triggered because it saves a flip-flop in their design.
I find this to be untrue in my experience. I still need an interrupt pending register, so if I use an edge-triggered IRQ generator, I require even
more logic.
The IBM PC started with edge-triggered IRQ's (which was a shorted-sited idea) then switched to level-triggered when the PCI bus created. I'm not sure if micro-channel had level triggered IRQ's but it probably did.
If memory serves me correctly, MicroChannel was programmable in this respect.
Also remember that ISA bus was intended to have a unique interrupt line going to a programmable interrupt controller chip, which limited the number of slots to 8 or 15 (depending on the XT or AT motherboard standards). Of course, since some interrupts were used by on-board devices, this could never be realized. Nonetheless, the interrupt controller chip was responsible for generating the interrupt signal to the microprocessor (which I believe is level triggered), since
it served as the system-wide "interrupt pending register", so to speak. It makes sense when viewed in that light.
That being said, thanks for the responses. It has cleared up some confusion, and I should be posting a preliminary data sheet shortly.