VHDL - pomocy



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "Quazar" <grzegorz.swiecanski_ANTYSPAM__at_nospam_poczta.fm>
Subject: VHDL - pomocy
Date: Sun, 15 Jan 2006 22:13:06 +0100


Witam...

Jestem mocno początkujący i mam mały problem...
próbuje zamodelowac licznik rewersyjny asynchroniczny,
tzn. mam 2 wejścia pod które mam wpięte 2 przyciski. Jednym przyciskiem chce
inkrementowac liczni a drugim dekrementować.

Nie mam problemu z 1 wejściem...

dodając drugi wyrzuca błąd że operuje na tych samych danych - co oczywiście
jest prawda...

Problem napewno należy do gatunku trywialnych, ale niestety pomimo że google
moim przyjacielem jest nie mogę tego ugryźć...

Pomożecie ?


Quazar



Poprzedni Następny
Wiadomość
Spis treści
Date: Sun, 15 Jan 2006 22:50:14 +0100
From: =?ISO-8859-2?Q?Pawe=B3_Cern?= <name_at_nospam_surname.pl>
Subject: Re: VHDL - pomocy


Jestem mocno początkujący i mam mały problem...
próbuje zamodelowac licznik rewersyjny asynchroniczny,
tzn. mam 2 wejścia pod które mam wpięte 2 przyciski. Jednym przyciskiem chce
inkrementowac liczni a drugim dekrementować.

Nie mam problemu z 1 wejściem...

dodając drugi wyrzuca błąd że operuje na tych samych danych - co oczywiście
jest prawda...

Problem napewno należy do gatunku trywialnych, ale niestety pomimo że google
moim przyjacielem jest nie mogę tego ugryźć...

Pomożecie ?

A możesz podać obecną architekturę?

Poprzedni Następny
Wiadomość
Spis treści
Date: Sun, 15 Jan 2006 23:06:42 +0100
From: =?ISO-8859-2?Q?Pawe=B3_Cern?= <name_at_nospam_surname.pl>
Subject: Re: VHDL - pomocy


Paweł Cern napisał(a):
Jestem mocno początkujący i mam mały problem...
próbuje zamodelowac licznik rewersyjny asynchroniczny,
tzn. mam 2 wejścia pod które mam wpięte 2 przyciski. Jednym
przyciskiem chce inkrementowac liczni a drugim dekrementować.

Nie mam problemu z 1 wejściem...

dodając drugi wyrzuca błąd że operuje na tych samych danych - co
oczywiście jest prawda...

Problem napewno należy do gatunku trywialnych, ale niestety pomimo że
google moim przyjacielem jest nie mogę tego ugryźć...

Pomożecie ?

A możesz podać obecną architekturę?

Nieważne, chyba wiem jak było to zrobione. Pomijam problem iskrzenia
styków w przyciskach. Może spróbuj zrealizować to jako dwa liczniki
asynchroniczne do przodu, i asynchroniczny układ liczący różnicę. Będzie
to dobrze działać jeśli liczniki będą chodziły w pełnym zakresie
(modulo 2 ^ liczba bitów). Z grubsza powinno to być jakoś tak (dla
danych 32-bitowych):

entity updown_async_counter is
port(
clk_up : in std_logic;
clk_dn : in std_logic;
clear : in std_logic;
value : out integer
);
end;

architecture structure of updown_async_counter is

signal positive : integer;
signal negative : integer;

begin
value <= positive - negative;
process(clear)
begin
if(clear='1') then
positive <= 0;
negative <= 0;
end if;
end process;
process(clk_up)
begin
if(clk_up'event and clk_up='1') then
positive <= positive + 1;
end if;
end process;
process(clk_dn)
begin
if(clk_dn'event and clk_dn='1') then
negative <= negative + 1;
end if;
end process;
end;


Poprzedni Następny
Wiadomość
Spis treści
From: "Quazar" <grzegorz.swiecanski_ANTYSPAM__at_nospam_poczta.fm>
Subject: Re: VHDL - pomocy
Date: Mon, 16 Jan 2006 00:24:43 +0100


Może spróbuj zrealizować to jako dwa liczniki
asynchroniczne do przodu, i asynchroniczny układ liczący różnicę. Będzie
to dobrze działać jeśli liczniki będą chodziły w pełnym zakresie (modulo
2 ^ liczba bitów). Z grubsza powinno to być jakoś tak (dla danych
32-bitowych):

entity updown_async_counter is
port(
clk_up : in std_logic;
clk_dn : in std_logic;
clear : in std_logic;
value : out integer
);
end;

architecture structure of updown_async_counter is

signal positive : integer;
signal negative : integer;

begin
value <= positive - negative;
process(clear)
begin
if(clear='1') then
positive <= 0;
negative <= 0;
end if;
end process;
process(clk_up)
begin
if(clk_up'event and clk_up='1') then
positive <= positive + 1;
end if;
end process;
process(clk_dn)
begin
if(clk_dn'event and clk_dn='1') then
negative <= negative + 1;
end if;
end process;
end;


Heh, dziala ;)

Pomyślałem o tym rozwiązaniu ale nie wiedziec dlaczego uznałem że będą błędy
przy przepełnieniach 'positiva' i negativa' ;)
Swoją drogą (początkuje więc pewnie dlatego) myślałem że to jakoś prościej
można... ;)

dzięki serdeczne,

Quazar



Poprzedni Następny
Wiadomość
Spis treści
From: fly <ylfly_at_nospam_NOSPAMo2.pl>
Subject: Re: VHDL - pomocy
Date: Mon, 16 Jan 2006 00:27:25 +0100


Quazar napisał(a):
dzięki serdeczne,
Quazar

  • Mozna zapytac z jakich materialow korzystasz? ze Skahill'a ??

    pozd.fly

    Poprzedni Następny
    Wiadomość
    Spis treści
    From: "Quazar" <grzegorz.swiecanski_ANTYSPAM__at_nospam_poczta.fm>
    Subject: Re: VHDL - pomocy
    Date: Mon, 16 Jan 2006 00:30:52 +0100



    Użytkownik "fly" <ylfly_at_nospam_NOSPAMo2.pl> napisał w wiadomości
    news:dqelqq$bs8$1_at_nospam_nemesis.news.tpi.pl...
    Quazar napisał(a):
    dzięki serdeczne,
    Quazar
    -
    Mozna zapytac z jakich materialow korzystasz? ze Skahill'a ??

    pozd.fly

    Korzystam z uproszczonego Macajewa ;) ;)

    Tzn. google + met. prób&błędów.

    Dysponuje LiveDesign Altiuma + Designer - super sprawa

    Technike cyfrową w jakiś sposób już znam, więc problemem póki co jest tylko
    modelowanie VHDL.

    Pozdrawiam



    Poprzedni Następny
    Wiadomość
    Spis treści
    From: "Quazar" <grzegorz.swiecanski_ANTYSPAM__at_nospam_poczta.fm>
    Subject: Re: VHDL - pomocy
    Date: Mon, 16 Jan 2006 00:31:44 +0100


    -
    Mozna zapytac z jakich materialow korzystasz? ze Skahill'a ??

    A'propos - co polecacie jako kompendium VHDL ?

    Quazar



    Poprzedni Następny
    Wiadomość
    Spis treści
    Date: Mon, 16 Jan 2006 07:47:57 +0100
    From: =?ISO-8859-2?Q?Pawe=B3_Cern?= <name_at_nospam_surname.pl>
    Subject: Re: VHDL - pomocy


    Quazar napisał(a):
    -
    Mozna zapytac z jakich materialow korzystasz? ze Skahill'a ??

    A'propos - co polecacie jako kompendium VHDL ?

    Quazar



    Nie szukaj może nic więcej o VHDL-u bo z jakiejkolwiek książki
    wszystkiego się dowiesz. Poczytaj może ogólnie o sztuce projektowania
    układów cyfrowych. To jest podstawa. No i polecam najpierw SYMULACJE
    układu. Potrafi to Protel naturalnie, a jeśli już ta miesięczna licencja
    się skończy, to płytka ewaluacyjna Altium działa też z Quartusem Altery.

    Paweł

    Poprzedni Następny
    Wiadomość
    Spis treści
    Date: Mon, 16 Jan 2006 07:45:05 +0100
    From: =?ISO-8859-2?Q?Pawe=B3_Cern?= <name_at_nospam_surname.pl>
    Subject: Re: VHDL - pomocy


    Quazar napisał(a):
    Może spróbuj zrealizować to jako dwa liczniki
    asynchroniczne do przodu, i asynchroniczny układ liczący różnicę. Będzie
    to dobrze działać jeśli liczniki będą chodziły w pełnym zakresie (modulo
    2 ^ liczba bitów). Z grubsza powinno to być jakoś tak (dla danych
    32-bitowych):

    entity updown_async_counter is
    port(
    clk_up : in std_logic;
    clk_dn : in std_logic;
    clear : in std_logic;
    value : out integer
    );
    end;

    architecture structure of updown_async_counter is

    signal positive : integer;
    signal negative : integer;

    begin
    value <= positive - negative;
    process(clear)
    begin
    if(clear='1') then
    positive <= 0;
    negative <= 0;
    end if;
    end process;
    process(clk_up)
    begin
    if(clk_up'event and clk_up='1') then
    positive <= positive + 1;
    end if;
    end process;
    process(clk_dn)
    begin
    if(clk_dn'event and clk_dn='1') then
    negative <= negative + 1;
    end if;
    end process;
    end;


    Heh, dziala ;)

    Pomyślałem o tym rozwiązaniu ale nie wiedziec dlaczego uznałem że będą błędy
    przy przepełnieniach 'positiva' i negativa' ;)
    Swoją drogą (początkuje więc pewnie dlatego) myślałem że to jakoś prościej
    można... ;)

    dzięki serdeczne,

    Quazar



    I tak będą błędy. Taki licznik powinien operować kodem graya.
    W końcu jeśli poza zastosowaniem edukacyjnym chcesz go gdzieś użyć
    (podłączyć do czegoś większego, prawdopodobnie synchronicznego), to
    zjawisko zmieniających się wielu bitów naraz podczas inkrementacji /
    dekrementacji w standartowym systemie dwójkowym w połączeniu ze
    zjawiskiem wyścigu dyskwalifikują to rozwiązanie.

    Paweł

    Poprzedni Następny
    Wiadomość
    Spis treści
    From: J.F. <jfox_xnospamx_at_nospam_poczta.onet.pl>
    Subject: Re: VHDL - pomocy
    Date: Mon, 16 Jan 2006 14:05:13 +0100


    On Mon, 16 Jan 2006 07:45:05 +0100, Paweł Cern wrote:
    Quazar napisał(a):
    Może spróbuj zrealizować to jako dwa liczniki
    asynchroniczne do przodu, i asynchroniczny układ liczący różnicę.

    I tak będą błędy. Taki licznik powinien operować kodem graya.

    Dobrze piszesz.
    Tylko bedzie problem to zrealizowac :-)

    J>


    Poprzedni Następny
    Wiadomość
    Spis treści
    From: Zbych <abuse_at_nospam_onet.pl>
    Subject: Re: VHDL - pomocy
    Date: Mon, 16 Jan 2006 18:20:17 +0100


    J.F. przemówił ludzkim głosem:

    I tak będą błędy. Taki licznik powinien operować kodem graya.

    Dobrze piszesz.
    Tylko bedzie problem to zrealizowac :-)

    Czemu miałby być z tym problem ? Konwertujesz greya na binarny, dodajesz
    1, konwertujesz na greya i licznik synchroniczny gotowy :-).

    Poprzedni Następny
    Wiadomość
    Spis treści
    Date: Mon, 16 Jan 2006 07:54:36 +0100
    From: =?ISO-8859-2?Q?Pawe=B3_Cern?= <name_at_nospam_surname.pl>
    Subject: Re: VHDL - pomocy



    Heh, dziala ;)

    Pomyślałem o tym rozwiązaniu ale nie wiedziec dlaczego uznałem że będą błędy
    przy przepełnieniach 'positiva' i negativa' ;)
    Swoją drogą (początkuje więc pewnie dlatego) myślałem że to jakoś prościej
    można... ;)

    dzięki serdeczne,

    Quazar



    Będzie działać, tylko trzeba pilnować żeby słowo różnicy miało taki sam
    rozmiar jak dane wyjściowe liczników. Zresztą kiedyś na matematyce obiło
    mi się o uszy nazwisko "Galois" i parę ciekawostek, jeśli dobrze mi się
    kojarzy, to możnaby to dopasować do tego problemu.

    Paweł

    Poprzedni Następny
    Wiadomość
    Spis treści
    From: "JA" <j_andrWYTNIJTO_at_nospam_freenet.de>
    Subject: Re: VHDL - pomocy
    Date: 16 Jan 2006 14:02:12 +0100



    "Quazar":

    /.../
    Swoją drogą myślałem, że to jakoś prościej można... ;)


    nie wiem, czy tak bedzie prosciej, ale moim zdaniem
    dowcipniej :)

    napisane jest w verilogu, mam nadzieje, ze
    przetlumaczenie tego na vhdl nie bedzie stanowic
    problemu;

    Poprzedni Następny
    Wiadomość
    Spis treści
    From: =?ISO-8859-2?Q?Pawe=B3_Cern?= <name_at_nospam_surname.pl>
    Subject: Re: VHDL - pomocy
    Date: Mon, 16 Jan 2006 14:27:49 +0100




    nie wiem, czy tak bedzie prosciej, ale moim zdaniem
    dowcipniej :)

    =================================
    module counter
    (
    cnt_out, // wyjscie licznika
    down, // licz w dol
    up, // licz w gore
    res // reset
    );


    Trąci licznikiem synchronicznym.

    Poprzedni Następny
    Wiadomość
    Spis treści
    From: "JA" <j_andrWYTNIJTO_at_nospam_freenet.de>
    Subject: Re: VHDL - pomocy
    Date: 16 Jan 2006 14:42:23 +0100




    "Paweł Cern":

    Trąci licznikiem synchronicznym.

    i co z tego ?
    to jakas wada ?

    a poza tym, bardziej traci niz to ponizae ?

    ************
    process(clk_up)
    begin
    if(clk_up'event and clk_up='1') then
    positive <= positive + 1;
    end if;
    end process;
    **************

    JA


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

    Poprzedni Następny
    Wiadomość
    Spis treści
    From: J.F. <jfox_xnospamx_at_nospam_poczta.onet.pl>
    Subject: Re: VHDL - pomocy
    Date: Mon, 16 Jan 2006 14:05:13 +0100


    On Mon, 16 Jan 2006 00:24:43 +0100, Quazar wrote:
    Pomyślałem o tym rozwiązaniu ale nie wiedziec dlaczego uznałem że będą błędy
    przy przepełnieniach 'positiva' i negativa' ;)
    Swoją drogą (początkuje więc pewnie dlatego) myślałem że to jakoś prościej
    można... ;)

    Zapisac w VHDL to sie powinno dac prosciej.
    Tzn opisac behawioralnie.

    A jak to zrealizowac praktycznie .. oj, to wiekszy problem.

    Pomysl z dwoma licznikami jest chyba jednym z lepszych

    J.


    Poprzedni Następny
    Wiadomość
    Spis treści
    Date: Mon, 16 Jan 2006 18:12:20 +0100
    From: =?ISO-8859-2?Q?Pawe=B3_Cern?= <name_at_nospam_surname.pl>
    Subject: Re: VHDL - pomocy


    J.F. napisał(a):
    On Mon, 16 Jan 2006 00:24:43 +0100, Quazar wrote:
    Pomyślałem o tym rozwiązaniu ale nie wiedziec dlaczego uznałem że będą błędy
    przy przepełnieniach 'positiva' i negativa' ;)
    Swoją drogą (początkuje więc pewnie dlatego) myślałem że to jakoś prościej
    można... ;)

    Zapisac w VHDL to sie powinno dac prosciej.
    Tzn opisac behawioralnie.

    A jak to zrealizowac praktycznie .. oj, to wiekszy problem.

    Pomysl z dwoma licznikami jest chyba jednym z lepszych

    J.


    Zgadza się, na przykład możnaby dać wspólną sekcję "process". Będzie krócej.