생성 된 클럭 주파수가 6.144MHz이지만 내부적으로 (8085 프로세서) 3.072MHz 만 사용하는 이유는 무엇입니까? 또한 시계에서 6.144의 특정 값으로 이어집니다.
yahoo에서 답을 찾았습니다 .... http://answers.yahoo.com/question/index?qid=20080810090119AAurr2i
그러나 나는 아직도 그것을 잘 얻지 못했다는 것을 인정해야합니다. 이 중 몇 줄을 버리시겠습니까?
생성 된 클럭 주파수가 6.144MHz이지만 내부적으로 (8085 프로세서) 3.072MHz 만 사용하는 이유는 무엇입니까? 또한 시계에서 6.144의 특정 값으로 이어집니다.
yahoo에서 답을 찾았습니다 .... http://answers.yahoo.com/question/index?qid=20080810090119AAurr2i
그러나 나는 아직도 그것을 잘 얻지 못했다는 것을 인정해야합니다. 이 중 몇 줄을 버리시겠습니까?
답변:
클록을 2로 나누는 한 가지 이유는 50 % 듀티 사이클 구형파를 얻는 것입니다. 8085는 내부적으로 두 클럭 에지를 모두 사용하며 사이클의 절반이 다른 클럭 에지보다 훨씬 짧은 경우에는 작동하지 않을 수 있습니다.
8085가 처음 등장했을 당시, 그처럼 통조림으로 만들어진 훌륭한 발진기는 흔하지 않았으며, 사람들은 종종 이산 결정, 커패시터 및 논리 게이트에서 클록 회로를 함께 뭉쳤습니다. 2로 나누면 상승 간격과 하강 간격이 동일하게 유지됩니다.
6.144MHz의 경우, 최소 38400까지 일반적인 보드 율 값을 얻기 위해 정수로 나눌 수 있습니다.
8085에 대한 인텔 데이터 시트를 보면 세 가지 흥미로운 진술이 있습니다.
8085는 8224 클럭 생성기 및 8228 시스템 컨트롤러가 8080A에 제공 한 모든 기능을 통합합니다
X1 및 X2 : 크리스탈, LC 또는 RC 네트워크에 연결되어 내부 클록 생성기를 구동합니다. 입력 주파수는 2로 나누어 프로세서의 내부 작동 주파수를 제공합니다.
CLK : 시스템 클록으로 사용하기위한 클록 출력. CLK주기는 X1, X2 입력주기의 두 배입니다.
따라서 클럭의 홀수 에지를 사용하여 내부적으로 물건을 옮기는 것에 대한 추측은 8085를 설계 할 때 인텔이 해당 기능을 칩에 통합하여 특수 클럭 컨트롤러의 필요성을 대체하고 있음이 분명해졌습니다. CLK로 출력하기 전에 X1-X2 타임베이스를 반으로 나누면 시스템 이 다른 경우에도 좋은 듀티 사이클을 얻을 수 있습니다.
이 칩이 디자인 될 당시 사람들은 CPU에서 가능한 적은 수의 트랜지스터를 사용하여 사용 가능한 칩에 맞도록 충분히 작게 만들었습니다.
나는 그 시대의 CPU에있는 실질적으로 모든 "레지스터"(프로그래머가 볼 수있는 명령어 세트 레지스터와 내부 마이크로 아키텍처 래치 둘 다)가 투명한 게이트 D 래치 또는 이와 유사한 것으로 데이터를 저장했다고 생각한다. 요즘에는 칩에 트랜지스터가 많이 있으므로 두 배나 많은 트랜지스터를 사용하더라도 풀 마스터 슬레이브 D 플립 플롭을 사용하는 것이 더 간단합니다.
많은 명령어는 일부 레지스터 A에서 데이터를 가져 와서 다른 데이터와 ALU와 결합한 후 결과를 레지스터 A에 다시 저장합니다. 레지스터 A가 전체 마스터-슬레이브 D 플립 플롭으로 구현 된 경우 매우 쉽습니다.
그러나 레지스터 A가 투명 게이트 D 래치 인 경우 겹치지 않는 클럭이 필요합니다. 한 클럭에 펄스를 사용하여 어딘가 중간 결과를 어딘가에 저장하고 (레지스터 A가 출력 상수를 유지하는 동안) 다른 클럭에 펄스를 사용하여 레지스터 A에 새로운 값을로드합니다 (중간 레지스터가 출력 상수를 유지함).
2 상 클럭이 필요합니다. 겹치지 않는 2 상 클록 (트랜지스터가 부족한 시대)을 만드는 가장 쉬운 방법은 입력 클록을 가져 와서 2로 나누는 작은 외부 회로였습니다.
시간이 지남에 따라 사람들은 IC에 점점 더 많은 트랜지스터를 포장하는 방법을 알아 냈습니다. 따라서 CPU를 설계하는 사람들은 전체 컴퓨터 시스템에서 CPU 주변에 점점 더 많은 것들을 CPU 칩에 통합했습니다.
Wikipedia clock signal article 의 라인 사이를 읽으면서 8085와 6502를 디자인 한 사람들과 그 시대의 다른 칩을 이전 세대의 통합 CPU보다 조금 더 여유가 있다는 인상을 받았습니다. 그 방의 사용은 그 작은 외부 회로를 칩에 두는 것이 었습니다. 그러나 모든 레지스터를 이전과 동일한 게이트 D 래치로 유지했습니다.
그래서 클럭 주파수가 2로 나뉩니다. 첫 번째 외부 클럭 펄스는 phase_one 내부 클럭 신호에서 펄스를 생성하여 중간 결과 레지스터를 업데이트하고 외부 클럭에서 두 번째 펄스는 phase_two 내부 클럭 신호에서 펄스를 생성하여 프로그래머가 볼 수있는 레지스터를 업데이트 할 수 있습니다.
명령주기를 여러 클록 주기로 나누는 데는 여러 가지 이유가 있습니다. 좋은 예는 메인 메모리 버스에 액세스하는 것입니다.
대부분의 최신 프로세서는 Von-Neumann 아키텍처입니다. 즉, 그들의 코드와 데이터는 모두 동일한 메모리 칩에 존재합니다. 명령을 읽으려면 해당 명령이 메모리에서 변수를로드 할 것입니다. 그것은 두 개의 메모리 액세스입니다. 그러나 대부분의 메모리는 단일 포트 일뿐입니다 (즉, 사이클 당 하나의 읽기 또는 쓰기 만 수행 할 수 있음). 그렇다면 명령어 를 읽고 변수를 어떻게 읽습니까?
해결책은 2 단계 명령주기를 사용하는 것입니다. 첫 번째 단계는 메모리에서 명령어를 가져오고 두 번째 단계는 주 메모리에서 변수를 읽거나 쓸 수 있습니다.
일부 구형 칩은 더 발전했습니다. 당시 칩에 16 비트의 주소 지정 가능 메모리가 있지만 외부 주소 버스가 8 비트 인 경우 주소 래치 활성화에 익숙 할 것입니다. 한 클록 사이클은 16 비트 주소의 상위 8 비트를 전송하고 다음 클록 사이클은 하위 8 비트를 전송합니다. 세 번째 사이클은 변수를 메모리에서 읽고 쓸 수 있습니다.
명령 사이클이 여러 클럭 사이클 인 다른 더 좋은 이유가 있습니다. 가장 좋은 이유 중 하나는 파이프 라이닝입니다. 이것은 현대 프로세서가 칩에서 사용 가능한 모든 실행 장치를보다 완전히 활용하기 위해 사용하는 트릭입니다. 예를 들어, 하나의 명령이 실행되는 동안 다음 명령이 동시에 페치됩니다.
내부적으로 8085A의 코어에는 2 상 클럭이 필요합니다. 두 클럭 위상을 유도하는 내부 로직은 입력 클럭을 2로 나눕니다. 앞서 언급했듯이 6.144MHz 입력 클럭을 사용하는 이유는 보드 속도 목적으로 칩이 6MHz에서 제대로 작동하는 것입니다. 이 칩은 실제로 6MHz 크리스털을 필요로하는 3MHz 등급이지만,보다 빠른 전송 속도를 제공하는 6.144MHz로 즐겁게 동작합니다 (Uart는 8085를 구동하는 오실레이터의 6.144MHz 또는 8085의 CLK 출력에서 3.072MHz로 클럭 될 수 있음) 사용 가능한 많은 전송 속도를 제공). 나는 아직도 이러한 구식 칩을 사용하여 일부 로봇에서 특수 기능을 수행합니다. 나는 자체 발진기로 Uarts를 클럭킹하고 2.8MHz로 칩을 작동시키는 6.4MHz 발진기로 8085A를 클럭킹한다. 3. 2MHz는 초음파 트랜스 듀서를위한 40KHz 클록을 제공하기 위해 훌륭하게 나뉩니다. 내 '보트에서 더 현대적인 IC 장치를 사용하는 것이 더 합리적이지만, 실제로 놀고있는 오래된 8085, Z80, 63C09 및 63C09E, 68B09 및 68B09E 등이 있습니다.
시계는 이벤트가 발생하기를 원하는 순간입니다. 이제 더 많은 시간이 주어지면 마이크로 프로세서 내의 서로 다른 회로간에 상호 작용이 발생하여 단락이 발생할 수 있으므로 디지털 회로에서 레벨 트리거링을 선호하지 않습니다. EDGE TRIGGERING을 진행합니다. 이제 마이크로 프로세서는 에지 트리거링이 언제 발생했는지 알 수 없습니다. 1 또는 0 만 이해합니다. 따라서 클럭 에지가 감지 될 때마다 1과 0을 생성하려면 플립 플롭이 필요합니다. 따라서 플립 플롭을 사용해야한다. 결과적으로 클럭 주파수는 2로 나뉩니다.