Files
labor_eds/labor_2/automat/sim/tb_cola.v
musabe24 7d9ff524f9 Hochladen der vorherigen Laborübungen.
Die Dateien selbst wurden nicht verändert.
2024-02-22 10:42:38 +01:00

97 lines
1.7 KiB
Verilog

//cola testbench
`timescale 1ns/1ps
module tb_cola();
reg tb_clk;
reg tb_rst;
reg tb_enable;
reg dut_eineuro;
reg dut_zweieuro;
wire [1:0] dut_ausgabe;
wire [1:0] dut_zustand;
integer i = 0;
initial begin
tb_clk = 1'b0;
tb_rst = 1'b0;
tb_enable = 1'b0;
end
always begin
#10;
tb_clk = ~tb_clk;
end
initial begin
for (i=0; i<4; i=i+1) begin
@(negedge tb_clk);
end
dut_eineuro = 1'b0;
dut_zweieuro = 1'b0;
tb_rst = 1'b1;
@(negedge tb_clk)
tb_rst = 1'b0;
@(negedge tb_clk)
tb_enable = 1'b1;
for (i=0; i<8; i=i+1) begin
@(negedge tb_clk);
end
//Fall 1: 3 mal 1 Euro
for (i=0; i<3; i=i+1) begin
dut_eineuro = 1'b1;
@(negedge tb_clk);
dut_eineuro = 1'b0;
@(negedge tb_clk);
end
for (i=0; i<=4; i=i+1) begin
@(negedge tb_clk);
end
tb_rst = 1'b1;
@(negedge tb_clk)
tb_rst = 1'b0;
@(negedge tb_clk)
for (i=0; i<4; i=i+1) begin
@(negedge tb_clk);
end
//Fall 2: 2 Euro + 1 Euro
dut_zweieuro = 1'b1;
@(negedge tb_clk);
dut_zweieuro = 1'b0;
@(negedge tb_clk);
dut_eineuro = 1'b1;
@(negedge tb_clk);
dut_eineuro = 1'b0;
@(negedge tb_clk);
for (i=0; i<4; i=i+1) begin
@(negedge tb_clk);
end
end
cola cola_dut(
.CLK(tb_clk),
.RST(tb_rst),
.ENABLE(tb_enable),
.EINEURO(dut_eineuro),
.ZWEIEURO(dut_zweieuro),
.AUSGABE(dut_ausgabe),
.ZUSTAND(dut_zustand)
);
endmodule