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
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
Also an dem Code liegts nicht. Der geht einwandfrei. Da muss davor irgendwo das data_from_isa dauerhaft auf 0x00 liegen. Latches im CPLD/FPGA sind böse. Gibts denn keinen Takt?
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...
Christian R. schrieb: > Also an dem Code liegts nicht. Der geht einwandfrei. Da muss davor > irgendwo das data_from_isa dauerhaft auf 0x00 liegen. Latches im > CPLD/FPGA sind böse. Gibts denn keinen Takt? Danke für den Hinweis, im RTL Schematic finde ich tatsächlich kein "data_from_isa" mehr ......
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; |
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.
Robert D. schrieb: > der gelöschte Code muss in seiner Funktion wieder zurück. Dann steckt das Problem vermutlich in diesem Code (es könnte ja sein, dass das data_latch niemals aktiv wird). Zeig den kompletten Code doch mal. Sonst kann man stat Raten nur Raten...
Kannst du das latch-Verhalten nicht ersetzen durch ein synchrones Registern?
Hallo, hab den Fehler gefunden. Das Signal "cs_sysport_wr", welches das Latch ansteuert, hab ich in einem Process verwurschtelt so dass es einen konstanten Wert hatte.
Robert D. schrieb: > Hallo, hab den Fehler gefunden. Gut so. > Das Signal "cs_sysport_wr" ... einen konstanten Wert hatte. Das war mein Verdacht. Blöderweise habe ich den Namen falsch kopiert, denn dieses Signal meinte ich eigentlich statt des /data_latch/: >>> es könnte ja sein, dass das data_latch niemals aktiv wird
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.