1 / 59

VHDL 을 이용한 8- bit Microprocessor 설계

VHDL 을 이용한 8- bit Microprocessor 설계. 한국외국어대학교 전자공학과 CAD / VLSI LAB. Computer Systems Layer Model 표. Microprocessor 설계(1). Microprocessor 설계(2). 기본적인 출발은 명령어구조( Instruction Set Architecture) 이다. 이 명령어 구조는 software 와 hardware 의 중간 매개체 역할을 한다. 설계과정

cahil
Download Presentation

VHDL 을 이용한 8- bit Microprocessor 설계

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. VHDL을 이용한 8-bit Microprocessor 설계 한국외국어대학교 전자공학과 CAD / VLSI LAB.

  2. Computer Systems Layer Model 표 Microprocessor 설계(1)

  3. Microprocessor 설계(2) • 기본적인 출발은 명령어구조(Instruction Set Architecture)이다. • 이 명령어 구조는 software와 hardware 의 중간 매개체 역할을 한다. • 설계과정 • 명령어 구조를 기반으로 계층적인 설계를 통해 Top-down 방식으로 이루어진다. • 설계 방식에 따라 내부 버스의 구조, ALU의 구조, Cache구조 등을 설계 해야 한다.

  4. 8-bit Microprocessor 의 설계 • 8-bit Simple Instruction Set Computer (8-bit SISC) • 8-bit wide instructions and data • Single register - Accumulator only • Only 8 instructions • Fixed-length, single format instructions • 5-bit addressable memory space • Direct addressing mode only

  5. Instruction Format Instruction Set Architecture(8bit) • Register

  6. Instruction Set

  7. Pin Timing(1) • 여기서의 MEM_CLK는 메모리가 있을 때를 가정하고 생각한다. • CLK and MEM_CLK are in the opposite phase. • All internal registers in the CPU are rising-edge-triggered. • Memory address and enables are sampled on the rising edge of MEM_CLK. • On memory read, valid memory data is driven when MEM_CLK is high. • On memory write, memory data is sampled on the rising edge of MEM_CLK.

  8. Pin Timing(2)

  9. Instruction Types and Execution Steps(1) • 각 명령어는 1 Cycle에 수행되는 것이 아니라, 3 ~ 4번의 clock cycle을 통해 수행된다. • 각 단계별 수행 내용은 다음 장의 표와 같다. • 각 단계별로 수행되는 내용을 바탕으로 Microprocessor의 Data Path 및 제어부를 설계하여야 한다.

  10. Instruction Types and Execution Steps(2)

  11. SISC 형태의 구현(1) • 먼저 top level의 schematic을 아래와 같이 보였다.

  12. SISC 형태의 구현(2) • 각 단자(pin)의 이름 및 신호의 명칭은 아래와 같다. • SISC • CLK External CPU Clock input • RESET External Reset input • WRITE Memory Write Enable output • READ Memory Read Enable output • MEM_ADDR[4:0] Memory Address output • MEM_DATA_IN[7:0]Memory Read Data input • MEM_DATA_IN[7:0]Memory Write Data output

  13. SISC 형태의 구현(3) • MEMORY • READ Memory Write Enable input • WRITE Memory Read Enable input • MEM_ADDR[4:0] Memory Address input • MEM_DATA_IN[7:0]Memory Read Data output • MEM_DATA_out[7:0]Memory Write Data input

  14. SISCprocessor의 미세 구조

  15. 명령어 Timing(1) • Store Instruction Timing

  16. 명령어 Timing(2) • Add, And, Xor, Load Instructions Timing

  17. 명령어 Timing(3) • Jump Instruction Timing

  18. 명령어 Timing(4) • Skip-If-Zero Instruction Timing

  19. 명령어 Timing(5) • Halt Instruction Timing

  20. Microprocessor 검증(1) • 설계 내용을 VHDL로 기술하고 메모리 부분에는 Fibonacci 수열 계산 프로그램을 넣고, 시뮬레이션을 수행하여 결과를 얻을 수 있다. • 주의: 이 프로젝트에서는 메모리 대신, 직접 입력으로 값을 주었다.

  21. 00000 10111111 start: Load Xn 00001 01011110 Add Xn-1 00010 11011010 Store tmp 00011 10111111 Load Xn 00100 11011110 Store Xn-1 00101 10111010 Load tmp 00110 11011111 Store Xn 00111 10111101 Load n 01000 01011011 Add one 01001 11011101 Store n 01010 10011100 Xor Last_n 01011 00100000 Skip-if-zero 01100 11100000 Jump start 01101 00000000 Halt 11010 dddddddd tmp: X 11011 00000001 one: 1 11100 00001010 Last_n: 10 11101 00000000 n: 0 11110 00000001 Xn-1: 1 11111 00000001 Xn: 1 Microprocessor 검증(2) 앞에서 언급한 Fibonacci 수열 계산 프로그램은 다음과 같다.Fibonacci Series Computation : Xn <- Xn-1 + Xn-2, X0=1, X1=1

  22. SISC의 VHDL로의 구현(1) • 앞의 미세구조에서 표현한 schematic을 여러 block으로 나누어 설계 • 크게 10개의 block으로 나누어 생각 • 메모리는 설계를 하지 않음. 대신 메모리에 해당하는 파형을 simulation을 할 때 직접 넣어 준다. • 실제 사용되는 핀은 다음과 같이 7개이다. • CLK, RESET, READ, WRITE, MEM_ADDR, MEM_DATA_IN, MEM_DATA_OUT

  23. SISC의 VHDL로의 구현(2) • MDR(Memory Data Register) block • 기능 • 데이터 메모리를 일시적으로 기억 • 특징 • IR레지스터와 같이 데이터를 기억 • 파일과 entity 이름은 REG • 동작 • LD = ‘1’인 경우에 동작 • Clock = ‘1’이고 rising edge(clock event가 발생)일때 REG_IN 에 입력된 값을 REG_OUT 으로 보냄

  24. VHDL 표현

  25. 출력 파형

  26. SISC의 VHDL로의 구현(3) • IR(Instruction Register) block • 기능 • 메모리에서 읽은 명령어를 기억 • 특징 • MDR레지스터와 같은 역할 • 파일과 entity 이름은 REG 이다. • VHDL 표현과 출력 파형 • MDR 레지스터와 같다.

  27. SISC의 VHDL로의 구현(4) • ALU(Arithmetic Logic Unit) block • 기능 • 5 가지의 연산(ADD, AND, XOR, Load, Store) • 입.출력 변수 OPCODE : Instruction 입력 (3-bit) OP1, OP2 : 연산하고자 하는 데이터 (각 8-bit) ALU_OUT : 연산 후 출력되는 결과 (8-bit) • 특징 • OPCODE에 따라 연산 수행 • Array 연산을 하기 위해 use IEEE.std_logic_unsigned.all; 구문을 사용한다.

  28. VHDL 표현

  29. 출력 파형

  30. SISC의 VHDL로의 구현(5) • FLAG block • 기능 • ALU연산의 결과(Accumulator에 저장되는 값)이 ‘0’ 인가의 여부를 조사하여 ‘0’ 이면 ‘1’ 을, 그렇지 않으면 ‘0’ 을 출력한다. • 결과가 ‘1’ 이면 PC(명령어 주소)를 ‘1’ 증가시키고, ‘0’ 이면 그대로 둔다. • 동작 • CLK = ‘1’이고 rising edge일 때 ALU의 결과가 ‘0’이면 SET(1) 값을 출력한다.

  31. VHDL 표현

  32. 출력 파형

  33. SISC의 VHDL로의 구현(6) • ACC(Accumulator) block • 기능 • ALU 연산의 결과를 잠시 저장하는 역할 • Data 폭이 8-bit인 레지스터 • 입.출력 변수 CLK : RESET : ‘1’이면 Accumulator 값을 ‘0’으로 초기화 LD : ‘1’이면 값 저장가능 ACC_IN : 입력되는 ALU의 출력 (8-bit) ACC_OUT : Accumulator의 출력 (8-bit) • 동작 • Rising edge에서 동작

  34. VHDL 표현

  35. 출력 파형

  36. SISC의 VHDL로의 구현(7) • IR_BUF block • 기능 • Instruction이나 데이터가 메모리에서 읽혀 잠시 저장되거나, 계산된 데이터가 메모리에 저장되기 전에 결과를 잠시 저장하는 부분이다. • 동작 • RW 값에 따라 메모리에 값을 읽거나 저장 RW = ‘1’ ALU에서 계산된 값을 메모리에 write 함 RW = ‘0’ 데이터나 Instruction 들을 메모리에서 읽어 옴

  37. VHDL 표현

  38. 출력 파형

  39. SISC의 VHDL로의 구현(8) • PC_LOGIC block • 기능 • PC(Program Counter)를 1 씩 증가 시켜 다음으로 수행될 주소를 지정하거나, 새로운 주소를 갖게 한다. • 동작 • INC_PC = ‘1’ 이고 LD_PC = ‘1’ 이면 PC_IN을 ‘1’ 증가시켜 출력

  40. VHDL 표현

  41. 출력 파형

  42. SISC의 VHDL로의 구현(9) • ADDR_MUX block • 기능(1) • 프로그램 메모리의 주소 나타냄 • 입.출력 변수 A : PC_LOGIC block 으로부터 오는 data (5-bit) B : IR block 에서 오는 data (5-bit) SEL : ‘1’이면 A 선택, ‘0’이면 B 선택 MUX_OUT : 선택된 값 출력 (5-bit) • 두 개의 입력 중 SISC가 수행하고자 하는 연산에 맞는 값을 출력

  43. 기능(2) • 예) Instruction을 수행하고자 할 때, IR 레지스터에서 오는 값을 출력하고, 메모리를 가리켜 데이터를 읽거나 쓰고자 하면 PC_LOGIC으로부터 오는 값을 출력 • Data 폭이 5bit 짜리인 Multiplexer 사용

  44. VHDL 표현

  45. 출력 파형

  46. SISC의 VHDL로의 구현(10) • STATE block • 기능 • 하나의 Instruction은 보통 3-4개의 Cycle로 동작 • 이 블록은 현재의 상태를 나타냄 • 특징 • RESET = ‘1’이면, 다시 Instruction Cycle이 처음부터 시작

  47. VHDL 표현

  48. 출력 파형

  49. SISC의 VHDL로의 구현(11) • CONTROL block • 기능 • 3-bit Op-code의 명령어와 4 단계로 구분되는 Instruction Cycle에 따라, 마이크로 프로세서의 각 데이터 연산 블록에 대한 여러 가지 제어 신호를 내보내는 역할을 한다. • 제어 신호는 Multiplexer에 대한 선택 신호나 메모리를 읽고 쓰는 신호, 레지스터의 Enable신호이다. • 각 단계에서의 동작은 앞 내용 참조

  50. VHDL 표현

More Related