Mam taki problem z układami programowalnymi:
Mam zdefiniowane dwa komponenty w VHDL'u (prawie identyczne, to tylko przykład):
-------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
entity U1 is
port(a,b:in std_logic;q:out std_logic);
end entity U1;
architecture behavior of U1 is
begin
q<=a when b='1' else 'Z';
end architecture behavior;
------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
entity U2 is
port(a,b:in std_logic;q:out std_logic);
end entity U2;
architecture behavior of U2 is
begin
q<=a when b='1' else 'Z';
end architecture behavior;
-------------------------------------
I teraz chcialem ich wyjścia podłączyć do jednej magistrali. Nie powinno być problemu, bo jeśli jedno będzie wysterowane, to na drugim będzie wysoka impedancja.
No więc wklepałem takie coś:
--------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
entity test is
port(We:in std_logic;szyna:out std_logic);
end entity test;
architecture behavior of test3 is
component U1 is
port(a,b:in std_logic;q:out std_logic);
end component U1;
component U2 is
port(a,b:in std_logic;q:out std_logic);
end component U2;
signal B:std_logic;
begin
B<='0'; --czyli na obu wyjściach 'Z'
U_1:U1 port map (We,B,Szyna);
U_2:U2 port map (We,B,Szyna);
end architecture behavior;
-------------------------------------
I niestety Max Plus 2 Altery wywala błąd, że Szyma ma dwa źródła sygnału.
Natomiast Xilinx WebPack kompiluje ten kod bez problemu, informując (warning) o tym podwójnym źródle.
Jak ten problem rozwiązać?
Aktyw Forum
Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.
Sprawdź punkty Zarejestruj sięVHDL-problem z łączeniem komponentów
Moderatorzy:Jacek Bogusz, Moderatorzy
-
- -
- Posty:269
- Rejestracja:1 kwie 2003, o 20:32
- Lokalizacja:Bielsko-Biała
1. Ten opis nie moze sie skompilowac, bo jest:
library ieee;
use ieee.std_logic_1164.all;
entity test is
port(We:in std_logic;szyna:out std_logic);
end entity test;
architecture behavior of test3 is
a powinno byc ...of test...
2. Chcesz zrobic (robisz) multiplekser z wyjsciem trojstanowym. Takie rozwiazanie jak probujesz zastosowac jest mozliwe wylacznie w niektorych typach PLD, w ktorych mozna laczyc wewnetrznie wyjscia buforow trojstanowych. Syntezer moze dopuscic laczenie buforow tristate wewnatrz ukladu przy zagwarantowaniu ich niejednoczesnego wlaczania, takze w innych ukladach PLD. Takie rozwiazanie jest jednak ryzykowne i nie zawsze akceptowane przez syntezery VHDL.
Lepszym wyjsciem (z punktu widzenia uniwersalnosci opisu) jest przelaczanie magistral za pomoca MUX i dodanie na wyjsciu bufora tristate.
Pzdr
PZb
library ieee;
use ieee.std_logic_1164.all;
entity test is
port(We:in std_logic;szyna:out std_logic);
end entity test;
architecture behavior of test3 is
a powinno byc ...of test...
2. Chcesz zrobic (robisz) multiplekser z wyjsciem trojstanowym. Takie rozwiazanie jak probujesz zastosowac jest mozliwe wylacznie w niektorych typach PLD, w ktorych mozna laczyc wewnetrznie wyjscia buforow trojstanowych. Syntezer moze dopuscic laczenie buforow tristate wewnatrz ukladu przy zagwarantowaniu ich niejednoczesnego wlaczania, takze w innych ukladach PLD. Takie rozwiazanie jest jednak ryzykowne i nie zawsze akceptowane przez syntezery VHDL.
Lepszym wyjsciem (z punktu widzenia uniwersalnosci opisu) jest przelaczanie magistral za pomoca MUX i dodanie na wyjsciu bufora tristate.
Pzdr
PZb
-
- -
- Posty:269
- Rejestracja:1 kwie 2003, o 20:32
- Lokalizacja:Bielsko-Biała
Dzieki za odpowiedź.
Oczywiście to of... to błąd literowy (pisałem to w notatniku).
A co to jest MUX? Wiem, pewnie beznadziejne pytanie, ale teraz nie kojarzę.
A co do sedna, to w takim razie czemu w książkach (np. bardzo dobra "Projektowanie układów cyfrowych z wykorzystaniem języka VHDL") stosuje się takie rozwiązanie?
Jest tam rozdział "Prosty mikroprocesor", w którym kilka komponentów łączy się jedną szyną. Z punktu widzenia tego projektu jest to chyba najlepsze rozwiązanie. Oczywiście, że to jest ryzykowne, ale uP chyba tak działają
A Xilinx kompiluje, szkoda że zainwestowałem w Alterę
Oczywiście to of... to błąd literowy (pisałem to w notatniku).
A co to jest MUX? Wiem, pewnie beznadziejne pytanie, ale teraz nie kojarzę.
A co do sedna, to w takim razie czemu w książkach (np. bardzo dobra "Projektowanie układów cyfrowych z wykorzystaniem języka VHDL") stosuje się takie rozwiązanie?
Jest tam rozdział "Prosty mikroprocesor", w którym kilka komponentów łączy się jedną szyną. Z punktu widzenia tego projektu jest to chyba najlepsze rozwiązanie. Oczywiście, że to jest ryzykowne, ale uP chyba tak działają
A Xilinx kompiluje, szkoda że zainwestowałem w Alterę
Oczywiście to of... to błąd literowy (pisałem to w notatniku).
A co to jest MUX? Wiem, pewnie beznadziejne pytanie, ale teraz nie kojarzę.
>> Multiplekser.
A co do sedna, to w takim razie czemu w książkach (np. bardzo dobra "Projektowanie układów cyfrowych z wykorzystaniem języka VHDL") stosuje się takie rozwiązanie?
>> Bo jest ono dozwolone przez VHDL, ale nie zawsze moze zostac poprawnie zsyntezowane, bo to zalezy glownie od rozwiazan zastosowanych w PLD.
Jest tam rozdział "Prosty mikroprocesor", w którym kilka komponentów łączy się jedną szyną. Z punktu widzenia tego projektu jest to chyba najlepsze rozwiązanie. Oczywiście, że to jest ryzykowne, ale uP chyba tak działają
>> I np. w ukladach Spartan lub ACEX i wielu podobnych mozna cos takiego zrobic.
A Xilinx kompiluje, szkoda że zainwestowałem w Alterę [/quote]
>> Jak wyzej: w ukladach umozliwiajacych implementacje magistral tristate - niezaleznie od producenta - mozesz taki opis stosowac. A Xilinx uzywa sztuczek: w XC9500 implementacja Twojego projektu wyglada przesmiesznie: tworzony jest wire-AND w matrycy FC, a nie - jak pewnie sadzisz - laczone wyjscia buforow tristate
Na jaki uklad Altery chcesz kompilowac projekt?
Pzdr
PZb
P.S. Znasz Quartusa?
A co to jest MUX? Wiem, pewnie beznadziejne pytanie, ale teraz nie kojarzę.
>> Multiplekser.
A co do sedna, to w takim razie czemu w książkach (np. bardzo dobra "Projektowanie układów cyfrowych z wykorzystaniem języka VHDL") stosuje się takie rozwiązanie?
>> Bo jest ono dozwolone przez VHDL, ale nie zawsze moze zostac poprawnie zsyntezowane, bo to zalezy glownie od rozwiazan zastosowanych w PLD.
Jest tam rozdział "Prosty mikroprocesor", w którym kilka komponentów łączy się jedną szyną. Z punktu widzenia tego projektu jest to chyba najlepsze rozwiązanie. Oczywiście, że to jest ryzykowne, ale uP chyba tak działają
>> I np. w ukladach Spartan lub ACEX i wielu podobnych mozna cos takiego zrobic.
A Xilinx kompiluje, szkoda że zainwestowałem w Alterę [/quote]
>> Jak wyzej: w ukladach umozliwiajacych implementacje magistral tristate - niezaleznie od producenta - mozesz taki opis stosowac. A Xilinx uzywa sztuczek: w XC9500 implementacja Twojego projektu wyglada przesmiesznie: tworzony jest wire-AND w matrycy FC, a nie - jak pewnie sadzisz - laczone wyjscia buforow tristate
Na jaki uklad Altery chcesz kompilowac projekt?
Pzdr
PZb
P.S. Znasz Quartusa?
-
- -
- Posty:269
- Rejestracja:1 kwie 2003, o 20:32
- Lokalizacja:Bielsko-Biała
Ha, teraz już wiem . Czytajcie a znajdziecie. Wszystko pisze w helpie do Max Plus 2.
Po prostu trzeba sobie zrobić komponent, do którego wchodzą magistrale z innych komponentów i sygnały sterujące, a wychodzi szyna zbiorcza. I to sie skompiluje do każdego układu.
Kompilowałem to do układu Flex (bo taki mam). Ale teraz widzę, że Acex są w tej samej cenie nawet do 10x "pojemniejsze" i chyba się przestawię.
Quartusa nie używałem, bo na razie to się tym bawię za krótko .
Szkoda, że tak mało ludzi i firm w Polsce coś robi w tej dziedzinie. Firmy znalazłem tylko trzy: Digital Core Design (wyglada najbardziej profesjonalnie, porobili masę procesorków (8051) itp.), Evatronix (też mają implementację 8051) i JawiLogic (? chyba tylko sprzedają uklady - i dobrze, bo bym nie miał gdzie kupić ).
Może temu, że to dość droga zabawa .
Po prostu trzeba sobie zrobić komponent, do którego wchodzą magistrale z innych komponentów i sygnały sterujące, a wychodzi szyna zbiorcza. I to sie skompiluje do każdego układu.
Kompilowałem to do układu Flex (bo taki mam). Ale teraz widzę, że Acex są w tej samej cenie nawet do 10x "pojemniejsze" i chyba się przestawię.
Quartusa nie używałem, bo na razie to się tym bawię za krótko .
Szkoda, że tak mało ludzi i firm w Polsce coś robi w tej dziedzinie. Firmy znalazłem tylko trzy: Digital Core Design (wyglada najbardziej profesjonalnie, porobili masę procesorków (8051) itp.), Evatronix (też mają implementację 8051) i JawiLogic (? chyba tylko sprzedają uklady - i dobrze, bo bym nie miał gdzie kupić ).
Może temu, że to dość droga zabawa .
>> ?? Droga? Do czego to odnosisz? Kompilatory za darmo, a uklady od 4 PLNHa, teraz już wiem . Czytajcie a znajdziecie. Wszystko pisze w helpie do Max Plus 2.
>> _jest napisane_
Po prostu trzeba sobie zrobić komponent, do którego wchodzą magistrale z innych komponentów i sygnały sterujące, a wychodzi szyna zbiorcza. I to sie skompiluje do każdego układu.
>>:-)
Kompilowałem to do układu Flex (bo taki mam). Ale teraz widzę, że Acex są w tej samej cenie nawet do 10x "pojemniejsze" i chyba się przestawię.
>> Do tego tansze.
Quartusa nie używałem, bo na razie to się tym bawię za krótko .
>> Ale ma lepszy synetzer. W M+PII lepiej uzywac Altera Advanced Sythesis Tool zamiast wewnetrznego syntezrea VHDL (wersja SE).
Szkoda, że tak mało ludzi i firm w Polsce coś robi w tej dziedzinie. Firmy znalazłem tylko trzy: Digital Core Design (wyglada najbardziej profesjonalnie, porobili masę procesorków (8051) itp.), Evatronix (też mają implementację 8051) i JawiLogic (? chyba tylko sprzedają uklady - i dobrze, bo bym nie miał gdzie kupić ).
>> Detalicznie raczej nic innego nie znajdziesz. Maja miec sklep w I-necie.
Może temu, że to dość droga zabawa .
Pzdr
PZb
-
- -
- Posty:269
- Rejestracja:1 kwie 2003, o 20:32
- Lokalizacja:Bielsko-Biała
Od 4zł Jakie układy? Takich tanich nie widzialem! Chyba, że typu GAL, czy PAL, ale nimi się na razie nie interesowałem.>> ?? Droga? Do czego to odnosisz? Kompilatory za darmo, a uklady od 4 PLN
Ale faktycznie do największego Acex'a można wgrać wielgachny układ (z mojego punktu widzenia). I cała część cyfrowa może być za jakieś 200zł (a na jakiej małej powierzchni!). Zależy jak na to patrzeć.
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 34 gości