seltsame meldung "Input <MeasOverStromSD> is never used"!?

Gast #1945630
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;
Moderator (Firma: Titel) Persönliche Seite #1945660
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...
Gast #1945732
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^^

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren