Hallo, warum bekomme ich eine Warning wenn ich folgende Signale auf einen internen Bus lege und keine wenn ich die Signale auf I/O Pins lege ? Grüße Daniel WARNING:Xst:2677 - Node <IRQ_REG_1/irqReg_5> of sequential type is unconnected in block <base>. WARNING:Xst:2677 - Node <IRQ_REG_1/irqReg_4> of sequential type is unconnected in block <base>. WARNING:Xst:2677 - Node <IRQ_REG_1/irqReg_3> of sequential type is unconnected in block <base>. WARNING:Xst:2677 - Node <IRQ_REG_1/irqReg_2> of sequential type is unconnected in block <base>. WARNING:Xst:2677 - Node <IRQ_REG_1/irqReg_1> of sequential type is unconnected in block <base>. WARNING:Xst:2677 - Node <IRQ_REG_1/irqReg_0> of sequential type is unconnected in block <base>. entity IRQ_REG is port ( clk : in std_logic; irq_1 : in std_logic; irq_2 : in std_logic; irq_3 : in std_logic; irq_4 : in std_logic; irq_5 : in std_logic; irq_6 : in std_logic; rd_irq : in std_logic; dout : out std_logic_vector (15 downto 0); irq_n : out std_logic); end IRQ_REG; architecture BEHAVIORAL of IRQ_REG is signal irqReg : STD_LOGIC_VECTOR(15 downto 0) := (others => '0'); signal irqState : STD_LOGIC := '1'; begin process(clk) begin if (clk'event and clk='1') then irq_n <= (irq_1 or irq_2 or irq_3 or irq_4 or irq_5 or irq_6); irqReg <= (0=>irq_1, 1=>irq_2, 2=>irq_3, 3=>irq_4, 4=>irq_5, 5=>irq_6, OTHERS=>'0'); end if; end process; dout <= irqReg(15 downto 0) when rd_irq='1' else (others=>'Z'); end BEHAVIORAL;
Probiers mal so:
1 | irqReg <= x"00" & "00" & irq_6 & irq_5 & irq_4 & irq_3 & irq_2 & irq_1; |
So werden Vektoren zusammengehängt (Concatenation). Und dann kann man auch die Bitreihenfolge besser erkennen...
Hallo, danke für den Hinweis. Leider hat sich an meiner Fehlermeldung nichts geändert. Grüße Daniel
Dann ist der Fehler woanders:
> is unconnected in block <base>.
Zeig mal die Instatiierung und die Port Map von IRQ_REG.
Ich habe IRQ_REG in einem schematic und dout auf einem bus zusammen mit PDM. Ich hoffe, dass der Anhang nützlich ist. Grüße Daniel
Irgendwie meint ISE, deine Signale herausoptimieren zu dürfen, weil sie entweder am Anfang oder am Ende nirgends angeschlossen/verwendet sind... Werden die IRQs aus den PDM-Modulen wirklich angesteuert?
Eigentlich wird alles angesteuert. Warum bekomme ich keine Fehlermeldung wenn ich folgendes mache: process(clk) begin if (clk'event and clk='1') then irq_n <= (irq_1 or irq_2 or irq_3 or irq_4 or irq_5 or irq_6); end if; end process; dout <= (x"00" & "00" & "000001") when (rd_irq='1' and irq_1='1') else (x"00" & "00" & "000010") when (rd_irq='1' and irq_2='1') else (x"00" & "00" & "000100") when (rd_irq='1' and irq_3='1') else (x"00" & "00" & "001000") when (rd_irq='1' and irq_4='1') else (x"00" & "00" & "010000") when (rd_irq='1' and irq_5='1') else (x"00" & "00" & "100000") when (rd_irq='1' and irq_6='1') else (others=>'Z'); end BEHAVIORAL; Grüße Daniel
Entschuldigung dout sollte ja so sein: dout <= x"00" & "00" & irq_6 & irq_5 & irq_4 & irq_3 & irq_2 & irq_1 when (rd_irq='1') else (others=>'Z'); gibt trotzdem keine Fehlermeldung !
Du hast sie nicht angeschlossen bzw, so, wie das Takten in Deinem FPGA funktioniert, gibt es keine Abhängigkeit eines Ausgangs von der IRQs. Probiere mal, die Ausgänge (gfs über zusätzliche FFs) an einen Muxer zu legen und dessen Ausgang auf USEr-IO-Pins um das Verlegen zu erzwingen, Parallel kannst Du probieren: architecture ... attribute keep : string; attribute keep of the_signal_name : signal is "true"; ... begin
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.