diff --git a/.pic/Other/Students server/x2go_terminate.jpg b/.pic/Other/Students server/x2go_terminate.jpg new file mode 100644 index 0000000..034d84a Binary files /dev/null and b/.pic/Other/Students server/x2go_terminate.jpg differ diff --git a/Basic Verilog structures/Multiplexors.md b/Basic Verilog structures/Multiplexors.md index 29ce9f5..5a3977e 100644 --- a/Basic Verilog structures/Multiplexors.md +++ b/Basic Verilog structures/Multiplexors.md @@ -93,7 +93,7 @@ logic Y; always_comb begin // 1) Используется always_comb, т.к. мы хотим подключить // выход мультиплексора к проводу if(S) begin // 2) if-else может находиться только внутри блока always. - Y = D1; // 3) Используется оператор неблокирующего присваивания. + Y = D1; // 3) Используется оператор неблокирующего присваивания. end else begin Y = D0; end @@ -108,14 +108,14 @@ 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) в нескольких - end // блоках always! + if(S==0) begin // Нельзя выполнять операцию присваивания + 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'b10: Y <= (C|B) & D; + 3'b00: Y = A; + 3'b01: Y = C | B; // в блоке case можно мультиплексировать + // не только провода, но и логические выражения + 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 — нет. --- diff --git a/Labs/02. Arithmetic-logic unit/tb_alu.sv b/Labs/02. Arithmetic-logic unit/tb_alu.sv index 817611d..e95d811 100644 --- a/Labs/02. Arithmetic-logic unit/tb_alu.sv +++ b/Labs/02. Arithmetic-logic unit/tb_alu.sv @@ -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::*; diff --git a/Other/Students server.md b/Other/Students server.md index 31e814f..05f757d 100644 --- a/Other/Students server.md +++ b/Other/Students server.md @@ -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 @@ -После создания сессии, она отобразится в правой части программы. Двойной клик по сессии создаст подключение, в процессе которого от вас потребуется ввести пароль от выданной вам учетной записи. +После создания сессии, она отобразится в правой части программы. Двойной клик по сессии создаст подключение, в процессе которого от вас потребуется ввести пароль от выданной вам **учетной записи сервера АПС**. После небольшого ожидания, откроется окно с удаленным рабочим столом. + +Можно менять размер окна, размер рабочего стола подстроится автоматически. Также работает копи-паст текста между компьютером и удаленным рабочим столом. + +В случае возникновения проблем с удаленным рабочим столом, рекомендуется первым делом попробовать перезапустить сессию на сервере нажатием кнопки «Terminate». + +
+ Где найти кнопку Terminate + + ![../.pic/Other/Students%20server/x2goclient_config.png](../.pic/Other/Students%20server/x2go_terminate.jpg) + +
## Как работать на сервере