[an error occurred while processing this directive]
|
- все работает !!! Запускаю прогу, выводящую данные в порт 200h - тоже все отлично ! Так в чем же дело? У меня есть подозрение, что на порту 80h кто-то сидит и отвечает сигналом /Devsel !
На всякий случай вот мой код (при первой записи в порт лампочка загорается, при второй гаснет и так далее):
SUBDESIGN pci_post_card
(
clk, /rst, /frame, /irdy : input;
ad[15..0], /cbe[3..0] : input;
/devsel, /trdy, led : OUTPUT;
)
variable
/devsel_buf : tri;
/trdy_buf : tri;
ss : machine with states(s0,s1);
port80hwrite_latch : dff;
/frame_latch, /irdy_latch : dff;
led_latch : tffe;
led_bufer : opndrn;
pp : node;
BEGIN
defaults
led_latch.ena = gnd;
end defaults;
ss.clk = clk;
ss.reset = !/rst;
/frame_latch.d = /frame;
/frame_latch.clk = clk;
/frame_latch.clrn = /rst;
/irdy_latch.d = /irdy;
/irdy_latch.clk = clk;
/irdy_latch.clrn = /rst;
led_latch.t = vcc;
led_latch.clk = clk;
led_bufer.in = led_latch.q;
led = led_bufer.out;
if ad[15..0] == h"80" & /cbe[3..0] == h"3" then pp = vcc;
else pp = gnd;
end if;
port80hwrite_latch.d = pp;
port80hwrite_latch.clk = clk;
port80hwrite_latch.clrn = /rst;
/devsel = /devsel_buf.out;
/trdy = /trdy_buf.out;
case ss is
when s0 =>
if port80hwrite_latch.q == vcc & /frame_latch.q == gnd
then ss = s1;
/devsel_buf.in = gnd;
/devsel_buf.oe = vcc;
/trdy_buf.in = gnd;
/trdy_buf.oe = vcc;
else ss = s0;
/devsel_buf.in = vcc;
/devsel_buf.oe = gnd;
/trdy_buf.in = vcc;
/trdy_buf.oe = gnd;
end if;
when s1 =>
if /irdy_latch.q == gnd & /frame_latch.q == vcc then ss = s0;
led_latch.ena = vcc;
/devsel_buf.oe = vcc;
/devsel_buf.in = /irdy;
/trdy_buf.oe = vcc;
/trdy_buf.in = /irdy;
else ss = s1;
/devsel_buf.oe = vcc;
/devsel_buf.in = gnd;
/trdy_buf.oe = vcc;
/trdy_buf.in = gnd;
end if;
%
when s2 =>
/devsel_buf.oe = gnd;
/devsel_buf.in = vcc;
/trdy_buf.oe = gnd;
/trdy_buf.in = vcc;
ss = s0;
%
end case;
END;
Большое спасибо за внимание !
E-mail: info@telesys.ru