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."
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).
>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?
Ja vorläufig reicht mir das , ansonnsten melde ich mich wieder. Danke dir.
Funktioniert leider immer noch nicht kannst du mir echt mal deine mögliche Lösung aufschreiben? wo finde ich edit->template? beim ISE?
>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.)
Falls ich mich verhauen habe, suche mal in der Doku nach "Templates". Ich habe zuhause kein ISE installiert. Tut mir leid.
>"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?
>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; |
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.