Dlaczego w mikroprocesorze 8085 częstotliwość zegara jest podzielona na dwa?

16

Dlaczego produkowana częstotliwość zegara wynosi 6,144 MHz, ale wewnętrznie (procesor 8085) wykorzystuje tylko 3,072 MHz. Co również prowadzi do określonej wartości 6,144 w zegarze.

Znalazłem odpowiedź na yahoo .... http://answers.yahoo.com/question/index?qid=20080810090119AAurr2i

ale muszę przyznać, że nadal nie rozumiem tego dobrze. Czy mógłby ktoś z was wyrzucić na ten temat kilka linijek?

loxxy
źródło
2
odpowiedź yahoo jest bardzo, bardzo słaba. Proszę wybacz mi, jeśli znasz pisarza.
Kortuk
hmm, właśnie wziąłem mikroprocesory w tym semestrze, więc nie mam pojęcia, jak źle to mogło być. Chyba mam odpowiedź tutaj ... dziękuję.
loxxy
1
MC6800 był jeszcze bardziej wymagający. Miał dwa wejścia zegarowe (phi1, phi2, przesunięcie fazowe o około 180 stopni), które musiały się nie nakładać , tzn. Jedna faza musiała być niska przez kilka ns, zanim druga mogła wzrosnąć. Był dodatkowy układ scalony oscylatora (MC6810?) Do generowania tych sygnałów zegarowych.
Twaróg
1
@ Curd Paskudne wyczucie czasu i musiało wahać się bardzo blisko ZARÓWNO szyn zaopatrzenia (rzadko w tamtych czasach). pdf.datasheetarchive.com/indexerfiles/Scans-000/… MC6871. MC6810 był statycznym układem RAM 128 x 8 (!).
Spehro Pefhany

Odpowiedzi:

15

Jednym z powodów podzielenia zegara przez dwa jest uzyskanie fali prostokątnej o częstotliwości nawet 50%. Może być tak, że 8085 wewnętrznie wykorzystuje obie krawędzie zegara i nie działałby, gdyby jedna połowa cyklu była znacznie krótsza niż druga.

W czasach, gdy 8085 był nowy, te ładne oscylatory w puszkach nie były powszechne, a ludzie często brukowali ze sobą obwody zegara z dyskretnych kryształów, kondensatorów i bramek logicznych. Dzielenie przez dwa zapewnia równomierne rozmieszczenie wznoszących i opadających krawędzi.

Jeśli chodzi o 6,144 MHz, przekonasz się, że można go podzielić przez liczbę całkowitą, aby uzyskać wspólne wartości szybkości transmisji, co najmniej do 38400.


śledzić ...

Patrząc na arkusz danych Intela dla 8085, istnieją trzy interesujące stwierdzenia

  1. 8085 zawiera wszystkie funkcje generatora zegarowego 8224 i kontrolera systemowego 8228 przewidzianych dla 8080A

  2. X1 i X2: są podłączone do sieci krystalicznej, LC lub RC w celu sterowania generatorem wewnętrznego zegara. Częstotliwość wejściowa jest dzielona przez 2, aby podać wewnętrzną częstotliwość roboczą procesora.

  3. CLK: Wyjście zegara do wykorzystania jako zegar systemowy. Okres CLK jest dwa razy większy niż okres wejściowy X1, X2.

Tak więc, spekulacje na temat używania dziwnych krawędzi zegara do przesuwania elementów wewnętrznie na bok, staje się oczywiste, że kiedy zaprojektowali 8085, Intel zastępował potrzebę specjalnego kontrolera zegara, integrując tę ​​funkcję z układem. Podział podstawy czasu X1-X2 na pół przed wysłaniem go jako CLK zapewnia, że system uzyska ładny, równomierny cykl pracy, jeśli nic więcej.

JustJeff
źródło
1
często różne etapy mikrokontrolera muszą być poza fazą z powodu opóźnienia logicznego. zastosowanie oscylatora o większej prędkości oraz podzielenie i użycie dwóch różnych krawędzi dla różnych zestawów logiki może znacznie obniżyć koszty urządzenia. JustJeff od razu używa oscylatora, który jest wielokrotnością standardowych częstotliwości zegara. Może to bardzo ułatwić transfer z dużą prędkością.
Kortuk
2
Czy jesteś pewien deklaracji cyklu pracy? Miałem wrażenie, że cykl instrukcji może wymagać wielu cykli zegara (np. Jeden cykl instrukcji składa się z cyklu pobierania i cyklu wykonywania). Jestem prawie pewien, że nawet współczesne PIC mają 4-etapowy cykl instrukcji, dlatego w całym arkuszu danych jest cały Fosc / 4
ajs410
1
@ ajs410 - 8085 z pewnością potrzebowałby wielu cykli zegara, aby wykonać instrukcję; wszystkie 8-bitowe mikroskopy z tamtego czasu (o czym wiem) zajęły co najmniej dwa zegary, aby cokolwiek zrobić. Mam tu na myśli wyłącznie układ wewnętrzny. Jeśli spojrzysz na schematy blokowe tych starych zwierząt, zobaczysz, że mają one wewnętrzne szyny, tymczasowe rejestry i tak dalej, i spekuluję, że mogą używać obu krawędzi. Wszelkie zewnętrzne cykle magistrali przebiegałyby między krawędziami o tej samej polaryzacji.
JustJeff,
6

W czasie projektowania tego układu ludzie używali w procesorze jak najmniejszej liczby tranzystorów, aby były wystarczająco małe, aby zmieściły się na dostępnych układach.

Podejrzewam, że praktycznie każdy „rejestr” (zarówno rejestry widoczne dla programistów, jak i wewnętrzne zatrzaski mikroarchitektu) w procesorze tej epoki zapisywał dane w przezroczystej bramkowanej zatrzasku D lub coś podobnego. Obecnie na chipie jest mnóstwo tranzystorów, więc łatwiej jest używać pełnych przerzutników D typu master-slave, nawet jeśli używają dwa razy więcej tranzystorów.

Wiele instrukcji pobiera dane z rejestru A, łączy je z innymi danymi z ALU i zapisuje wynik z powrotem w rejestrze A. Jest to dość łatwe, jeśli rejestr A jest implementowany z pełnym przerzutnikiem D typu master-slave.

Ale jeśli rejestr A jest przezroczystą bramkowaną zapadką D, potrzebne są nie nakładające się zegary. Użyj impulsu na jednym zegarze, aby zapisać gdzieś jakiś wynik pośredni (podczas gdy rejestr A utrzymuje stałą wyjściową), a następnie impulsu na innym zegarze, aby załadować rejestr A nową wartością (podczas gdy rejestr pośredni utrzymuje stałą wyjściową).

Wymaga to zegara 2-fazowego. Najłatwiejszym sposobem na uzyskanie nie nakładającego się 2-fazowego zegara (w czasach, gdy tranzystorów było mało) był mały obwód zewnętrzny, który pobiera zegar wejściowy i dzieli go na dwa.

Z biegiem czasu ludzie wymyślili, jak pakować coraz więcej tranzystorów na układ scalony. Dlatego osoby projektujące procesory zintegrowały coraz więcej elementów wokół procesora w pełny system komputerowy z procesorem.

Czytając między wierszami artykułu na temat sygnału z Wikipedii , mam wrażenie, że ludzie, którzy zaprojektowali 8085 i 6502 oraz inne układy z tamtej epoki, mieli nieco więcej miejsca niż poprzednia generacja zintegrowanych procesorów i zdecydowali, że będą najlepsi korzystanie z tego pokoju polegało na umieszczeniu tego małego obwodu zewnętrznego na chipie. Ale wszystkie rejestry zachowały tę samą zapadkę D tak jak poprzednio.

Dlatego właśnie częstotliwość zegara dzieli się na dwa. Możesz pomyśleć o pierwszym zewnętrznym impulsie zegarowym generującym impuls na wewnętrznym sygnale zegarowym phase_one, aby zaktualizować ten pośredni rejestr wyników, oraz drugim impulsie z zewnętrznego zegara generującego impuls na wewnętrznym sygnale zegarowym phase_one, aby zaktualizować rejestr widoczny dla programisty.

Davidcary
źródło
Jeśli zatrzask nigdy nie przejdzie więcej niż kilka mikrosekund bez ponownego załadowania, można jeszcze bardziej uprościć obwód, tak aby „zatrzask” był niczym więcej niż pojedynczą bramką tranzystorową i falownikiem.
supercat
1
Od czasu napisania powyższego przyjrzałem się projektowi 6502; wiele wewnętrznych magistral jest napędzanych bezwarunkowo wysoko na jednej fazie zegarowej, a następnie podczas drugiej fazy zegarowej wybrany rejestr może obniżyć odpowiednie bity do minimum. Jeśli istnieje np. Pięć rejestrów, które mogą wysyłać dane do magistrali, oznacza to, że zamiast potrzebować urządzenia podciągającego dla każdego wyjścia rejestru, układ może po prostu użyć jednego przełączanego urządzenia podciągającego i dwóch dwóch szeregowych tranzystorów dla każdego rejestru w razie potrzeby pociągnąć autobus w dół. Spodziewałbym się, że 8085 prawie na pewno używa podobnych sztuczek.
supercat
2

Istnieje wiele powodów, aby podzielić cykl instrukcji na wiele cykli zegara. Dobrym przykładem jest dostęp do głównej magistrali pamięci.

Większość współczesnych procesorów to architektury Von-Neumann; to znaczy, że zarówno ich kod, jak i dane znajdują się w tym samym układzie pamięci. Cóż, jeśli chcesz przeczytać instrukcję, a ta instrukcja załaduje zmienną z pamięci ... to są dwa wejścia do pamięci. Ale większość pamięci to tylko jeden port (to znaczy, że może wykonać tylko jeden odczyt lub zapis na cykl). Więc jak czytasz instrukcję i czytasz swoją zmienną?

Rozwiązaniem jest zastosowanie dwustopniowego cyklu instrukcji. Pierwszy etap pobierze instrukcję z pamięci, a drugi etap może następnie odczytać (lub zapisać!) Zmienną z pamięci głównej.

Niektóre starsze żetony poszły jeszcze dalej. Wcześniej, jeśli twój układ miał 16-bitową pamięć adresowalną, ale zewnętrzna magistrala adresowa ma tylko 8 bitów, to zapoznaj się z włączeniem blokady adresu. Jeden cykl zegara wysyła górne 8 bitów 16-bitowego adresu, a następny cykl zegara wysyła dolne 8 bitów. Trzeci cykl mógłby następnie odczytać / zapisać zmienną z / do pamięci.

Istnieją inne, lepsze powody, aby mieć cykl instrukcji o długości wielu cykli zegara. Jednym z najlepszych powodów jest potokowanie. Jest to sztuczka stosowana przez współczesne procesory w celu pełniejszego wykorzystania wszystkich jednostek wykonawczych dostępnych w układzie; na przykład, podczas wykonywania jednej instrukcji, następna jest pobierana w tym samym czasie.

ajs410
źródło
3
Nie sądzę, że OP pyta, dlaczego rozłożyłeś instrukcję na wiele zegarów, ale raczej, dlaczego 8085 jest zaprojektowany tak, aby wymagał karmienia go zegarem 2X (który następnie dzieli wewnętrznie), a nie tylko przyjmowaniem zamierzonego częstotliwość zegara bezpośrednio.
JustJeff,
1
wszystko, co powiedziałeś o instrukcjach, jest jednak włączone.
JustJeff,
1

Wewnętrznie rdzeń 8085A wymaga zegara dwufazowego. Wewnętrzna logika, która wyprowadza dwie fazy zegara, dzieli również zegar wejściowy przez dwa. Jak już wspomniano, powodem użycia zegara wejściowego 6,144 MHz jest szybkość transmisji, układ będzie działał dobrze przy 6 MHz. Układ ma w rzeczywistości 3 MHz, wymagając kryształu 6 MHz, ale działa z radością z częstotliwością 6,144 MHz, co zapewnia łatwiejsze generowanie prędkości transmisji (Uart można taktować z częstotliwością 6,144 MHz z oscylatora napędzającego 8085 lub z 3,072 MHz z wyjścia CLK w 8085) zapewniając wiele użytecznych prędkości transmisji). Nadal używam tych archaicznych układów do wykonywania specjalnych funkcji w niektórych moich robotach. Taktuję Uarts własnym oscylatorem i 8085A za pomocą oscylatora 6,4 MHz, który pracuje z chipem na 3,2 MHz. The 3. 2MHz ładnie dzieli się, aby zapewnić zegar 40KHz dla moich przetworników ultradźwiękowych. Bardziej sensowne jest używanie bardziej nowoczesnych urządzeń IC w moich botach, ale mam mnóstwo starych 8085, Z80, 63C09 i 63C09E, 68B09 i 68B09E itp., Z którymi naprawdę lubię grać.

Puszki i taśma klejąca
źródło
0

Zegar to tylko chwila, w której chcesz, aby wydarzenie miało miejsce. Teraz nie preferujemy wyzwalania poziomu w obwodach cyfrowych, ponieważ gdy poda się więcej czasu, może wystąpić interakcja między różnymi obwodami w mikroprocesorze, co prowadzi do zwarć. Więc idziemy na wyzwalanie krawędzi. Teraz mikroprocesor nie wie, kiedy nastąpiło wyzwolenie zbocza. Rozumie tylko 1 lub 0. Zatem flip-flop jest wymagany do uzyskania wartości 1 i 0 za każdym razem, gdy zostanie wykryte zbocze zegara. Dlatego konieczne staje się użycie flip-flopa. W rezultacie częstotliwość zegara jest dzielona przez dwa.

Avinash
źródło