전공 이야기/Digital System Design 8

#8 MIPS Pipeline Processor Design (6) - Simulation, 결론

3. Simulation 시뮬레이션을 통해 해당 프로세서의 작동을 검증하고 확인한다. 3.1. Mips Top module simulation 설계한 Mips 5stage pipline processor가 제대로 작동되는지 확인하기 위한 명령어 예제로 1.2.3 Instruction Memory 에 적혀있는 예제 코드를 활용한다 사용한 테스트 벤치 `timescale 1ns / 1ps module MIPS_tb(); reg clk, rst; wire [31:0] ProgramCounter_Output, t0, t1, t2, t3, t4, t5, t6, t7; wire [31:0] mem8, mem9, mem10, mem11, mem12, mem13, mem14, mem15; wire [1:0] forwa..

#7 MIPS Pipeline Processor Design (5) - I/O, Constraints

2. Verilog를 이용한 I/O 설계 2.1 7 Segment LED 7 segment LED를 이용하여 Program Counter의 값을 Hexadecimal 형식으로 출력하였다. 코드는 수업에서 제공된 코드를 이용하였다. Instantiation은 다음과 같다. ss_drive SSEG ( .clk(clk), .rst(rst), .data7(PC[31:28]), .data6(PC[27:24]), .data5(PC[23:20]), .data4(PC[19:16]), .data3(PC[15:12]), .data2(PC[11:8]), .data1(PC[7:4]), .data0(PC[3:0]), .mask(8'b11111111), .ssA(CA), .ssB(CB), .ssC(CC), .ssD(CD), ...

#6 MIPS Pipeline Processor Design (4) - Hazard, Top module

1.9 Forwarding Unit Forwarding Unit 동작 설명 Forwarding Unit은 데이터 하자드를 해결하는 데 사용되는 유닛이다. Forwarding이 필요한 조건은 다음과 같다: 1. EX/MEM.RegisterRd가 ID/EX.RegisterRs와 같은 경우 2. EX/MEM.RegisterRd가 ID/EX.RegisterRt와 같은 경우 3. MEM/WB.RegisterRd가 ID/EX.RegisterRs와 같은 경우 4. MEM/WB.RegisterRd가 ID/EX.RegisterRt와 같은 경우 1과 2의 경우, 데이터를 가져오기 위해 EX/MEM 파이프라인 레지스터로부터 Forwarding이 필요하며, 3과 4의 경우, MEM/WB 파이프라인 레지스터로부터 Forward..

#5 MIPS Pipeline Processor Design (3) - Pipes, Control

1.7 Pipe Register 파이프 레지스터(pipe register)는 컴퓨터 아키텍처에서 파이프라인(pipeline) 구조를 구성하는 레지스터이다. 파이프 레지스터는 Pipeline stage 간의 데이터 흐름을 제어하고, 각 스테이지에서 수행되는 동작의 결과를 일시적으로 저장하는 역할을 한다. 파이프 레지스터는 주로 명령어가 프로세서의 다양한 단계를 거치면서 실행되는 동안 발생하는 지연을 최소화하기 위해 사용된다. 각 스테이지는 한 번에 하나의 명령어를 처리하며, 다음 명령어는 이전 명령어가 다음 스테이지로 이동할 때까지 현재 스테이지에 머무르게 됩니다. 이러한 파이프 레지스터는 CPU의 성능을 향상시키기 위해 사용되며, 파이프라인의 깊이와 관련이 있다. 파이프라인이 더 깊으면 명령어의 처리 속..

#4 MIPS Pipeline Processor Design (2) - ID, EX, MEM, WB

1.3 ID Stage ID_Stage는 현재의 Instruction이 들어오면 해독하여 Opcode, Rs, Rt, Rd 등으로 구분짓는 역할을 한다. Opcode는 Control unit으로 전송되어 각 명령어에 맞는 Control signal을 제어하며, 나머지 Rs, Rt, Rd의 값을 받아 내부의 레지스터 파일을 이용하여 레지스터를 새로운 값으로 갱신하거나, 레지스터 번호에 맞는 데이터 값을 추출한다. I-type instruction의 경우, [15:0] instruction을 sign-extended로 보내 32비트로 만들어준다. 또한 beq instruciton이 들어오게 될 경우 먼저 두 값이 같은지를 ID stage에서 판별하고 Branch equal 신호를 보내 Stall 여부를 미리..

#3 MIPS Pipeline Processor Design (1) - IF Stage, Sub Unit

다음 내용은 Digital System Design 수업 기말 팀 프로젝트로 제출한 과제로 모든 코드를 학부생 두 명이 직접 만들다보니 미처 확인하지 못한 오류가 있을 수 있다. 하지만 여러 명령어 시나리오에서 다음의 명령어들이 제대로 작동하는 모습을 보였으며 Data Hazard, Control Hazard 등을 잘 해결하는 모습을 보였다. 주어진 코드를 잘 따라한다면 Verilog에서의 MIPS 명령어 체계의 Pipeline processor 구현이 가능하다. MIPS 는 MIPS사에서 개발한 instruction set으로 Computer Architecture의 Pipeline, Hazard 등의 내용을 안다고 가정하고 진행한다. 완성된 Full Datapath는 다음과 같다. 1. Verilog..

#2 Verilog

FPGA를 활용하여 설계를 하기 위한 툴 중 하나로 Vivado가 있다. Vivado는 Xilinx에서 개발한 FPGA 설계 도구로 Xilinx 사의 FPGA로 사용할 수 있다. 또한 Vivado를 통하여 HDL 제작, 시뮬레이션, 합성 등 설계의 과정을 전부 진행할 수 있다. Vivado에서 사용가능한 언어는 Verilog와 VHDL 등이 있으며 하드웨어 설계에 깊이 사용되는 언어들이다. 그중에서 Verilog 문법을 살펴보고자 한다. Verilog는 회로 모듈 단위로 코딩을 한다. 디지털 회로는 모듈의 집합으로 이루어져 있으며 모듈들의 계층적 구조로 이루어져있다. 하나의 모듈은 module 모듈명 (input, output port 들); input ~; output ~; assign ~ = ~; e..

#1 FPGA

반도체 설계 군에는 메모리 설계와 System 반도체라고도 불리는 비메모리 설계로 나뉜다. 이러한 비메모리 반도체는 주문형 반도체 곧 ASIC라고 불리기도 한다. 주문형 반도체 ASIC는 설계 방식에 따라 다음 그림과 같이 나뉜다. Full - Custom ASICs는 반도체를 설계할때의 mask같은 그림을 다 직접 그리는 것으로 비효율적이나 Performance는 가장 높다. 반면에 Semi - Custom ASICs는 multiplexer와 같은 많이 사용되는 모듈들을 라이브러리에 넣어두는 방식이다. Semi - custom ASICs에도 여러 종류가 있다. Standard-Cell based ASICs 는 설계할 때 라이브러리를 사용이 가능하게 하여 Full - Custom 에 비해 설계 시간을 줄..