I have a CPLD design using IRQ signals connected to the PC/104 (ISA) bus of a single-board computer (SBC). The SBC has pullups on these IRQs and an interrupt is detected as a low-to-high transition.
When interrupts are disabled, I want to tristate all of these signals.
When interrupts are enabled, I want to be able to prep one of the IRQs by driving it low and then on activation, either drive it high or tristate it (both ways are allowed). The ISR on the host will clear the interrupt.
Currently, I have five IRQ lines (3-7) grouped as a std_logic_vector. At the top, they're set to Z. Then in the appropriate process, the configured IRQ is set to '0' and then activated by setting to 'Z' or '1'.
IRQ : out std_logic_vector (7 downto 3); -- Interrupt ReQuests
...
IRQ <= (others => 'Z'); -- there are pullups on system bus
...
IRQ(5) <= '0'; -- get ready to assert
...
IRQ(5) <= 'Z'; -- assert interrupt
Should this be possible? The compiler barfs all over this with "Found combinational loop of 1 nodes".
I'm fairly new at this, but I'd appreciate any feedback.
When interrupts are disabled, I want to tristate all of these signals.
When interrupts are enabled, I want to be able to prep one of the IRQs by driving it low and then on activation, either drive it high or tristate it (both ways are allowed). The ISR on the host will clear the interrupt.
Currently, I have five IRQ lines (3-7) grouped as a std_logic_vector. At the top, they're set to Z. Then in the appropriate process, the configured IRQ is set to '0' and then activated by setting to 'Z' or '1'.
IRQ : out std_logic_vector (7 downto 3); -- Interrupt ReQuests
...
IRQ <= (others => 'Z'); -- there are pullups on system bus
...
IRQ(5) <= '0'; -- get ready to assert
...
IRQ(5) <= 'Z'; -- assert interrupt
Should this be possible? The compiler barfs all over this with "Found combinational loop of 1 nodes".
I'm fairly new at this, but I'd appreciate any feedback.