Compare commits
7 Commits
english_ve
...
4aa7ed1be8
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4aa7ed1be8 | ||
|
|
4313c22bee | ||
|
|
007889f849 | ||
|
|
e09e48adff | ||
|
|
8ffbc7a01b | ||
|
|
da422cfccb | ||
|
|
71cb2f3099 |
|
Before Width: | Height: | Size: 75 KiB After Width: | Height: | Size: 127 KiB |
|
Before Width: | Height: | Size: 82 KiB After Width: | Height: | Size: 137 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 85 KiB After Width: | Height: | Size: 142 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 41 KiB |
@@ -32,7 +32,7 @@ endmodule
|
|||||||
module testbench();
|
module testbench();
|
||||||
logic A, B, C;
|
logic A, B, C;
|
||||||
|
|
||||||
adder DUT(
|
half_adder DUT(
|
||||||
.A(A), // <- здесь будет ошибка,
|
.A(A), // <- здесь будет ошибка,
|
||||||
// т.к. в модуле half_adder нет порта 'A'
|
// т.к. в модуле half_adder нет порта 'A'
|
||||||
.b(B),
|
.b(B),
|
||||||
|
|||||||
@@ -10,33 +10,40 @@ See https://github.com/MPSU/APS/blob/master/LICENSE file for licensing details.
|
|||||||
*/
|
*/
|
||||||
module lab_04_tb_CYBERcobra();
|
module lab_04_tb_CYBERcobra();
|
||||||
|
|
||||||
CYBERcobra DUT(
|
logic [31:0] OUT;
|
||||||
|
logic clk;
|
||||||
|
logic rst;
|
||||||
|
logic [15:0] sw_i;
|
||||||
|
|
||||||
|
|
||||||
|
CYBERcobra DUT(
|
||||||
.clk_i(clk),
|
.clk_i(clk),
|
||||||
.rst_i(rstn),
|
.rst_i(rst),
|
||||||
.sw_i (sw_i ),
|
.sw_i (sw_i),
|
||||||
.out_o(OUT)
|
.out_o(OUT)
|
||||||
);
|
);
|
||||||
|
|
||||||
wire [31:0] OUT;
|
initial clk <= 0;
|
||||||
reg clk;
|
always #5ns clk = ~clk;
|
||||||
reg rstn;
|
|
||||||
reg [15:0] sw_i;
|
|
||||||
|
|
||||||
initial clk <= 0;
|
initial begin
|
||||||
always #5 clk = ~clk;
|
logic [15:0] count_num;
|
||||||
|
|
||||||
initial begin
|
|
||||||
$display("Test has been started");
|
$display("Test has been started");
|
||||||
rstn = 1'b1;
|
rst = 1'b1;
|
||||||
#10;
|
repeat(2)@(posedge clk);
|
||||||
rstn = 1'b0;
|
rst = 1'b0;
|
||||||
sw_i = 16'b100001000; //значение, до которого считает счетчик
|
count_num = $urandom_range(5, 10);
|
||||||
#10000;
|
sw_i = count_num;
|
||||||
$display("\n The test is over \n See the internal signals of the CYBERcobra on the waveform \n");
|
repeat(count_num * 2 + 15) begin
|
||||||
$finish;
|
@(posedge clk);
|
||||||
#5;
|
|
||||||
$display("You're trying to run simulation that has finished. Aborting simulation.");
|
|
||||||
$fatal();
|
|
||||||
end
|
end
|
||||||
|
$display("\nThe test is over.");
|
||||||
|
$display("See the internal signals of the CYBERcobra on the waveform");
|
||||||
|
$finish;
|
||||||
|
@(posedge clk);
|
||||||
|
$display("You're trying to run simulation that has finished.");
|
||||||
|
$display("Aborting simulation.");
|
||||||
|
$fatal();
|
||||||
|
end
|
||||||
|
|
||||||
endmodule
|
endmodule
|
||||||
|
|||||||
@@ -338,7 +338,7 @@ _Таблица 7. Описание портов дешифратора кома
|
|||||||
|
|
||||||
## Инструменты
|
## Инструменты
|
||||||
|
|
||||||
**SystemVerilog** – это язык описания аппаратуры. С помощью этого языка человек объясняет либо синтезатору какое он хочет получить устройство, либо симулятору – как он хочет это устройство проверить. Синтезатор – это программа, которая создает из логических элементов цифровое устройство по описанию, предоставляемому человеком. Синтезатору внутри **Vivado** нужно объяснить, что от него нужно. Например, чтобы спросить дорогу у испанца, придется делать это на испанском языке, иначе он ничем не сможет помочь. А если вы хорошо знаете испанский, то скорее всего сможете это сделать еще и разными способами. В **SystemVerilog** точно также – одно и то же устройство можно описать разным кодом, но результат синтеза будет одним и тем же. Однако, часто два разных кода, одинаковых по смыслу, могут синтезироваться в разную аппаратуру, хотя функционально они будут идентичны, но могут отличаться, например, скоростью работы. Или одни и те же специальные языковые конструкции могут применяться для синтезирования разных цифровых элементов.
|
**SystemVerilog** – это язык описания аппаратуры. С помощью этого языка человек объясняет либо синтезатору какое он хочет получить устройство, либо симулятору – как он хочет это устройство проверить. Синтезатор – это программа, которая создает из логических элементов цифровое устройство по описанию, предоставляемому человеком. Синтезатору внутри **Vivado** нужно объяснить, что от него требуется. Например, чтобы спросить дорогу у испанца, придется делать это на испанском языке, иначе он ничем не сможет помочь. А если вы хорошо знаете испанский, то скорее всего сможете это сделать еще и разными способами. В **SystemVerilog** точно также – одно и то же устройство можно описать разным кодом, но результат синтеза будет одним и тем же. В то же время два одинаковых по смыслу кода могут синтезироваться в разную аппаратуру. Будучи функционально идентичными, они могут отличаться, например, скоростью работы. Или одни и те же специальные языковые конструкции могут применяться для синтезирования разных цифровых элементов.
|
||||||
|
|
||||||
Декодер – комбинационная схема. Это значит, что каждый раз подавая на вход одни и те же значения, вы будете получать на выходе один и тот же результат.
|
Декодер – комбинационная схема. Это значит, что каждый раз подавая на вход одни и те же значения, вы будете получать на выходе один и тот же результат.
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ module lab_15_tb_system();
|
|||||||
logic flash_rx;
|
logic flash_rx;
|
||||||
logic tx_o;
|
logic tx_o;
|
||||||
logic ps2_clk, ps2_dat;
|
logic ps2_clk, ps2_dat;
|
||||||
logic sw_i;
|
logic [15:0] sw_i;
|
||||||
logic tb_rx;
|
logic tb_rx;
|
||||||
logic flashing_is_done = 0;
|
logic flashing_is_done = 0;
|
||||||
logic core_reset;
|
logic core_reset;
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ OBJCOPY = $(CC_PATH)/$(CC_PREFIX)-objcopy
|
|||||||
SIZE = $(CC_PATH)/$(CC_PREFIX)-size
|
SIZE = $(CC_PATH)/$(CC_PREFIX)-size
|
||||||
|
|
||||||
OBJS = core_main.o core_list_join.o core_matrix.o core_state.o core_util.o \
|
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
|
barebones/ee_printf.o
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -139,7 +139,7 @@ endmodule
|
|||||||
module testbench();
|
module testbench();
|
||||||
logic A, B, C;
|
logic A, B, C;
|
||||||
|
|
||||||
adder DUT(
|
half_adder DUT(
|
||||||
.A(A), // <- здесь будет ошибка,
|
.A(A), // <- здесь будет ошибка,
|
||||||
// т.к. в модуле half_adder нет порта 'A'
|
// т.к. в модуле half_adder нет порта 'A'
|
||||||
.b(B),
|
.b(B),
|
||||||
|
|||||||