VHDL - pomocy
Masz problem? Zapytaj na forum elektroda.pl
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
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ę?
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;
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
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
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
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
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ł
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ł
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>
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 :-).
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ł
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;
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.
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
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.
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.