공부방/Verilog_vivado

CPU 세번째 발자국 + I, S, B, U, J, JA

맘스터치보단파파이스 2024. 6. 1. 20:36

I-TYPE

 

IL은 R과는 달리 imm 이 추가된 Extend를 추가한 기능이 들어가야하고 그에따라 다른값이 ALU에 들어가야한다. AluSrcMux를 통해 1이 들어가게 해준다.

I가 달라진건 R은 alu에서 나온걸 mux선택으로 받았는데 I는 ram 에서 나온걸 mux선택으로 받는다.

IL은 rd = M( rs1 + imm)

I는 rd = (rs + imm) 이다. 

달라진점은 M인 RAM을 거치지 않는다. 그래서 RFWriteDataSrcMuxSel 을 0 으로 줘서 ALU의 값을 바로 받아온다.

S-TYPE

S는 M[rs1 + imm] = rs2 이다. 새로운 extType가 생겼고 새 연산을 rs1+imm을 해준 후 출력은 rs2가 M인 RAM으로 들어가야한다.

B- TYPE

 

B는 if문이 들어가고 PC 로 imm값이 추가된다.

branch가 추가되어야하고 btaken이 추가되었다. 둘다 1이 나올 때 동작한다. 

alu에 있는 btaken이 if문 연산을 해준다.

 

U- TYPE

 

 

 

J-TYPE

 

J   : rd = PC + 4 ; PC += imm;

JA : rd = PC + 4; PC = rs1 + imm;

 

J는 기존에 있는 + 4 가 되는 branch가 이어져 있는 MUX = 0을 사용한다.  PC += imm도  이 MUX의 = 1 이 되게 설정하면 된다. 

JA도 MUX = 0 사용. PC = rs1 + imm을 ADDER로 추가하면 이러하다.

하지만 ADDER는 MUX에 비해 몹시 큰 module이고 4 + PC값이 ALU로부터 나오는데 이 값이 추가된 회색의 MUX때문에 저장되지 않는다.

J :

rd = PC + 4 초록색, 그대로 냅두고

PC += imm 파란색 쓰던거 사용.  보라색선 보라 MUX--> 노란색선

JA :

rd = PC + 4 초록색 , 그대로 냅두고

PC = rs1 + imm 노란색선 --> 보라 MUX --> 노란색

 

'공부방 > Verilog_vivado' 카테고리의 다른 글

AMBA_ AXI4  (0) 2024.07.13
AXI4-Lite Read Address _ Read Data  (0) 2024.06.15
CPU 설계 두 번째 발자국 RV32I_ISA : R, IL  (0) 2024.06.01
CPU_설계 첫걸음.SV Register File & ALU  (0) 2024.05.30
FIFO.SV  (0) 2024.05.24