Forum: FPGA, VHDL & Co. Signal duty cannot be synthesized, bad synchronous description.


von Diego (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen !
Hab gerade neu gestartet VHDL zu programmieren.
kann mir jemand dabei helfen, diese Fehlermeldung zu beheben?

"Signal duty cannot be synthesized, bad synchronous description. The 
description style you are using to describe a synchronous element 
(register, memory, etc.) is not supported in the current software 
release."

von Hmm (Gast)


Lesenswert?

Register die von zwei verschiedenen Flanken von zwei verschiedenen 
Signalen abhängig sind, werden das Problem sein. Bitte poste den Code 
als Textfile mit vhd-Endung, dann zitiere ich die Stelle gerne.
Du kannst das ganze z.B. als Up-Down counter mit "up" und "down" als 
enable Signal implementieren. Du hast doch "clock" ohnehin schon in der 
sensitivity-Liste (obwohl Du es nicht verwendest).

von Diego (Gast)


Angehängte Dateien:

Lesenswert?

hoffe das ist so okay..

von Hmm (Gast)


Lesenswert?

>hoffe das ist so okay..
Das ist sogar viel besser als das PNG.
1
  process (up, down, clock)
2
  begin
3
    if up = '0' and up'event and duty <= "1011111" then
4
    duty <= (duty + 1);
5
    elsif down = '1' and down'event and duty >= "0000101" then
6
    duty <= (duty - 1);      
7
    end if;
8
  end process;

Du willst hier duty einmal erhöhen, falls up eine steigende Flange hat 
oder erniedrigen wenn down eine fallende Flanke hat.

So ein Flip-Flop mit zwei Takteingängen gibt es (noch und meines Wissens 
von Xilinx) nicht.

Du kannst das aber als einen Up-Down-Counter implementieren. Schaue mal 
unter Edit->Templates (ich denke Du benutzt ISE).

Reicht Dir das als Antwort?

von Diego (Gast)


Lesenswert?

Ja vorläufig reicht mir das , ansonnsten melde ich mich wieder.
Danke dir.

von Diego (Gast)


Lesenswert?

Funktioniert leider immer noch nicht kannst du mir echt mal deine 
mögliche Lösung aufschreiben?

wo finde ich edit->template? beim ISE?

von Hmm (Gast)


Lesenswert?

>wo finde ich edit->template? beim ISE?
Unter edit->template. Ich bin gerade ratlos, was daran nicht zu 
verstehen ist. Du hast doch oben Menüs. Eines heisst Edit. (Ich hoffe 
ich haue nicht gerade völlig daneben.)

von Hmm (Gast)


Lesenswert?

Falls ich mich verhauen habe, suche mal in der Doku nach "Templates". 
Ich habe zuhause kein ISE installiert. Tut mir leid.

von Diego (Gast)


Lesenswert?

Hmm schrieb:
> Du hast doch oben Menüs.

Oke habs gefunden.

von Diego (Gast)


Lesenswert?

>"Templates"

Finde mich in den Templates nicht gut zurecht.

> Du kannst das ganze z.B. als Up-Down counter mit "up" und "down" als
> enable Signal implementieren.

Kannst du mir mal ein Beispiel schreiben wie das genau gemeint ist?

von Hmm (Gast)


Lesenswert?

>Finde mich in den Templates nicht gut zurecht.

Ja. Ich muss auch jedesmal wieder suchen. Ist irgendwie im letzten 
Drittel versteckt.

Also sinngemäß so:
1
process (duty, up, down, clk)
2
begin
3
  if (rising_edge(clk) then
4
    if (up = '1') then
5
      duty <= duty + 1;
6
    else (down = '1') then
7
      duty <= duty - 1;
8
    end if;
9
  end if;
10
end process;

von Duke Scarring (Gast)


Lesenswert?

Hmm schrieb:
> process (duty, up, down, clk)
Die Sensitivityliste ist viel zu lang. Der Prozess ist synchron und 
damit nur von clk abhängig:
1
libray ieee;
2
use ieee.std_logic_1164.all;
3
use ieee.numeric_std.all;
4
5
...
6
signal duty : unsigned(6 downto 0) := (others => '0');
7
...
8
9
process (clk)
10
begin
11
   if rising_edge(clk) then
12
      if    (up = '1')   and (duty <= 95) then
13
         duty <= duty + 1;
14
      elsif (down = '1') and (duty >=  5) then
15
         duty <= duty - 1;
16
      end if;
17
   end if;
18
end process;

Wenn up und down von Tastern kommen, brauchst Du noch eine 
Entprellung und eine Flankenerkennung.
http://www.lothar-miller.de/s9y/archives/3-Tastenentprellung-mit-Schieberegister.html

Duke

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.