Compare commits
3 Commits
e09e48adff
...
4aa7ed1be8
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4aa7ed1be8 | ||
|
|
4313c22bee | ||
|
|
007889f849 |
|
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 |
@@ -10,33 +10,40 @@ See https://github.com/MPSU/APS/blob/master/LICENSE file for licensing details.
|
||||
*/
|
||||
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),
|
||||
.rst_i(rstn),
|
||||
.sw_i (sw_i ),
|
||||
.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 #5ns clk = ~clk;
|
||||
|
||||
initial clk <= 0;
|
||||
always #5 clk = ~clk;
|
||||
|
||||
initial begin
|
||||
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");
|
||||
$finish;
|
||||
#5;
|
||||
$display("You're trying to run simulation that has finished. Aborting simulation.");
|
||||
$fatal();
|
||||
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;
|
||||
@(posedge clk);
|
||||
$display("You're trying to run simulation that has finished.");
|
||||
$display("Aborting simulation.");
|
||||
$fatal();
|
||||
end
|
||||
|
||||
endmodule
|
||||
|
||||
@@ -338,7 +338,7 @@ _Таблица 7. Описание портов дешифратора кома
|
||||
|
||||
## Инструменты
|
||||
|
||||
**SystemVerilog** – это язык описания аппаратуры. С помощью этого языка человек объясняет либо синтезатору какое он хочет получить устройство, либо симулятору – как он хочет это устройство проверить. Синтезатор – это программа, которая создает из логических элементов цифровое устройство по описанию, предоставляемому человеком. Синтезатору внутри **Vivado** нужно объяснить, что от него нужно. Например, чтобы спросить дорогу у испанца, придется делать это на испанском языке, иначе он ничем не сможет помочь. А если вы хорошо знаете испанский, то скорее всего сможете это сделать еще и разными способами. В **SystemVerilog** точно также – одно и то же устройство можно описать разным кодом, но результат синтеза будет одним и тем же. Однако, часто два разных кода, одинаковых по смыслу, могут синтезироваться в разную аппаратуру, хотя функционально они будут идентичны, но могут отличаться, например, скоростью работы. Или одни и те же специальные языковые конструкции могут применяться для синтезирования разных цифровых элементов.
|
||||
**SystemVerilog** – это язык описания аппаратуры. С помощью этого языка человек объясняет либо синтезатору какое он хочет получить устройство, либо симулятору – как он хочет это устройство проверить. Синтезатор – это программа, которая создает из логических элементов цифровое устройство по описанию, предоставляемому человеком. Синтезатору внутри **Vivado** нужно объяснить, что от него требуется. Например, чтобы спросить дорогу у испанца, придется делать это на испанском языке, иначе он ничем не сможет помочь. А если вы хорошо знаете испанский, то скорее всего сможете это сделать еще и разными способами. В **SystemVerilog** точно также – одно и то же устройство можно описать разным кодом, но результат синтеза будет одним и тем же. В то же время два одинаковых по смыслу кода могут синтезироваться в разную аппаратуру. Будучи функционально идентичными, они могут отличаться, например, скоростью работы. Или одни и те же специальные языковые конструкции могут применяться для синтезирования разных цифровых элементов.
|
||||
|
||||
Декодер – комбинационная схема. Это значит, что каждый раз подавая на вход одни и те же значения, вы будете получать на выходе один и тот же результат.
|
||||
|
||||
|
||||