Skonstruowalem taki uklad jak widać w załączniku. Jest to uklad do testow odczytu i zapisu danych do pamieci SRAM.
Przełącznikami S1-S8 ustawia się stan linii magistrali adresowo danowej.
S9 i S10 sterują przerzutnikiem.
S9 - CLK
S10 - NOT CLR
S11-S13 sterują pamięcią
S11 - WE (Write Enable)
S12 - OE (Output Enable)
S13 - CS (Chip Selekt)
S15-S14, przelaczaja sygnal we/wy pamieci miedzy magistrala danych, a wizualizacja na diodach.
Problem w tym, że uklad nie do końca działa. Oto procedura ktora wykonuje:
1. Ustawiam S1-S8 jakis adres, S9 zwieram do napiecia by zatrzasnąć adres, odklikuje S9.
2. Ustawiam na S1-S8 dana do zapisania, sprawdzam czy S15-S17 ustawione sa na polaczenie z S1-S8.
3. ~WE = 1, ~OE=1, ~CS = 0;
4. Zwieram ~WE do masy by zapisac dana, nastepnie odklikuje spowrotem na 5V
5. Przelaczam S15-S17 na diody i zwieram do masy ~OE by odczytac dane.
I tu pojawia sie problem bo jak widzac na zalaczonym rysunku jedna z diod, ktora powinna, nie zaświeciła się.
Co dziwniejsze, nie pali sie ta dioda, ktora ma najwieksze napiecie na linii. Oto stan linii w czasie odczytu pamieci(w nawiasach podalem stan oczekiwany, ktory powinien byc).
r1 - 0.176V (0V)
r2 - 2.467V (+5V) - świeci się
r3 - 0.176V (0V)
r4 - 2.467V (+5V) - świeci się
r5 - 0.804V (0V)
r6 - 3.013V (+5V) - nie świeci !
r7 - 0.804V (0V)
r8 - 0.804V (0V)
Pytania:
1). 2.46V jest na granicy przełączanai między logicznym zerem i jedynka, powiedzial bym, ze nawet bardziej prawdopodobne, że jest to wlasnie logiczne zero, czemu tak male napiecie jest?
2.) Dlaczego nie swieci sie dioda na lini r6, mimo, ze na tej lini panuje wyzsze napiecie, niz na liniach r2 i r4, gdzie diody się świecą ?
Problem z obsługą pamięci SRAM
No to kolega narobił sobie kaszany. Faktycznie dziwne. Spróbuj dodać do tych diód odczytowych buforek np. '573 i na przełączniki też. Wszak znika ci wtedy potrzeba strobowania sygnałów (znika jeden przełącznik) i stany napięciowe są wiarygodne. Jeśli ten symulator jest czymś więcej niż taki Crocodyle Clips to zwięks oporności do 220Ω albo nawet więcej i dodaj drabinki rezystorowe na wszystkie przełączniki do +5V. W rzeczywistości taki układ naraziłby na szwank twoją krzemową pamięć.
PZDR
GrzesiekG
PZDR
GrzesiekG
Rezystory tu tylko (albo aż) ograniczają prąd kiedy SRAM wystawia dane na wyjście. Daj 230 do 330 ohm ale przez latch o którym pisałem (74HC573).
Wystarczą rezystory przy +5V. Widzisz stare układy logiczne i pamięci (74 ale bez literek w środku np. 74573) tego wymagały ze względu na budowę ich wejść, ale w technologii CMOS czyli obecnie nie jest to wymagane, natomiast rezystory do + nie zaszkodzą. dobrze by było do każdego przycisku oddzielny rezystor, choć wydaje mi się że i tak winno grać. Naucz się jednach takich zdrowych nawyków.
Nie gwarantuje że to pomoże w symulacji, ale jestem prawie na 100% pewny, że zadziała w rzeczywistości.
PZDR
Wystarczą rezystory przy +5V. Widzisz stare układy logiczne i pamięci (74 ale bez literek w środku np. 74573) tego wymagały ze względu na budowę ich wejść, ale w technologii CMOS czyli obecnie nie jest to wymagane, natomiast rezystory do + nie zaszkodzą. dobrze by było do każdego przycisku oddzielny rezystor, choć wydaje mi się że i tak winno grać. Naucz się jednach takich zdrowych nawyków.
Nie gwarantuje że to pomoże w symulacji, ale jestem prawie na 100% pewny, że zadziała w rzeczywistości.
PZDR
Czy teraz układ dobrze wygląda?
Jeśli chodzi o działanie to funkcjonuje, napisałem na kartce tabelke z kilkoma adresami i wartościami, które zapisałem do pamieci, a później je odczytałem.
Jednak są dwa "ale":
- Nie wiedzieć czemu w podglądzie zawartości pamieci w multisimie nie widać danych które do niej zapisałem(mimo, że moge je odczytać).
- Co jakis czas "losowo" wyskakuje błąd "timestep too small", dzieje się tak, od czasu do czasu przy przełaczaniu przełączników. Nie zauważylem jakiejs specjalnej zaleznosci czasami moge calkiem sporo popracowac na tym symulowanym ukladzie, a czasami wywala sie juz na np trzecim przelaczeniu....
Jeśli chodzi o działanie to funkcjonuje, napisałem na kartce tabelke z kilkoma adresami i wartościami, które zapisałem do pamieci, a później je odczytałem.
Jednak są dwa "ale":
- Nie wiedzieć czemu w podglądzie zawartości pamieci w multisimie nie widać danych które do niej zapisałem(mimo, że moge je odczytać).
- Co jakis czas "losowo" wyskakuje błąd "timestep too small", dzieje się tak, od czasu do czasu przy przełaczaniu przełączników. Nie zauważylem jakiejs specjalnej zaleznosci czasami moge calkiem sporo popracowac na tym symulowanym ukladzie, a czasami wywala sie juz na np trzecim przelaczeniu....
Hm... Jeszcze raz podkreślam, nie używam tego programu, więc nie wiem jak może się zachowywać przy symulacji, ale dostrzegam zasadnicze błędy:
1) Diody na wyjściu dałeś do +5V więc sygnał dostajesz zanegowany
2) Co do tych 'timestep' to wydaje mi się, że musisz coś w opcjach symulacji poszperać.
Jeszcze jedna rzecz:
widzisz, na przyciski dałeś układ 4010 a do zatrzaskiwania układ 74LS373.
Są to dwie różne rodziny układów różniące się przede wszystkim zakresami napięć wejściowych i wyjściowych. Pierwszy wykonany techniką CMOS, czyli wejścia są odizolowane od wyjść i nie płynie żaden prąd. Drugi zaś w technice TTL czyli prąd z WEJŚCIA WYPŁYWA. Ale to nie jest jeszcze takie straszne i twój układ pracuje, bo CMOS logiczną '1' na wyjściu da prawie +5V a '0' - prawie 0V. Natomiast TTL na wyjściu przy logicznym '1' da coś około 3.6V a dla '0' - okolice 1V.
Tak więc dla bezpieczeństwa nigdy nie mieszaj TTL i CMOS w swoich projektach a jeśli na prawdę musisz, to zastosuj specjalne bufory przerabiające napięcia.
Jako że rodzina 74' jest bogatsza w różne układy i w ogóle szybsza od CMOS4xxx to konstruktorzy stworzyli specjalną rodzinę 74HCxxx mająca swoje odpowiedniki z 74xxx ale już w technice CMOS.
Trochę namieszałem, więc radzę Ci zajrzeć na źródła elportalu.
PZDR
1) Diody na wyjściu dałeś do +5V więc sygnał dostajesz zanegowany
2) Co do tych 'timestep' to wydaje mi się, że musisz coś w opcjach symulacji poszperać.
Jeszcze jedna rzecz:
widzisz, na przyciski dałeś układ 4010 a do zatrzaskiwania układ 74LS373.
Są to dwie różne rodziny układów różniące się przede wszystkim zakresami napięć wejściowych i wyjściowych. Pierwszy wykonany techniką CMOS, czyli wejścia są odizolowane od wyjść i nie płynie żaden prąd. Drugi zaś w technice TTL czyli prąd z WEJŚCIA WYPŁYWA. Ale to nie jest jeszcze takie straszne i twój układ pracuje, bo CMOS logiczną '1' na wyjściu da prawie +5V a '0' - prawie 0V. Natomiast TTL na wyjściu przy logicznym '1' da coś około 3.6V a dla '0' - okolice 1V.
Tak więc dla bezpieczeństwa nigdy nie mieszaj TTL i CMOS w swoich projektach a jeśli na prawdę musisz, to zastosuj specjalne bufory przerabiające napięcia.
Jako że rodzina 74' jest bogatsza w różne układy i w ogóle szybsza od CMOS4xxx to konstruktorzy stworzyli specjalną rodzinę 74HCxxx mająca swoje odpowiedniki z 74xxx ale już w technice CMOS.
Trochę namieszałem, więc radzę Ci zajrzeć na źródła elportalu.
PZDR