vhdl - pomocy - co to za blad?? [code included]

mam taki krotki programik:

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

ENTITY dek_zak2 IS PORT (Zegar,Jesli11,Jesli13: IN std_logic; Wyjscie : OUT std_logic); END;

architecture Behavioral of dek_zak2 is signal wartosc : integer range -3 to 12; signal nastepny : integer range -3 to 4; begin

dek_zak2 : process (Zegar,Jesli11,Jesli13)

begin if Zegar'event and Zegar = '1' then if wartosc = 11 then wartosc <= nastepny; nastepny <= 0; else wartosc <= wartosc + 1; end if;

else if rising_edge(Jesli11) then if wartosc < 11 then wartosc <= wartosc + 1; else nastepny <= nastepny + 1; end if; end if;

if rising_edge(Jesli13) then if wartosc > 0 then wartosc <= wartosc - 1; else nastepny <= nastepny - 1; end if; end if; end if;

end process dek_zak2;

end architecture;

Check syntax nie wywala zadnych bledow. Niestety pozniej wyskakuje: ERROR:Xst:827 - D:/Xilinx/mdek_zak2.vhd line 16: Signal wartosc cannot be synthesized, bad synchronous description.

?? O co chodzi?? (srodowisko to webpack xilinxa) Patrzylem na stronie xilinxa ale jakos nie znajduje rozwiazania. Moze ktos pomoc?? Pozdrowienia

5hinka
Reply to
5hinka
Loading thread data ...
5hinka snipped-for-privacy@poczta.wp.pl> napisał:

IMHO chodzi o to że wprowadziłeś reakcje na zbocza kilku różnych sygnałów - prawdopodobnie kompilator nie potrafi upchnąć tego w hardware (szczególnie że rożne zbocza modyfikują ten sam sygnał) co gorsza - nawet jeśli się skompiluje może działać w dość nieprzewidywalny sposób. Powinieneś przeprojektować całość tak aby oczekiwał na zbocze tylko na "Zegar" - pozostałe sygnały powinny jedynie sterować wartościami przypisań. Czyli zmiast trzech sekcji if rising_edge(sygnał)...

użyj tylko jednej

if rising_edge(Zegar) end if

i w jej wnetrzu analizuj wartości sygnałów. Pewnie będziesz musiał użyć paru dodatkowych "zmiennych lokalnych" ale powinno zadziałać. GRG

Reply to
Grzegorz Domagala

Cześć

5hinka napisał:

Taki układ jest raczej ciężko realizowalny fizycznie. Toteż syntezer słusznie pokazuje błąd.

Masz tutaj układ z trzema różnymi sygnałami zegarowymi: Zegar, Jesli11 i Jesli13, oraz rejestr-licznik:"wartosc". Rejestr-licznik: realizowany jest w przerzutnikach typu:"D" Niemożliwe jest taktowanie przerzutnika "D" TRZEMA różnymi sygnałami zegarowymi.

Napisz - możesz na priva - co chcesz zrealizować to mogę Ci pomóc.

Pozdrawiam

Jerzy Gbur

Reply to
Jerzy Gbur

[...]

No to kompilator powinien skonfigurowac stosowny automat asynchroniczny :-)

J.

Reply to
J.F.

J.F. napisał:

Z takiego zapisu raczej nie. Przynajmniej nie ten syntezer od xilinx'a. Co do automatów asynchronicznych to nie polecam ich stosowania, chyba, że do jakichś bardzo prostych zastosowań.

pozdr.

Jerzy Gbur

Reply to
Jerzy Gbur

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.