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

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

View File

@@ -2,18 +2,39 @@
Данный сервер поднят для выполнения студентами их [индивидуального задания](../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). Во время установки можно оставить все опции без изменений.
При первом запуске, появится окно настройки подключения (если окно не появилось, нажмите `Ctrl+N`). Вам необходимо заполнить поля:
При первом запуске, появится окно настройки подключения (если окно не появилось, нажмите `Ctrl+N` или выберите в меню `Session -> New Session`). Вам необходимо заполнить поля:
- Хост (вводим `82.179.178.13`)
- Пользователь (ввводим логин с листочка)
- Пользователь (вводим логин **учетной записи сервера АПС**, который вам выдал преподаватель)
- SSH порт (вводим `2222`)
- Тип сессии (выбираем `XFCE`)
@@ -26,7 +47,18 @@
</details>
После создания сессии, она отобразится в правой части программы. Двойной клик по сессии создаст подключение, в процессе которого от вас потребуется ввести пароль от выданной вам учетной записи.
После создания сессии, она отобразится в правой части программы. Двойной клик по сессии создаст подключение, в процессе которого от вас потребуется ввести пароль от выданной вам **учетной записи сервера АПС**. После небольшого ожидания, откроется окно с удаленным рабочим столом.
Можно менять размер окна, размер рабочего стола подстроится автоматически. Также работает копи-паст текста между компьютером и удаленным рабочим столом.
В случае возникновения проблем с удаленным рабочим столом, рекомендуется первым делом попробовать перезапустить сессию на сервере нажатием кнопки «Terminate».
<details>
<summary>Где найти кнопку Terminate</summary>
![../.pic/Other/Students%20server/x2goclient_config.png](../.pic/Other/Students%20server/x2go_terminate.jpg)
</details>
## Как работать на сервере