Forum: FPGA, VHDL & Co. seltsame meldung "Input <MeasOverStromSD> is never used"!?


von tom (Gast)


Lesenswert?

hallo zusammen,

ich will mit dem code hier einen latch realisieren. Ich möchte damit 
machen, dass wenn (|MeasStrom| >  MeasOverStromSD) dann Output 
(OverStromSD_o = '1'), und FPGA muss reset werden, damit wieder Output 
(OverStromSD_o = '0')!

Aber Xilinx-ISE meldet "MeasStrom, Input <MeasOverStromSD> is never 
used" und sehe ich bei "RTL-schematic" :  OverStromSD_o = '1' (VCC) 
permanent!

Was habe ich falsch gemacht?

Vielen Dank im vorraus!

Tom
1
entity strom_ueberwach is
2
PORT
3
 (sys_clk         : IN STD_LOGIC;
4
  MeasStrom       : IN STD_LOGIC_VECTOR(15 DOWNTO 0);
5
  MeasOverStromSD   : IN STD_LOGIC_VECTOR(15 DOWNTO 0);
6
  OverStromSD_o     : OUT STD_LOGIC);
7
8
END strom_ueberwach;
9
10
architecture Behavioral of strom_ueberwach is
11
12
begin
13
14
15
      StromUeberWach_Pro: process
16
        begin
17
          wait until rising_edge(sys_clk);             
18
        --MeasOverStromSD:---------------------------------------------------------------------------
19
          if (((signed(MeasOverStromSD) < signed(MeasStrom)) OR 
20
            (-signed(MeasOverStromSD) > signed(MeasStrom)))) then          
21
              OverStromSD_o <= '1'; --latch! --> muss reset FPGA!
22
           end if;       
23
      end process StromUeberWach_Pro;
24
          
25
          
26
end Behavioral;

von pinky (Gast)


Lesenswert?

da du nirgends OverStromSD_o auf etwas anderes als 1 setzt optimiert das 
ISE den ganzen kode korrekterweise einfach weg und setzt OverStromSD_o 
konstant auf 1.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

tom schrieb:
> OverStromSD_o <= '1'; --latch! --> muss reset FPGA!
Du solltest das Signal auch mal auf '0' setzen...
So wie es jetzt aussieht, wird statt des Signals einf eine '1' erzeugt.

Probier mal, ob die Synthese das kapiert:
1
PORT
2
 (sys_clk         : IN STD_LOGIC;
3
  MeasStrom       : IN STD_LOGIC_VECTOR(15 DOWNTO 0);
4
  MeasOverStromSD   : IN STD_LOGIC_VECTOR(15 DOWNTO 0);
5
  OverStromSD_o     : OUT STD_LOGIC := '0');

Wenn nicht, solltest du ein Hilfsignal einführen und das mit '0' 
initialisieren:
1
architecture Behavioral of strom_ueberwach is
2
signal oc : std_logic :='0';  -- Defaultwert
3
begin
4
      process begin
5
          wait until rising_edge(sys_clk);             
6
          if (((signed(MeasOverStromSD) < signed(MeasStrom)) OR 
7
              (-signed(MeasOverStromSD) > signed(MeasStrom)))) then          
8
              oc <= '1';       --latch! --> muss reset FPGA! <<-- ist das eine gute Idee????
9
          end if;       
10
      end process;
11
          
12
      OverStromSD_o <= oc;
13
          
14
end Behavioral;


> ich will mit dem code hier einen latch realisieren.
Das ist übrigens kein Latch, sondern ein normales getaktetes Register.
Ein Latch sähe anders aus: es hätte keinen Takt...

von tom (Gast)


Lesenswert?

vielen danke an beide!^^

Lothar Miller schrieb:
> Du solltest das Signal auch mal auf '0' setzen..

"overstrom" soll nicht auftreten, deswegen möchte ich FPGA zurückseten.

Lothar Miller schrieb:
> Wenn nicht, solltest du ein Hilfsignal einführen und das mit '0'
> initialisieren:

beide variante hat er akzeptiert!^^


Lothar Miller schrieb:
> Das ist übrigens kein Latch, sondern ein normales getaktetes Register.
> Ein Latch sähe anders aus: es hätte keinen Takt...

vielen dank!^^

ciao, schönen abend wünsche euch^^

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
Noch kein Account? Hier anmelden.