2014.12.21 23:38

pisc 분석

당분간 이 프로세서 분석은 알파와 베타 중간 상태다. 

현재 버전 0.0 (2014.12.21)




pisc 분석

이 프로세서는 참으로 특별하다.
너무 간단하게 만들다보니 동작도 이상하고 결함도 많다.
자세한 내요은 번역부분을 읽어라.

명령어는 매번 클럭시마다 사용된다.
매 클럭마다 한번은 fetch라는 명령어가 사용되고 한번은 execute가 시행된다.

원본에는 이렇게 나온다.
a) 레지스터중 하나가 어드레스 버스로 나가고 ALU 의 A 입력이 된다;
b1) 다른 레지스터는 데이터버스로 출력하고 ALU의 B 입력이 되거나; 또는
b2) 메모리로ㅜ터의 데이터가 다른 레지스터의 입력이 된다;
c) ALU의 출력이 A (그리고 아마도 B)에 적용되고 데이터는 첫 번째(address)레지스터에 저장된다,

a) one register is output to the Address bus and the ALU's A input;
b1) another register may be output to the Data bus and the ALU's B input; or
b2) data from memory may be input to another register;
c) an ALU function is applied to A (and perhaps B) and the result is stored in the first (address) register.


 

조건은 다음과 같다.

인스트럭션 레지스터는 외부에 따로 존재하는 것으로 회로도 page2에 74298을 이용하여 구현했다. (Quad 2-line to 1-line multiplexers with storage)

클럭의 하강 에지에 A 또는 B 선택을 한다.

일단 클럭의 상승에지에 clock의 반전입력이 들어가므로 클럭의 상승에지에 D 버스를 캡처하거나 미리 정해진 하드와이어드 코드를 캡처해서 출력한다.

미리 정해진 값은 10 111 111 1 111 00000이다.

그 값은 다음과 같다.
 
사진 참조


이 값의 의미는 다음과 같다.

메모리를 읽어서 r7에 저장하고 데이터라인에도 r7을 내보낸다. D line에는 메모리를 읽은 값이 들어간다. 결국 R7에 쓴다. CY=11로 0이 선택된다. 이 값은 래치된다.

이런 목적으로 74172 dual port ram이 사용되었다, 74182는 2비트 램이다.

74181은 00000이 선택되면 동작은 캐리가 0 인 경우 a+1이 일어난다. a 입력은 A 버스에 연결되어 있다, 결과는 종종 어드레스값에 1을 더하게 된다.


mrd는 rec로 바로 연결된다. 기묘하지만 메모리를 읽지 않는 상태가 듀얼포트를 읽는 것이고 mrd가 High인 경우는 clock의 반전 입력과 nand를 거처 mrd\ 가 된다..
(mwr도 같은 방법) 이것이 IR 이라는 게 신기할 다름이다.

wec\는 mrd와 fetch\의 nand다. 그러니까 메모리는 읽는 상태이고 fetch가 아닌 exec 상태이다. 메모리를 읽지 않으면 쓰여지지 않는거다.

  


저작자 표시
신고
Trackback 0 Comment 0


티스토리 툴바