Merge remote-tracking branch 'origin/master' into brosandr.03_rf

This commit is contained in:
alexkharl
2024-02-27 16:38:37 +03:00
4 changed files with 56 additions and 23 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

View File

@@ -93,7 +93,7 @@ logic Y;
always_comb begin // 1) Используется always_comb, т.к. мы хотим подключить always_comb begin // 1) Используется always_comb, т.к. мы хотим подключить
// выход мультиплексора к проводу // выход мультиплексора к проводу
if(S) begin // 2) if-else может находиться только внутри блока always. if(S) begin // 2) if-else может находиться только внутри блока always.
Y = D1; // 3) Используется оператор неблокирующего присваивания. Y = D1; // 3) Используется оператор неблокирующего присваивания.
end else begin end else begin
Y = D0; Y = D0;
end end
@@ -108,14 +108,14 @@ end
logic Y; logic Y;
always_comb begin always_comb begin
if(S==1) begin if(S==1) begin
Y <= D1; Y = D1;
end end
end end
always_comb begin always_comb begin
if(S==0) begin // Нельзя выполнять операцию присваивания if(S==0) begin // Нельзя выполнять операцию присваивания
Y <= D0; // для одного сигнала (Y) в нескольких Y = D0; // для одного сигнала (Y) в нескольких
end // блоках always! end // блоках always!
end end
``` ```
@@ -140,8 +140,8 @@ logic Y;
always_comb begin always_comb begin
case(S) // Описываем блок case, где значение сигнала S case(S) // Описываем блок case, где значение сигнала S
// будет сравниваться с различными возможными его значениями // будет сравниваться с различными возможными его значениями
1'b0: Y <= D0; // Если S==0, то Y = D0 1'b0: Y = D0; // Если S==0, то Y = D0
1'b1: Y <= D1; 1'b1: Y = D1;
endcase // Каждый case должен заканчиваться endcase endcase // Каждый case должен заканчиваться endcase
end // (так же как каждый begin должен оканчиваться end) end // (так же как каждый begin должен оканчиваться end)
``` ```
@@ -165,10 +165,10 @@ module case_mux_ex(
); );
always_comb begin always_comb begin
case(S) case(S)
3'b00: Y <= A; 3'b00: Y = A;
3'b01: Y <= C | B; // в блоке case можно мультиплексировать 3'b01: Y = C | B; // в блоке case можно мультиплексировать
// не только провода, но и логические выражения // не только провода, но и логические выражения
3'b10: Y <= (C|B) & D; 3'b10: Y = (C|B) & D;
/* /*
Обратите внимание, что разрядность сигнала S — 3 бита. Обратите внимание, что разрядность сигнала S — 3 бита.
Это означает, что есть 8 комбинаций его разрядов. Это означает, что есть 8 комбинаций его разрядов.
@@ -177,7 +177,7 @@ module case_mux_ex(
быть какое-то одно значение "по умолчанию", используется специальная быть какое-то одно значение "по умолчанию", используется специальная
комбинация "default": комбинация "default":
*/ */
default: Y <= D; default: Y = D;
endcase endcase
end end
endmodule endmodule
@@ -214,9 +214,10 @@ assign one_bit_result = bus1024[select];
3. Во избежание появления [защелок](Latches.md) при описании мультиплексора, необходимо убедиться что у блоков `if` есть соответствующие им блоки `else`, а у мультиплексоров описаны все комбинации управляющего сигнала (при необходимости, множество оставшихся комбинаций можно покрыть с помощью комбинации `default`). Появление непреднамеренной защелки в дизайне ведет к ухудшению временных характеристик, избыточному использованию ресурсов, а также непредсказуемому поведению схемы из-за возможного удержания сигнала. 3. Во избежание появления [защелок](Latches.md) при описании мультиплексора, необходимо убедиться что у блоков `if` есть соответствующие им блоки `else`, а у мультиплексоров описаны все комбинации управляющего сигнала (при необходимости, множество оставшихся комбинаций можно покрыть с помощью комбинации `default`). Появление непреднамеренной защелки в дизайне ведет к ухудшению временных характеристик, избыточному использованию ресурсов, а также непредсказуемому поведению схемы из-за возможного удержания сигнала.
4. Важно отметить, что блоки `if-else` и `case` могут использоваться не только для описания мультиплексоров. 4. Важно отметить, что блоки `if-else` и `case` могут использоваться не только для описания мультиплексоров.
5. Конструкции `if-else` и `case` в рамках данных лабораторных работ можно описывать только внутри блока [`always`](#блок-always). При работе с этим блоком необходимо помнить следующие особенности: 5. Конструкции `if-else` и `case` в рамках данных лабораторных работ можно описывать только внутри блока [`always`](#блок-always). При работе с этим блоком необходимо помнить следующие особенности:
1. Существует несколько типов блока `always`: `always_comb`, `always_ff`, `always_latch`, определяющих то, к чему будет подключена описанная в этом блоке логика: проводу, регистру или защелке соответственно. 1. Существует несколько типов блока `always`: `always_comb`, `always_ff`, `always_latch`, определяющих то, к чему будет подключена описанная в этом блоке логика: проводу, регистру или защелке соответственно. В данных лабораторных работах вам нужно будет пользоваться блоками `always_ff` и `always_comb`, причем:
2. Внутри блока always следует использовать оператор неблокирующего присваивания `<=`. 1. внутри блока `always_ff` необходимо использовать оператор неблокирующего присваивания (`<=`);
3. Присваивание для любого сигнала возможно только внутри **одного** блока always. Два разных сигнала могут присваиваться как в одном блоке always, так каждый в отдельном, но операция присваивания одному и тому же сигналу в двух разных блоках always — нет. 2. внутри блока `always_comb` необходимо использовать оператор блокирующего присваивания (`=`).
2. Присваивание для любого сигнала возможно только внутри **одного** блока always. Два разных сигнала могут присваиваться как в одном блоке always, так и каждый в отдельном, но операция присваивания одному и тому же сигналу в двух разных блоках always — нет.
--- ---

View File

@@ -8,7 +8,7 @@
See https://github.com/MPSU/APS/blob/master/LICENSE file for licensing details. See https://github.com/MPSU/APS/blob/master/LICENSE file for licensing details.
* ------------------------------------------------------------------------------ * ------------------------------------------------------------------------------
*/ */
module tb_miriscv_alu(); module tb_alu();
import alu_opcodes_pkg::*; import alu_opcodes_pkg::*;

View File

@@ -2,18 +2,39 @@
Данный сервер поднят для выполнения студентами их [индивидуального задания](../Labs/04.%20Primitive%20programmable%20device#индивидуальные-задания), а также для тех студентов, кому не хватило места в учебной аудитории. На сервере установлены: `Vivado`, `VSCode`, `gcc`, `git`. Поскольку сервер имеет ограниченные ресурсы, а студенты не имеют привычки закрывать за собой программы при завершении сессии, тут не установлен браузер. Имейте в виду, что если вы закрыли сессию, не закрыв Vivado и там остались несохраненные файлы, то вы рискуете потерять свои изменения. Данный сервер поднят для выполнения студентами их [индивидуального задания](../Labs/04.%20Primitive%20programmable%20device#индивидуальные-задания), а также для тех студентов, кому не хватило места в учебной аудитории. На сервере установлены: `Vivado`, `VSCode`, `gcc`, `git`. Поскольку сервер имеет ограниченные ресурсы, а студенты не имеют привычки закрывать за собой программы при завершении сессии, тут не установлен браузер. Имейте в виду, что если вы закрыли сессию, не закрыв Vivado и там остались несохраненные файлы, то вы рискуете потерять свои изменения.
## Правила работы на сервере
Есть некоторые правила, которых необходимо придерживаться:
* Не хулиганить на сервере, не распаковывать zip-бомбы, не забивать преднамеренно всю оперативную память, не майнить, не выполнять любые противоправные действия и действия, которые нельзя назвать "работой на сервере". За нарушение перманентный бан без возможности восстановления доступа.
* Если вы очень долго не пользуетесь удаленным рабочим столом, закрывайте открытые программы и окна. Ресурсы сервера ограничены и одни на всех, уважайте своих коллег.
* Нельзя передавать другим данные своей учетной записи.
* Всегда сохраняйте все файлы после работы. Мы не гарантируем того, что сервер не будет перезагружен с потерей несохраненных данных в редакторах кода.
* В конце семестра учетные записи и все данные удаляются для всех групп, поэтому не забывайте сохранить данные "на память".
## Разные учётные записи
На этом месте необходимо разобраться, какие существуют учетные записи и для чего они предназначены:
1. При поступлении в МИЭТ, каждому студенту выдаётся учетная запись, с помощью которой он может пользоваться внутренними сервисами ВУЗа. Например, вы используете эту учетную запись, чтобы войти в ОРИОКС. Эту учетную запись мы будем называть **"Учётной записью МИЭТ"**. В этом документе мы используем данную учетную запись только для подключения к VPN МИЭТ.
2. Для прохождения курса АПС каждому студенту создаётся учетная запись на сервере и преподавателем вам выдаются её данные: логин/пароль. Эту учетную запись мы называем **"Учетной записью сервера АПС"**. Её мы используем для подключения к серверу через программы x2go и WinSCP.
## VPN МИЭТ
Подключение к серверу осуществляется из миэтовской сети. Это значит, что для подключения нужно либо подключиться к общажной сети (которая является частью миэтовской), либо воспользоваться [миэтовским VPN](https://vpn.miet.ru/).
Существует несколько важных замечаний касательно VPN МИЭТ:
* Для подключения к VPN МИЭТ необходимо использовать данные **учётной записи МИЭТ**.
* Одновременно к VPN с одной учетной записи может быть подключено только одно устройство. Из-за этого могут возникать забавные ситуации, когда дома вышел из сна компьютер и пытается подключиться к VPN, из-за чего постоянно рвется VPN-соединение вашего ноутбука на лабораторной.
* Чтобы подключиться к VPN, вам обязательно надо хотя-бы один раз поменять пароль учетной записи МИЭТ со стандартного (дата вашего дня рождения) на свой. Большинство людей делают это на первом курсе и забывают на всю оставшуюся жизнь.
* Авторы курса и преподаватели не поддерживают и не отвечают за работоспособность VPN. Если у вас не работает VPN, и вы уверены в том, что всё делаете правильно, то стоит обращаться к администраторам VPN в аудиторию 4100.
## Порядок подключения к серверу ## Порядок подключения к серверу
За каждым студентом закреплена учетная запись на сервере и выданы её логин/пароль.
Подключение осуществляется из миэтовской сети. Это значит, что для подключения нужно либо подключиться к общажной сети (которая является частью миэтовской), либо воспользоваться [миэтовским vpn](https://vpn.miet.ru/).
Для подключения, необходимо скачать и установить программу [`X2Go client`](http://code.x2go.org/releases/X2GoClient_latest_mswin32-setup.exe). Во время установки можно оставить все опции без изменений. Для подключения, необходимо скачать и установить программу [`X2Go client`](http://code.x2go.org/releases/X2GoClient_latest_mswin32-setup.exe). Во время установки можно оставить все опции без изменений.
При первом запуске, появится окно настройки подключения (если окно не появилось, нажмите `Ctrl+N`). Вам необходимо заполнить поля: При первом запуске, появится окно настройки подключения (если окно не появилось, нажмите `Ctrl+N` или выберите в меню `Session -> New Session`). Вам необходимо заполнить поля:
- Хост (вводим `82.179.178.13`) - Хост (вводим `82.179.178.13`)
- Пользователь (ввводим логин с листочка) - Пользователь (вводим логин **учетной записи сервера АПС**, который вам выдал преподаватель)
- SSH порт (вводим `2222`) - SSH порт (вводим `2222`)
- Тип сессии (выбираем `XFCE`) - Тип сессии (выбираем `XFCE`)
@@ -26,7 +47,18 @@
</details> </details>
После создания сессии, она отобразится в правой части программы. Двойной клик по сессии создаст подключение, в процессе которого от вас потребуется ввести пароль от выданной вам учетной записи. После создания сессии, она отобразится в правой части программы. Двойной клик по сессии создаст подключение, в процессе которого от вас потребуется ввести пароль от выданной вам **учетной записи сервера АПС**. После небольшого ожидания, откроется окно с удаленным рабочим столом.
Можно менять размер окна, размер рабочего стола подстроится автоматически. Также работает копи-паст текста между компьютером и удаленным рабочим столом.
В случае возникновения проблем с удаленным рабочим столом, рекомендуется первым делом попробовать перезапустить сессию на сервере нажатием кнопки «Terminate».
<details>
<summary>Где найти кнопку Terminate</summary>
![../.pic/Other/Students%20server/x2goclient_config.png](../.pic/Other/Students%20server/x2go_terminate.jpg)
</details>
## Как работать на сервере ## Как работать на сервере