You are on page 1of 1

1 2 3 4 5

U11
RegisterFile
rd_clk 1 5 insn[19..15] (rs1)
WR AA
(rd) insn[24..20] 2 6 rs1_val[31..0]
WA AD
rd_val[31..0] 3 7 insn[24..20] (rs2)
A WD BA A
reset 4 8 rs2_val[31..0]
Reset BD

pc_alu_sel

U12
U16 U15

A0
4
I1 U13 U14

Q
rd_sel[1]
A1 A Q

pc_alu[31..0]
rd_sel[0] I0

I1
I0

I0
I1
A0 alu_a_sel alu_b__sel
Q + A0 A0

I3
I2
I1
I0

Q
B
U18
U17 PC
pc_clk
Cp
I0 pc[31..0] U19
Q Din Dout

mem_sx[31..0]
I1 reset ALU

A0
RESET

B
Func

A<UB
pc_next_sel sub/sra

A<B
EQ
imm_x[4..0]

Q
shamt
B B
U20 Sheet: imm_sx
sx

imm_x[31..0]
File: mbr_sx.sch

INSN insn imm_x


Sheet: mbr_sx

insn_clk
Cp File: imm_sx.sch
insn[31..0]
Din Dout
reset
size
mbr

RESET
sx_size[2..0]

alu[31..0]

U21

I1
I0
addr_sel Sheet: control_fsm
A0 sub_sra
sub_sra
alu_func[2..0]

Q
func
addr_sel
addr_sel
rd_sel[1..0]
C A<UB rd_sel[1..0] C
alu_a_sel
mem_out[31..0]

A<B alu_a_sel
U22 alu_b_sel
EQ alu_b_sel
MEM insn[6..0] mem_clk
addr[31..0] opcode mem_clk
insn[14..12] rd_clk
funct3 rd_clk
ReadAddress insn[30] pc_clk
sub_sra_in pc_clk
WriteAddress insn_clk
mem_clk ir_clk
WE pc_alu_sel
pc_alu_sel
Dout Din pc_next_sel
pc_next_sel
rs2_val[31..0] sx_size[2..0]
sx_size[2..0]
CLK reset
reset
File: control.sch

D D

Sheet: /
File: rv32i.sch
Title: RV32I
Size: A Date: 2021-10-04 Rev: 1.1
KiCad E.D.A. kicad 5.1.5+dfsg1-2build2 Id: 1/4
1 2 3 4 5

You might also like