diff --git a/circuit/25-2/course_project/README.txt b/circuit/25-2/course_project/README.txt index dc4a497..ede6a20 100644 --- a/circuit/25-2/course_project/README.txt +++ b/circuit/25-2/course_project/README.txt @@ -1,17 +1,27 @@ -section - страница +query-параметры +printable - гарантирует корректность отображения при печати через встроенный механизм в браузере, а именно: + переворачивает section.landscape + +section - вертикальная страница +section.landscape - горизонтальная страница +section#page- - такой id добавляется к каждой странице автоматически h1, h2, h3 - пункт, подпункт, подподпункт, отображаются в содержании img.alt - генерируемая подпись "Рисунок - " +img.style - стили, накладываемые на обертку, содержащую img и caption +img.data-style - стили, накладываемые на сам img table.data-alt - генерируемая подпись "Таблица - " table.data-gen - генерация таблицы в формате "1,2;3,4;", где ',' разделяет колонки, ';' разделяет строки -$,,$ -$C,$ - установить colspan клетки -$c,$ - установить цвет клетки, color = r | g | b -$$ - экранирование $ -$, - экранирование , -$; - экранирование ; + $,,$ + $C,$ - установить colspan клетки + $c,$ - установить цвет клетки, color = r | g | b + $$ - экранирование $ + $, - экранирование , + $; - экранирование ; +table.style - стили, накладываемые на обертку, содержащую table и caption +table.data-style - стили, накладываемые на сам table .tex - генерирует MathML на основе TeX diff --git a/circuit/25-2/course_project/drawio/bo-func.drawio b/circuit/25-2/course_project/drawio/bo-func.drawio index 7cd578b..29b7ea0 100644 --- a/circuit/25-2/course_project/drawio/bo-func.drawio +++ b/circuit/25-2/course_project/drawio/bo-func.drawio @@ -1,125 +1,116 @@ - + - + - + - + - + - - + + - - - - - - - - - - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -128,7 +119,7 @@ - + @@ -137,166 +128,73 @@ - + - + - + - + - - + + - - - - - - - - - - - - - - - - - - - - - - - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - + + - - - - - + + - - - - - - - - - - - - - - - - - - + @@ -305,7 +203,7 @@ - + @@ -314,188 +212,293 @@ - - - - - - - + - - + + - - - - + + + - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - + - + - + - + - + - - + + - + - + - + - + - + - - + + - - - - - - - + - + - + - + - + - + - + - + - + - + + + + + + + - - + + + + + - - - - + + + - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/circuit/25-2/course_project/img/bo-cs1.png b/circuit/25-2/course_project/img/bo-cs1.png index dce6e5b..f9f4168 100644 Binary files a/circuit/25-2/course_project/img/bo-cs1.png and b/circuit/25-2/course_project/img/bo-cs1.png differ diff --git a/circuit/25-2/course_project/img/bo-cs2.png b/circuit/25-2/course_project/img/bo-cs2.png index c3ab574..783ae58 100644 Binary files a/circuit/25-2/course_project/img/bo-cs2.png and b/circuit/25-2/course_project/img/bo-cs2.png differ diff --git a/circuit/25-2/course_project/img/bo-cs3.png b/circuit/25-2/course_project/img/bo-cs3.png index 753357b..ac6d2a9 100644 Binary files a/circuit/25-2/course_project/img/bo-cs3.png and b/circuit/25-2/course_project/img/bo-cs3.png differ diff --git a/circuit/25-2/course_project/img/bo-func.png b/circuit/25-2/course_project/img/bo-func.png deleted file mode 100644 index adca5ea..0000000 Binary files a/circuit/25-2/course_project/img/bo-func.png and /dev/null differ diff --git a/circuit/25-2/course_project/img/bo-func.svg b/circuit/25-2/course_project/img/bo-func.svg new file mode 100644 index 0000000..b48a231 --- /dev/null +++ b/circuit/25-2/course_project/img/bo-func.svg @@ -0,0 +1,4 @@ + + + +
RA
0


3
0
RB

3
SM
0


3
0


3
0   TCF
B

/
4
A

/
4

/
4

/
4
Y0
Y1
1
/
/
1
КС1
Y4
0
0   TS
КС2

4
/

4
/


/
4
F0

/
4
результат
SET BIT

/
8
результат
MUL
Y2
Y3
КС3
1
/


/
1

1
/

   SLI
4
   RHI

7
0   
            0
   RLO

3
3
Y5 Y6 Y8
Y5 Y7 Y8
diff --git a/circuit/25-2/course_project/img/bo-logic.png b/circuit/25-2/course_project/img/bo-logic.png new file mode 100644 index 0000000..1e8908a Binary files /dev/null and b/circuit/25-2/course_project/img/bo-logic.png differ diff --git a/circuit/25-2/course_project/img/bo-mul.png b/circuit/25-2/course_project/img/bo-mul.png index 06516de..4565e2e 100644 Binary files a/circuit/25-2/course_project/img/bo-mul.png and b/circuit/25-2/course_project/img/bo-mul.png differ diff --git a/circuit/25-2/course_project/img/bo-ra.png b/circuit/25-2/course_project/img/bo-ra.png index df4ce05..f61d9da 100644 Binary files a/circuit/25-2/course_project/img/bo-ra.png and b/circuit/25-2/course_project/img/bo-ra.png differ diff --git a/circuit/25-2/course_project/img/bo-rb.png b/circuit/25-2/course_project/img/bo-rb.png index 5c4f9fb..7eb741f 100644 Binary files a/circuit/25-2/course_project/img/bo-rb.png and b/circuit/25-2/course_project/img/bo-rb.png differ diff --git a/circuit/25-2/course_project/img/bo-rhi.png b/circuit/25-2/course_project/img/bo-rhi.png new file mode 100644 index 0000000..1439f85 Binary files /dev/null and b/circuit/25-2/course_project/img/bo-rhi.png differ diff --git a/circuit/25-2/course_project/img/bo-rlo.png b/circuit/25-2/course_project/img/bo-rlo.png new file mode 100644 index 0000000..cb47c72 Binary files /dev/null and b/circuit/25-2/course_project/img/bo-rlo.png differ diff --git a/circuit/25-2/course_project/img/bo-rr.png b/circuit/25-2/course_project/img/bo-rr.png deleted file mode 100644 index d75c197..0000000 Binary files a/circuit/25-2/course_project/img/bo-rr.png and /dev/null differ diff --git a/circuit/25-2/course_project/img/bo-scheme.png b/circuit/25-2/course_project/img/bo-scheme.png deleted file mode 100644 index a08f8e3..0000000 Binary files a/circuit/25-2/course_project/img/bo-scheme.png and /dev/null differ diff --git a/circuit/25-2/course_project/img/bo-sm.png b/circuit/25-2/course_project/img/bo-sm.png index cc91528..26c556d 100644 Binary files a/circuit/25-2/course_project/img/bo-sm.png and b/circuit/25-2/course_project/img/bo-sm.png differ diff --git a/circuit/25-2/course_project/img/bo-tcf.png b/circuit/25-2/course_project/img/bo-tcf.png new file mode 100644 index 0000000..1741f59 Binary files /dev/null and b/circuit/25-2/course_project/img/bo-tcf.png differ diff --git a/circuit/25-2/course_project/img/bo-ts.png b/circuit/25-2/course_project/img/bo-ts.png new file mode 100644 index 0000000..b276a23 Binary files /dev/null and b/circuit/25-2/course_project/img/bo-ts.png differ diff --git a/circuit/25-2/course_project/index.css b/circuit/25-2/course_project/index.css index 94d9612..6c53234 100644 --- a/circuit/25-2/course_project/index.css +++ b/circuit/25-2/course_project/index.css @@ -25,6 +25,15 @@ section { overflow: hidden; } +section.landscape { + width: 297mm; + height: 210mm; + margin: 43.5mm 0 43.5mm 0; + padding: 15mm 20mm 30mm 20mm; + border-bottom: none; + border-right: 1mm solid gray; +} + header { font-size: 1.5rem; font-weight: bolder; @@ -80,6 +89,10 @@ h3 { align-items: center; } +.left { + text-align: left; +} + .right { text-align: right; } @@ -124,7 +137,7 @@ p { background-color: white; } -.table-of-contents span + span { +.table-of-contents span + a { float: right; padding-left: 0.33em; background-color: white; diff --git a/circuit/25-2/course_project/index.html b/circuit/25-2/course_project/index.html index f176469..40711a1 100644 --- a/circuit/25-2/course_project/index.html +++ b/circuit/25-2/course_project/index.html @@ -7,7 +7,8 @@ - + @@ -51,7 +52,8 @@

$$[A]_{\text{п}} = a_3, a_2 a_1 a_0$$ - $$[A]_{\text{п}} \cdot [B]_{\text{п}} = (..((0 + A \cdot b_0) \cdot p^{-1} + A \cdot b_1) \cdot p^{-1} + ... + A \cdot b_{n-1}) \cdot p^{3}$$ + $$[A]_{\text{п}} \cdot [B]_{\text{п}} = (..((0 + A \cdot b_0) \cdot p^{-1} + A \cdot b_1) \cdot p^{-1} + ... + A + \cdot b_{n-1}) \cdot p^{3}$$
@@ -61,27 +63,22 @@ $\mathrm{Зн} = 0 \oplus 0 = 0$ $[\mathrm{A}*\mathrm{B}]_\mathrm{п} = 0.0110001 = 49$
-
+ " class="center" style="flex: 1">
-
+
Пример 2: $[\mathrm{A}]_\mathrm{п} = 0.111 = 7$ @@ -89,25 +86,20 @@ $\mathrm{Зн} = 1 \oplus 0 = 1$ $[\mathrm{A}*\mathrm{B}]_\mathrm{п} = 1.0100011 = -35$
-
+ " class="center" style="flex: 1">
@@ -116,11 +108,11 @@ Блок схема умножения

Проверка бита с установкой его в единицу

-

Операция проверяет бит в RB по адресу из RA, устанавливает флаг CF, если значение бита в операнде 1, значение бита в операнде устанавливается в 1

+

Операция проверяет бит в RB по адресу из RA, устанавливает флаг CF, если значение бита в операнде 1, значение + бита в операнде устанавливается в 1

- Блок схема проверки бита с установкой в единицу -
-
+
+
Пример 1: $RA = 0000$ @@ -136,12 +128,344 @@ $RB = 0011$
+ Блок схема проверки бита с установкой в единицу +

Функциональная схема блока операций

-

Функциональная схема блока операций представлена на рисунке

- Функциональная схема блока операций +
+ Функциональная схема блока операций +
+

Функциональная схема блока операций представлена на рисунке , в таблице приведены все элементы функциональной схемы блока операций с их функциями и + назначением.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Обозначение блокаНазначение
RAРегистр первого операнда, 4 разряда, хранение, параллельная загрузка A
RBРегистр второго операнда, 4 разряда, хранение, параллельная загрузка B, логический сдвиг вправо, + формирование сигнала F0
RLOРегистр младшей части результата, 4 разряда, хранение, параллельная загрузка, логический сдвиг вправо, + синхронный сброс в 0
RHIРегистр старшей части результата, 4 разряда, хранение, параллельная загрузка, логический сдвиг вправо с + переносом в RLO, синхронный сброс в 0
CS1Формирование знака произведения
CS2Формирование нового значения B с установленным битом по индексу A
CS3Формирование флага CF (значения бита из B по индексу A)
SMСумматор, 4 разряда
TSРегистр знака произведения, 1 разряд, хранение, загрузка
TCFРегистр флага CF (значения бита из B по индексу A), 1 разряд, хранение, загрузка
+
+
+

Проектирование логических элементов блока операций

+

Регистр первого операнда RA

+

Данный регистр является четырёхразрядным регистром хранения. Наиболее подходящим для реализации функций регистра + RA является регистр FD4CE

+
+ + + + + + + + + + + + + + + + +
ОбозначениеНазначение
Y0
0Хранение
1Параллельная загрузка
+ Логическая схема RA +
+

Регистр второго операнда RB

+

Данный регистр должен выполнять микрооперации хранения, параллельной загрузки и логического сдвига вправо. Для + реализации выбран универсальный регистр со сдвигом влево SR4CLE, для получения сдвига вправо входы и выходы + подключены в обратном порядке. Младший бит выхода Q0 формирует сигнал F0

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ОбозначениеНазначение
Y1Y2
00Хранение
10Параллельная загрузка
01Логический сдвиг вправо
+ Логическая схема RB +
+
+
+

Регистр младшей части результата RLO

+

Данный регистр должен выполнять микрооперации хранения, параллельной загрузки, логического сдвига вправо (с + заполнением старшего бита младшим разрядом из RHI) и синхронного сброса в 0. Для реализации выбран универсальный + сдвиговый регистр SR4RLE

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ОбозначениеНазначение
Y5Y6Y8
000Хранение
010Параллельная загрузка
001Логический сдвиг вправо
100Сброс в 0
+ Логическая схема RLO +
+

Регистр старшей части результата RHI

+

Данный регистр должен выполнять микрооперации хранения, параллельной загрузки, логического сдвига вправо (c + коммутацией младшего бита в старший разряд RLO) и синхронного сброса в 0. Для реализации выбран универсальный + сдвиговый регистр SR4RLE

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ОбозначениеНазначение
Y5Y7Y8
000Хранение
010Параллельная загрузка
001Логический сдвиг вправо
100Сброс в 0
+ Логическая схема RHI +
+
+
+
+
+

Комбинационная схема CS1

+

Отвечает за формирование знака произведения

+ Логическая схема CS1 +
+
+

Комбинационная схема CS2

+

Отвечает за формирование нового значения B с установленным битом по индексу A

+ Логическая схема CS2 +
+
+
+
+

Комбинационная схема CS3

+

Отвечает за формирование флага CF (бита из B по индексу A)

+ Логическая схема CS3 +
+
+

Сумматор SM

+

4-х битный сумматор ADD4

+ Логическая схема SM +
+
+
+
+

Регистр знака TS

+
+ + + + + + + + + + + + + + + + +
ОбозначениеНазначение
Y3
0Хранение
1Загрузка
+ Логическая схема TS +
+

Регистр флага TCF

+
+ + + + + + + + + + + + + + + + +
ОбозначениеНазначение
Y4
0Хранение
1Загрузка
+ Логическая схема TCF +
+
+
+

Логическая схема блока операций

+ Логическая схема блока операций +
+
+

Микропрограммы выполнения операций

+

Определение сигналов блока операций

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
СигналОперация
Y0 + Загрузка A в RA
Y1Загрузка B в RB
Y2Логический сдвиг вправо RB
Y3Загрузка значения на выходе CS1 в TS
Y4Загрузка значения на выходе CS3 в TCF
Y5Синхронный сброс RLO и RHI
Y6Загрузка значения на выходе CS2 в RLO
Y7Загрузка значения на выходе SM в RHI
Y8Логический сдвиг вправо группы регистров RHI и RLO
+ + + + + + + + +
СигналОперация
F0 + Младший разряд B
+
+

Алгоритм микропрограммы УМНОЖЕНИЕ

diff --git a/circuit/25-2/course_project/index.js b/circuit/25-2/course_project/index.js index bf5f510..5f8ebe9 100644 --- a/circuit/25-2/course_project/index.js +++ b/circuit/25-2/course_project/index.js @@ -5,6 +5,7 @@ function addPageNumbers() { let div = document.createElement('div') div.classList.add('page-number') div.textContent = i + pages[i - 1].id = 'page-' + i pages[i - 1].appendChild(div) } } @@ -17,7 +18,7 @@ function addTableOfContents() { let prefix_counter = [0, 0, 0] let page_counter = 2 - let page + let page = document.querySelector('section') for (const h of hs) { let level = { @@ -38,16 +39,19 @@ function addTableOfContents() { let li = document.createElement('li') let name = document.createElement('span') - let page_number = document.createElement('span') + let page_number = document.createElement('a') name.innerHTML = prefix + ' - ' + h.innerHTML h.innerHTML = name.innerHTML let cur_page = h.closest('section') - if (page != cur_page) { - page = cur_page - page_counter++ + while (page && page != cur_page) { + page = page.nextElementSibling + if (page.tagName == 'SECTION') { + page_counter++ + } } + page_number.href = '#page-' + page_counter page_number.innerHTML = page_counter li.append(name, page_number) @@ -84,18 +88,22 @@ function addCaptions() { 'IMG': obj.alt, 'TABLE': obj.dataset.alt, }[obj.tagName] - + if (obj.dataset.tag) { counter_by_tag[obj.dataset.tag] = obj_counter[obj.tagName] } let div = document.createElement('div') div.classList.add(...({ - 'IMG': ['col'], + 'IMG': ['col', 'y-center'], 'TABLE': ['colr', 'y-start'], })[obj.tagName]) div.style.cssText = obj.style.cssText - obj.style.cssText = 'width: 100%' + if (obj.dataset.style) { + obj.style = obj.dataset.style + } else { + obj.style.cssText = 'width: 100%' + } let prev = obj.previousSibling obj.remove() @@ -105,7 +113,6 @@ function addCaptions() { } const refs = document.querySelectorAll('span[data-ref]') - console.log(refs) for (const ref of refs) { ref.innerHTML = counter_by_tag[ref.dataset.ref] ?? 'без номера' @@ -146,8 +153,8 @@ function genTables() { break case '$': - const args_end = gen.indexOf('$', i+1) - const args = gen.slice(i+1, args_end).split(',') + const args_end = gen.indexOf('$', i + 1) + const args = gen.slice(i + 1, args_end).split(',') switch (args[0]) { case 'C': dot.colSpan = +args[1] @@ -181,8 +188,19 @@ function genMathML() { TeXZilla.filterElement(math) } +function handleQueryParams() { + const params = new URLSearchParams(location.search) + if (params.has('printable')) { + const pages = document.querySelectorAll('section.landscape') + for (const page of pages) { + page.style.transform = 'rotate(90deg)' + } + } +} + addTableOfContents() addPageNumbers() addCaptions() genTables() genMathML() +handleQueryParams()