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

Subversion Repositories spimaster

[/] [spimaster/] [trunk/] [bench/] [testCase0.v] - Blame information for rev 4

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 sfielding
// ---------------------------------- testcase0.v ----------------------------
2
`include "timescale.v"
3
`include "spiMaster_defines.v"
4
 
5
module testCase0();
6
 
7
reg ack;
8
reg [7:0] data;
9
reg [15:0] dataWord;
10
reg [7:0] dataRead;
11
reg [7:0] dataWrite;
12
integer i;
13
integer j;
14
 
15
initial
16
begin
17
  $write("\n\n");
18
  //testHarness.reset;
19
  #1000;
20
 
21
  //write to block addr reg, and read back
22
  //testHarness.u_wb_master_model.wb_write(1, `CTRL_STS_REG_BASE+`TRANS_TYPE_REG , 8'h5a);
23
  $write("Testing register read/write\n");
24
  testHarness.u_wb_master_model.wb_write(1, `CTRL_STS_REG_BASE+`SPI_CLK_DEL_REG , 8'h10);
25
  testHarness.u_wb_master_model.wb_cmp(1, `CTRL_STS_REG_BASE+`SPI_CLK_DEL_REG , 8'h10);
26
  testHarness.u_wb_master_model.wb_write(1, `CTRL_STS_REG_BASE+`SD_ADDR_7_0_REG , 8'h78);
27
  testHarness.u_wb_master_model.wb_write(1, `CTRL_STS_REG_BASE+`SD_ADDR_15_8_REG , 8'h56);
28
  testHarness.u_wb_master_model.wb_write(1, `CTRL_STS_REG_BASE+`SD_ADDR_23_16_REG , 8'h34);
29
  testHarness.u_wb_master_model.wb_write(1, `CTRL_STS_REG_BASE+`SD_ADDR_31_24_REG , 8'h12);
30
  testHarness.u_wb_master_model.wb_cmp(1, `CTRL_STS_REG_BASE+`SD_ADDR_7_0_REG , 8'h78);
31
  testHarness.u_wb_master_model.wb_cmp(1, `CTRL_STS_REG_BASE+`SD_ADDR_15_8_REG , 8'h56);
32
  testHarness.u_wb_master_model.wb_cmp(1, `CTRL_STS_REG_BASE+`SD_ADDR_23_16_REG , 8'h34);
33
  testHarness.u_wb_master_model.wb_cmp(1, `CTRL_STS_REG_BASE+`SD_ADDR_31_24_REG , 8'h12);
34
 
35
  //write one byte to spi bus, and wait for complete
36
  $write("Testing SPI bus direct access\n");
37
  testHarness.u_wb_master_model.wb_write(1, `CTRL_STS_REG_BASE+`TRANS_TYPE_REG , {6'b000000, `DIRECT_ACCESS});
38
  testHarness.u_wb_master_model.wb_write(1, `CTRL_STS_REG_BASE+`DIRECT_ACCESS_DATA_REG , 8'h5f);
39
  testHarness.u_wb_master_model.wb_write(1, `CTRL_STS_REG_BASE+`TRANS_CTRL_REG , {7'b0000000, `TRANS_START});
40
  testHarness.u_wb_master_model.wb_read(1, `CTRL_STS_REG_BASE+`TRANS_STS_REG , dataRead);
41
  while (dataRead[0] == `TRANS_BUSY)
42
    testHarness.u_wb_master_model.wb_read(1, `CTRL_STS_REG_BASE+`TRANS_STS_REG , dataRead);
43
 
44
  //write one byte to spi bus, and wait for complete
45
  testHarness.u_wb_master_model.wb_write(1, `CTRL_STS_REG_BASE+`DIRECT_ACCESS_DATA_REG , 8'haa);
46
  testHarness.u_wb_master_model.wb_write(1, `CTRL_STS_REG_BASE+`TRANS_CTRL_REG , {7'b0000000, `TRANS_START});
47
  testHarness.u_wb_master_model.wb_read(1, `CTRL_STS_REG_BASE+`TRANS_STS_REG , dataRead);
48
  while (dataRead[0] == `TRANS_BUSY)
49
    testHarness.u_wb_master_model.wb_read(1, `CTRL_STS_REG_BASE+`TRANS_STS_REG , dataRead);
50
 
51
  //init test
52
  $write("Testing SD init\n");
53
  testHarness.u_sdModel.setRespByte(8'h01);
54
  testHarness.u_wb_master_model.wb_write(1, `CTRL_STS_REG_BASE+`TRANS_TYPE_REG , {6'b000000, `INIT_SD});
55
  testHarness.u_wb_master_model.wb_write(1, `CTRL_STS_REG_BASE+`TRANS_CTRL_REG , {7'b0000000, `TRANS_START});
56
  #60000;
57
  testHarness.u_sdModel.setRespByte(8'h00);
58
  testHarness.u_wb_master_model.wb_read(1, `CTRL_STS_REG_BASE+`TRANS_STS_REG , dataRead);
59
  while (dataRead[0] == `TRANS_BUSY)
60
    testHarness.u_wb_master_model.wb_read(1, `CTRL_STS_REG_BASE+`TRANS_STS_REG , dataRead);
61
  testHarness.u_wb_master_model.wb_read(1, `CTRL_STS_REG_BASE+`TRANS_ERROR_REG , dataRead);
62
  if (dataRead[1:0] == `INIT_NO_ERROR)
63
    $write("SD init test passed\n");
64
  else
65
    $write("---- ERROR: SD init test failed. Error code = 0x%01x\n", dataRead[1:0] );
66
 
67
  //block write
68
  $write("Testing block write\n");
69
  dataWrite = 8'h00;
70
  for (i=0; i<=2; i=i+1) begin
71
    testHarness.u_wb_master_model.wb_write(1, `TX_FIFO_BASE+`FIFO_DATA_REG , dataWrite);
72
    dataWrite = dataWrite + 1'b1;
73
  end
74
  testHarness.u_wb_master_model.wb_write(1, `TX_FIFO_BASE+`FIFO_CONTROL_REG , 8'h01); //empty the fifo
75
  dataWrite = 8'h00;
76
  for (i=0; i<=511; i=i+1) begin
77
    testHarness.u_wb_master_model.wb_write(1, `TX_FIFO_BASE+`FIFO_DATA_REG , dataWrite);
78
    dataWrite = dataWrite + 1'b1;
79
  end
80
  testHarness.u_wb_master_model.wb_write(1, `CTRL_STS_REG_BASE+`TRANS_TYPE_REG , {6'b000000, `RW_WRITE_SD_BLOCK});
81
  testHarness.u_wb_master_model.wb_write(1, `CTRL_STS_REG_BASE+`TRANS_CTRL_REG , {7'b0000000, `TRANS_START});
82
  #100000;
83
  testHarness.u_sdModel.setRespByte(8'h05); //write response
84
  #8000000;
85 3 sfielding
  #8000000;
86
  #8000000;
87
  #8000000;
88
  #8000000;
89
  #8000000;
90
  #8000000;
91 2 sfielding
  testHarness.u_wb_master_model.wb_read(1, `CTRL_STS_REG_BASE+`TRANS_STS_REG , dataRead);
92
  if (dataRead[0] == `TRANS_BUSY) begin
93
    $write("---- ERROR: SD block write failed to complete\n");
94
  end
95
  else begin
96
    testHarness.u_wb_master_model.wb_read(1, `CTRL_STS_REG_BASE+`TRANS_ERROR_REG , dataRead);
97
    if (dataRead[5:4] == `WRITE_NO_ERROR)
98
      $write("SD block write passed\n");
99
    else
100
      $write("---- ERROR: SD block write failed. Error code = 0x%01x\n", dataRead[5:4] );
101
  end
102
 
103
  //block read
104
  $write("Testing block read\n");
105
  testHarness.u_sdModel.setRespByte(8'h00); //cmd response
106
  testHarness.u_wb_master_model.wb_write(1, `CTRL_STS_REG_BASE+`TRANS_TYPE_REG , {6'b000000, `RW_READ_SD_BLOCK});
107
  testHarness.u_wb_master_model.wb_write(1, `CTRL_STS_REG_BASE+`TRANS_CTRL_REG , {7'b0000000, `TRANS_START});
108
  #100000;
109
  testHarness.u_sdModel.setRespByte(8'hfe); //read response
110
  #8000000;
111 3 sfielding
  #8000000;
112
  #8000000;
113
  #8000000;
114
  #8000000;
115
  #8000000;
116
  #8000000;
117 2 sfielding
  testHarness.u_wb_master_model.wb_read(1, `CTRL_STS_REG_BASE+`TRANS_STS_REG , dataRead);
118
  if (dataRead[0] == `TRANS_BUSY) begin
119
    $write("---- ERROR: SD block read failed to complete\n");
120
  end
121
  else begin
122
    testHarness.u_wb_master_model.wb_read(1, `CTRL_STS_REG_BASE+`TRANS_ERROR_REG , dataRead);
123
    if (dataRead[3:2] == `READ_NO_ERROR) begin
124
      $write("SD block read passed\n");
125
      for (j=0; j<=15; j=j+1) begin
126
        $write("Data 0x%0x = ",j*32);
127
        for (i=0; i<=31; i=i+1) begin
128
          testHarness.u_wb_master_model.wb_read(1, `RX_FIFO_BASE+`FIFO_DATA_REG , dataRead);
129
          $write("0x%0x ",dataRead);
130
        end
131
        $write("\n");
132
      end
133
    end
134
    else
135
      $write("---- ERROR: SD block read failed. Error code = 0x%01x\n", dataRead[3:2] );
136
  end
137
 
138
  $write("Finished all tests\n");
139
  $stop;
140
 
141
end
142
 
143
endmodule
144
 

powered by: WebSVN 2.1.0

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