ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SRC 설계] Control Unit 설계 및 구현
    Digital Processor Design 2013. 6. 27. 15:38
    반응형

    2.2 Control Unit 설계

    다음은 32-bit SRCColtrol Unit 이다. Control Unit의 구성요소는 우선 Memory로부터 읽어들어온 Instruction의 일부분(OP code)를 받아서 입력으로 사용하고, 들어온 op code에 따라 32가지의 instruction 출력을 내보내는 5x32 decoder가 있다. 그리고 각 모든 컨트롤 신호를 T0~T7step신호와 Instruction, 그리고 추가 명령을 통해서 만들어주는 Control Signal Encoder가 있다. 그리고 Master CLKSTART 신호를 받아서 Step generatorenable시켜주는 Clocking Logic 블록, T0~T7까지 타이밍 step 신호를 만들어주는 step generator 블록이 있다. shift 명령을 수행하는 도중 T6에서 만들어지는 Goto6 신호, Instruction이 종료될 때 만들어지는 END 신호는 Step Generator 내부로 들어가서 T0~T7Step을 초기화 시키기도 하고 계속 T6에 머물게 만드는 역할을 수행하기도 한다. 이 때 Step Generator는 반드시 Clocking Logic으로부터 Enable 신호가 들어왔을 경우에만 작동하는 것이 중요하다.


    2.2.1 5X32 OP code Decoder

     

    다음은 5x32 OP code 디코더의 블록 내부이다. Instruction Register(IR)에서 만들어진 5bitop code를 입력으로 받아서 32개 종류의 출력으로 뿌려준다.

    OP Code

    Instruction

    OP Code

    Instruction

    OP Code

    Instruction

    OP Code

    Instruction

    0

    nop

    6

    lar

    15

    neg

    26

    shr

    1

    ld

    8

    br

    20

    and

    27

    shra

    2

    ldr

    9

    brl

    21

    andi

    28

    shl

    3

    st

    12

    add

    22

    or

    29

    shc

    4

    str

    13

    addi

    23

    ori

    31

    stop

    5

    la

    14

    sub

    24

    not

     

     

    다음은 우리가 사용하는 InstructionOP코드 순서로 정렬한 표이다. 디코더는 32개의 출력을 내보낼 수 있지만 우리가 설계할 32-bit SRC는 다음과 같이 23개의 Instruction만 사용한다. 각각의 Instruction의 이름을 해당하는 OP code 번호의 출력으로 지정했으며, 사용하지 않는 OP code 번호는 그대로 두었다

    2.2.2 Modified Clocking Logic

    다음은 Step GeneratorEnable를 만들어주는 Clocking Logic 블록 내부 구조이다. 이 때 우리는 START, STOP, MCK의 입력핀과 Enable의 출력핀만 사용한다. 그리고 Wait 신호는 GND에 연결해서 NOT gate를 거쳐 OR3 gate에 들어가는 신호는 항상 1이 되게 설계하였다. , START 신호만으로 Enable에 연결된 AND2 gate 출력을 결정짓게 하기 위해서이다.

    우선 START 신호가 들어오면 JK F/F의 출력은 1(SET)이 나가며 AND2 gate의 두 입력을 모두 1로 만들어서 Enable의 출력이 1이 되게 한다. STOP 신호가 들어오면 JK F/F의 출력은 0이 나가고 AND2 gate의 출력을 0으로 만들어서 Enable의 출력을 0으로 만든다.

     

    2.2.3 Step Generator

    위 블록은 T0~T7까지의 타이밍 신호를 만들어 주는 역할을 한다. 앞서 언급한 Clocking LogicEnable 출력이 카운터로 들어오면 카운터가 활성화 된다. 이 때 MCK가 한 번씩 뛸 때 마다 카운터의 출력은 1씩 증가하고 이 출력이 3x8 디코더를 거쳐서 T0부터 T7까지 1step씩 신호를 내보내게 된다. 디코더의 출력은 오직 한 번에 한 개씩만 나갈 수 있으므로 T0~T7중에 어떤 신호도 2개 이상 동시에 나가지 못한다.

    Goto6Shift 명령을 할 때 계속 T6에 남아서 NEQZ 신호가 1이 들어올 때 까지 T6 step에 해당하는 명령을 반복하게끔 한다. 이 때 ShiftLoad값은 0110으로 만들기 위해 A, DGNDB, CVCC에 연결한다. 그리고 Goto6 신호를 카운터의 LD에 연결하면 Goto6 신호가 들어오면 카운터의 출력은 6이 나가고 T6 신호만 1이 들어온다. END 신호는 모든 instruction의 마지막에 들어가는 컨트롤 신호이며 Step을 다시 T0로 돌리는 역할을 한다. 이를 구현하기 위해 END 입력을 카운터의 CLEAR에 연결했으며, END신호가 들어오면 카운터 출력은 0으로 만들고 step은 다시 T0로 돌아가게 된다.

    다음은 Step Generator의 시뮬레이션 파형이다. Enable신호는 계속 1을 준 상태에서 MCK1번씩 뛸 때 마다 T0부터 1step씩 증가하는 것을 확인할 수 있다. Goto6신호를 주고 MCK가 뛰면 step은 바로 T6으로 가고, END 신호를 주고 MCK가 뛰면 step은 바로 T0으로 가는 것 역시 확인하였다.

     

    2.2.4 Control Signal Encoder

    다음은 Control Unit의 가장 복잡한 부분인 Control Signal Encoder의 블록 내부 구조이다. 워낙 전체 크기가 커서 화면 모두를 담지는 못했다. Control Signal Encoder의 역할은 32-bit SRC에 사용되는 InstructionT0~T7step signal을 입력으로 받아서 모든 Instruction에서 각 step별로 사용되는 컨트롤 신호를 전부 만들어서 출력으로 내보내는 것이다.

    예를 들어서 MAin 이라는 컨트롤 신호가 만들어지는 과정을 살펴보자. 우선 Instruction Fetch를 할 때(T0~T2) T0에서 수행되는 과정은 우선 현재의 PC값을 MA에 저장하고 PCPC+4로 증가시킨 뒤에 C register에 저장하는 것이다. 이 때 필요한 컨트롤 신호를 살펴보면, 다음과 같다.

    위의 Concrete RTN(Instruction Fetch; T0~T2)을 살펴보면 T0에서는 PC값을 MA에 옮기기 위해 PCout, MAin이라는 컨트롤 신호가 필요하다. 그리고 PC4만큼 증가시켜야 하므로 INC4 라는 컨트롤 신호가 필요하며, 마지막으로 PC+4C register에 넣기 위해 Cin이라는 컨트롤 신호가 필요하다.

    그리고 위의 그림은 st instructionConcrete RTN이며, T5일 때 T4에서 만들어진 주소값이 C에 저장되어 있고 이 C 값을 MA에 옮기기 위해 MAin 컨트롤 신호가 필요하다는 것을 알 수 있다.

    따라서 MAin의 컨트롤 신호는 MAin = T0 + T5st 라는 것을 알 수 있다. 그런데 st instruction 뿐만 아니라 ld, ldr, strinstruction 역시 T5에서 만들어진 주소값을 MA에 저장하는 과정을 수행하므로 MAin이 필요하다. 결국 MAin 신호는 다음과 같은 형태로 구현할 수 있다.

    MAin = T0 + T5(ld + ldr + st + str) 로 나타낼 수 있다.

    위와 같은 방법으로 모든 컨트롤 신호를 Concrete RTN에서 찾아내서 T0~T7Step 신호와 Instruction 신호의 조합회로로 만든 것이 바로 Control Signal Encoder이다. Data path에서 각 Instruction마다 일일이 손으로 줘야 했던 컨트롤 신호를 각 Step신호와 Instruction 신호(OP code를 통해 해석)를 통해 만들 수 있는 것이다

    반응형
Designed by Tistory.