Skip to content

Commit bc1c9e5

Browse files
committed
English version draft
Assisted-by: Claude:claude-4.6-sonnet
1 parent 7ebed1d commit bc1c9e5

78 files changed

Lines changed: 5390 additions & 5962 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/Intro.md

Lines changed: 91 additions & 91 deletions
Large diffs are not rendered by default.

.github/SUMMARY.md

Lines changed: 48 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,68 +1,68 @@
11
# Summary
22

3-
[Порядок выполнения лабораторных работ для групп](index.md)
4-
[Предисловие](Intro.md)
3+
[Lab schedule by group](index.md)
4+
[Preface](Intro.md)
55

66
---
77

8-
# Введение
8+
# Introduction
99

10-
- [О данном разделе](Introduction/README.md)
11-
- [Что такое Язык Описания Аппаратуры](Introduction/What%20is%20HDL.md)
12-
- [Как работает ПЛИС](Introduction/How%20FPGA%20works.md)
13-
- [Последовательностная логика](Introduction/Sequential%20logic.md)
14-
- [Этапы реализации проекта в ПЛИС](Introduction/Implementation%20steps.md)
10+
- [About this section](Introduction/README.md)
11+
- [What is a Hardware Description Language](Introduction/What%20is%20HDL.md)
12+
- [How FPGAs work](Introduction/How%20FPGA%20works.md)
13+
- [Sequential logic](Introduction/Sequential%20logic.md)
14+
- [FPGA implementation steps](Introduction/Implementation%20steps.md)
1515

1616
---
1717

18-
# Лабораторные работы
18+
# Laboratory works
1919

20-
- [Лабораторная №1. Сумматор](Labs/01.%20Adder/README.md)
21-
- [Лабораторная №2. АЛУ](Labs/02.%20Arithmetic-logic%20unit/README.md)
22-
- [Лабораторная №3. Регистровый файл и внешняя память](Labs/03.%20Register%20file%20and%20memory/README.md)
23-
- [Лабораторная №4. Простейшее программируемое устройство](Labs/04.%20Primitive%20programmable%20device/README.md)
24-
- [Написание программы под процессор CYBERcobra](Labs/04.%20Primitive%20programmable%20device/Индивидуальное%20задание/README.md)
25-
- [Лабораторная №5. Декодер инструкций](Labs/05.%20Main%20decoder/README.md)
26-
- [Лабораторная №6. Основная память](Labs/06.%20Main%20memory/README.md)
27-
- [Лабораторная №7. Тракт данных](Labs/07.%20Datapath/README.md)
28-
- [Лабораторная №8. Блок загрузки и сохранения](Labs/08.%20Load-store%20unit/README.md)
29-
- [Лабораторная №9. Интеграция LSU](Labs/09.%20LSU%20Integration/README.md)
30-
- [Лабораторная №10. Подсистема прерывания](Labs/10.%20Interrupt%20subsystem/README.md)
31-
- [Лабораторная №11. Интеграция подсистемы прерывания](Labs/11.%20Interrupt%20integration/README.md)
32-
- [Лабораторная №12. Блок приоритетных прерываний](Labs/12.%20Daisy%20chain/README.md)
33-
- [Лабораторная №13. Периферийные устройства](Labs/13.%20Peripheral%20units/README.md)
34-
- [Лабораторная №14. Программирование](Labs/14.%20Programming/README.md)
35-
- [Лабораторная №15. Программатор](Labs/15.%20Programming%20device/README.md)
36-
- [Лабораторная №16. Оценка производительности](Labs/16.%20Coremark/README.md)
20+
- [Lab 1. Adder](Labs/01.%20Adder/README.md)
21+
- [Lab 2. ALU](Labs/02.%20Arithmetic-logic%20unit/README.md)
22+
- [Lab 3. Register file and external memory](Labs/03.%20Regiter%20file%20and%20memory/README.md)
23+
- [Lab 4. Primitive programmable device](Labs/04.%20Primtive%20programmable%20device/README.md)
24+
- [Writng a program for the CYBERcobra processor](Labs/04.%20Primtive%20programmable%20device/Индивидуальное%20задание/README.md)
25+
- [Lab 5. Instruction decoder](Labs/05.%20Main%20decoder/README.md)
26+
- [Lab 6. Main memory](Labs/06.%20Main%20memory/README.md)
27+
- [Lab 7. Datapath](Labs/07.%20Datapath/README.md)
28+
- [Lab 8. Load-store unit](Labs/08.%20Load-store%20unit/README.md)
29+
- [Lab 9. LSU integration](Labs/09.%20LSU%20Integration/README.md)
30+
- [Lab 10. Interrupt subsystem](Labs/10.%20Interrupt%20subsystem/README.md)
31+
- [Lab 11. Interrupt subsystem integration](Labs/11.%20Interrupt%20integration/README.md)
32+
- [Lab 12. Priority interrupt unit (Daisy chain)](Labs/12.%20Daisy%20chain/README.md)
33+
- [Lab 13. Peripheral devices](Labs/13.%20Peripheral%20units/README.md)
34+
- [Lab 14. Programming](Labs/14.%20Programming/README.md)
35+
- [Lab 15. Programmer device](Labs/15.%20Programming%20device/README.md)
36+
- [Lab 16. Performance evaluation](Labs/16.%20Coremark/README.md)
3737

3838
---
3939

40-
# Базовые конструкции SystemVerilog
40+
# Basic SystemVerilog constructs
4141

42-
- [Описание раздела](Basic%20Verilog%20structures/README.md)
43-
- [Модули](Basic%20Verilog%20structures/Modules.md)
44-
- [Мультиплексоры](Basic%20Verilog%20structures/Multiplexors.md)
45-
- [Регистры](Basic%20Verilog%20structures/Registers.md)
46-
- [Конкатенация](Basic%20Verilog%20structures/Concatenation.md)
47-
- [Защелки](Basic%20Verilog%20structures/Latches.md)
48-
- [О различиях между блокирующими и неблокирующими присваиваниями](Basic%20Verilog%20structures/Assignments.md)
49-
- [Контроллеры](Basic%20Verilog%20structures/Controllers.md)
42+
- [Section overview](Basic%20Verilog%20structures/README.md)
43+
- [Modules](Basic%20Verilog%20structures/Modules.md)
44+
- [Multiplexers](Basic%20Verilog%20structures/Multiplexors.md)
45+
- [Registers](Basic%20Verilog%20structures/Registers.md)
46+
- [Concatenation](Basic%20Verilog%20structures/Concatenation.md)
47+
- [Latches](Basic%20Verilog%20structures/Latches.md)
48+
- [Blocking vs non-blocking assignments](Basic%20Verilog%20structures/Assignments.md)
49+
- [Controllers](Basic%20Verilog%20structures/Controllers.md)
5050

5151
---
5252

53-
# Основы Vivado
53+
# Vivado Basics
5454

55-
1. [Создание проекта в Vivado](Vivado%20Basics/01.%20New%20project.md)
56-
2. [Навигатор по маршруту проектирования](Vivado%20Basics/02.%20Flow%20Navigator.md)
57-
3. [Менеджер проекта](Vivado%20Basics/03.%20Project%20manager.md)
58-
4. [Симуляция](Vivado%20Basics/04.%20Simulation.md)
59-
5. [Руководство по поиску функциональных ошибок](Vivado%20Basics/05.%20Bug%20hunting.md)
60-
6. [Анализ RTL](Vivado%20Basics/06.%20RTL%20Analysis.md)
61-
7. [Руководство по прошивке ПЛИС](Vivado%20Basics/07.%20Program%20and%20debug.md)
62-
8. [Руководство по работе с ошибками обработки кода](Vivado%20Basics/08.%20Code%20processing%20errors.md)
55+
1. [Creating a project in Vivado](Vivado%20Basics/01.%20New%20project.md)
56+
2. [Flow Navigator](Vivado%20Basics/02.%20Flow%20Navigator.md)
57+
3. [Project Manager](Vivado%20Basics/03.%20Project%20manager.md)
58+
4. [Simulation](Vivado%20Basics/04.%20Simulation.md)
59+
5. [Functional bug hunting guide](Vivado%20Basics/05.%20Bug%20hunting.md)
60+
6. [RTL Analysis](Vivado%20Basics/06.%20RTL%20Analysis.md)
61+
7. [FPGA programming guide](Vivado%20Basics/07.%20Program%20and%20debug.md)
62+
8. [Code processing errors guide](Vivado%20Basics/08.%20Code%20processing%20errors.md)
6363

64-
# Дополнительные материалы
64+
# Additional materials
6565

66-
- [RV32I - Стандартный набор целочисленных инструкций RISC-V](Other/rv32i.md)
67-
- [О регистрах контроля и статуса](Other/CSR.md)
68-
- [Список типичных ошибок при работе с Vivado и SystemVerilog](Other/FAQ.md)
66+
- [RV32I — RISC-V Base Integer Instruction Set](Other/rv32i.md)
67+
- [Control and Status Registers (CSR)](Other/CSR.md)
68+
- [Common Vivado & SystemVerilog pitfalls](Other/FAQ.md)

.github/book.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
[book]
22
authors = ["Andrei Solodovnikov, Mikhail Popov"]
33
language = "ru"
4-
multilingual = true
54
src = "./"
65
title = "Архитектуры процессорных систем"
76

87
[output.html]
98
git-repository-url = "https://github.com/MPSU/APS"
109
git-repository-icon = "fa-github"
10+
site-url = "/APS/"
11+
additional-js = ["theme/language-switcher.js"]
12+
additional-css = ["theme/language-switcher.css"]

.github/book_en.toml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
[book]
2+
authors = ["Andrei Solodovnikov, Mikhail Popov"]
3+
language = "en"
4+
src = "./"
5+
title = "Architectures of Processor Systems"
6+
7+
[output.html]
8+
git-repository-url = "https://github.com/MPSU/APS"
9+
git-repository-icon = "fa-github"
10+
site-url = "/APS/en/"
11+
additional-js = ["theme/language-switcher.js"]
12+
additional-css = ["theme/language-switcher.css"]

.github/index.md

Lines changed: 35 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,48 @@
1-
# Курс лабораторных работ
1+
# Lab Course
22

3-
## Полезное
3+
## Useful Resources
44

5-
- [Создание базового проекта с прошивкой ПЛИС в Vivado](Vivado%20Basics/01.%20New%20project.md)
6-
- [Базовые конструкции Verilog](Basic%20Verilog%20structures/)
7-
- [Список типичных ошибок в Vivado и SystemVerilog](Other/FAQ.md)
8-
- [Тестовое окружение](Basic%20Verilog%20structures/Testbench.md)
5+
- [Creating a basic project with FPGA programming in Vivado](Vivado%20Basics/01.%20New%20project.md)
6+
- [Basic Verilog Constructs](Basic%20Verilog%20structures/)
7+
- [List of common errors in Vivado and SystemVerilog](Other/FAQ.md)
8+
- [Testbench](Basic%20Verilog%20structures/Testbench.md)
99

10-
## Порядок выполнения лабораторных работ для групп
10+
## Lab Sequence by Group
1111

12-
### ИБ, ИКТ, КТ, РТ
12+
### IB, ICT, CT, RT
1313

14-
1. Сумматор ([01. Adder](Labs/01.%20Adder))
15-
2. АЛУ ([02. Arithmetic-logic unit](Labs/02.%20Arithmetic-logic%20unit))
16-
3. Регистровый файл и внешняя память ([03. Register file and memory](Labs/03.%20Register%20file%20and%20memory))
17-
4. Простейшее программируемое устройство ([04. Primitive programmable device](Labs/04.%20Primitive%20programmable%20device))
14+
1. Adder ([01. Adder](Labs/01.%20Adder))
15+
2. ALU ([02. Arithmetic-logic unit](Labs/02.%20Arithmetic-logic%20unit))
16+
3. Register file and external memory ([03. Register file and memory](Labs/03.%20Register%20file%20and%20memory))
17+
4. Primitive programmable device ([04. Primitive programmable device](Labs/04.%20Primitive%20programmable%20device))
1818

19-
### ПИН, ПМ
19+
### PIN, PM
2020

21-
1. Сумматор ([01. Adder](Labs/01.%20Adder))
22-
2. АЛУ ([02. Arithmetic-logic unit](Labs/02.%20Arithmetic-logic%20unit))
23-
3. Регистровый файл и внешняя память ([03. Register file and memory](Labs/03.%20Register%20file%20and%20memory))
24-
4. Простейшее программируемое устройство ([04. Primitive programmable device](Labs/04.%20Primitive%20programmable%20device))
25-
5. Основной дешифратор ([05. Main decoder](Labs/05.%20Main%20decoder))
21+
1. Adder ([01. Adder](Labs/01.%20Adder))
22+
2. ALU ([02. Arithmetic-logic unit](Labs/02.%20Arithmetic-logic%20unit))
23+
3. Register file and external memory ([03. Register file and memory](Labs/03.%20Register%20file%20and%20memory))
24+
4. Primitive programmable device ([04. Primitive programmable device](Labs/04.%20Primitive%20programmable%20device))
25+
5. Main decoder ([05. Main decoder](Labs/05.%20Main%20decoder))
2626
6.
27-
1. Тракт данных ([07. Datapath](Labs/07.%20Datapath))
28-
2. Интеграция блока загрузки и сохранения ([09. LSU Integration](Labs/09.%20LSU%20Integration))
29-
3. Интеграция подсистемы прерываний ([11. Interrupt Integration](Labs/11.%20Interrupt%20integration))
30-
7. Периферийные устройства ([13. Peripheral units](Labs/13.%20Peripheral%20units))
31-
8. Программирование ([14. Programming](Labs/14.%20Programming))
27+
1. Datapath ([07. Datapath](Labs/07.%20Datapath))
28+
2. Load-store unit integration ([09. LSU Integration](Labs/09.%20LSU%20Integration))
29+
3. Interrupt subsystem integration ([11. Interrupt Integration](Labs/11.%20Interrupt%20integration))
30+
7. Peripheral units ([13. Peripheral units](Labs/13.%20Peripheral%20units))
31+
8. Programming ([14. Programming](Labs/14.%20Programming))
3232

33-
### ИВТ
33+
### ICS
3434

35-
1. АЛУ ([02. Arithmetic-logic unit](Labs/02.%20Arithmetic-logic%20unit))
35+
1. ALU ([02. Arithmetic-logic unit](Labs/02.%20Arithmetic-logic%20unit))
3636
2.
37-
1. Память ([03. Register file and memory](Labs/03.%20Register%20file%20and%20memory)),
38-
2. Простейшее программируемое устройство ([04. Primitive programmable device](Labs/04.%20Primitive%20programmable%20device))
39-
3. Основной дешифратор ([05. Main decoder](Labs/05.%20Main%20decoder))
40-
4. Тракт данных ([07. Datapath](Labs/07.%20Datapath))
37+
1. Memory ([03. Register file and memory](Labs/03.%20Register%20file%20and%20memory))
38+
2. Primitive programmable device ([04. Primitive programmable device](Labs/04.%20Primitive%20programmable%20device))
39+
3. Main decoder ([05. Main decoder](Labs/05.%20Main%20decoder))
40+
4. Datapath ([07. Datapath](Labs/07.%20Datapath))
4141
5.
42-
1. Модуль загрузки и сохранения ([08. Load-store unit](Labs/08.%20Load-store%20unit))
43-
2. Интеграция блока загрузки и сохранения ([09. LSU Integration](Labs/09.%20LSU%20Integration))
42+
1. Load-store unit ([08. Load-store unit](Labs/08.%20Load-store%20unit))
43+
2. Load-store unit integration ([09. LSU Integration](Labs/09.%20LSU%20Integration))
4444
6.
45-
1. Контроллер прерываний ([10. Interrupt subsystem](Labs/10.%20Interrupt%20subsystem))
46-
2. Интеграция подсистемы прерываний ([11. Interrupt Integration](Labs/11.%20Interrupt%20integration))
47-
7. Периферийные устройства ([13. Peripheral units](Labs/13.%20Peripheral%20units))
48-
8. Программирование ([14. Programming](Labs/14.%20Programming))
45+
1. Interrupt controller ([10. Interrupt subsystem](Labs/10.%20Interrupt%20subsystem))
46+
2. Interrupt subsystem integration ([11. Interrupt Integration](Labs/11.%20Interrupt%20integration))
47+
7. Peripheral units ([13. Peripheral units](Labs/13.%20Peripheral%20units))
48+
8. Programming ([14. Programming](Labs/14.%20Programming))

.github/prepare.sh

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
11
#!/bin/bash
2+
set -e
23

3-
mkdir src
4-
cp .github/book.toml .github/*.md ./
4+
mkdir -p src
5+
cp .github/book.toml .github/*.md ./
6+
7+
# Copy custom theme assets (language switcher, etc.)
8+
if [ -d ".github/theme" ]; then
9+
cp -r .github/theme ./
10+
fi
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/* ── Language Switcher ───────────────────────────────────────────────────── */
2+
3+
#language-switcher {
4+
display: inline-flex;
5+
align-items: center;
6+
gap: 4px;
7+
8+
background: none;
9+
border: 1px solid var(--icons);
10+
border-radius: 4px;
11+
color: var(--icons);
12+
cursor: pointer;
13+
font-size: 0.82em;
14+
font-weight: 600;
15+
line-height: 1;
16+
padding: 3px 8px;
17+
18+
/* sit nicely alongside the existing icon buttons */
19+
margin-right: 4px;
20+
vertical-align: middle;
21+
22+
transition: color 0.15s, border-color 0.15s, background 0.15s;
23+
}
24+
25+
#language-switcher:hover,
26+
#language-switcher:focus-visible {
27+
color: var(--icons-hover);
28+
border-color: var(--icons-hover);
29+
background-color: rgba(128, 128, 128, 0.08);
30+
outline: none;
31+
}
32+
33+
/* Keep the flag emoji from being shrunk by the parent flex layout */
34+
#language-switcher span[aria-hidden] {
35+
font-size: 1.1em;
36+
line-height: 1;
37+
}
38+
39+
/* Hide text label on very small screens, show only flag */
40+
@media (max-width: 420px) {
41+
#language-switcher .lang-label {
42+
display: none;
43+
}
44+
}

.github/theme/language-switcher.js

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
(function () {
2+
"use strict";
3+
4+
// Detects current language from the URL path.
5+
// Russian lives at /APS/... English lives at /APS/en/...
6+
function currentLang() {
7+
return /\/en\//.test(window.location.pathname) ? "en" : "ru";
8+
}
9+
10+
function switchLanguage() {
11+
var path = window.location.pathname;
12+
var newPath;
13+
14+
if (currentLang() === "en") {
15+
// /APS/en/foo/bar.html → /APS/foo/bar.html
16+
newPath = path.replace("/en/", "/");
17+
} else {
18+
// /APS/foo/bar.html → /APS/en/foo/bar.html
19+
// Insert "en/" after the first path segment (the repo root, e.g. /APS/)
20+
newPath = path.replace(/^(\/[^\/]+\/)/, "$1en/");
21+
}
22+
23+
window.location.href =
24+
newPath + window.location.search + window.location.hash;
25+
}
26+
27+
function addSwitcher() {
28+
var lang = currentLang();
29+
30+
var btn = document.createElement("button");
31+
btn.id = "language-switcher";
32+
btn.setAttribute(
33+
"title",
34+
lang === "ru" ? "Switch to English" : "Переключить на русский"
35+
);
36+
btn.setAttribute("aria-label", btn.getAttribute("title"));
37+
38+
// Flag + label
39+
var icon = document.createElement("span");
40+
icon.setAttribute("aria-hidden", "true");
41+
icon.textContent = lang === "ru" ? "🇬🇧" : "🇷🇺";
42+
43+
var label = document.createElement("span");
44+
label.className = "lang-label";
45+
label.textContent = lang === "ru" ? "EN" : "RU";
46+
47+
btn.appendChild(icon);
48+
btn.appendChild(label);
49+
btn.addEventListener("click", switchLanguage);
50+
51+
// mdBook places theme/print/search buttons in .right-buttons
52+
var target = document.querySelector(".right-buttons");
53+
if (target) {
54+
target.insertBefore(btn, target.firstChild);
55+
}
56+
}
57+
58+
if (document.readyState === "loading") {
59+
document.addEventListener("DOMContentLoaded", addSwitcher);
60+
} else {
61+
addSwitcher();
62+
}
63+
})();

0 commit comments

Comments
 (0)