Synthese verweigert 8Bit Latch

#2465408
Lesenswert?

Hallo zusammen,
ich versuche verzweifelt ein 8Bit Latch hinzubekommen,
verwende ISE 13.3 Webpack und ein CoolRunner2 Demoboard.

Code:
  signal data_from_isa : std_logic_vector (7 downto 0);
  signal data_latch: std_logic_vector (7 downto 0);
  signal cs_sysport_wr: std_logic;
   ...
   ...
   ...
  process (cs_sysport_wr, data_from_isa)
  begin
    if (cs_sysport_wr = '1') then
      data_latch <= data_from_isa;
    end if;
  end process;

  sysport_out <= data_latch;


XST meldet: " Xst:653 - Signal <data_latch> is used but never assigned. 
This sourceless signal will be automatically connected to value 
00000000"

Was meint der Compiler mit "sourceless signal" ?
Im RTL Schematic erkenne ich das er den gedachten Ausgangsport 
sysport_out
tatsächlich auf GND legt. Und in weiterer Folge die Leitung 
cs_sysport_wr mit allem drum und drann wegoptimiert.

Explizit die Datenspeicherung angeben wie ich es in einem Skriptum 
gelesen habe, funktioniert auch nicht, also die selbige Warnung und 
Wegoptimierung von data_latch:

 process (cs_sysport_wr, data_from_isa)
   begin
     if (cs_sysport_wr = '1') then
       data_latch <= data_from_isa;
     else
       data_latch <= data_latch;
     end if;
   end process;

   sysport_out <= data_latch;

Bitte mir auf die Sprünge zu helfen da ich irgenwie schon anstehe.
Danke
Gast #2465423
Lesenswert?

Deine Signale data_from_isa und data_latch müssen auch irgendwie benutzt 
werden...

Z.b. als Ein-/Ausgang im top level entity. Wenn sie nirgendwo 
angeschlossen sind, werden sie verworfen.

Sebastian
#2465460
Lesenswert?

Hi, Danke für die schnelle Antworten.

Es ist ein einziges Modul, Takt habe ich keinen.
Auch wenn ich aus dem transparenten Latch ein flankengesteuertes mache
macht der Compiler das gleiche.

"data_from_isa" wird vom I/O Port "isa_sd" beschrieben welcher in der 
Entity vom Modul steht.

  isa_sd : inout std_logic_vector (7 downto 0);
  ...
  ...
  data_from_isa <= isa_sd;

"data_latch" ist der Wert den er selber speichern soll, da habe ich 
keinen
initialen Wert dafür...
Gast #2465582
Lesenswert?

Habs mal ausprobiert, ISE 13.3 meckert zwar:
>Found 8-bit latch for signal <data_latch>. Latches may be generated from
>incomplete case or if statements. We do not recommend the use of latches
>in FPGA/CPLD designs, as they may lead to timing problems.
>Unit <trial_top> synthesized.

Aber es optimiert bei diesem Code nichts weg:
1
library IEEE;
2
use IEEE.STD_LOGIC_1164.ALL;
3

4
entity trial_top is
5
port (
6
        data_from_isa : in  std_logic_vector (7 downto 0);
7
  cs_sysport_wr : in  std_logic;
8
  sysport_out   : out std_logic_vector (7 downto 0)
9
);
10
end trial_top;
11

12
architecture Behavioral of trial_top is
13

14
 signal data_latch: std_logic_vector (7 downto 0);
15
 
16
begin
17
  
18
  process (cs_sysport_wr, data_from_isa)
19
  begin
20
    if (cs_sysport_wr = '1') then
21
      data_latch <= data_from_isa;
22
    end if;
23
  end process;
24

25
  sysport_out <= data_latch;
26

27
end Behavioral;
#2465751
Lesenswert?

Dank für die Mühe.
Ich habs geschafft das das 8Bit Latch generiert wird, mit der üblichen 
Warnungsmeldung. Dazu hab ich die Hälfte Code rundherum gelöscht, wo 
genau der Knackpunkt ist muss ich noch rausfinden. Lösung ist es keine, 
der gelöschte Code muss in seiner Funktion wieder zurück.

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