Simple 8253



This is what I have in mind:

1. Counter counts to zero, issues an IRQ, and reloads.
2. The CPU gets the IRQ and writes the new 'reload' value,
which should remove the IRQ.


signal counter, reload : STD_LOGIC_VECTOR (15 downto 0);


if falling_edge(clock) then
if counter = 0 then
counter <= reload;
irq <= '1';
else
counter <= counter - 1;
-- irq <= '0'; -- AUTO
EOI
end if;
end if;


if rising_edge(write) then
reload <= dbus; -- reload
value
irq <= '0'; --
acknowledge IRQ, EOI
end if;


If I use one process, webpack is giving me an error:
Multi-source in Unit <test> on signal <irq>; this signal is connected
to multiple drivers


If I use two processes: Signal irq cannot be synthesized.
Something like, irq is bound to two clocks.


AUTO EOI works (in simulation, dont even have the chip yet),
but the clock can be as low as 30Hz, which is too slow.


How should I ACK an IRQ with the CPU?
.



Relevant Pages

  • Re: Simple 8253 (beginner)
    ... Counter counts to zero, issues an IRQ, and reloads. ... irq is bound to two clocks. ... How should I ACK an IRQ with the CPU? ...
    (comp.lang.vhdl)
  • Re: Simple 8253
    ... reload <= dbus; ... elsif falling_edgethen ... counter <= reload; ... irq <= '1'; ...
    (comp.arch.fpga)
  • Simple 8253 (beginner)
    ... Counter counts to zero, issues an IRQ, and reloads. ... The CPU gets the IRQ and writes the new 'reload' value, ... irq is bound to two clocks. ... How should I ACK an IRQ with the CPU? ...
    (comp.lang.vhdl)
  • Re: W9xNT MCA Adapters - SPOCK-206
    ... Reload the zip. ... of your miniport driver. ... It should, be sure to use the recommended settings, IRQ 15 and I/O 330-333. ...
    (comp.sys.ibm.ps2.hardware)
  • IRQ handling difference between i386 and x86_64
    ... It seems that IRQ handling is somehow different between i386 and x86_64. ... In my Dell PowerEdge 1950 is it possible to enable interrupts spreading over all CPUs. ... Booting it with x86_64 leads to situation, when all interrupts goes only to the first cpu matching a smp_affinity mask. ... PCI: Setting latency timer of device 0000:00:02.0 to 64 ...
    (Linux-Kernel)