RTV forum PL | NewsGroups PL

ISE 8.1: Problemy z symulacją prostego licznika VHDL - brak zmiennych wyników?

ISE8.1 symulacja

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - ISE 8.1: Problemy z symulacją prostego licznika VHDL - brak zmiennych wyników?

Artur
Guest

Sun Aug 26, 2007 4:33 pm   



To może tutaj mi ktoś podpowie bo widzę, że większy ruch niz na
pl.comp.programming,
a temat tak po środku.
Tworze prosty element w VHDL-u,o taki:

ENTITY cnt IS
PORT
(
clock: IN STD_LOGIC;
sload: IN STD_LOGIC;
data: IN integer RANGE 0 TO 31;
result: OUT integer RANGE 0 TO 31
);
END cnt;

ARCHITECTURE rtl OF cnt IS
SIGNAL result_reg : integer RANGE 0 TO 31;
BEGIN
PROCESS (clock)
BEGIN
IF (clock'event AND clock = '1') THEN
IF (sload = '1') THEN
result_reg <= data;
ELSE
result_reg <= result_reg + 1;
END IF;
END IF;
END PROCESS;

result <= result_reg;
END rtl;

Tworze "Schematic Symbol", wrzucam ten element jako jedyny na schemat,
podłączam I/O markery, przełączam na "Bechavioral Simulation", tworze nowe
źródło "Test Bench WaveForm", wybieram zegar dla odpowiedniego wejścia i
otrzymuję na wszystkich wyjściach linie proste...
Jak wybiore jakiś licznik z tych gotowych z biblioteki symulacja działa.
Co robie źle?
--
Artur

Mariusz Hajduk
Guest

Sun Aug 26, 2007 6:45 pm   



Czy sprawdziłeś wartość sygnału sload w testbench'u ?
Jezeli sload=1 , to nie ma się czemu dziwić. Jeżeli sload=0 , to
nie wiem. A tak nawiasem mówiąc , to symulacja w ISE jest do d... !
Cholery można z tym dostać. Fajnie było w Foundation.

MH


--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl

Mariusz Hajduk
Guest

Sun Aug 26, 2007 11:55 pm   



Problem nie dawał mi spokoju , więc spróbowałem symulację zgodnie z Twoim
żródłem (ISE7.1). Efekt ten sam. Popełniasz następujący błąd przy symulacji
(kod żródłowy jest OK) :

1) Na początku symulator nie zna wartości rejestru result_reg , w związku z
czym nie wiadomo jaki może być wynik inkrementacji tego rejestru.

2) Rozwiązanie bardzo proste (modyfikacja testbench'a) :

- ustaw wejście data na 0 (może być dowolna liczba), następnie sload na 1 ,
zpowrotem sload na 0.

Co to daje ? Określasz konkretnie zawartość rejestru result_reg , a potem
wszystko działa normalnie.

Pozdr. ,

MH



--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl

[g.d.]
Guest

Mon Aug 27, 2007 2:42 pm   



Artur <asdfg2@poczta.onet.pl> napisał(a):

Quote:
To może tutaj mi ktoś podpowie bo widzę, że większy ruch niz na
pl.comp.programming,
a temat tak po środku.
Tworze prosty element w VHDL-u,o taki:

ENTITY cnt IS
PORT
(
clock: IN STD_LOGIC;
sload: IN STD_LOGIC;
data: IN integer RANGE 0 TO 31;
result: OUT integer RANGE 0 TO 31
);
END cnt;

ARCHITECTURE rtl OF cnt IS
SIGNAL result_reg : integer RANGE 0 TO 31;
BEGIN
PROCESS (clock)
BEGIN
IF (clock'event AND clock = '1') THEN
IF (sload = '1') THEN
result_reg <= data;
ELSE
result_reg <= result_reg + 1;
END IF;
END IF;
END PROCESS;

result <= result_reg;
END rtl;

Tworze "Schematic Symbol", wrzucam ten element jako jedyny na schemat,
podłączam I/O markery, przełączam na "Bechavioral Simulation", tworze nowe
źródło "Test Bench WaveForm", wybieram zegar dla odpowiedniego wejścia i
otrzymuję na wszystkich wyjściach linie proste...
Jak wybiore jakiś licznik z tych gotowych z biblioteki symulacja działa.
Co robie źle?

Zakladajac ze wartosc sload nie jest równa '1' to licznik powinien sie
krecic, przynajmniej przez pierwsze 32 okresy zegara, zanim nie zostanie
przekroczona maksymalna wartosc zadeklarowana dla rejestru licznika.

Moze spróbuj zmienic typ sygnalu rejestru i portów danych na
std_logic_vector(4 downto 0)

--
Pozdrawiam,
[g.d.]

--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/

Mariusz Hajduk
Guest

Mon Aug 27, 2007 5:56 pm   



Quote:
Artur <asdfg2@poczta.onet.pl> napisał(a):

To może tutaj mi ktoś podpowie bo widzę, że większy ruch niz na
pl.comp.programming,
a temat tak po środku.
Tworze prosty element w VHDL-u,o taki:

ENTITY cnt IS
 PORT
 (
  clock:   IN STD_LOGIC;
  sload:   IN STD_LOGIC;
  data:   IN integer RANGE 0 TO 31;
  result:  OUT integer RANGE 0 TO 31
 );
END cnt;

ARCHITECTURE rtl OF cnt IS
 SIGNAL result_reg : integer RANGE 0 TO 31;
BEGIN
 PROCESS (clock)
 BEGIN
  IF (clock'event AND clock = '1') THEN
   IF (sload = '1') THEN
    result_reg <= data;
   ELSE
    result_reg <= result_reg + 1;
   END IF;
  END IF;
 END PROCESS;

 result <= result_reg;
END rtl;

Tworze "Schematic Symbol", wrzucam ten element jako jedyny na schemat,
podłączam I/O markery, przełączam na "Bechavioral Simulation", tworze nowe
źródło "Test Bench WaveForm", wybieram zegar dla odpowiedniego wejścia i
otrzymuję na wszystkich wyjściach linie proste...
Jak wybiore jakiś licznik z tych gotowych z biblioteki symulacja działa.
Co robie źle?

Zakladajac ze wartosc sload nie jest równa '1' to licznik powinien sie
krecic, przynajmniej przez pierwsze 32 okresy zegara, zanim nie zostanie
przekroczona maksymalna wartosc zadeklarowana dla rejestru licznika.

Eee tam. Guzik prawda. Dlaczego przez pierwsze 32 okresy ??
Skoro jest to licznik 32-bitowy , to do jego "przekręcenia" potrzeba
(4294967296 - data) okresów. Mało tego. Powinien kręcić się dalej od zera ,
niezależnie od wartości podanej na port "data".


Quote:

Moze spróbuj zmienic typ sygnalu rejestru i portów danych na
std_logic_vector(4 downto 0)


Cooo ??? Borygo piłeś ?
Ogólna zasada : jak się na czymś nie znam , nie udzielam w danym temacie porad.

MH

P.S. Rozwiązanie (przetestowane) jest w moim poprzednim poście.

--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl

[g.d.]
Guest

Tue Aug 28, 2007 2:41 pm   



Mariusz Hajduk <logison@o2.pl> napisał(a):

Quote:
Eee tam. Guzik prawda. Dlaczego przez pierwsze 32 okresy ??

Ponieważ sygnał sygnał przechowujacy stan licznika to integer z zakresu od 0
do 31.

Quote:
Skoro jest to licznik 32-bitowy , to do jego "przekręcenia" potrzeba

To nie jest licznik 32 bitowy.

Quote:
Cooo ??? Borygo piłeś ?

Nie, dzieki. Ale wypij moje zdrowie ;-)

Quote:
Ogólna zasada : jak się na czymś nie znam , nie udzielam w danym temacie
porad.


No i tutaj sie z Tobą w pełni zgadzam.

--
pozdrawiam,
[g.d.]

--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/

elektroda NewsGroups Forum Index - Elektronika Polska - ISE 8.1: Problemy z symulacją prostego licznika VHDL - brak zmiennych wyników?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map