logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Rozwiązano] Jak podłączyć przełącznik DIP8 do programowania mini komputera z Z80?

Lionsio 19 Gru 2024 20:56 186 6
REKLAMA
  • #1 21355413
    Lionsio
    Poziom 11  
    Posty: 313
    Pomógł: 12
    Ocena: 24
    Witam, chciałem zbudować bardzo prosty mini komputer z Z80 mający tylko pamięć RAM i przełącznik DIP8 do programowania, wiem że
    Z80 RD łączy się z pinem OE pamięci
    Z80 WR łączy się z pinem WE pamięci
    Z80 MREQ łączy się z pamięcią CE pin
    Piny adresowe Z80 łączą się z pinami Ax pamięci
    Piny danych Z80 łączą się z pinami Dx pamięci
    Ale wtedy nie wiem jak dołożyć przełączniki

    Z góry dziękuje za pomoc
  • REKLAMA
  • Pomocny post
    #2 21355624
    _jta_
    Specjalista elektronik
    Posty: 49088
    Pomógł: 3212
    Ocena: 4249
    A jak chcesz programować? Mam wrażenie, że DIP8 to dużo za mało; może jakieś układy typu bufor magistrali, np. 74HCT244, czy 74LS244?

    Zobacz https://eduinf.waw.pl/inf/retro/004_z80_inst/0003.php - jeśli podasz sygnał BUSREQ=L, i zaczekasz na BUSACK=L, to możesz podawać sygnały do wpisywania programu do pamięci. Ale i tak trzeba podać sygnał RESET=L, żeby po zmianie na H procesor wystartował od początku programu.

    Wpisywanie danych musi przechodzić przez układy buforów magistrali; jeden 74x244 może przekazywać 8 sygnałów, potrzebujesz 8 na dane, 3 na OE/WE/CE, i adres pamięci - nie wiem, ile jej ma być. No i jakoś trzeba przesłać program z komputera, chyba nie chcesz bajt po bajcie wpisywać z przełączników?

    Może lepiej będzie użyć 74x595 - można do nich wysyłać dane szeregowo, wystawiać równolegle, i można z nich podawać sygnały na magistralę bez dodatkowego 74x244; tak samo 8 sygnałów na układ. Ale sygnały BUSREQ/RESET trzeba podawać oddzielnie.
  • REKLAMA
  • Pomocny post
    #3 21355668
    butterfield21
    Poziom 8  
    Posty: 26
    Pomógł: 2
    Ocena: 3
    >>21355413 Twój projekt jest ciekawym przykładem minimalizmu sprzętowego, ale musisz uwzględnić dynamiczny problem arbitrażu szyny danych przy wprowadzaniu przełączników DIP. Kluczowym wyzwaniem jest tutaj zsynchronizowanie dostępu Z80 do magistrali z ręcznym wprowadzaniem danych.

    Najprostsze podejście to implementacja przełączników w formie zewnętrznego bufora trójstanowego, np. układu 74LS245, który separuje sygnały DIP od magistrali danych. Możesz sterować linią *OE tego bufora za pomocą sygnału WAIT Z80, aby zatrzymać procesor na czas ręcznego wprowadzania danych. Alternatywnie, możesz użyć przerwania maskowalnego (INT), aby przełączać procesor w stan obsługi wyjątków przy każdym cyklu programowania z DIP.

    Ważne jest także poprawne rozwiązanie kwestii deaktywacji pamięci RAM podczas ręcznego programowania. Możesz osiągnąć to przez dodatkowy dekoder adresowy, np. 74LS138, który zablokuje linie *CE pamięci podczas aktywności przełączników. Linia MREQ powinna być wówczas odcięta przy użyciu inwertera z bramką NAND (np. 74LS00).

    Jeśli chcesz dodatkowo zobrazować dane na magistrali w trakcie pracy, proponuję zainstalowanie matrycy LED sterowanej przez rejestry przesuwne, co pozwoli na wizualne monitorowanie aktywności sygnałów. W razie problemów pytaj śmiało nas i @ElektrodaBot
  • REKLAMA
  • Pomocny post
    #4 21355673
    ElektrodaBot
    AI od OpenAI ChatGPT4
    Posty: 8862
    Pomógł: 364
    Ocena: 953
    butterfield21 napisał:
    (...) czas odcięta przy użyciu inwertera z bramką NAND (np. 74LS00).

    Jeśli chcesz dodatkowo zobrazować dane na magistrali w trakcie pracy, proponuję zainstalowanie matrycy LED sterowanej przez rejestry przesuwne, co pozwoli na wizualne monitorowanie aktywności sygnałów.
    W razie problemów pytaj śmiało nas i
    Wstępna ocena dostępnych informacji

    Analizując Twój projekt minimalistycznego systemu opartego na procesorze Z80, zauważam, że kluczowym wyzwaniem jest zsynchronizowanie dostępu Z80 do magistrali danych z ręcznym wprowadzaniem danych za pomocą przełączników DIP. Problem arbitrażu magistrali danych jest istotny, ponieważ jednoczesny dostęp procesora i przełączników do magistrali może prowadzić do konfliktów sygnałów, nieprzewidywalnego działania systemu, a nawet uszkodzenia komponentów.

    Bezpośrednia odpowiedź na pytanie

    Aby rozwiązać problem synchronizacji dostępu do magistrali danych przy wprowadzaniu przełączników DIP, zalecam:

    - Zastosowanie bufora trójstanowego: Wprowadzenie układu takiego jak 74LS245 lub nowszego 74HC245, aby oddzielić sygnały przełączników DIP od magistrali danych.
    - Sterowanie linią *OE bufora: Kontrolowanie aktywności bufora za pomocą sygnału WAIT procesora Z80 lub poprzez maskowalne przerwanie (INT), aby zatrzymać procesor podczas ręcznego wprowadzania danych.
    - Dezaktywacja pamięci RAM: Użycie dodatkowego dekodera adresowego (np. 74LS138) do blokowania linii *CE pamięci RAM podczas aktywności przełączników oraz odcięcie linii MREQ za pomocą bramki NAND (np. 74LS00).
    - Wizualizacja danych: Zainstalowanie matrycy LED sterowanej rejestrem przesuwnym (np. 74HC595) do monitorowania sygnałów na magistrali danych.

    Szczegółowa analiza problemu

    Zastosowanie bufora trójstanowego

    Układ 74LS245 to ośmiobitowy dwukierunkowy bufor magistrali z wejściem sterującym *OE (Output Enable) i kierunkiem przepływu danych DIR. Dzięki możliwości pracy w stanie trójstanowym, pozwala na odłączanie sygnałów z przełączników DIP od magistrali danych, gdy nie są one potrzebne.

    - Sterowanie *OE bufora:
    - Za pomocą sygnału WAIT: Podłącz linię *OE do sygnału WAIT procesora Z80. Gdy chcesz wprowadzić dane z przełączników DIP, aktywujesz sygnał WAIT, co zatrzymuje procesor, i jednocześnie umożliwiasz przepływ danych z przełączników przez bufor na magistralę.
    - Użycie przerwania INT: Alternatywnie, możesz generować przerwanie maskowalne, które przełączy procesor w tryb obsługi przerwań. W procedurze obsługi przerwania ustawiasz *OE bufora w stan aktywny, pozwalając na bezpieczne odczytanie danych z przełączników DIP.

    Dezaktywacja pamięci RAM podczas programowania

    Aby uniknąć konfliktów między pamięcią RAM a ręcznym wprowadzaniem danych:

    - Dekoder adresowy 74LS138: Użyj tego układu do sterowania liniami *CE (Chip Enable) pamięci RAM. Poprzez odpowiednie dekodowanie adresów i sygnałów kontrolnych, możesz zablokować dostęp do RAM podczas aktywności przełączników DIP.
    - Odcięcie linii MREQ:
    - Zastosuj bramkę NAND (np. 74LS00) jako inwerter do odcięcia sygnału MREQ procesora Z80. To zapobiegnie niepożądanemu dostępowi do pamięci podczas ręcznego wprowadzania danych.

    Wizualizacja danych na magistrali

    Matryca LED sterowana przez rejestry przesuwne (np. 74HC595) pozwoli na monitorowanie sygnałów na magistrali danych:

    - Rejestry przesuwne: Umożliwiają sterowanie wieloma diodami LED przy użyciu niewielkiej liczby linii sterujących.
    - Zalety: Wizualne przedstawienie stanów magistrali ułatwi debugowanie i zrozumienie działania systemu.

    Aktualne informacje i trendy

    - Nowoczesne układy logiczne:
    - 74HC245/74HCT245: Nowsze odpowiedniki 74LS245, oferujące wyższe prędkości i niższy pobór mocy.
    - 74LVC245: Układ o niskim napięciu zasilania, kompatybilny z systemami 3,3 V.
    - Rozwiązania programowalne:
    - CPLD/FPGA: W 2024 roku coraz powszechniejsze jest użycie układów programowalnych do implementacji logiki sterującej, co zwiększa elastyczność projektu.
    - Interfejsy komunikacyjne:
    - I2C/SPI: Możesz rozważyć dodanie magistral komunikacyjnych do przyszłej rozbudowy systemu.

    Wspierające wyjaśnienia i detale

    - Debouncing przełączników DIP:
    - Filtry RC: Prosty układ eliminujący drgania styków.
    - Układy Schmitta: Np. 74HC14, zapewniający czystą zmianę stanów logicznych.
    - Sterowanie sygnałami:
    - Upewnij się, że sygnały sterujące są odpowiednio zsynchronizowane z zegarem procesora, aby uniknąć nieprzewidzianych kolizji na magistrali.
    - Zasilanie:
    - Zastosuj odpowiednie filtrowanie i stabilizację napięcia zasilającego, szczególnie jeśli dodajesz dodatkowe układy logiczne.

    Aspekty etyczne i prawne

    - Bezpieczeństwo układów: Unikając konfliktów na magistrali i przeciążeń, chronisz komponenty przed uszkodzeniami.
    - Zgodność z normami: Upewnij się, że Twój projekt spełnia obowiązujące normy EMC i bezpieczeństwa elektrycznego.

    Praktyczne wskazówki

    - Testowanie modułowe: Przed integracją całości przetestuj osobno każdy moduł (bufor, dekoder, matrycę LED).
    - Projekt PCB: Zwróć uwagę na rozmieszczenie ścieżek sygnałowych i zasilania, aby zminimalizować zakłócenia.
    - Dokumentacja: Prowadź szczegółową dokumentację projektu, co ułatwi ewentualne modyfikacje i diagnostykę.

    Ewentualne zastrzeżenia lub uwagi dodatkowe

    - Ograniczenia prędkości: Dodanie dodatkowych układów może wprowadzić opóźnienia sygnałów. Sprawdź, czy nie wpłynie to negatywnie na działanie systemu przy wybranej częstotliwości zegara.
    - Kompatybilność napięciowa: Jeśli używasz układów z różnych rodzin (np. 74LS i 74HC), upewnij się, że są one kompatybilne pod względem poziomów napięć logicznych.

    Sugestie dalszych badań

    - Obsługa przerwań w Z80: Pogłębienie wiedzy na temat mechanizmu przerwań pozwoli na bardziej zaawansowane sterowanie procesorem.
    - Nowoczesne układy peryferyjne: Rozważenie dodania interfejsów takich jak UART czy SPI do komunikacji z innymi urządzeniami.
    - Programowalne układy logiczne: Eksploracja możliwości wykorzystania CPLD lub FPGA w przyszłych projektach.

    Krótkie podsumowanie

    Aby zapewnić poprawne działanie Twojego minimalistycznego systemu z Z80 i przełącznikami DIP, kluczowe jest zastosowanie bufora trójstanowego do izolacji sygnałów oraz odpowiednie sterowanie dostępem do magistrali danych. Monitorowanie aktywności magistrali za pomocą matrycy LED może znacząco ułatwić debugowanie. Pamiętaj o dezaktywacji pamięci RAM podczas ręcznego wprowadzania danych i uwzględnieniu aktualnych trendów technologicznych przy wyborze komponentów.

    Pytania do użytkownika

    - Czy masz dostęp do nowszych układów logicznych (np. 74HC, 74LVC), które mogą poprawić efektywność Twojego projektu?
    - Czy potrzebujesz wsparcia przy implementacji obsługi przerwań w procesorze Z80?
    - Czy planujesz rozbudowę systemu o dodatkowe funkcjonalności lub interfejsy komunikacyjne?

    Jeśli masz dodatkowe pytania lub potrzebujesz bardziej szczegółowych informacji, chętnie pomogę w dalszych etapach projektu.
    Możesz mnie wywołać w każdym temacie pisząc @ElektrodaBot. Zastrzeżenie: Niektóre odpowiedzi udzielone przez ElektrodaBota mogą być niedokładne. Elektroda nie ponosi odpowiedzialności za dokładność, rzetelność ani kompletność prezentowanych informacji. Wszystkie odpowiedzi ElektrodaBota powinny być zweryfikowane przez użytkownika. OpenAI może monitorować i zapisywać informacje wprowadzane po wywołaniu ElektrodaBota.
  • REKLAMA
  • Pomocny post
    #5 21355821
    _jta_
    Specjalista elektronik
    Posty: 49088
    Pomógł: 3212
    Ocena: 4249
    Do arbitrażu magistrali służą sygnały BUSREQ/BUSACK; WAIT jest do przedłużania operacji, więc raczej "zamrozi" sygnały zamiast wyłączyć.

    Jeśli magistrala ma być zajęta przez dłuższy czas, to trzeba robić odświeżanie pamięci, albo użyć pamięci statycznej.
  • #6 21355827
    gregor124
    Poziom 29  
    Posty: 1645
    Pomógł: 99
    Ocena: 868
    Zależy, do czego chcesz użyć tych przełączników.
    Czy do wprowadzania danych do pamięci, czy do bezpośredniego ustawiania danych dla procesora?
    W tym drugim przypadku musiałbyś zbudować układ do pracy krokowej.
    Pomogłem? Kup mi kawę.
  • #7 21355961
    Lionsio
    Poziom 11  
    Posty: 313
    Pomógł: 12
    Ocena: 24
    Ok, bardzo dziękuje za pomoc

Podsumowanie tematu

✨ W dyskusji poruszono kwestie podłączenia przełącznika DIP8 do mini komputera opartego na procesorze Z80. Użytkownik zadał pytanie dotyczące synchronizacji dostępu Z80 do magistrali danych podczas ręcznego wprowadzania danych. Odpowiedzi sugerowały zastosowanie buforów trójstanowych, takich jak 74LS245 lub 74HC245, aby oddzielić sygnały DIP od magistrali. Wskazano również na konieczność kontrolowania aktywności bufora za pomocą sygnału WAIT lub przerwań maskowalnych (INT). Dodatkowo, omówiono problem arbitrażu magistrali oraz deaktywacji pamięci RAM podczas programowania. Zasugerowano użycie dekodera adresowego, np. 74LS138, do blokowania linii *CE pamięci.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA