Files
b210-k7-fpga/top/x400/cpld/sim/led_control_tb.v
T
Javier Valenzuela ffdcc016cc fpga: x4xx: Refactor MB CPLD code for future devices
Original-commit: e2a79712a7949ffec88135236c744dc5d8bde217
2023-05-23 09:05:27 +02:00

193 lines
4.7 KiB
Verilog

//
// Copyright 2022 Ettus Research, a National Instruments Brand
//
// SPDX-License-Identifier: LGPL-3.0-or-later
//
// Module: led_control_tb
//
// Description:
// Simulates LED control module.
//
`timescale 1ns / 1ps
module led_control_tb();
reg clk50;
reg reset_clk50;
reg s_ctrlport_req_wr;
reg s_ctrlport_req_rd;
reg [19:0] s_ctrlport_req_addr;
reg [31:0] s_ctrlport_req_data;
// Response
wire s_ctrlport_resp_ack;
wire [ 1:0] s_ctrlport_resp_status;
wire [31:0] s_ctrlport_resp_data;
// LED Control (domain: ctrlport_clk)
wire ch0_rx2_led;
wire ch0_tx_led;
wire ch0_rx_led;
wire ch1_rx2_led;
wire ch1_tx_led;
wire ch1_rx_led;
wire ch2_rx2_led;
wire ch2_tx_led;
wire ch2_rx_led;
wire ch3_rx2_led;
wire ch3_tx_led;
wire ch3_rx_led;
led_control #(
.BASE_ADDRESS (32'h10)
) led_control_db1 (
.ctrlport_clk (clk50),
.ctrlport_rst (reset_clk50),
.s_ctrlport_req_wr (s_ctrlport_req_wr),
.s_ctrlport_req_rd (s_ctrlport_req_rd),
.s_ctrlport_req_addr (s_ctrlport_req_addr),
.s_ctrlport_req_data (s_ctrlport_req_data),
.s_ctrlport_resp_ack (s_ctrlport_resp_ack),
.s_ctrlport_resp_status (s_ctrlport_resp_status),
.s_ctrlport_resp_data (s_ctrlport_resp_data),
.ch0_rx2_led (ch0_rx2_led),
.ch0_tx_led (ch0_tx_led),
.ch0_rx_led (ch0_rx_led),
.ch1_rx2_led (ch1_rx2_led),
.ch1_tx_led (ch1_tx_led),
.ch1_rx_led (ch1_rx_led),
.ch2_rx2_led (ch2_rx2_led),
.ch2_tx_led (ch2_tx_led),
.ch2_rx_led (ch2_rx_led),
.ch3_rx2_led (ch3_rx2_led),
.ch3_tx_led (ch3_tx_led),
.ch3_rx_led (ch3_rx_led)
);
always #20 clk50 = ~clk50;
initial begin
clk50 = 0;
reset_clk50 = 0;
s_ctrlport_req_wr = 0;
s_ctrlport_req_rd = 0;
s_ctrlport_req_addr = 0;
s_ctrlport_req_data = 0;
#100;
s_ctrlport_req_wr = 1;
s_ctrlport_req_addr = 'h10;
s_ctrlport_req_data = 32'hFFFFFFFF;
#100;
s_ctrlport_req_wr = 0;
s_ctrlport_req_rd = 1;
s_ctrlport_req_addr = 'h10;
s_ctrlport_req_data = 32'h00000000;
#100;
s_ctrlport_req_rd = 0;
s_ctrlport_req_wr = 1;
s_ctrlport_req_addr = 'h20;
s_ctrlport_req_data = 32'h00000000;
#100;
s_ctrlport_req_wr = 1;
s_ctrlport_req_addr = 'h10;
s_ctrlport_req_data = 32'h00000000;
#100;
s_ctrlport_req_wr = 1;
s_ctrlport_req_addr = 'h10;
s_ctrlport_req_data = 32'h1;
#100;
s_ctrlport_req_wr = 0;
s_ctrlport_req_rd = 1;
s_ctrlport_req_addr = 'h10;
#100;
s_ctrlport_req_wr = 1;
s_ctrlport_req_addr = 'h10;
s_ctrlport_req_data = 32'h3;
#100;
s_ctrlport_req_wr = 0;
s_ctrlport_req_rd = 1;
s_ctrlport_req_addr = 'h10;
#100;
s_ctrlport_req_wr = 1;
s_ctrlport_req_addr = 'h10;
s_ctrlport_req_data = 32'h7;
#100;
s_ctrlport_req_wr = 0;
s_ctrlport_req_rd = 1;
s_ctrlport_req_addr = 'h10;
#100;
s_ctrlport_req_wr = 1;
s_ctrlport_req_addr = 'h10;
s_ctrlport_req_data = 32'h107;
#100;
s_ctrlport_req_wr = 0;
s_ctrlport_req_rd = 1;
s_ctrlport_req_addr = 'h10;
#100;
s_ctrlport_req_wr = 1;
s_ctrlport_req_addr = 'h10;
s_ctrlport_req_data = 32'h307;
#100;
s_ctrlport_req_wr = 0;
s_ctrlport_req_rd = 1;
s_ctrlport_req_addr = 'h10;
#100;
s_ctrlport_req_wr = 1;
s_ctrlport_req_addr = 'h10;
s_ctrlport_req_data = 32'h707;
#100;
s_ctrlport_req_wr = 0;
s_ctrlport_req_rd = 1;
s_ctrlport_req_addr = 'h10;
#100;
s_ctrlport_req_wr = 1;
s_ctrlport_req_addr = 'h10;
s_ctrlport_req_data = 32'h10707;
#100;
s_ctrlport_req_wr = 0;
s_ctrlport_req_rd = 1;
s_ctrlport_req_addr = 'h10;
#100;
s_ctrlport_req_wr = 1;
s_ctrlport_req_addr = 'h10;
s_ctrlport_req_data = 32'h30707;
#100;
s_ctrlport_req_wr = 0;
s_ctrlport_req_rd = 1;
s_ctrlport_req_addr = 'h10;
#100;
s_ctrlport_req_wr = 1;
s_ctrlport_req_addr = 'h10;
s_ctrlport_req_data = 32'h70707;
#100;
s_ctrlport_req_wr = 0;
s_ctrlport_req_rd = 1;
s_ctrlport_req_addr = 'h10;
#100;
s_ctrlport_req_wr = 1;
s_ctrlport_req_addr = 'h10;
s_ctrlport_req_data = 32'h1070707;
#100;
s_ctrlport_req_wr = 0;
s_ctrlport_req_rd = 1;
s_ctrlport_req_addr = 'h10;
#100;
s_ctrlport_req_wr = 1;
s_ctrlport_req_addr = 'h10;
s_ctrlport_req_data = 32'h3070707;
#100;
s_ctrlport_req_wr = 0;
s_ctrlport_req_rd = 1;
s_ctrlport_req_addr = 'h10;
#100;
s_ctrlport_req_wr = 1;
s_ctrlport_req_addr = 'h10;
s_ctrlport_req_data = 32'h7070707;
#100;
s_ctrlport_req_wr = 0;
s_ctrlport_req_rd = 1;
s_ctrlport_req_addr = 'h10;
end
endmodule