[태그:] Quartus

  • 컴퓨터 구조 계산기_quartus 설계_2024

    목차

    없음

    본문내용

    간단한 구조의 계산기를 설계할 것이다. 여태까지 Schematic editor 설계 기법에 따라 register transfer level을 기초로 하는 설계를 진행했었다. 이 방법은 간단한 회로만 설계가 가능하며 원하는 로직을 회로도로 직접 구현하는 방법이다. 이번 설계에서는 HDL (hardware description language) 기법을 이용하여 알고리즘이나 기능 레벨에서의 설계를 진행할 것이며 gate 레벨의 로직 설계를 한다. ROM or Hard-Wired Logic 등 용어를 이해하며 설계를 진행한다.

    # 제어장치의 구현
    계산기를 구현하는데 필요한 내부 register는 A[4bit], B[4bit], IR[1bit], C[1bit]를 가진다.
    계산기를 작동시키기 위해 필요한 외부 입력(switch)의 경우 SA[4bit], SB[4bit], SIR[1bit], START[1bit]이 있다.
    ALU를 통해 add, subtract 연산을 수행하는 가감산기를 만든다.
    DISP(display)[4bit]는 IR(instruction register)의 출력 신호와 C(carry out)를 출력 신호로 가진다.

    # 연산 과정
    4 bit 스위치인 SA, SB의 데이터를 읽어 들여 1bit 명령어 IR를 해석하여 ALU에서 연산을 하여 데이터를 A Register에 저장하고 display한다.

    # 제어 순서
    STATE DIAGRAM 타이밍 흐름

    T1, 2, 4, 6의 경우 Register 값이 변경되므로 CLK을 필요로 한다.
    T3, 5은 Branch 연산이므로 CLK이 불필요하다.
    ;은 동시 실행이 가능한 연산임을 표기한 것이고 ;;은 클럭이 필요한 연산을 표기한 것이다.

    # Timing Pulse
    제어 신호를 만드는 방법은 여러 가지가 있다. 그중 하드와이어 방식은 조합 회로로 구성된 제어 unit이 명령어, 각종 flag 등으로부터 신호를 받아 제어신호를 만든다.

    출처 : 해피캠퍼스

  • 컴퓨터구조 CPU설계_Quartus 설계_2024

    목차

    없음

    본문내용

    우선 CPU 설계를 하기 전에 컴퓨터 명령어와 기본적인 CPU의 구성을 살펴보고 회로 설계를 진행했다.

    #컴퓨터 명령어

    컴퓨터 명령어는 각각 16진수 코드로 되어있는 마이크로 연산이다. 명령어를 Instruction Register (IR)에 넣어 해석을 진행해 필요한 장치에서 명령어를 실행한다.
    메모리 참조 명령어는 주소가 필요하다. 첫째 자리의 0~E까지를 보고 메모리 참조 명령어임을 확인하고 뒤의 XXX에 주소를 넣는다.
    레지스터를 건드리는 명령어는 정해져 있는 레지스터 명령어 16진수 값을 가져와서 처리한다.

    #기본적인 제어장치의 구성

    명령어가 IR에 들어가면 하위 12 bit( IR 0~11 )는 주소 bit로 할당된다. 그 위 3 bit가 3to8 Decoder에서 D 신호가 되어 나온다. ( D0~D7 )
    가장 상위 bit는 주소 모드를 나타내는 I bit가 나온다.
    명령어를 수행할 타이밍은 4-bit sequence counter ( SC )에서 0부터 숫자를 세기 시작해 4to16 Decoder에서 T 신호=타이밍 펄스가 되어 나온다. ( T0~T15 )
    기본 컴퓨터의 모든 플립플롭과 레지스터는 주클럭 발생기에 의해 제어된다. 제어장치에서 발생된 제어신호가 클럭과 동기되어 레지스터의 상태를 인에이블시킨다. ( 레지스터 선택 )

    #구성될 CPU 내부 로직

    기본 CPU에는 위와 같은 구성으로 내부에 레지스터들이 구성되어 있다.
    SRAM에서는 프로그램을 보관 중이고 사용될 프로그램은 IR로 이동한다.
    IR 밑에 명령어 분석 회로 연결되어 있어 해석을 진행하는 것이 Decoding 과정이다.
    HW의 소자 구성은 정해져 있기 때문에 CONTROL LOGIC GATES 설계가 주목적이다.
    CONTROL LOGIC GATES에서 만든 제어 신호를 각 소자에 뿌려주는 것을 설계하면 된다.

    이번 설계에서는 3-state-buffer인 74244 8-bit 버퍼를 사용하여 각 레지스터들이 버스를 점유하는 것을 선택하게 설계했다. 메모리의 입력과 출력 데이터는 버스에 바로 연결되어 있다.

    출처 : 해피캠퍼스