Compare commits

...

7 Commits

Author SHA1 Message Date
Andrei Solodovnikov
4aa7ed1be8 Исправление отображения svg (#164) 2026-07-01 14:33:40 +03:00
Andrei Solodovnikov
4313c22bee ЛР5. Стилистические правки 2026-07-01 14:29:23 +03:00
Andrei Solodovnikov
007889f849 ЛР4. Обновление тестбенча
Замена reg и wire, исправление нейминга сигналов, способов установки
задержек, а также уменьшен интервал вводимых чисел для уменьшения длины
временной диаграммы.
2026-07-01 14:29:23 +03:00
Andrei Solodovnikov
e09e48adff ЛР16. Исправление мейкфайла
Мейкфайл был написан из рассчета что startup.S будет в barebones,
но в методичке сказано скопировать его в корень кормарка.
2026-06-24 21:09:00 +03:00
Andrei Solodovnikov
8ffbc7a01b ЛР15. Исправление разрядности sw_i в тб 2026-06-18 13:17:12 +03:00
Andrei Solodovnikov
da422cfccb Исправление имени модуля в примере FAQ
Fix the instantiation of the adder module in the testbench.
2026-05-19 14:17:31 +03:00
Andrei Solodovnikov
71cb2f3099 Исправление имени модуля в примере common mistakes 2026-05-19 13:41:13 +03:00
11 changed files with 54 additions and 1042 deletions

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 127 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 137 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 29 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 85 KiB

After

Width:  |  Height:  |  Size: 142 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 41 KiB

View File

@@ -32,7 +32,7 @@ endmodule
module testbench();
logic A, B, C;
adder DUT(
half_adder DUT(
.A(A), // <- здесь будет ошибка,
// т.к. в модуле half_adder нет порта 'A'
.b(B),

View File

@@ -10,32 +10,39 @@ See https://github.com/MPSU/APS/blob/master/LICENSE file for licensing details.
*/
module lab_04_tb_CYBERcobra();
logic [31:0] OUT;
logic clk;
logic rst;
logic [15:0] sw_i;
CYBERcobra DUT(
.clk_i(clk),
.rst_i(rstn),
.rst_i(rst),
.sw_i (sw_i),
.out_o(OUT)
);
wire [31:0] OUT;
reg clk;
reg rstn;
reg [15:0] sw_i;
initial clk <= 0;
always #5 clk = ~clk;
always #5ns clk = ~clk;
initial begin
logic [15:0] count_num;
$display("Test has been started");
rstn = 1'b1;
#10;
rstn = 1'b0;
sw_i = 16'b100001000; //значение, до которого считает счетчик
#10000;
$display("\n The test is over \n See the internal signals of the CYBERcobra on the waveform \n");
rst = 1'b1;
repeat(2)@(posedge clk);
rst = 1'b0;
count_num = $urandom_range(5, 10);
sw_i = count_num;
repeat(count_num * 2 + 15) begin
@(posedge clk);
end
$display("\nThe test is over.");
$display("See the internal signals of the CYBERcobra on the waveform");
$finish;
#5;
$display("You're trying to run simulation that has finished. Aborting simulation.");
@(posedge clk);
$display("You're trying to run simulation that has finished.");
$display("Aborting simulation.");
$fatal();
end

View File

@@ -338,7 +338,7 @@ _Таблица 7. Описание портов дешифратора кома
## Инструменты
**SystemVerilog** – это язык описания аппаратуры. С помощью этого языка человек объясняет либо синтезатору какое он хочет получить устройство, либо симулятору как он хочет это устройство проверить. Синтезатор – это программа, которая создает из логических элементов цифровое устройство по описанию, предоставляемому человеком. Синтезатору внутри **Vivado** нужно объяснить, что от него нужно. Например, чтобы спросить дорогу у испанца, придется делать это на испанском языке, иначе он ничем не сможет помочь. А если вы хорошо знаете испанский, то скорее всего сможете это сделать еще и разными способами. В **SystemVerilog** точно также одно и то же устройство можно описать разным кодом, но результат синтеза будет одним и тем же. Однако, часто два разных кода, одинаковых по смыслу, могут синтезироваться в разную аппаратуру, хотя функционально они будут идентичны, но могут отличаться, например, скоростью работы. Или одни и те же специальные языковые конструкции могут применяться для синтезирования разных цифровых элементов.
**SystemVerilog** – это язык описания аппаратуры. С помощью этого языка человек объясняет либо синтезатору какое он хочет получить устройство, либо симулятору как он хочет это устройство проверить. Синтезатор – это программа, которая создает из логических элементов цифровое устройство по описанию, предоставляемому человеком. Синтезатору внутри **Vivado** нужно объяснить, что от него требуется. Например, чтобы спросить дорогу у испанца, придется делать это на испанском языке, иначе он ничем не сможет помочь. А если вы хорошо знаете испанский, то скорее всего сможете это сделать еще и разными способами. В **SystemVerilog** точно также одно и то же устройство можно описать разным кодом, но результат синтеза будет одним и тем же. В то же время два одинаковых по смыслу кода могут синтезироваться в разную аппаратуру. Будучи функционально идентичными, они могут отличаться, например, скоростью работы. Или одни и те же специальные языковые конструкции могут применяться для синтезирования разных цифровых элементов.
Декодер – комбинационная схема. Это значит, что каждый раз подавая на вход одни и те же значения, вы будете получать на выходе один и тот же результат.

View File

@@ -16,7 +16,7 @@ module lab_15_tb_system();
logic flash_rx;
logic tx_o;
logic ps2_clk, ps2_dat;
logic sw_i;
logic [15:0] sw_i;
logic tb_rx;
logic flashing_is_done = 0;
logic core_reset;

View File

@@ -17,7 +17,7 @@ OBJCOPY = $(CC_PATH)/$(CC_PREFIX)-objcopy
SIZE = $(CC_PATH)/$(CC_PREFIX)-size
OBJS = core_main.o core_list_join.o core_matrix.o core_state.o core_util.o \
barebones/core_portme.o barebones/startup.o barebones/cvt.o \
startup.o barebones/core_portme.o barebones/cvt.o \
barebones/ee_printf.o

View File

@@ -139,7 +139,7 @@ endmodule
module testbench();
logic A, B, C;
adder DUT(
half_adder DUT(
.A(A), // <- здесь будет ошибка,
// т.к. в модуле half_adder нет порта 'A'
.b(B),