mikrocontroller.net

Forum: FPGA, VHDL & Co. Synchronous prbblem in VHDL


Autor: Italo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
i have a problem with this code... I obtain "Signal rstemp cannot be
synthesized, bad synchronous description."

thanks..

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity contatore is
port (
SET: in STD_LOGIC;
RESET: in STD_LOGIC;
RST: out STD_LOGIC;
LOAD, DIR: in STD_LOGIC;
DIN: in STD_LOGIC_VECTOR(3 downto 0);
TEST: out STD_LOGIC_VECTOR(3 downto 0));
end contatore;

architecture Behavioral of contatore is
SIGNAL next_state  : std_logic_vector (3 downto 0);
begin

process(SET, RESET, LOAD, DIN, DIR, next_state)
variable count  : std_logic_vector (3 downto 0);
variable Temp  : std_logic_vector (4 downto 0);
variable rstemp: STD_LOGIC;
begin

if (DIR='1') then
rstemp:='0';      -- conteggio up
case count is
  when "1001" => next_state<="0000";
  when others   => next_state<=count+1;
end case;
end if;

if (DIR='0') then      -- conteggio down
rstemp:='0';
case count is
  when "0000" => next_state<="1001";
  when others   => next_state<=count-1;
end case;
end if;


  if ((RESET and DIR)='1') then    --  Il reset ha priorità massima
    count:="0000";
  elsif (RESET='1' and DIR='0')  then
    count:="1001";
  elsif (Load='1') then        -- il load ha priorità secondaria
  count:=DIN;
  elsif (SET='1' and SET'event)  then   -- sensibile al fronte di
salita di SET

    count:=next_state;          -- conteggia

  end if;

TEST<=count;

Temp:= next_state & DIR;

  if (SET='1' and SET'event)  then
     case Temp is
     when "00001" => rstemp:='1';
     when  "10010" => rstemp:='1';
     when  others  => rstemp:='0';
     end case;
  end if;
RST<=rstemp;
end process;

end Behavioral;

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

you have to much "If" statements, write all in one:

IF () ..
ELSIF () ..
ELSIF () ..
ELSIF () ..
 .
 .
 .
ELSE  ..
END IF;

Autor: Italo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
don't work... the result is the same.....

who have another idea?

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
You work without a clock, why?
your programming style isn't so good.

Autor: italoc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
this is asincronous contuer i don't need a clock...

who can help me???

Autor: Henrik (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hello Daniele,

of course does it need a clock, even it is an asyc. counter!
The only difference between the code I wrote for you and this is, that
you renamed "clk" to "set" and insert "rstemp:='0'" in the
Lookup-tables.
You programmed, that rstemp should be "0" for both states of
"DIR".
This is opposite too:
"...
     case Temp is
     when "00001" => rstemp:='1';
     when  "10010" => rstemp:='1';
     when  others  => rstemp:='0';
     end case;"

Look what "Temp" is: It is a combinition of "nextstate" and
"DIR".
The last bit of Temp is "DIR"!
So the error is that, what the compiler says: "bad describtion",
because nobody knows what you want (me too).

Henrik

Autor: Italo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok thanks...

now working ok....

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.