diff --git a/.github/SUMMARY.md b/.github/SUMMARY.md index 9217a76..7bdd633 100644 --- a/.github/SUMMARY.md +++ b/.github/SUMMARY.md @@ -25,8 +25,8 @@ - [Лабораторная №7. Тракт данных](Labs/07.%20Datapath/README.md) - [Лабораторная №8. Блок загрузки и сохранения](Labs/08.%20Load-store%20unit/README.md) - [Лабораторная №9. Интеграция LSU](Labs/09.%20LSU%20Integration/README.md) -- [Лабораторная №10. Подсистема прерываний](Labs/10.%20Interrupt%20subsystem/README.md) -- [Лабораторная №11. Интеграция подсистемы прерываний](Labs/11.%20Interrupt%20integration/README.md) +- [Лабораторная №10. Подсистема прерывания](Labs/10.%20Interrupt%20subsystem/README.md) +- [Лабораторная №11. Интеграция подсистемы прерывания](Labs/11.%20Interrupt%20integration/README.md) - [Лабораторная №12. Дейзи-цепочка](Labs/12.%20Daisy%20chain/README.md) - [Лабораторная №13. Периферийные устройства](Labs/13.%20Peripheral%20units/README.md) - [Лабораторная №14. Программирование](Labs/14.%20Programming/README.md) diff --git a/.pic/Labs/lab_10_irq/fig_03.drawio.svg b/.pic/Labs/lab_10_irq/fig_03.drawio.svg index 51e787c..ae109ef 100644 --- a/.pic/Labs/lab_10_irq/fig_03.drawio.svg +++ b/.pic/Labs/lab_10_irq/fig_03.drawio.svg @@ -1,4 +1,4 @@ -

Main
Decoder

flag

Register
File
imm_S
imm_U
4
0
RD1
RD2
gpr_we
WE

clk_i

wb_sel
 mem_size
mem_we
alu_op
b_sel
a_sel
jal
b
instr
RA1
RA2
WA
WD
[19:15]
[24:20]
[11:07]
[31:20]
[31:12], 12'h000
[31:25][11:7]
[31][19:12][20][30:21],1'b0
[31][7][30:25][11:8],1'b0
imm_J
imm_B
4
PC

clk_i

rst_i

jalr
ALU
SE
SE
+
mem_wd_o
instr_i
mem_addr_o
instr_addr_o
mem_rd_i
mem_we_o
mem_size_o
instr_addr_o

instr_i

mem_addr_o

mem_we_o

mem_size_o

rst_i

clk_i

SE

0

1

0

1

flag

32
/

32
/

32
/

32
/

32
/

12
/

12
/

21
/

13
/

32
/

mret
SE
mem_req 

mem_req_o

imm_I

— входные сигналы
выходные сигналы
mem_req_o

imm_I

RD1

flag

провода, разорванные        для удобства                    отображения схемы
PC

0
1
2
3
4

0
1
2

32
stall_i
stall_i

32
/

2
3
3
5
mem_wd_o
mem_rd_i
wb_data
wb_data
wb_data
32
PC
2
0
2
1
csr_wd
 illegal_instr
CONTROL
STATUS
REGISTERS
WE

clk_i

addr
pc
mcause
rs1_data
rst
imm_data
trap
opcode
read_data
mie
mepc
mtvec
csr_we
csr_op
3
irq
trap
rst_i
csr_wd
mie
RD1
PC
[19:15]
ZE

5
/

32
/

imm_Z

imm_Z

instr_i[31:20]

mret
IRQ
CONTROLLER
exception_i

clk_i

irq_req_i
mie_i
rst_i
irq_cause_o
irq_ret_o
rst_i
trap
mret
irq
irq_ret_o
irq_req_i
mie[16]

imm_Z

csr_wd
irq
trap
mret
mie
irq_req_i
irq_ret_o
jalr
PC
jalr
32
32
32
32
12
32
32
32
32

1

0

stall_i
trap
trap
trap
ill_instr

0

1

ill_instr
32
32
irq
ill_instr
ill_instr
mret_i
irq_o
32'h0000_0002

imm_I

+
RD1
jalr
{[31:1],1'b0}

1

0

1

0

trap
trap
en
rst
\ No newline at end of file +

Main
Decoder

flag

Register
File
imm_S
imm_U
4
0
RD1
RD2
gpr_we
WE

clk_i

wb_sel
 mem_size
mem_we
alu_op
b_sel
a_sel
jal
b
instr
RA1
RA2
WA
WD
[19:15]
[24:20]
[11:07]
[31:20]
[31:12], 12'h000
[31:25][11:7]
[31][19:12][20][30:21],1'b0
[31][7][30:25][11:8],1'b0
imm_J
imm_B
4
PC

clk_i

rst_i

jalr
ALU
SE
SE
+
mem_wd_o
instr_i
mem_addr_o
instr_addr_o
mem_rd_i
mem_we_o
mem_size_o
instr_addr_o

instr_i

mem_addr_o

mem_we_o

mem_size_o

rst_i

clk_i

SE

0

1

0

1

flag

32
/

32
/

32
/

32
/

32
/

12
/

12
/

21
/

13
/

32
/

mret
SE
mem_req 

mem_req_o

imm_I

— входные сигналы
выходные сигналы
mem_req_o

imm_I

RD1

flag

провода, разорванные        для удобства                    отображения схемы
PC

0
1
2
3
4

0
1
2

32
stall_i
stall_i

32
/

2
3
3
5
mem_wd_o
mem_rd_i
wb_data
wb_data
wb_data
32
PC
2
0
2
1
csr_wd
 illegal_instr
CONTROL
STATUS
REGISTERS
WE

clk_i

addr
pc
mcause
rs1_data
rst
imm_data
trap
opcode
read_data
mie
mepc
mtvec
csr_we
csr_op
3
irq
trap
rst_i
csr_wd
mie
RD1
PC
[19:15]
ZE

5
/

32
/

imm_Z

imm_Z

instr_i[31:20]

mret
IRQ
CONTROLLER
exception_i

clk_i

irq_req_i
mie_i
rst_i
irq_cause_o
irq_ret_o
rst_i
trap
mret
irq
irq_ret_o
irq_req_i
mie[16]

imm_Z

csr_wd
irq
trap
mret
mie
irq_req_i
irq_ret_o
jalr
PC
jalr
32
32
32
32
12
32
32
32
32

1

0

stall_i
trap
trap
trap
ill_instr

0

1

ill_instr
32
32
irq
ill_instr
ill_instr
mret_i
irq_o
32'h0000_0002

imm_I

+
RD1
jalr
{[31:1],1'b0}

1

0

1

0

trap
trap
en
rst
\ No newline at end of file diff --git a/.pic/Labs/lab_11_irq_integration/fig_01.drawio.svg b/.pic/Labs/lab_11_irq_integration/fig_01.drawio.svg index ae109ef..51e787c 100644 --- a/.pic/Labs/lab_11_irq_integration/fig_01.drawio.svg +++ b/.pic/Labs/lab_11_irq_integration/fig_01.drawio.svg @@ -1,4 +1,4 @@ -

Main
Decoder

flag

Register
File
imm_S
imm_U
4
0
RD1
RD2
gpr_we
WE

clk_i

wb_sel
 mem_size
mem_we
alu_op
b_sel
a_sel
jal
b
instr
RA1
RA2
WA
WD
[19:15]
[24:20]
[11:07]
[31:20]
[31:12], 12'h000
[31:25][11:7]
[31][19:12][20][30:21],1'b0
[31][7][30:25][11:8],1'b0
imm_J
imm_B
4
PC

clk_i

rst_i

jalr
ALU
SE
SE
+
mem_wd_o
instr_i
mem_addr_o
instr_addr_o
mem_rd_i
mem_we_o
mem_size_o
instr_addr_o

instr_i

mem_addr_o

mem_we_o

mem_size_o

rst_i

clk_i

SE

0

1

0

1

flag

32
/

32
/

32
/

32
/

32
/

12
/

12
/

21
/

13
/

32
/

mret
SE
mem_req 

mem_req_o

imm_I

— входные сигналы
выходные сигналы
mem_req_o

imm_I

RD1

flag

провода, разорванные        для удобства                    отображения схемы
PC

0
1
2
3
4

0
1
2

32
stall_i
stall_i

32
/

2
3
3
5
mem_wd_o
mem_rd_i
wb_data
wb_data
wb_data
32
PC
2
0
2
1
csr_wd
 illegal_instr
CONTROL
STATUS
REGISTERS
WE

clk_i

addr
pc
mcause
rs1_data
rst
imm_data
trap
opcode
read_data
mie
mepc
mtvec
csr_we
csr_op
3
irq
trap
rst_i
csr_wd
mie
RD1
PC
[19:15]
ZE

5
/

32
/

imm_Z

imm_Z

instr_i[31:20]

mret
IRQ
CONTROLLER
exception_i

clk_i

irq_req_i
mie_i
rst_i
irq_cause_o
irq_ret_o
rst_i
trap
mret
irq
irq_ret_o
irq_req_i
mie[16]

imm_Z

csr_wd
irq
trap
mret
mie
irq_req_i
irq_ret_o
jalr
PC
jalr
32
32
32
32
12
32
32
32
32

1

0

stall_i
trap
trap
trap
ill_instr

0

1

ill_instr
32
32
irq
ill_instr
ill_instr
mret_i
irq_o
32'h0000_0002

imm_I

+
RD1
jalr
{[31:1],1'b0}

1

0

1

0

trap
trap
en
rst
\ No newline at end of file +

Main
Decoder

flag

Register
File
imm_S
imm_U
4
0
RD1
RD2
gpr_we
WE

clk_i

wb_sel
 mem_size
mem_we
alu_op
b_sel
a_sel
jal
b
instr
RA1
RA2
WA
WD
[19:15]
[24:20]
[11:07]
[31:20]
[31:12], 12'h000
[31:25][11:7]
[31][19:12][20][30:21],1'b0
[31][7][30:25][11:8],1'b0
imm_J
imm_B
4
PC

clk_i

rst_i

jalr
ALU
SE
SE
+
mem_wd_o
instr_i
mem_addr_o
instr_addr_o
mem_rd_i
mem_we_o
mem_size_o
instr_addr_o

instr_i

mem_addr_o

mem_we_o

mem_size_o

rst_i

clk_i

SE

0

1

0

1

flag

32
/

32
/

32
/

32
/

32
/

12
/

12
/

21
/

13
/

32
/

mret
SE
mem_req 

mem_req_o

imm_I

— входные сигналы
выходные сигналы
mem_req_o

imm_I

RD1

flag

провода, разорванные        для удобства                    отображения схемы
PC

0
1
2
3
4

0
1
2

32
stall_i
stall_i

32
/

2
3
3
5
mem_wd_o
mem_rd_i
wb_data
wb_data
wb_data
32
PC
2
0
2
1
csr_wd
 illegal_instr
CONTROL
STATUS
REGISTERS
WE

clk_i

addr
pc
mcause
rs1_data
rst
imm_data
trap
opcode
read_data
mie
mepc
mtvec
csr_we
csr_op
3
irq
trap
rst_i
csr_wd
mie
RD1
PC
[19:15]
ZE

5
/

32
/

imm_Z

imm_Z

instr_i[31:20]

mret
IRQ
CONTROLLER
exception_i

clk_i

irq_req_i
mie_i
rst_i
irq_cause_o
irq_ret_o
rst_i
trap
mret
irq
irq_ret_o
irq_req_i
mie[16]

imm_Z

csr_wd
irq
trap
mret
mie
irq_req_i
irq_ret_o
jalr
PC
jalr
32
32
32
32
12
32
32
32
32

1

0

stall_i
trap
trap
trap
ill_instr

0

1

ill_instr
32
32
irq
ill_instr
ill_instr
mret_i
irq_o
32'h0000_0002

imm_I

+
RD1
jalr
{[31:1],1'b0}

1

0

1

0

trap
trap
en
rst
\ No newline at end of file diff --git a/Labs/11. Interrupt integration/README.md b/Labs/11. Interrupt integration/README.md index f0bb1fc..fb5a77c 100644 --- a/Labs/11. Interrupt integration/README.md +++ b/Labs/11. Interrupt integration/README.md @@ -1,16 +1,17 @@ -# Лабораторная работа 11 "Интеграция подсистемы прерываний" +# Лабораторная работа 11 "Интеграция подсистемы прерывания" -После реализации подсистемы прерываний, её необходимо интегрировать в процессорную систему. Для этого необходимо обновить модуль `riscv_core` по схеме, приведенной на _рис. 1_: +После реализации подсистемы прерывания, её необходимо интегрировать в процессорную систему. Для этого необходимо обновить модуль `riscv_core` по схеме, приведенной на _рис. 1_: -![../../.pic/Labs/lab_10_irq/fig_03.drawio.svg](../../.pic/Labs/lab_10_irq/fig_03.drawio.svg) +![../../.pic/Labs/lab_11_irq_integration/fig_01.drawio.svg](../../.pic/Labs/lab_11_irq_integration/fig_01.drawio.svg) _Рисунок 1. Интеграция подсистемы прерываний в ядро процессора._
Схема без выделения новых частей относительно старой версии модуля -![../../.pic/Labs/lab_11_irq_integration/fig_01.drawio.svg](../../.pic/Labs/lab_11_irq_integration/fig_01.drawio.svg) -_Рисунок 1. Схема без выделения новых частей относительно старой версии модуля._ +![../../.pic/Labs/lab_10_irq/fig_03.drawio.svg](../../.pic/Labs/lab_10_irq/fig_03.drawio.svg) + +_Рисунок 2. Схема без выделения новых частей относительно старой версии модуля._
@@ -18,7 +19,7 @@ _Рисунок 1. Схема без выделения новых частей Интегрировать модули `csr_controller` и `irq_controller` в модуль `riscv_core`. -В случае, если вы захотите расширить количество источников прерываний, вы можете выполнить вспомогательную [лабораторную работу №12](../12.%20Daisy%20chain). +В случае, если вы захотите расширить количество источников прерывания, вы можете выполнить вспомогательную [лабораторную работу №12](../12.%20Daisy%20chain). ## Порядок выполнения работы