BREAKING CHANGE! Сдвиг нумерации в лабах
Лабу по дейзи-цепочке необходимо вставить сразу после лабы по интеграции контроллера прерываний, поэтому приходится увеличить нумерацию оставшихся лаб.
8
.github/SUMMARY.md
vendored
@@ -28,10 +28,10 @@
|
|||||||
- [Лабораторная №10. Подсистема прерываний](Labs/10.%20Interrupt%20subsystem/README.md)
|
- [Лабораторная №10. Подсистема прерываний](Labs/10.%20Interrupt%20subsystem/README.md)
|
||||||
- [Лабораторная №11. Интеграция подсистемы прерываний](Labs/11.%20Interrupt%20integration/README.md)
|
- [Лабораторная №11. Интеграция подсистемы прерываний](Labs/11.%20Interrupt%20integration/README.md)
|
||||||
- [Лабораторная №12. Дейзи-цепочка](Labs/12.%20Daisy%20chain/README.md)
|
- [Лабораторная №12. Дейзи-цепочка](Labs/12.%20Daisy%20chain/README.md)
|
||||||
- [Лабораторная №12. Периферийные устройства](Labs/12.%20Peripheral%20units/README.md)
|
- [Лабораторная №13. Периферийные устройства](Labs/13.%20Peripheral%20units/README.md)
|
||||||
- [Лабораторная №13. Программирование](Labs/13.%20Programming/README.md)
|
- [Лабораторная №14. Программирование](Labs/14.%20Programming/README.md)
|
||||||
- [Лабораторная №14. Программатор](Labs/14.%20Programming%20device/README.md)
|
- [Лабораторная №15. Программатор](Labs/15.%20Programming%20device/README.md)
|
||||||
- [Лабораторная №15. Оценка производительности](Labs/15.%20Coremark/README.md)
|
- [Лабораторная №16. Оценка производительности](Labs/16.%20Coremark/README.md)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
8
.github/index.md
vendored
@@ -28,8 +28,8 @@
|
|||||||
1. Тракт данных ([06. Datapath](Labs/06.%20Datapath))
|
1. Тракт данных ([06. Datapath](Labs/06.%20Datapath))
|
||||||
2. Интеграция блока загрузки и сохранения ([09. LSU Integration](Labs/09.%20LSU%20Integration))
|
2. Интеграция блока загрузки и сохранения ([09. LSU Integration](Labs/09.%20LSU%20Integration))
|
||||||
3. Интеграция подсистемы прерываний ([11. Interrupt Integration](Labs/11.%20Interrupt%20integration))
|
3. Интеграция подсистемы прерываний ([11. Interrupt Integration](Labs/11.%20Interrupt%20integration))
|
||||||
7. Периферийные устройства ([12. Peripheral units](Labs/12.%20Peripheral%20units))
|
7. Периферийные устройства ([13. Peripheral units](Labs/13.%20Peripheral%20units))
|
||||||
8. Программирование ([13. Programming](Labs/13.%20Programming))
|
8. Программирование ([14. Programming](Labs/14.%20Programming))
|
||||||
|
|
||||||
### ИВТ
|
### ИВТ
|
||||||
|
|
||||||
@@ -45,5 +45,5 @@
|
|||||||
6.
|
6.
|
||||||
1. Контроллер прерываний ([10. Interrupt subsystem](Labs/10.%20Interrupt%20subsystem))
|
1. Контроллер прерываний ([10. Interrupt subsystem](Labs/10.%20Interrupt%20subsystem))
|
||||||
2. Интеграция подсистемы прерываний ([11. Interrupt Integration](Labs/11.%20Interrupt%20integration))
|
2. Интеграция подсистемы прерываний ([11. Interrupt Integration](Labs/11.%20Interrupt%20integration))
|
||||||
7. Периферийные устройства ([12. Peripheral units](Labs/12.%20Peripheral%20units))
|
7. Периферийные устройства ([13. Peripheral units](Labs/13.%20Peripheral%20units))
|
||||||
8. Программирование ([13. Programming](Labs/13.%20Programming))
|
8. Программирование ([14. Programming](Labs/14.%20Programming))
|
||||||
|
Before Width: | Height: | Size: 578 KiB After Width: | Height: | Size: 578 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 8.5 KiB After Width: | Height: | Size: 8.5 KiB |
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.7 KiB |
Before Width: | Height: | Size: 1.0 MiB After Width: | Height: | Size: 1.0 MiB |
Before Width: | Height: | Size: 249 KiB After Width: | Height: | Size: 249 KiB |
Before Width: | Height: | Size: 1.1 MiB After Width: | Height: | Size: 1.1 MiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 64 KiB |
Before Width: | Height: | Size: 133 KiB After Width: | Height: | Size: 133 KiB |
Before Width: | Height: | Size: 731 KiB After Width: | Height: | Size: 731 KiB |
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 68 KiB |
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
Для того, чтобы лучше понять, что от вас требуется в рамках лабораторной работы по периферийным устройствам, рассмотрим процесс разработки структурной схемы (не SystemVerilog-описания) для контроллера светодиодов.
|
Для того, чтобы лучше понять, что от вас требуется в рамках лабораторной работы по периферийным устройствам, рассмотрим процесс разработки структурной схемы (не SystemVerilog-описания) для контроллера светодиодов.
|
||||||
|
|
||||||
В первую очередь, здесь будет продублирована выдержка из спецификации на этот контроллер (общая часть раздела "[Описание контроллеров периферийных устройств](../Labs/12.%20Peripheral%20units/README.md#описание-контроллеров-периферийных-устройств)", а также подраздел "[Светодиоды](../Labs/12.%20Peripheral%20units/README.md#светодиоды)"):
|
В первую очередь, здесь будет продублирована выдержка из спецификации на этот контроллер (общая часть раздела "[Описание контроллеров периферийных устройств](../Labs/13.%20Peripheral%20units/README.md#описание-контроллеров-периферийных-устройств)", а также подраздел "[Светодиоды](../Labs/13.%20Peripheral%20units/README.md#светодиоды)"):
|
||||||
|
|
||||||
## Спецификация контроллера
|
## Спецификация контроллера
|
||||||
|
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
# Лабораторная работа 12 "Периферийные устройства"
|
# Лабораторная работа 13 "Периферийные устройства"
|
||||||
|
|
||||||
На прошлой лабораторной работе вы реализовали свой собственный RISC-V процессор. Однако пока что он находится "в вакууме" и никак не связан с внешним миром. Для исправления этого недостатка вами будет реализована системная шина, через которую к процессору смогут подключаться различные периферийные устройства.
|
На прошлой лабораторной работе вы реализовали свой собственный RISC-V процессор. Однако пока что он находится "в вакууме" и никак не связан с внешним миром. Для исправления этого недостатка вами будет реализована системная шина, через которую к процессору смогут подключаться различные периферийные устройства.
|
||||||
|
|
||||||
@@ -50,7 +50,7 @@
|
|||||||
|
|
||||||
На рисунке ниже представлен способ подключения процессора к памяти инструкций и данных, а также 255 периферийным устройствам.
|
На рисунке ниже представлен способ подключения процессора к памяти инструкций и данных, а также 255 периферийным устройствам.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
_Рисунок 1. Итоговая структура процессорной системы._
|
_Рисунок 1. Итоговая структура процессорной системы._
|
||||||
|
|
||||||
@@ -127,9 +127,9 @@ sys_clk_rst_gen divider(.ex_clk_i(clk_i),.ex_areset_n_i(resetn_i),.div_i(5),.sys
|
|||||||
|
|
||||||
## Задание
|
## Задание
|
||||||
|
|
||||||
В рамках данной лабораторной работы необходимо реализовать модули-контроллеры двух периферийных устройств, реализующих управление в соответствии с приведенной ниже картой памяти и встроить их в процессорную систему, используя [_рис. 1_](../../.pic/Labs/lab_12_periph/fig_01.drawio.svg). На карте приведено шесть периферийных устройств, вам необходимо взять только два из них. Какие именно — сообщит преподаватель.
|
В рамках данной лабораторной работы необходимо реализовать модули-контроллеры двух периферийных устройств, реализующих управление в соответствии с приведенной ниже картой памяти и встроить их в процессорную систему, используя [_рис. 1_](../../.pic/Labs/lab_13_periph/fig_01.drawio.svg). На карте приведено шесть периферийных устройств, вам необходимо взять только два из них. Какие именно — сообщит преподаватель.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
_Рисунок 2. Карта памяти периферийных устройств._
|
_Рисунок 2. Карта памяти периферийных устройств._
|
||||||
|
|
||||||
@@ -161,7 +161,7 @@ _Рисунок 2. Карта памяти периферийных устрой
|
|||||||
2. Добавьте в модуль `riscv_unit` входы и выходы периферии. **Необходимо добавить порты даже тех периферийных устройств, которые вы не будете реализовывать**.
|
2. Добавьте в модуль `riscv_unit` входы и выходы периферии. **Необходимо добавить порты даже тех периферийных устройств, которые вы не будете реализовывать**.
|
||||||
3. Создайте в начале описания модуля `riscv_unit` экземпляр модуля `sys_clk_rst_gen`, скопировав приведенный фрагмент кода.
|
3. Создайте в начале описания модуля `riscv_unit` экземпляр модуля `sys_clk_rst_gen`, скопировав приведенный фрагмент кода.
|
||||||
4. Замените подключение тактового сигнала исходных подмодулей `riscv_unit` на появившийся сигнал `sysclk`. Убедитесь, что на модули, имеющие сигнал сброса, приходит сигнал `rst`.
|
4. Замените подключение тактового сигнала исходных подмодулей `riscv_unit` на появившийся сигнал `sysclk`. Убедитесь, что на модули, имеющие сигнал сброса, приходит сигнал `rst`.
|
||||||
5. Интегрируйте модули контроллеров периферии в процессорную систему по приведенной схеме руководствуясь старшими адресами контроллеров, представленными на карте памяти ([_рис. 2_](../../.pic/Labs/lab_12_periph/fig_02.png)). Это означает, что если вы реализуете контроллер светодиодов, на его вход `req_i` должна подаваться единица в случае, если `mem_req_o == 1` и старшие 8 бит адреса равны `0x02`.
|
5. Интегрируйте модули контроллеров периферии в процессорную систему по приведенной схеме руководствуясь старшими адресами контроллеров, представленными на карте памяти ([_рис. 2_](../../.pic/Labs/lab_13_periph/fig_02.png)). Это означает, что если вы реализуете контроллер светодиодов, на его вход `req_i` должна подаваться единица в случае, если `mem_req_o == 1` и старшие 8 бит адреса равны `0x02`.
|
||||||
1. При интеграции вы должны подключить только модули-контроллеры вашего варианта. Контроллеры периферии других вариантов подключать не надо.
|
1. При интеграции вы должны подключить только модули-контроллеры вашего варианта. Контроллеры периферии других вариантов подключать не надо.
|
||||||
2. При этом во время интеграции, вы должны использовать старшую часть адреса, представленную в карте памяти для формирования сигнала `req_i` для ваших модулей-контроллеров.
|
2. При этом во время интеграции, вы должны использовать старшую часть адреса, представленную в карте памяти для формирования сигнала `req_i` для ваших модулей-контроллеров.
|
||||||
6. Проверьте работу процессорной системы с помощью моделирования.
|
6. Проверьте работу процессорной системы с помощью моделирования.
|
||||||
@@ -633,7 +633,7 @@ _Рисунок 3. Пример игры с использованием сим
|
|||||||
|
|
||||||
Для управления выводимым на экран содержимым, адресное пространство модуля разделено на следующие диапазоны:
|
Для управления выводимым на экран содержимым, адресное пространство модуля разделено на следующие диапазоны:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
_Рисунок 4. Карта памяти vga-модуля._
|
_Рисунок 4. Карта памяти vga-модуля._
|
||||||
|
|
||||||
@@ -651,7 +651,7 @@ _Рисунок 4. Карта памяти vga-модуля._
|
|||||||
|
|
||||||
Цветовая схема каждой позиции состоит из двух цветов: цвета фона и цвета символа. Оба эти цвета выбираются из палитры 8 цветов, каждый из которых содержит два оттенка: цвет на полной яркости и цвет на уменьшенной яркости (см. рис. 5). Один из цветов — черный, оба его оттенка представляют собой один и тот же цвет. Ниже приведены коды цветов их rgb-значения:
|
Цветовая схема каждой позиции состоит из двух цветов: цвета фона и цвета символа. Оба эти цвета выбираются из палитры 8 цветов, каждый из которых содержит два оттенка: цвет на полной яркости и цвет на уменьшенной яркости (см. рис. 5). Один из цветов — черный, оба его оттенка представляют собой один и тот же цвет. Ниже приведены коды цветов их rgb-значения:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
_Рисунок 5. Цветовая палитра vga-модуля._
|
_Рисунок 5. Цветовая палитра vga-модуля._
|
||||||
|
|
||||||
@@ -669,7 +669,7 @@ _Рисунок 5. Цветовая палитра vga-модуля._
|
|||||||
|
|
||||||
Допустим, нам необходимо отрисовать символ `F` (ascii-код `0x46`).
|
Допустим, нам необходимо отрисовать символ `F` (ascii-код `0x46`).
|
||||||
|
|
||||||

|

|
||||||
_Рисунок 6. Отрисовка символа `F` в разрешении 16х8 пикселей._
|
_Рисунок 6. Отрисовка символа `F` в разрешении 16х8 пикселей._
|
||||||
|
|
||||||
Данный символ состоит из 16 строчек по 8 пикселей. Каждый пиксель кодируется одним битом (горит/не горит, цвет символа/фоновый цвет). Каждая строчка кодируется одним байтом (8 бит на 8 пикселей). Таким образом, каждый сканкод требует 16 байт памяти.
|
Данный символ состоит из 16 строчек по 8 пикселей. Каждый пиксель кодируется одним битом (горит/не горит, цвет символа/фоновый цвет). Каждая строчка кодируется одним байтом (8 бит на 8 пикселей). Таким образом, каждый сканкод требует 16 байт памяти.
|
@@ -1,4 +1,4 @@
|
|||||||
# Лабораторная работа 13 "Высокоуровневое программирование"
|
# Лабораторная работа 14 "Высокоуровневое программирование"
|
||||||
|
|
||||||
Благодаря абстрагированию можно создавать действительно сложные системы — из вентелей можно собрать модули, из модулей микроархитектуру и так далее. В этом контексте архитектура выступает как фундамент, на котором строится программный стек абстракций. На основе архитектур строятся ассемблеры, на основе которых "строятся" языки высокого уровня, на основе которых создаются фреймворки и метафреймворки, что обеспечивает более высокий уровень и удобство при разработке новых программ. Давайте немного глубже погрузимся в этот стек.
|
Благодаря абстрагированию можно создавать действительно сложные системы — из вентелей можно собрать модули, из модулей микроархитектуру и так далее. В этом контексте архитектура выступает как фундамент, на котором строится программный стек абстракций. На основе архитектур строятся ассемблеры, на основе которых "строятся" языки высокого уровня, на основе которых создаются фреймворки и метафреймворки, что обеспечивает более высокий уровень и удобство при разработке новых программ. Давайте немного глубже погрузимся в этот стек.
|
||||||
|
|
||||||
@@ -623,7 +623,7 @@ Disassembly of section .data:
|
|||||||
|
|
||||||
При этом, вам необходимо получить входные данные от вашего устройства ввода и вывести результат на устройство вывода. Продумайте, как именно будет работать ваша программа, (бесконечно пересчитывать значения, получая новые данные от устройства ввода, или считать один раз, ожидая данные в бесконечном цикле — вариантов реализации очень много).
|
При этом, вам необходимо получить входные данные от вашего устройства ввода и вывести результат на устройство вывода. Продумайте, как именно будет работать ваша программа, (бесконечно пересчитывать значения, получая новые данные от устройства ввода, или считать один раз, ожидая данные в бесконечном цикле — вариантов реализации очень много).
|
||||||
|
|
||||||
Доступ к регистрам контроллеров периферии осуществляется через обращение в память. В простейшем случае такой доступ осуществляется через [разыменование указателей](https://ru.wikipedia.org/wiki/Указатель_(тип_данных)#Действия_над_указателями), проинициализированных адресами регистров из [карты памяти](../12.%20Peripheral%20units#задание) 12-ой лабораторной работы.
|
Доступ к регистрам контроллеров периферии осуществляется через обращение в память. В простейшем случае такой доступ осуществляется через [разыменование указателей](https://ru.wikipedia.org/wiki/Указатель_(тип_данных)#Действия_над_указателями), проинициализированных адресами регистров из [карты памяти](../13.%20Peripheral%20units#задание) 12-ой лабораторной работы.
|
||||||
|
|
||||||
При написании программы помните, что в C++ сильно ограничена арифметика указателей, поэтому при присваивании указателю целочисленного значения адреса, необходимо использовать оператор `reinterpret_cast`.
|
При написании программы помните, что в C++ сильно ограничена арифметика указателей, поэтому при присваивании указателю целочисленного значения адреса, необходимо использовать оператор `reinterpret_cast`.
|
||||||
|
|
@@ -1,4 +1,4 @@
|
|||||||
# Лабораторная работа 14 "Программатор"
|
# Лабораторная работа 15 "Программатор"
|
||||||
|
|
||||||
Чтобы выпустить микроконтроллер в "дикую природу", то есть, чтобы его можно было использовать не в лабораторных условиях, а независимо от всего этого дополнительного оборудования, необходимо придусмотреть механизм замены исполняемой программы.
|
Чтобы выпустить микроконтроллер в "дикую природу", то есть, чтобы его можно было использовать не в лабораторных условиях, а независимо от всего этого дополнительного оборудования, необходимо придусмотреть механизм замены исполняемой программы.
|
||||||
|
|
||||||
@@ -105,7 +105,7 @@ module turnstile_fsm(
|
|||||||
|
|
||||||
Кроме того, при должной поддержке со стороны инструментов моделирования, значения объектов перечислений могут выводиться на временную диаграмму в виде перечисленных имен:
|
Кроме того, при должной поддержке со стороны инструментов моделирования, значения объектов перечислений могут выводиться на временную диаграмму в виде перечисленных имен:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
_Рисунок 2. Вывод значений объекта `enum` на временную диаграмму._
|
_Рисунок 2. Вывод значений объекта `enum` на временную диаграмму._
|
||||||
|
|
||||||
@@ -224,7 +224,7 @@ module rw_instr_mem(
|
|||||||
|
|
||||||
В основе работы модуля лежит конечный автомат со следующим графом перехода между состояниями:
|
В основе работы модуля лежит конечный автомат со следующим графом перехода между состояниями:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
_Рисунок 3. Граф перехода между состояниями программатора._
|
_Рисунок 3. Граф перехода между состояниями программатора._
|
||||||
|
|
||||||
@@ -473,7 +473,7 @@ endmodule
|
|||||||
|
|
||||||
### Интеграция программатора в riscv_unit
|
### Интеграция программатора в riscv_unit
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
В первую очередь, необходимо заменить память инструкций и добавить новый модуль. После чего подключить программатор к памяти инструкций и мультиплексировать выход интерфейса памяти данных программатора с интерфейсом памяти данных LSU. Сигнал сброса процессора необходимо заменить на выход `core_reset_o`.
|
В первую очередь, необходимо заменить память инструкций и добавить новый модуль. После чего подключить программатор к памяти инструкций и мультиплексировать выход интерфейса памяти данных программатора с интерфейсом памяти данных LSU. Сигнал сброса процессора необходимо заменить на выход `core_reset_o`.
|
||||||
|
|
@@ -1,11 +1,11 @@
|
|||||||
# Лабораторная работа 15 "Оценка производительности"
|
# Лабораторная работа 16 "Оценка производительности"
|
||||||
|
|
||||||
## Допуск к лабораторной работе
|
## Допуск к лабораторной работе
|
||||||
|
|
||||||
Данная лабораторная работа будет полностью опираться на навыки, полученные в ходе выполнения лабораторных работ:
|
Данная лабораторная работа будет полностью опираться на навыки, полученные в ходе выполнения лабораторных работ:
|
||||||
|
|
||||||
12. [Периферийные устройства](../12.%20Peripheral%20units/)
|
13. [Периферийные устройства](../13.%20Peripheral%20units/)
|
||||||
13. [Программирование](../13.%20Programming/)
|
14. [Программирование](../14.%20Programming/)
|
||||||
|
|
||||||
## Цель
|
## Цель
|
||||||
|
|
||||||
@@ -31,7 +31,7 @@
|
|||||||
|
|
||||||
1. Реализовать модуль-контроллер "таймер".
|
1. Реализовать модуль-контроллер "таймер".
|
||||||
2. Подключить этот модуль к системной шине.
|
2. Подключить этот модуль к системной шине.
|
||||||
2.1. В случае, если до этого в ЛР12 вашим устройством вывода было не UART TX, вам необходимо подключить к системной шине готовый модуль [uart_tx_sb_ctrl](../Made-up%20modules/lab_12.uart_tx_sb_ctrl.sv).
|
2.1. В случае, если до этого в ЛР12 вашим устройством вывода было не UART TX, вам необходимо подключить к системной шине готовый модуль [uart_tx_sb_ctrl](../Made-up%20modules/lab_13.uart_tx_sb_ctrl.sv).
|
||||||
3. Добавить реализацию платформозависимых функций программы coremark.
|
3. Добавить реализацию платформозависимых функций программы coremark.
|
||||||
4. Скомпилировать программу.
|
4. Скомпилировать программу.
|
||||||
5. Изменить размер памяти инструкций.
|
5. Изменить размер памяти инструкций.
|
||||||
@@ -192,7 +192,7 @@ portable_init(core_portable *p, int *argc, char *argv[])
|
|||||||
|
|
||||||
### Компиляция
|
### Компиляция
|
||||||
|
|
||||||
Для компиляции программы, вам потребуются предоставленные файлы [Makefile](Makefile) и [linker_script.ld](linker_script.ld), а также файл [startup.S](../13.%20Programming/startup.S) из ЛР13. Эти файлы необходимо скопировать с заменой в корень папки с программой.
|
Для компиляции программы, вам потребуются предоставленные файлы [Makefile](Makefile) и [linker_script.ld](linker_script.ld), а также файл [startup.S](../14.%20Programming/startup.S) из ЛР13. Эти файлы необходимо скопировать с заменой в корень папки с программой.
|
||||||
|
|
||||||
`Makefile` написан из расчёта, что кросс-компилятор расположен по пути `C:/riscv_cc/`. В случае, если это не так, измените первую строчку данного файла в соответствии с расположением кросс-компилятора.
|
`Makefile` написан из расчёта, что кросс-компилятор расположен по пути `C:/riscv_cc/`. В случае, если это не так, измените первую строчку данного файла в соответствии с расположением кросс-компилятора.
|
||||||
|
|
||||||
@@ -267,7 +267,7 @@ Correct operation validated. See README.md for run and reporting rules.
|
|||||||
1. [Опишите](#таймер) таймер в виде модуля `timer_sb_ctrl`.
|
1. [Опишите](#таймер) таймер в виде модуля `timer_sb_ctrl`.
|
||||||
2. Проверьте описанный модуль с помощью тестового окружения [tb_timer](tb_timer.sv).
|
2. Проверьте описанный модуль с помощью тестового окружения [tb_timer](tb_timer.sv).
|
||||||
3. Подключите `timer_sb_ctrl` к системной шине. Сигнал прерывания этого модуля подключать не нужно.
|
3. Подключите `timer_sb_ctrl` к системной шине. Сигнал прерывания этого модуля подключать не нужно.
|
||||||
2.1 В случае, если до этого в ЛР12 вашим устройством вывода было не UART TX, вам необходимо подключить к системной шине и готовый модуль [uart_tx_sb_ctrl](../Made-up%20modules/lab_12.uart_tx_sb_ctrl.sv).
|
2.1 В случае, если до этого в ЛР12 вашим устройством вывода было не UART TX, вам необходимо подключить к системной шине и готовый модуль [uart_tx_sb_ctrl](../Made-up%20modules/lab_13.uart_tx_sb_ctrl.sv).
|
||||||
4. Получите исходники программы Coremark. Для этого можно либо склонировать репозиторий, либо скачать его в виде архива со страницы: [https://github.com/eembc/coremark](https://github.com/eembc/coremark).
|
4. Получите исходники программы Coremark. Для этого можно либо склонировать репозиторий, либо скачать его в виде архива со страницы: [https://github.com/eembc/coremark](https://github.com/eembc/coremark).
|
||||||
5. Добавьте реализацию платформозависимых функций программы coremark. Для этого в папке `barebones` необходимо:
|
5. Добавьте реализацию платформозависимых функций программы coremark. Для этого в папке `barebones` необходимо:
|
||||||
1. в файле `core_portme.c`:
|
1. в файле `core_portme.c`:
|
||||||
@@ -275,7 +275,7 @@ Correct operation validated. See README.md for run and reporting rules.
|
|||||||
2. объявить макрос `CLOCKS_PER_SEC`, характеризующий тактовую частоту процессора;
|
2. объявить макрос `CLOCKS_PER_SEC`, характеризующий тактовую частоту процессора;
|
||||||
3. [реализовать](#3-реализация-функции-первичной-настройки) функцию `portable_init`, выполняющую первичную инициализацию периферийных устройств до начала теста;
|
3. [реализовать](#3-реализация-функции-первичной-настройки) функцию `portable_init`, выполняющую первичную инициализацию периферийных устройств до начала теста;
|
||||||
2. в файле `ee_printf.c` [реализовать](#2-реализация-вывода-очередного-символа-сообщения) функцию `uart_send_char`, отвечающую за отправку очередного символа сообщения о результате.
|
2. в файле `ee_printf.c` [реализовать](#2-реализация-вывода-очередного-символа-сообщения) функцию `uart_send_char`, отвечающую за отправку очередного символа сообщения о результате.
|
||||||
6. Добавьте с заменой в корень программы файлы [Makefile](Makefile), [linker_script.ld](linker_script.ld) и [startup.S](../13.%20Programming/startup.S).
|
6. Добавьте с заменой в корень программы файлы [Makefile](Makefile), [linker_script.ld](linker_script.ld) и [startup.S](../14.%20Programming/startup.S).
|
||||||
7. Скомпилируйте программу вызовом `make`.
|
7. Скомпилируйте программу вызовом `make`.
|
||||||
1. Если кросскомпилятор расположен не в директории `C:/riscv_cc`, перед вызовом `make` вам необходимо соответствующим образом отредактировать первую строчку в `Makefile`.
|
1. Если кросскомпилятор расположен не в директории `C:/riscv_cc`, перед вызовом `make` вам необходимо соответствующим образом отредактировать первую строчку в `Makefile`.
|
||||||
2. В случае отсутствия на компьютере утилиты `make`, вы можете самостоятельно скомпилировать программу вызовом команд, представленных в разделе ["Компиляция"](#компиляция).
|
2. В случае отсутствия на компьютере утилиты `make`, вы можете самостоятельно скомпилировать программу вызовом команд, представленных в разделе ["Компиляция"](#компиляция).
|
||||||
@@ -327,7 +327,7 @@ Iterations/Sec : <скрыто до получения результатов
|
|||||||
|
|
||||||
Мы получим следующий расклад:
|
Мы получим следующий расклад:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
На что мы можем обратить внимание? Ну, во-первых, мы видим, что ближайший к нам микроконтроллер по кормарку — это `ATmega2560` с результатом `4.25` кормарка. Т.е. наш процессор по производительности схож с микроконтроллерами Arduino.
|
На что мы можем обратить внимание? Ну, во-первых, мы видим, что ближайший к нам микроконтроллер по кормарку — это `ATmega2560` с результатом `4.25` кормарка. Т.е. наш процессор по производительности схож с микроконтроллерами Arduino.
|
||||||
|
|
@@ -56,8 +56,8 @@
|
|||||||
1. Тракт данных ([06. Datapath](06.%20Datapath))
|
1. Тракт данных ([06. Datapath](06.%20Datapath))
|
||||||
2. Интеграция блока загрузки и сохранения ([09. LSU Integration](09.%20LSU%20Integration))
|
2. Интеграция блока загрузки и сохранения ([09. LSU Integration](09.%20LSU%20Integration))
|
||||||
3. Интеграция подсистемы прерываний ([11. Interrupt Integration](11.%20Interrupt%20integration))
|
3. Интеграция подсистемы прерываний ([11. Interrupt Integration](11.%20Interrupt%20integration))
|
||||||
7. Периферийные устройства ([12. Peripheral units](12.%20Peripheral%20units))
|
7. Периферийные устройства ([13. Peripheral units](13.%20Peripheral%20units))
|
||||||
8. Программирование ([13. Programming](13.%20Programming))
|
8. Программирование ([14. Programming](14.%20Programming))
|
||||||
|
|
||||||
### ИВТ
|
### ИВТ
|
||||||
|
|
||||||
@@ -73,8 +73,8 @@
|
|||||||
6.
|
6.
|
||||||
1. Контроллер прерываний ([10. Interrupt subsystem](10.%20Interrupt%20subsystem))
|
1. Контроллер прерываний ([10. Interrupt subsystem](10.%20Interrupt%20subsystem))
|
||||||
2. Интеграция подсистемы прерываний ([11. Interrupt Integration](11.%20Interrupt%20integration))
|
2. Интеграция подсистемы прерываний ([11. Interrupt Integration](11.%20Interrupt%20integration))
|
||||||
7. Периферийные устройства ([12. Peripheral units](12.%20Peripheral%20units))
|
7. Периферийные устройства ([13. Peripheral units](13.%20Peripheral%20units))
|
||||||
8. Программирование ([13. Programming](13.%20Programming))
|
8. Программирование ([14. Programming](14.%20Programming))
|
||||||
|
|
||||||
## Обзор лабораторных работ
|
## Обзор лабораторных работ
|
||||||
|
|
||||||
@@ -172,7 +172,7 @@
|
|||||||
|
|
||||||
## 12. Периферийные устройства (PU)
|
## 12. Периферийные устройства (PU)
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
В данной лабораторной создаются и подключаются к общей шине и подсистеме прерывания контроллеры периферийных устройств: переключатели, светодиоды, клавиатура, семисегментные дисплеи а также контроллер uart.
|
В данной лабораторной создаются и подключаются к общей шине и подсистеме прерывания контроллеры периферийных устройств: переключатели, светодиоды, клавиатура, семисегментные дисплеи а также контроллер uart.
|
||||||
|
|
||||||
@@ -188,7 +188,7 @@
|
|||||||
|
|
||||||
В рамках данной лабораторной работы мы немного упростим процесс передачи программы: вместо записи в ПЗУ, программатор будет записывать её сразу в память инструкций, минуя загрузчик.
|
В рамках данной лабораторной работы мы немного упростим процесс передачи программы: вместо записи в ПЗУ, программатор будет записывать её сразу в память инструкций, минуя загрузчик.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## 15. Оценка производительности
|
## 15. Оценка производительности
|
||||||
|
|
||||||
|