Verilog

RISC ( # R- Type # Fetch # Verilog )

juniordigital 2024. 7. 31. 17:40

 

32bit RISC R-Type 을 베릴로그를 통해 설계하고 테스트벤치를 통해 확인해보겠습니다 


Readme

Synthesis된 하드웨어의 모습을 보기 위해 Quartus로 설계하였습니다. RISC 문서를 통해 자세히 설계해야하지만, 인터페이스만을 통해 설계하기에  Imm Gen, Control unit, Mux 1개를 제외하고 설계하였습니다. R type 동작 및 테스트를 목표로 두었으며 나중에 제외한 모듈을 추가할 수 있도록 설계했습니다. RISC-V 에서는 Pipeline을 사용합니다. Fetch, Decode, Execute,Writeback 등으로 단계를 나누므로 General한 디자인을 위해 Instruction Fetch 와 Datapath로 나누어 instance를 생성했습니다.


 

RISC R format은 32bit 정보를 아래와 같이 나눕니다.

RISC - R type

func7 [31 :25] rs1 [24 : 20] rs2 [19 : 15] func3 [14 : 12] rd [11 : 7] OPcode [6 : 0]

 

 

OPcode를 해독한후 func3, func7을 통해 ALU의 기능을 선택합니다.

 

rs1 = source 1

rs2 = source 2

rd  = destination

 

Instuction Fetch

 

Program counter로 부터 Instruction_memory의 주소값을 받습니다. Instruction Memory는 주소값을 통해 내부에 들어있는 데이터를 출력합니다.

 

 

 

 

 

Simulation을 통해 PC +4 를 통해 Instruction Out 출력이 정상적으로 나오는 것을 확인하였습니다.

 

다음으로 합성된 모습을 살펴보겠습니다.

 

 

 

 

Instruction memory는 Quartus에서 제공하는 register와 mux로 구성되어있는 것을 알 수 있습니다.

 

 

ADDER, Mux, PC+4, Instruction Memory로 구성된 것을 알 수 있으며, Positive clock에 값을 업데이트하기 위해 Register를 사용하였습니다. PC +4는  Combinational logic과 Sequential logic이 함께 구성된것을 알 수 있습니다.

 

다음장에서 Datapath를 살펴보도록 하겠습니다.

 

 

 

 

'Verilog' 카테고리의 다른 글

RISC ( # R- Type #Timing # Power # Verilog )  (0) 2024.08.20
RISC ( # R- Type # Datapath # Verilog )  (0) 2024.08.20
ECC ( Error colection code ) (2)  (0) 2024.07.04
ECC ( Error colection code )  (0) 2024.07.04
Parity bit  (0) 2024.07.04