OpenCores
URL https://opencores.org/ocsvn/vspi/vspi/trunk

Subversion Repositories vspi

[/] [vspi/] [trunk/] [test/] [spi_base/] [spiifc_writereg_tb.v] - Blame information for rev 14

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 14 mjlyons
`timescale 1ns / 1ps
2
 
3
////////////////////////////////////////////////////////////////////////////////
4
// Company: 
5
// Engineer:
6
//
7
// Create Date:   11:08:12 02/15/2012
8
// Design Name:   spiifc
9
// Module Name:   C:/workspace/robobees/hbp/fpga/spitest/pcores/spi_v1_00_a/hdl/verilog/spiifc_tb2.v
10
// Project Name:  spi
11
// Target Device:  
12
// Tool versions:  
13
// Description: 
14
//
15
// Verilog Test Fixture created by ISE for module: spiifc
16
//
17
// Dependencies:
18
// 
19
// Revision:
20
// Revision 0.01 - File Created
21
// Additional Comments:
22
// 
23
////////////////////////////////////////////////////////////////////////////////
24
 
25
module spiifc_writereg_tb;
26
 
27
        // Inputs
28
        reg Reset;
29
  reg SysClk;
30
 
31
        reg SPI_CLK;
32
        reg SPI_MOSI;
33
        reg SPI_SS;
34
        reg [7:0] txMemData;
35
  reg [31:0] regReadData_wreg;
36
 
37
        // Outputs
38
        wire SPI_MISO;
39
        wire [11:0] txMemAddr;
40
        wire [11:0] rcMemAddr;
41
        wire [7:0] rcMemData;
42
        wire rcMemWE;
43
  wire [7:0] debug_out;
44
  wire [3:0] regAddr;
45
 
46
  wire [31:0] regWriteData;
47
  wire        regWE;
48
 
49
  // Register bank
50
  reg [31:0] regbank [0:15];
51
 
52
        // Instantiate the Unit Under Test (UUT)
53
        spiifc uut (
54
                .Reset(Reset),
55
    .SysClk(SysClk),
56
                .SPI_CLK(SPI_CLK),
57
                .SPI_MISO(SPI_MISO),
58
                .SPI_MOSI(SPI_MOSI),
59
                .SPI_SS(SPI_SS),
60
                .txMemAddr(txMemAddr),
61
                .txMemData(txMemData),
62
                .rcMemAddr(rcMemAddr),
63
                .rcMemData(rcMemData),
64
                .rcMemWE(rcMemWE),
65
    .regAddr(regAddr),
66
    .regReadData(regReadData_wreg),
67
    .regWriteData(regWriteData),
68
    .regWriteEn(regWE),
69
    .debug_out(debug_out)
70
        );
71
 
72
  task recvByte;
73
    input   [7:0] rcByte;
74
    integer       rcBitIndex;
75
    begin
76
      $display("%g - spiifc receiving byte '0x%h'", $time, rcByte);
77
      for (rcBitIndex = 0; rcBitIndex < 8; rcBitIndex = rcBitIndex + 1) begin
78
        SPI_MOSI = rcByte[7 - rcBitIndex];
79
        #100;
80
      end
81
    end
82
  endtask
83
 
84
  always begin
85
    #20 SysClk = ~SysClk;
86
  end
87
 
88
  // Register bank
89
  always @(*) begin                 // Read reg
90
    regReadData_wreg <= regbank[regAddr];
91
  end
92
  always @(posedge SysClk) begin    // Write reg
93
    if (regWE) begin
94
      regbank[regAddr] <= regWriteData;
95
    end
96
  end
97
 
98
  reg SPI_CLK_en;
99
  initial begin
100
    #310
101
    SPI_CLK_en = 1;
102
  end
103
  always begin
104
    #10
105
    if (SPI_CLK_en) begin
106
      #40 SPI_CLK = ~SPI_CLK;
107
    end
108
  end
109
 
110
  integer fdRcBytes;
111
  integer fdTxBytes;
112
  integer dummy;
113
  integer currRcByte;
114
  integer rcBytesNotEmpty;
115
  reg [8*10:1] rcBytesStr;
116
 
117
        initial begin
118
                // Initialize Inputs
119
                Reset = 0;
120
    SysClk = 0;
121
 
122
                SPI_CLK = 0;
123
    SPI_CLK_en = 0;
124
                SPI_MOSI = 0;
125
                SPI_SS = 1;
126
                txMemData = 0;
127
 
128
                // Wait 100 ns for global reset to finish
129
                #100;
130
    Reset = 1;
131
 
132
    #100;
133
    Reset = 0;
134
 
135
    #100;
136
 
137
                // Add stimulus here
138
    SPI_SS = 0;
139
    // For each byte, transmit its bits
140
    fdRcBytes = $fopen("rc-bytes-writereg.txt", "r");
141
    rcBytesNotEmpty = 1;
142
    while (rcBytesNotEmpty) begin
143
      rcBytesNotEmpty = $fgets(rcBytesStr, fdRcBytes);
144
      if (rcBytesNotEmpty) begin
145
        dummy = $sscanf(rcBytesStr, "%x", currRcByte);
146
        recvByte(currRcByte);
147
      end
148
    end
149
 
150
    // Wrap it up.
151
    SPI_SS = 1;
152
    #1000;
153
 
154
    $finish;
155
        end
156
endmodule
157
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.