Goto page 1, 2, 3 Next
T.M.F.
Guest
Fri Jan 26, 2007 10:34 pm
Witam!
zastanawiam sie jak zrobic w VHDL 8-bitowy rejestr, ktory mozna
podlaczyc do wspolnej trojstanowej szyny IO (szyna wewnetrzna w scalaku)
ze strobem zapisu i odczytu?
Chodzi o to, zeby przy wr=0 rejest zapamietywal to co jest na szynie, a
przy rd=0 wystawial na szyne to co wczesniej zapamietal. Dla rw=rd=1
rejestr ma pamietac swoja zawartosc, jednak wyjscia maja byc w stanie
wysokiej impedancji. Prosto zrobic latch, ale nie radze sobie jakos z
rejestrem.
Dzieki za wszelka pomoc i pozdrawiam,
T.M.F.
--
Inteligentny dom -
http://idom.wizzard.one.pl
Teraz takze forum dyskusyjne
Zobacz, wyslij uwagi, dolacz sie do projektu.
Pszemol
Guest
Sat Jan 27, 2007 12:20 am
"T.M.F." <tfrancuz@nospam.mp.pl> wrote in message news:epds9q$j2m$1@nemesis.news.tpi.pl...
Quote:
zastanawiam sie jak zrobic w VHDL 8-bitowy rejestr, ktory mozna
podlaczyc do wspolnej trojstanowej szyny IO (szyna wewnetrzna w scalaku)
ze strobem zapisu i odczytu?
Chodzi o to, zeby przy wr=0 rejest zapamietywal to co jest na szynie, a
przy rd=0 wystawial na szyne to co wczesniej zapamietal. Dla rw=rd=1
rejestr ma pamietac swoja zawartosc, jednak wyjscia maja byc w stanie
wysokiej impedancji. Prosto zrobic latch, ale nie radze sobie jakos z
rejestrem.
Nie zabardzo rozumiem w czym masz problem...
Przzeciez wewnatrz CPLD/FPGA nie ma czegos takiego jak szyna
trojstanowa... trojstanowosc dotyczy tylko pinow zewnetrznych.
A wiec wspolnieuzywane szyny danych robi sie tak, ze uzywasz
duzego ORa do ktorego wejsc laczysz wyjscia urzadzen peryferyjnych
ktore sa jak sa wybierane to steruja wejsciem ORa a gdy sa
niewybrane to wystawiaja na swoje wyjscia logiczne zera...
A wiec zapis realizujesz przerzutnikiem DFF z wejsciem clock-enable
podlaczonym do write i zegarem podlaczonym do zegara systemowego
a wylot z tego 8-bitowego przerzutnika DFF podlaczasz do bramki AND2
ktorej jedno wejscie sterujesz sygnalem read (lub output-enable).
Jak dalej cos niejasne to pytaj smialo.
T.M.F.
Guest
Sat Jan 27, 2007 9:32 am
Quote:
Przzeciez wewnatrz CPLD/FPGA nie ma czegos takiego jak szyna
trojstanowa... trojstanowosc dotyczy tylko pinow zewnetrznych.
A wiec wspolnieuzywane szyny danych robi sie tak, ze uzywasz
duzego ORa do ktorego wejsc laczysz wyjscia urzadzen peryferyjnych
ktore sa jak sa wybierane to steruja wejsciem ORa a gdy sa
niewybrane to wystawiaja na swoje wyjscia logiczne zera...
A wiec zapis realizujesz przerzutnikiem DFF z wejsciem clock-enable
podlaczonym do write i zegarem podlaczonym do zegara systemowego
a wylot z tego 8-bitowego przerzutnika DFF podlaczasz do bramki AND2
ktorej jedno wejscie sterujesz sygnalem read (lub output-enable).
Jak dalej cos niejasne to pytaj smialo.
Ok, zasugerowalem sie implementacja czegos takiego na ukladach
dyskretnych. W sumie tak jak piszesz to nawet bedzie wygodniej. Bo
chodzi o stworzenie kilku rejestrow IO ktore beda czytane/zapisywane
przez mikroprocesor poprzez szyne danych IO + 4 bity adresu
wybierajacego rejestr do zapisu/odczytu. Dodatkowo dane z rejestrow beda
sterowaly wewnetrznymi licznikami.
--
Inteligentny dom -
http://idom.wizzard.one.pl
Teraz takze forum dyskusyjne
Zobacz, wyslij uwagi, dolacz sie do projektu.
mk
Guest
Sat Jan 27, 2007 4:19 pm
Newsuser "Pszemol" <Pszemol@PolBox.com> wrote:
Quote:
zastanawiam sie jak zrobic w VHDL 8-bitowy rejestr, ktory mozna
podlaczyc do wspolnej trojstanowej szyny IO (szyna wewnetrzna w
scalaku) ze strobem zapisu i odczytu?
Chodzi o to, zeby przy wr=0 rejest zapamietywal to co jest na
szynie, a przy rd=0 wystawial na szyne to co wczesniej zapamietal.
Dla rw=rd=1 rejestr ma pamietac swoja zawartosc, jednak wyjscia maja
byc w stanie wysokiej impedancji. Prosto zrobic latch, ale nie radze
sobie jakos z rejestrem.
Nie zabardzo rozumiem w czym masz problem...
Przzeciez wewnatrz CPLD/FPGA nie ma czegos takiego jak szyna
trojstanowa...
Zależy jaki układ programowalny...
Np. Stare Xilinx XC4000 i XC3000 miały możliwość implementacji fizycznej
wewnętrznej szyny trójstanowej...
Quote:
trojstanowosc dotyczy tylko pinow zewnetrznych.
A wiec wspolnieuzywane szyny danych robi sie tak, ze uzywasz
duzego ORa do ktorego wejsc laczysz wyjscia urzadzen peryferyjnych
ktore sa jak sa wybierane to steruja wejsciem ORa a gdy sa
niewybrane to wystawiaja na swoje wyjscia logiczne zera...
Można zrobić klasycznie: Tj. gdy rejestr odczytuje linie lub jest nieaktywny
to na magistralę wystawiamy stan wysokiej impedancji; jeśli nie to
wystawiamy na magistralę zawartość rejestru. Kompilator powinien sobie
poradzić z rozwikłaniem takiej sytuacji do takiej logiki jaką da się
wpasować w danym układzie programowalnym.
pzdr
mk
Pszemol
Guest
Sun Jan 28, 2007 5:38 am
"mk" <REVERSE_lp.pw@myzskm.REMOVE> wrote in message news:epfqhl$ifb$1@news.onet.pl...
Quote:
Przzeciez wewnatrz CPLD/FPGA nie ma czegos takiego jak szyna
trojstanowa...
Zależy jaki układ programowalny...
Np. Stare Xilinx XC4000 i XC3000 miały możliwość
implementacji fizycznej wewnętrznej szyny trójstanowej...
I na czym ta "implementacja" polegała ?
Jaki sens w ogóle może mieć wewnętrzna szyna trójstanowa ??
Trochę mnie zawodzi wyobraźnia - możesz mi pomóc wyobrazić
sobie taką sytuację w której przydaje się taka szyna ?
Quote:
Można zrobić klasycznie: Tj. gdy rejestr odczytuje linie lub jest nieaktywny to na magistralę wystawiamy stan wysokiej impedancji;
jeśli nie to wystawiamy na magistralę zawartość rejestru. Kompilator powinien sobie poradzić z rozwikłaniem takiej sytuacji do
takiej logiki jaką da się wpasować w danym układzie programowalnym.
Ja tam wolę używać własnego rozumu a nie kompilatora
przy rozwikłaniu takich "sytuacji". Kompilator nie jest
Twoim "soulmate" i może się nie domyśleć o co Ci chodziło
J.F.
Guest
Sun Jan 28, 2007 8:23 am
On Sat, 27 Jan 2007 22:38:31 -0600, Pszemol wrote:
Quote:
Zależy jaki układ programowalny...
Np. Stare Xilinx XC4000 i XC3000 miały możliwość
implementacji fizycznej wewnętrznej szyny trójstanowej...
I na czym ta "implementacja" polegała ?
Jaki sens w ogóle może mieć wewnętrzna szyna trójstanowa ??
Trochę mnie zawodzi wyobraźnia - możesz mi pomóc wyobrazić
sobie taką sytuację w której przydaje się taka szyna ?
Dokladnie taki sam jak zewnetrzna ?
Np jak podlaczyc wiele peryferii [na macrocelach zrobionych] do
linii danych procesora - taz z makrocel zrobionego ? :-)
Quote:
Można zrobić klasycznie: Tj. gdy rejestr odczytuje linie lub jest nieaktywny to na magistralę wystawiamy stan wysokiej impedancji;
jeśli nie to wystawiamy na magistralę zawartość rejestru. Kompilator powinien sobie poradzić z rozwikłaniem takiej sytuacji do
takiej logiki jaką da się wpasować w danym układzie programowalnym.
Ja tam wolę używać własnego rozumu a nie kompilatora
przy rozwikłaniu takich "sytuacji". Kompilator nie jest
Twoim "soulmate" i może się nie domyśleć o co Ci chodziło
Ano istnieje takie ryzyko.
J.
Pszemol
Guest
Sun Jan 28, 2007 4:22 pm
"J.F." <jfox_xnospamx@poczta.onet.pl> wrote in message news:dljor2hq938dkrd2c8iu6rjg2ho0kd2ri5@4ax.com...
Quote:
On Sat, 27 Jan 2007 22:38:31 -0600, Pszemol wrote:
Zależy jaki układ programowalny...
Np. Stare Xilinx XC4000 i XC3000 miały możliwość
implementacji fizycznej wewnętrznej szyny trójstanowej...
I na czym ta "implementacja" polegała ?
Jaki sens w ogóle może mieć wewnętrzna szyna trójstanowa ??
Trochę mnie zawodzi wyobraźnia - możesz mi pomóc wyobrazić
sobie taką sytuację w której przydaje się taka szyna ?
Dokladnie taki sam jak zewnetrzna ?
Np jak podlaczyc wiele peryferii [na macrocelach zrobionych] do
linii danych procesora - taz z makrocel zrobionego ?
No ale właśnie wewnątrz scalaka nie ma takiej potrzeby...
Magistrala trójstanowa to twór wynikający z potrzeby
uproszczenia siatki połączeń pomiędzy scalakami których
koszt obudowy zależy w ogromnej mierze od ilości pinów.
Stąd wspólne sygnały RD/WR, wspólna szyna adresowa i danych...
Wewnątrz kostki FPGA możesz mieć dziś proca (np. NiosII Altery)
jako mastera magistrali Avalon, którego podłączysz do wielu
peryferiów (slave) na tejże magistrali i do każdego urządzenia
możesz mieć osobne linie adresowe, osobne linie danych do
zapisu, osobne linie danych do odczytu i jego własne sygnały
read/write - nawet wtedy czipselektów właściwie nie potrzeba...
Zauważ, że taki rejestr we/wy jest zwykle wykonany na prostych
przerzutnikach (d-flip-flop DFF) a więc znatury rzeczy ma swoje
wejście i wyjście danych osobno. A wtedy nawet sygnał read jest
zbędny, bo dane wyjściowe tam zawsze są. Kombinowanie z łączeniem
danych we i wy na jeden kabelek trójstanowy po to aby zaoszczędzić
pin na obudowie nie ma sensu wewnątrz FPGA i się tego nie robi.
Jeśli proca masz na zewnątrz FPGA i ma on już magistralę
trójstanową do innych potrzeb to oczywiście Twój FPGA musi
być kompatybilny, ale też trójstanowa magistrala Ci jest
potrzebna TYLKO na zewnętrznych pinach FPGA, tych łączących Cię
z procem. Wewnątrz, pomiędzy różnymi modułami/rejestrami
już jest niepotrzebna. No chyba że mi wyobraźnia nie dopisuje...
mk
Guest
Sun Jan 28, 2007 8:12 pm
Newsuser "Pszemol" <Pszemol@PolBox.com> wrote:
Quote:
"mk" <REVERSE_lp.pw@myzskm.REMOVE> wrote in message
news:epfqhl$ifb$1@news.onet.pl...
Przzeciez wewnatrz CPLD/FPGA nie ma czegos takiego jak szyna
trojstanowa...
Zależy jaki układ programowalny...
Np. Stare Xilinx XC4000 i XC3000 miały możliwość
implementacji fizycznej wewnętrznej szyny trójstanowej...
I na czym ta "implementacja" polegała ?
Do wewnętrznych linii podłączone są bufory potrafiące pracować
trójstanowo... cóż tu się więcej rozpisyswać... Linie są podciągane do stanu
wysokiego rezystorami, albo zakończone układem "weak keeper circuit".
Szczegóły:
http://direct.xilinx.com/bvdocs/publications/3000.pdf
Strony 7-16, 7-17
Quote:
Jaki sens w ogóle może mieć wewnętrzna szyna trójstanowa ??
Trochę mnie zawodzi wyobraźnia - możesz mi pomóc wyobrazić
sobie taką sytuację w której przydaje się taka szyna ?
Motywacją zapewne była oszczędność zasobów przy budowaniu np.
multiplekserów.
Następująca sytuacja:
Jest 8 różnych źródeł danych, które mają być zapisywane do wspólnego
rejestru.
Oczywistym pomysłem jest zbudowanie multipleksera, którego wejścia są
podłączone do źródeł, a wyjście do wspomnianego rejestru.
Oprócz tego multiplekser ma wejścia wyboru źródła.
Ile np. LE Cyclona trzeba zużyć do zbudowania takiego multipleksera przy
założeniu, że multipleksujemy magistrale 64 bitowe?
Ile zasobów logicznych zostało by zużytych, gdyby dysponować możliwością
sterowania trójstanowego wewnętrznych magistral?
Quote:
Można zrobić klasycznie: Tj. gdy rejestr odczytuje linie lub jest
nieaktywny to na magistralę wystawiamy stan wysokiej impedancji;
jeśli nie to wystawiamy na magistralę zawartość rejestru. Kompilator
powinien sobie poradzić z rozwikłaniem takiej sytuacji do takiej
logiki jaką da się wpasować w danym układzie programowalnym.
Ja tam wolę używać własnego rozumu a nie kompilatora
przy rozwikłaniu takich "sytuacji". Kompilator nie jest
Twoim "soulmate" i może się nie domyśleć o co Ci chodziło
Jak się nie domyśli, to nie będzie wiedział co zrobić i zakończy kompilacje.
Np. Quartus kompilujący dla Cyclona (który nie ma możliwości o której mowa)
bez problemu sobie z takimi sytuacjami radzi (wstawi multiplekser) i nie
zużyje więcej zasobów niż przy ręcznej rzeźbie. Wyświetli tylko ostrzeżenie,
że takich machinacji dokonał, a nie jest to zaimplementowane fizycznie.
pzdr
mk
T.M.F.
Guest
Sun Jan 28, 2007 9:28 pm
Quote:
Jeśli proca masz na zewnątrz FPGA i ma on już magistralę
trójstanową do innych potrzeb to oczywiście Twój FPGA musi
być kompatybilny, ale też trójstanowa magistrala Ci jest
potrzebna TYLKO na zewnętrznych pinach FPGA, tych łączących Cię
z procem. Wewnątrz, pomiędzy różnymi modułami/rejestrami
już jest niepotrzebna. No chyba że mi wyobraźnia nie dopisuje...
No wlasnie, chce zrobic tak, ze mam procesor polaczony z CPLD, w ktorym
mam 16 rejestrow R/W, wyjscia tych rejestrow steruja licznikami
(wewnatrz CPLD), tu nie ma problemu. Natomiast przy odczycie procesor
wybiera jeden z 16 rejestrow, rozumiem, ze skoro nie moze byc buforow
trojstanowych to robie 8 multiplekserow 16 wejsciowych (tak to bedzie
zaimplementowane), ktorych wyjscia ida na linie trojstanowe D7-D0
dostepne na zewnatrz CPLD. Kierunek tych linii przelaczam zewnetrznym
strobem zapisu i sygnalu wyboru ukladu. Dobrze rozumuje?
--
Inteligentny dom -
http://idom.wizzard.one.pl
Teraz takze forum dyskusyjne
Zobacz, wyslij uwagi, dolacz sie do projektu.
J.F.
Guest
Sun Jan 28, 2007 9:52 pm
On Sun, 28 Jan 2007 21:28:15 +0100, T.M.F. wrote:
Quote:
No wlasnie, chce zrobic tak, ze mam procesor polaczony z CPLD, w ktorym
mam 16 rejestrow R/W, wyjscia tych rejestrow steruja licznikami
(wewnatrz CPLD), tu nie ma problemu. Natomiast przy odczycie procesor
wybiera jeden z 16 rejestrow, rozumiem, ze skoro nie moze byc buforow
trojstanowych to robie 8 multiplekserow 16 wejsciowych (tak to bedzie
zaimplementowane), ktorych wyjscia ida na linie trojstanowe D7-D0
dostepne na zewnatrz CPLD. Kierunek tych linii przelaczam zewnetrznym
strobem zapisu i sygnalu wyboru ukladu. Dobrze rozumuje?
jesli chodzi o typowa architekture CPLD to i tak nie masz wyjscia i
musisz zrobic jak powyzej.
Nawiasem mowiac moze to nie wyjsc takie latwe i trzeba dwupoziomowy.
O ktorym CPLD myslisz, bo to juz dosc ambitne trzeba ?
J.
T.M.F.
Guest
Sun Jan 28, 2007 9:59 pm
Quote:
jesli chodzi o typowa architekture CPLD to i tak nie masz wyjscia i
musisz zrobic jak powyzej.
Nawiasem mowiac moze to nie wyjsc takie latwe i trzeba dwupoziomowy.
O ktorym CPLD myslisz, bo to juz dosc ambitne trzeba ?
XC95144XL. 144 makrokomorki powinny wystarczyc, chociaz dla mnie
istotniejsza jest ilosc pinow IO - to ma byc kontroler LCD.
--
Inteligentny dom -
http://idom.wizzard.one.pl
Teraz takze forum dyskusyjne
Zobacz, wyslij uwagi, dolacz sie do projektu.
mk
Guest
Sun Jan 28, 2007 10:31 pm
Newsuser "T.M.F." <tfrancuz@nospam.mp.pl> wrote:
Quote:
jesli chodzi o typowa architekture CPLD to i tak nie masz wyjscia i
musisz zrobic jak powyzej.
Nawiasem mowiac moze to nie wyjsc takie latwe i trzeba dwupoziomowy.
O ktorym CPLD myslisz, bo to juz dosc ambitne trzeba ?
XC95144XL. 144 makrokomorki powinny wystarczyc, chociaz dla mnie
istotniejsza jest ilosc pinow IO - to ma byc kontroler LCD.
Ilo bitowe te rejestry?
Bo jesli 8-bitowe to (16 * 8 =) 128 przerzutników z 144 zostanie zuzytych
tylko na rejestry...
pzdr
mk
mk
Guest
Sun Jan 28, 2007 10:34 pm
Newsuser "T.M.F." <tfrancuz@nospam.mp.pl> wrote:
Quote:
jesli chodzi o typowa architekture CPLD to i tak nie masz wyjscia i
musisz zrobic jak powyzej.
Nawiasem mowiac moze to nie wyjsc takie latwe i trzeba dwupoziomowy.
O ktorym CPLD myslisz, bo to juz dosc ambitne trzeba ?
XC95144XL. 144 makrokomorki powinny wystarczyc, chociaz dla mnie
istotniejsza jest ilosc pinow IO - to ma byc kontroler LCD.
Ilu bitowe sa te rejestry?
Bo jesli 8-bitowe, to (16 * 8 =) 128 przerzutników z 144 wszystkich zostanie
zuzytych
tylko na rejestry...
pzdr
mk
T.M.F.
Guest
Sun Jan 28, 2007 11:03 pm
Quote:
jesli chodzi o typowa architekture CPLD to i tak nie masz wyjscia i
musisz zrobic jak powyzej.
Nawiasem mowiac moze to nie wyjsc takie latwe i trzeba dwupoziomowy.
O ktorym CPLD myslisz, bo to juz dosc ambitne trzeba ?
XC95144XL. 144 makrokomorki powinny wystarczyc, chociaz dla mnie
istotniejsza jest ilosc pinow IO - to ma byc kontroler LCD.
Ilu bitowe sa te rejestry?
Bo jesli 8-bitowe, to (16 * 8 =) 128 przerzutników z 144 wszystkich
zostanie zuzytych
tylko na rejestry...
Na szczecie czesc jest krotsza. No i multiplexery chyba z pozostalych
bramek makroceli da sie zrobic? Zreszta zobacze co mi ISE na to powie. W
sumie max CPLD jaki widze xilinxa w Kamami ma 288 makroceli, co do FPGA
to wyraznie drozsze sa i chyba wszystkie wymagaja zewnetrznej pamieci
konfiguracji?
--
Inteligentny dom -
http://idom.wizzard.one.pl
Teraz takze forum dyskusyjne
Zobacz, wyslij uwagi, dolacz sie do projektu.
J.F.
Guest
Sun Jan 28, 2007 11:32 pm
On Sun, 28 Jan 2007 23:03:20 +0100, T.M.F. wrote:
Quote:
jesli chodzi o typowa architekture CPLD to i tak nie masz wyjscia i
musisz zrobic jak powyzej.
Nawiasem mowiac moze to nie wyjsc takie latwe i trzeba dwupoziomowy.
XC95144XL. 144 makrokomorki powinny wystarczyc, chociaz dla mnie
istotniejsza jest ilosc pinow IO - to ma byc kontroler LCD.
Ilu bitowe sa te rejestry?
Bo jesli 8-bitowe, to (16 * 8 =) 128 przerzutników z 144 wszystkich
zostanie zuzytych tylko na rejestry...
Na szczecie czesc jest krotsza. No i multiplexery chyba z pozostalych
bramek makroceli da sie zrobic? Zreszta zobacze co mi ISE na to powie.
Od tego zacznij.
IMO - na 144 ci nie wyjdzie, 288 byc moze.
I tam jest jest jeszcze pare innych ograniczen - np function block
ma 90 product term, a multiplekser 16 wejsciowy wymaga ich 16.
Niby nie ma problemu, ale ty ich potrzebujesz 8 :-)
Od projektu trzeba zaczac.
Quote:
co do FPGA to wyraznie drozsze sa i chyba wszystkie wymagaja zewnetrznej pamieci
konfiguracji?
Zobacz jeszcze oferte Altery.
J.
Goto page 1, 2, 3 Next