8-stage shift-and-store bus register (4094)
Masz problem? Zapytaj na forum elektroda.pl
From: Lukasz Sacha <luke_at_nospam_mroweczka.rms.pl>
Subject: 8-stage shift-and-store bus register (4094)
Date: 2 Aug 2002 21:30:43 GMT
witam,
mam pytanie tyczace sie scalakow typu 4096 (8-stage shift-and-store bus
registers). mam pdf'a od 74hct4094 (philips'a).
ale, ze nie jestem elektronikiem, to nie za bardzo wiem, jak to ugryzc.
powiem wam jak to rozumiem i czego nie rozumiem, a wy uzupelnijcie i skorygujcie
prosze moja wiedze.
to co wydaje mi sie, ze rozumiem:
1) mam tu 1 szeregowe wejscie i 8 rownoleglych wyjsc.
2) jest zegar, ktory jak rozumiem sluzy do umozliwienia podawania kolejnych z 8
bitow.
3) zagar reaguje na rosnace zbocze, czyli za kazdym razem jak wykres "idzie do
gory", rejestr czyta kolejny bit.
4) jesli strobe jest w stanie wysokim, to dane z SHIFT rejestru sa kopiowane do
STORAGE rejestru.
5) jak OE (output enable input) jest w stanie wysokim, to dane z rejestru
STORAGE pojawiaja sie na wyjsciu.
teraz to czego nie rozumiem:
1) po co w ogole jest SHIFT rejestr i strobe? czy dane z wejscia szeregowego
nie moglyby od razu isc do storage rejestru?
2) co sie stanie jesli wczytam 9 bit z rzedu? czy on
a) przepadnie,
b) zostanie zapisany jako bit 1
c) zostanie zapisany jako bit 8
d) nie mam pojecia
a na koniec kilka dodatkowych pytan:
1) czy CLK musi miec stala czestotliwosc? konkretnie chcialbym podlaczyc CLK do
komputera (poprzez LPT) i uzyc "softwareowego" zegara.
czy moge to tak oprogramowac?:
a) wysylam logiczne 1 na zegar
b) wysylam pierwszy bit z 8
c) wysylam 0 na zegar
d) czekam 1/86 milionowej czesci sekundy (max. czestotliwosc zegata to 86 MHz -
e) powtarzam kroki a-d 7 razy.
f) wysylam jedynke na strobe
g) wysylam jedynke na OE
czy to zadziala?
dzieki za wszelka pomoc.
ps: jak bedzie sie nazywal "odwrotny bufor", czyli parallel-to-serial?
--
Lukasz Sacha <luke_at_nospam_is.com.pl>
From: "Marek Dzwonnik" <mdz_at_nospam_message.pl>
Subject: Re: 8-stage shift-and-store bus register (4094)
Date: Sat, 3 Aug 2002 00:00:47 +0200
Użytkownik "Lukasz Sacha" <luke_at_nospam_mroweczka.rms.pl> napisał w wiadomości
news:slrnakltsg.fms.luke_at_nospam_mroweczka.rms.pl...
mam pytanie tyczace sie scalakow typu 4096 (8-stage shift-and-store bus
registers). mam pdf'a od 74hct4094 (philips'a).
Układ składa się z trzech połączonych bloków:
- ośmiobitowego rejestru przesuwającego, czyli połączonego łancuch ośmiu
przerzutników. Zbocze sygnału zegarowego powoduje przepisanie stanu
przerzutnika (n) do następnego przerzutnika w łańcuchu (n+1). Pierwszy
przerzutnik jest ładowany stanem linii Data. Stan ostaniego przerzutnika
odchodzi w niebyt. Wyjscia rejestru przesuwającego są na wykresie czasowym
opisane jako "Internal Qn"
- 8-bitowego rejestru równoległego (latch). Podanie sygnału STORAGE=H
powoduje wpisanie do rejestru stanów z wyjść rejestru przesuwnego (Internal
Q)
- 8 bramek z wyjściem trójstanowym separujących linie wyjściowe rejestru
równoległego od wyjściowych nóżek układu Qn. Bramki stają się przezroczyste
po podaniu sygnału OE (Output Enable), w przeciwnym razie wyjścia pozostają
w stanie wysokiej impedancji (HiZ).
to co wydaje mi sie, ze rozumiem:
1) mam tu 1 szeregowe wejscie i 8 rownoleglych wyjsc.
Ok
2) jest zegar, ktory jak rozumiem sluzy do umozliwienia podawania
kolejnych z 8
bitow.
Taktuje przesuwanie danych w rejestrze przesuwnym
3) zagar reaguje na rosnace zbocze, czyli za kazdym razem jak wykres
"idzie do
gory", rejestr czyta kolejny bit.
4) jesli strobe jest w stanie wysokim, to dane z SHIFT rejestru sa
kopiowane do
STORAGE rejestru.
Jeżeli jest to 'latch' (a tak bodajże jest) to podczas STORAGE=H
przerzutniki stają się przezroczyste. Można wtedy bezpośrednio obserwować
proces przesuwania danych w rejestrze przesuwnym
5) jak OE (output enable input) jest w stanie wysokim, to dane z rejestru
STORAGE pojawiaja sie na wyjsciu.
Tak
1) po co w ogole jest SHIFT rejestr i strobe? czy dane z wejscia
szeregowego
nie moglyby od razu isc do storage rejestru?
W pewnych sytuacjach byłoby to niepożądane. Zwróć uwagę, że dopóki nie
przesuniesz wszystkich 8 bitów, dopóty na liniach (Internal Q) panuje
kombinacja stanów daleka od oczekwianej. Przekopiowania danych do rejestru
równoległego (STORAGE) dokonuje się dopiero po wsunięciu kompletu danych do
rejestru przesuwnego
2) co sie stanie jesli wczytam 9 bit z rzedu? czy on
Wyląduje na pozycji pierwszej. Bit, który został wsunięty jako pierwszy
odejdzie z pozycji ósmej w niebyt. Pozostałe bity przeniosą się o oczko
wyżej.
1) czy CLK musi miec stala czestotliwosc? konkretnie chcialbym podlaczyc
CLK do
komputera (poprzez LPT) i uzyc "softwareowego" zegara.
Kostka jest całkowice statyczna. Narzuca wymagań co do minimalnej
częstotliwości zegara i jego stałości. Ważna jest kolejność zachodzących
zdarzeń.
czy moge to tak oprogramowac?:
a) wysylam logiczne 1 na zegar
b) wysylam pierwszy bit z 8
c) wysylam 0 na zegar
d) czekam 1/86 milionowej czesci sekundy (max. czestotliwosc zegata to 86
MHz -
- dane z pdf'a :)
Z maksymalną częstotliwością zegara to raczej ostrożnie. ;-) Weź pod uwagę,
że zbocza sygnałów sterujących docierają do układu z pewnymi opóźnieniami i
poprzesuwane względem siebie. W wyżyłowanym układzie może się okazać, że
zbocze zegara opóźnione na pojemnościach montażowych próbuje zatrzasnąć
dane, które właśnie przestały już być stabilne.
e) powtarzam kroki a-d 7 razy.
f) wysylam jedynke na strobe
f' ) - czekasz min. wymagany czas zapisu
f'') - zdejmujesz jedynkę ze STROBE - bo inaczej latch będzie przezroczysty
g) wysylam jedynke na OE
zależnie od aplikacji - Jeżeli nie grozi ci konflikt z innym układem
pracującym na tą samą szynę to możesz mieć ustawioną cały czas OE=1.
ps: jak bedzie sie nazywal "odwrotny bufor", czyli parallel-to-serial?
Tak. Obejrzyj sobie np. komplementarne układy HCT164 i HCT165 - tyle że w
nich nie ma rejestrów buforowych
--
> Lukasz Sacha <luke_at_nospam_is.com.pl>
>
From: Lukasz Sacha <luke_at_nospam_mroweczka.rms.pl>
Subject: Re: 8-stage shift-and-store bus register (4094)
Date: 2 Aug 2002 23:40:00 GMT
Układ składa się z trzech połączonych bloków:
- ośmiobitowego rejestru przesuwającego, czyli połączonego łancuch ośmiu
przerzutników. Zbocze sygnału zegarowego powoduje przepisanie stanu
przerzutnika (n) do następnego przerzutnika w łańcuchu (n+1). Pierwszy
przerzutnik jest ładowany stanem linii Data. Stan ostaniego przerzutnika
odchodzi w niebyt. Wyjscia rejestru przesuwającego są na wykresie czasowym
opisane jako "Internal Qn"
ok. rozumiem.
- 8-bitowego rejestru równoległego (latch). Podanie sygnału STORAGE=H
powoduje wpisanie do rejestru stanów z wyjść rejestru przesuwnego (Internal
Q)
ok
- 8 bramek z wyjściem trójstanowym separujących linie wyjściowe rejestru
równoległego od wyjściowych nóżek układu Qn. Bramki stają się przezroczyste
po podaniu sygnału OE (Output Enable), w przeciwnym razie wyjścia pozostają
w stanie wysokiej impedancji (HiZ).
wytlumaczysz mi czym jest stan wysokiej impedancji? wiem, ze to ani
zero ani 1, ale cos poza tym?
gory", rejestr czyta kolejny bit.
4) jesli strobe jest w stanie wysokim, to dane z SHIFT rejestru sa
kopiowane do
STORAGE rejestru.
Jeżeli jest to 'latch' (a tak bodajże jest) to podczas STORAGE=H
przerzutniki stają się przezroczyste. Można wtedy bezpośrednio obserwować
proces przesuwania danych w rejestrze przesuwnym
raczej bede najpierw je wgrywal do rejestru przesuwnego, a potem
podawal 1 na strobe. :)
1) czy CLK musi miec stala czestotliwosc? konkretnie chcialbym podlaczyc
CLK do
komputera (poprzez LPT) i uzyc "softwareowego" zegara.
Kostka jest całkowice statyczna. Narzuca wymagań co do minimalnej
częstotliwości zegara i jego stałości. Ważna jest kolejność zachodzących
zdarzeń.
czyli to moze byc dowolny sygnal, typu:
___------_-- _____---- _____--__-----
chodzi mi tu o to, ze nie musi on miec zadnej regularnosci. (?)
- dane z pdf'a :)
Z maksymalną częstotliwością zegara to raczej ostrożnie. ;-) Weź pod uwagę,
że zbocza sygnałów sterujących docierają do układu z pewnymi opóźnieniami i
poprzesuwane względem siebie. W wyżyłowanym układzie może się okazać, że
zbocze zegara opóźnione na pojemnościach montażowych próbuje zatrzasnąć
dane, które właśnie przestały już być stabilne.
z tym czekaniem dokladnie maxymalnej czestotliwosci to byl oczywiscie zart,
niby jakbym mial to tak dokladnie zmierzyc?
swoja droga to tez jest ciekawy problem... jak ja to zmierze? (juz po stronie
kompa (soft)
e) powtarzam kroki a-d 7 razy.
f) wysylam jedynke na strobe
f' ) - czekasz min. wymagany czas zapisu
ile on wynosi? jak nie wiesz, to powiedz czego mam szukac w pdf'ie. bo sam
nie za bardzo wiem.
f'') - zdejmujesz jedynkę ze STROBE - bo inaczej latch będzie przezroczysty
fakt.
g) wysylam jedynke na OE
- zależnie od aplikacji - Jeżeli nie grozi ci konflikt z innym układem
pracującym na tą samą szynę to możesz mieć ustawioną cały czas OE=1.
tak zrobie, bedzie wygodniej.
ps: jak bedzie sie nazywal "odwrotny bufor", czyli parallel-to-serial?
Tak. Obejrzyj sobie np. komplementarne układy HCT164 i HCT165 - tyle że w
nich nie ma rejestrów buforowych
ja znalazlem hef4021. moze byc?
tak w ogole to wielkie dzieki. sam bym tego nie skumal (przynajmniej
przez najblizsze kilka dni). mam co prawda ksiazke do elektroniki cyforwej,
ale zeby przeczytac o rejestrach i cos zrozumiec, musialbym przeczytac
wszystko do rejestrow, a rejestry sa na stronie cos kolo 430 :)
--
Lukasz Sacha <luke_at_nospam_is.com.pl>
From: "Marek Dzwonnik" <mdz_at_nospam_message.pl>
Subject: Re: 8-stage shift-and-store bus register (4094)
Date: Sat, 3 Aug 2002 02:01:15 +0200
Uzytkownik "Lukasz Sacha" <luke_at_nospam_mroweczka.rms.pl> napisal w wiadomosci
news:slrnakm5et.fpb.luke_at_nospam_mroweczka.rms.pl...
wytlumaczysz mi czym jest stan wysokiej impedancji? wiem, ze to ani
zero ani 1, ale cos poza tym?
Tzn. bramka od strony wyjscia zachowuje sie tak, jakby jej nie bylo
(no...prawie, bo pojemnosci zostaja). Tzn. nie wymusza na wyjsciu zadnego
stanu (ani H ani L) i pozwala aby zrobila to jedna z pozostalych bramek
dolaczonych do tej samej linii na magistrali
czyli to moze byc dowolny sygnal, typu:
___------_-- _____---- _____--__-----
chodzi mi tu o to, ze nie musi on miec zadnej regularnosci. (?)
Tak, o ile zachowasz minimalne marginesy czasowe wymagane przez producenta
(ale mowa tu o czasach rzedu 10^0...10^2 ns). Wygenerowanie przebiegów o tak
krótkich odstepach pomiedzy zboczami na pewno nie jest mozliwe z uzyciem
portu LPT :-) O ile oczywiscie nie spróbujesz zmienic stanu danych i zegara
w tej samej operacji zapisu do portu LPT.
ile on wynosi? jak nie wiesz, to powiedz czego mam szukac w pdf'ie. bo sam
nie za bardzo wiem.
http://boss.iele.polsl.gliwice.pl/data/stmicroelectronics/docs/2069.pdf
Tabela na str. 6 i wykresy na stronie 8 prawde Ci powiedza. :)
Np. masz jawnie podana minimalna wartosc : tW = "Clock Pulse Width" oraz tW
= "Strobe Pulse Width"
Zwróc uwage na duze róznice w szybkosci dzialania - zaleznie od technologii
i napiec zasilania. Standardowe uklady CMOS 4000 sa najwolniejsze, ale
zapewniaja najszerszy dopuszczalny zakres zasilania (typ. 3...18V). Uklady z
serii 74HC (2..6V) i 74HCT(4.5..5.5V) sa szybsze, ale w wezszym zakresie
zasilania.
ja znalazlem hef4021. moze byc?
http://boss.iele.polsl.gliwice.pl/data/stmicroelectronics/docs/8216.pdf
Tak - jest to o co pytales. Gdy PS=H nastepuje asynchroniczne zaladowanie
rejestru danymi z linii wejsciowych D1..D8. Gdy PS=0 mozesz taktowac CLK i
odczytywac bit po bicie zapamietany stan kolejnych linii wejsciowych
MDz
From: Lukasz Sacha <luke_at_nospam_mroweczka.rms.pl>
Subject: Re: 8-stage shift-and-store bus register (4094)
Date: 3 Aug 2002 00:43:45 GMT
In article <3d4b1d09_at_nospam_news.home.net.pl>, Marek Dzwonnik wrote:
Tzn. bramka od strony wyjscia zachowuje sie tak, jakby jej nie bylo
(no...prawie, bo pojemnosci zostaja). Tzn. nie wymusza na wyjsciu zadnego
stanu (ani H ani L) i pozwala aby zrobila to jedna z pozostalych bramek
dolaczonych do tej samej linii na magistrali
rozumiem.
Tak, o ile zachowasz minimalne marginesy czasowe wymagane przez producenta
(ale mowa tu o czasach rzedu 10^0...10^2 ns). Wygenerowanie przebiegów o tak
krótkich odstepach pomiedzy zboczami na pewno nie jest mozliwe z uzyciem
portu LPT :-) O ile oczywiscie nie spróbujesz zmienic stanu danych i zegara
w tej samej operacji zapisu do portu LPT.
czyli tak naprawde to nie musze nic odczekiwac. bramka jest szybsza
niz lpt, wiec moge sekwencyjnie wykonwyac operacje i bramka nadazy?
ja znalazlem hef4021. moze byc?
http://boss.iele.polsl.gliwice.pl/data/stmicroelectronics/docs/8216.pdf
Tak - jest to o co pytales. Gdy PS=H nastepuje asynchroniczne zaladowanie
rejestru danymi z linii wejsciowych D1..D8. Gdy PS=0 mozesz taktowac CLK i
odczytywac bit po bicie zapamietany stan kolejnych linii wejsciowych
ok. nie obraz sie, ale jeszcze cie troche pomecze, bo dobrze
tlumaczysz (czyt. tak, ze rozumiem :)
nie za bardzo rozumiem po co mi ten serial input.
mam PL (parallel load). jesli pl=1 to dane wczytuje do rejestru z
wejsc rownoleglych. jesli nie, to (uwaga: cytat z pdf'a):
dana z DS jest przesunieta na pierwsza pozycje rejestru i wszystkie
dane w rejestrze sa przesuniete o 1 w prawo razem z "tikiem" zegara.
koniec cytatu.
zeby przeczytac dane szeregowo, musze dac 0 na PL (zeby sie przesuwaly).
ale wtedy, czy nie trace pierwszego bitu (czy nie jest on nadpisany
przez DS)?
to znaczy moge polaczy DS z pierwszym bitem wejsciowym, tylko jest to
dla mnie wciaz nie jasne...
jaki to ma sens, ze najpierw wpisuje dane z wejsc rownoleglych, a potem,
kiedy juz chce je przeczytac, pierwszy bit jest nadpisany przez DS.
chyba, ze nalezy to rozumiec tak, ze oczekiwany jest tik zegara,
i dopiero wtedy dane sa przesuniete o jeden w prawo, tworzac tym
samym pierwszy bit wolnym i w to wolne miejsce wskakuje DS.
tak byloby rozsadnie... ale niestety tlumaczenie pdf'a sklania mnie
do przyjecia pierwszej wersji. :(
wytlumacz mi to prosze.
--
Lukasz Sacha <luke_at_nospam_is.com.pl>
From: Marek Lewandowski <nospam_at_nospam_poczta.onet.pl>
Subject: Re: 8-stage shift-and-store bus register (4094)
Date: Sat, 03 Aug 2002 19:33:46 GMT
on 3 Aug 2002 00:43:45 GMT in <slrnakm96e.fqg.luke_at_nospam_mroweczka.rms.pl>
Lukasz Sacha wrote:
czyli tak naprawde to nie musze nic odczekiwac. bramka jest szybsza
niz lpt, wiec moge sekwencyjnie wykonwyac operacje i bramka nadazy?
No, z tym to ostrożnie, bo na upartego przez LPT daje się w czystym
asemblerze oprogramowanie pisząc, sygnał video w marnej jakości łapać
;-)
Na początek wstaw opóźnienia nawet delay(1) (1ms), potem sukcesywnie
wywalaj, jak już będzie działało, to się dowiesz, jak wywalisz za dużo
;-)
ok. nie obraz sie, ale jeszcze cie troche pomecze, bo dobrze
tlumaczysz (czyt. tak, ze rozumiem :)
[...]
Ale żeś napierniczył... ;-)
Po kolei: Bez serial Input nie zrobisz łańcuszka, czyli nie połączysz
więcej jak jednej kosztki, ergo nie uzyskasz 32 wejść.
Jednak zostańmy przy bardzo dużych literkach ;-)
W Twoim zastosowaniu:
łączysz 4 kości tak, że Q8 (serial out, SO) pierwszego łączysz z
Serial Input drugiego, SO2 z SI3, SO3 z SI4 a Serial Output czwartego
do pinu WE portu.
SI pierwszej kości podłączasz do masy albo 5V, nie ma znaczenia
(ważne, żeby nie wisiało w powietrzu).
CLK kości łączysz równolegle i na pin WY portu
PL łączysz równolegle i na pin portu.
jedziemy:
PL -> 1 ; do rejestrów wczytany zostale stan 32 pinów równoległych
PL -> 0 ; przestawiamy maszynke na jazdę szeregową
;w tym momencie na SO4 jest już dostępny pierwszy bit z tych 32, co je
trzeba przeczytać -> czytasz WE
CLK -> 1 ; dane w każdym rejestrze przesuwają się o jedno 'oczko'.
Ponieważ wyjścia szeregowe poszczególnych kości połączone są z
wejściami szeregowymi następnych, to nic nie jest tracone (no, poza
tym, co zostało już odczytane
CLK->0
czytasz WE
CLK->1
CLK->0
czytasz WE itd...
Aby przeczytać 32 bity potrzebujesz 31 impulsów zegara.
Jasne?
BTW: napisałem już egzamin, miałem Ci na priva pisać, ale nie wiem,
czy to już nie zostało na grupie rozwiązane...
--
Marek Lewandowski ICQ# 10139051
locustXpoczta|onet|pl
http://locust.republika.pl
[! Odpowiadaj pod cytatem. Tnij cytaty. Podpisuj posty. !]
From: jfox_at_nospam_poczta.onet.pl (J.F.)
Subject: Re: 8-stage shift-and-store bus register (4094)
Date: Sun, 04 Aug 2002 22:15:41 GMT
On 2 Aug 2002 21:30:43 GMT, Lukasz Sacha wrote:
mam pytanie tyczace sie scalakow typu 4096 (8-stage shift-and-store bus
registers). mam pdf'a od 74hct4094 (philips'a).
to co wydaje mi sie, ze rozumiem:
1) mam tu 1 szeregowe wejscie i 8 rownoleglych wyjsc.
No i jedno szeregowe wyjscie.
2) jest zegar, ktory jak rozumiem sluzy do umozliwienia podawania kolejnych z 8
bitow.
3) zagar reaguje na rosnace zbocze, czyli za kazdym razem jak wykres "idzie do
gory", rejestr czyta kolejny bit.
Nie tylko czyta, ale calosc przesuwa [rejestr SHIFT]
4) jesli strobe jest w stanie wysokim, to dane z SHIFT rejestru sa kopiowane do
STORAGE rejestru.
5) jak OE (output enable input) jest w stanie wysokim, to dane z rejestru
STORAGE pojawiaja sie na wyjsciu.
Powiedzmy odwrotnie - jak OE jest w stanie niskim [?] to wyjscia
przechodza w stan wysokiej impedancji.
teraz to czego nie rozumiem:
1) po co w ogole jest SHIFT rejestr i strobe? czy dane z wejscia szeregowego
nie moglyby od razu isc do storage rejestru?
Moglyby, ale czy chcesz sobie zrobic przesuwana reklame, czy 8
[...16,24,32,40,...] dowolnie ustawianych bitow ?
Storage od razu pojawia sie na wyjsciach. Gdyby byl przesuwany,
to przez moment na danym wyjsciu pojawia sie stan przeznaczony
dla innego. No i mamy zaklocenia w pracy urzadzenia.
A tak sobie spokojnie wpisujemy cala informacje do SHIFT,
potem jedna operacja .. i na wyjsciach jednoczesnie pojawiaja
sie nowe dane..
2) co sie stanie jesli wczytam 9 bit z rzedu? czy on
b) zostanie zapisany jako bit 1
Jak w b). Dotychczaswy bit 1 przepisze sie do bit 2, 2->3,
a bit 8 przepadnie. Chyba ze polaczysz kilka 4094 szeregowo i
zostanie przepisany do nastepnego ..
1) czy CLK musi miec stala czestotliwosc? konkretnie chcialbym podlaczyc CLK do
komputera (poprzez LPT) i uzyc "softwareowego" zegara.
Moga byc dowolne impulsy, byle nie za krotkie.
czy moge to tak oprogramowac?:
a) wysylam logiczne 1 na zegar
b) wysylam pierwszy bit z 8
c) wysylam 0 na zegar
d) czekam 1/86 milionowej czesci sekundy (max. czestotliwosc zegata to 86 MHz -
- dane z pdf'a :)
skoro reaguje na zbocze narastajace, to troche inaczej:
a) wysylasz 0 na zegar
b) ustawiasz dane
c) odczekujesz czas t setup - pewnie z 1/176 milionowa
d) wysylasz 1 na zegar
e) czekasz czas t hold [lub minimalny czas wysokiego poziomu zegara]
f) ... dla porzadku byc moze warto 0 wyslac na zegar
b) z a) mozna wymienic lub jednoczesnie podac
ps: jak bedzie sie nazywal "odwrotny bufor", czyli parallel-to-serial?
np 74HC164
J.