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

Subversion Repositories ds1621

[/] [ds1621/] [trunk/] [files/] [tb_ds1621.sv] - Blame information for rev 7

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 7 akhachat
// regs: DS1621 Temperature Sensor
2
 
3
`define DS1621_CODE     4'h9
4
`define DS1621_ADDR_01  3'b001
5
`define DS1621_ADDR_06  3'b110
6
 
7
`define DS1621_WROP  1'b0
8
`define DS1621_RDOP  1'b1
9
 
10
// Defined in the model
11
`ifndef DS1621_STOP
12
  `define DS1621_STOP  8'h22
13
  `define DS1621_TH    8'hA1
14
  `define DS1621_TL    8'hA2
15
  `define DS1621_CNT   8'hA8
16
  `define DS1621_SLP   8'hA9
17
  `define DS1621_TMP   8'hAA
18
  `define DS1621_CFG   8'hAC
19
  `define DS1621_STRT  8'hEE
20
`endif
21
 
22
    $display("--DS1621 test 01 begin-->");
23
 
24
    board_temp01 = 20.0;  // set board temperature
25
 
26
    $display("----DS1621 sending CFG=03, TH=16'h2800, TL=16'h0A00");
27
    iic_ctlop( `DS1621_CODE, `DS1621_ADDR_01, `DS1621_WROP, bit_status );  if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
28
    iic_write( 0, `DS1621_CFG, bit_status );                               if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
29
    iic_write( 0, 8'h63, bit_status );                                     if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
30
    iic_ctlop( `DS1621_CODE, `DS1621_ADDR_01, `DS1621_WROP, bit_status );  if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
31
    iic_write( 0, `DS1621_TH, bit_status );                                if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
32
    iic_write( 0, 8'h28, bit_status );                                     if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
33
    iic_write( 0, 8'h00, bit_status );                                     if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
34
    iic_ctlop( `DS1621_CODE, `DS1621_ADDR_01, `DS1621_WROP, bit_status );  if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
35
    iic_write( 0, `DS1621_TL, bit_status );                                if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
36
    iic_write( 0, 8'h0A, bit_status );                                     if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
37
    iic_write( 1, 8'h00, bit_status );                                     if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
38
    $display("----DS1621 sending done");
39
 
40
    $display("----DS1621 reading TH");
41
    iic_ctlop( `DS1621_CODE, `DS1621_ADDR_01, `DS1621_WROP, bit_status );  if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
42
    iic_write( 0, `DS1621_TH, bit_status );                                if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
43
    iic_ctlop( `DS1621_CODE, `DS1621_ADDR_01, `DS1621_RDOP, bit_status );  if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
44
    iic__read( 0, g_logic_8 );   g_logic_16[15:8]=g_logic_8;
45
    iic__read( 1, g_logic_8 );   g_logic_16[7:0] =g_logic_8;
46
    $display("----DS1621 TH = %0h", g_logic_16);
47
 
48
    board_temp01 = 25.5;  // set board temperature
49
 
50
    $display("----DS1621 start TMP conversion");
51
    iic_ctlop( `DS1621_CODE, `DS1621_ADDR_01, `DS1621_WROP, bit_status );  if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
52
    iic_write( 1, `DS1621_STRT, bit_status );                              if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
53
   #2_000_000  // conversion time is truncated in the top
54
    iic_ctlop( `DS1621_CODE, `DS1621_ADDR_01, `DS1621_WROP, bit_status );  if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
55
    iic_write( 0, `DS1621_CFG, bit_status );                               if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
56
    iic_ctlop( `DS1621_CODE, `DS1621_ADDR_01, `DS1621_RDOP, bit_status );  if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
57
    iic__read( 1, g_logic_8 );                                             if ( g_logic_8[7] == 0 )  $display("--DS1621: iic__read, TCNV IS IN PROGRESS = %h", g_logic_8[7] );
58
    //
59
    iic_ctlop( `DS1621_CODE, `DS1621_ADDR_01, `DS1621_WROP, bit_status );  if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
60
    iic_write( 0, `DS1621_TMP, bit_status );                               if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
61
    iic_ctlop( `DS1621_CODE, `DS1621_ADDR_01, `DS1621_RDOP, bit_status );  if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
62
    iic__read( 0, g_logic_8 );   g_logic_16[15:8]=g_logic_8;
63
    iic__read( 1, g_logic_8 );   g_logic_16[7:0] =g_logic_8;
64
    $display("----DS1621 T=25.5*C, expecting 1980, TMP = %0h", g_logic_16);
65
 
66
    board_temp01 = -13.0;  // set board temperature
67
 
68
    $display("----DS1621 start TMP conversion");
69
    iic_ctlop( `DS1621_CODE, `DS1621_ADDR_01, `DS1621_WROP, bit_status );  if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
70
    iic_write( 1, `DS1621_STRT, bit_status );                              if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
71
   #2_000_000  // conversion time is truncated in the top
72
    //
73
    iic_ctlop( `DS1621_CODE, `DS1621_ADDR_01, `DS1621_WROP, bit_status );  if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
74
    iic_write( 0, `DS1621_TMP, bit_status );                               if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
75
    iic_ctlop( `DS1621_CODE, `DS1621_ADDR_01, `DS1621_RDOP, bit_status );  if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
76
    iic__read( 0, g_logic_8 );   g_logic_16[15:8]=g_logic_8;
77
    iic__read( 1, g_logic_8 );   g_logic_16[7:0] =g_logic_8;
78
    $display("----DS1621 T=-13.0*C, expecting F300, TMP = %0h", g_logic_16);
79
 
80
    board_temp01 = -13.5;  // set board temperature
81
 
82
    $display("----DS1621 start TMP conversion");
83
    iic_ctlop( `DS1621_CODE, `DS1621_ADDR_01, `DS1621_WROP, bit_status );  if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
84
    iic_write( 1, `DS1621_STRT, bit_status );                              if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
85
   #2_000_000  // conversion time is truncated in the top
86
    //
87
    iic_ctlop( `DS1621_CODE, `DS1621_ADDR_01, `DS1621_WROP, bit_status );  if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
88
    iic_write( 0, `DS1621_TMP, bit_status );                               if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
89
    iic_ctlop( `DS1621_CODE, `DS1621_ADDR_01, `DS1621_RDOP, bit_status );  if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
90
    iic__read( 0, g_logic_8 );   g_logic_16[15:8]=g_logic_8;
91
    iic__read( 1, g_logic_8 );   g_logic_16[7:0] =g_logic_8;
92
    $display("----DS1621 T=-13.5*C, expecting F380, TMP = %0h", g_logic_16);
93
 
94
    board_temp01 = 130.0;  // set board temperature
95
 
96
    $display("----DS1621 start TMP conversion");
97
    iic_ctlop( `DS1621_CODE, `DS1621_ADDR_01, `DS1621_WROP, bit_status );  if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
98
    iic_write( 1, `DS1621_STRT, bit_status );                              if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
99
   #2_000_000  // conversion time is truncated in the top
100
    //
101
    iic_ctlop( `DS1621_CODE, `DS1621_ADDR_01, `DS1621_WROP, bit_status );  if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
102
    iic_write( 0, `DS1621_TMP, bit_status );                               if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
103
    iic_ctlop( `DS1621_CODE, `DS1621_ADDR_01, `DS1621_RDOP, bit_status );  if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
104
    iic__read( 0, g_logic_8 );   g_logic_16[15:8]=g_logic_8;
105
    iic__read( 1, g_logic_8 );   g_logic_16[7:0] =g_logic_8;
106
    $display("----DS1621 T=130.0*C, expecting 7D00, TMP = %0h", g_logic_16);
107
 
108
    board_temp01 = -60.0;  // set board temperature
109
 
110
    $display("----DS1621 start TMP conversion");
111
    iic_ctlop( `DS1621_CODE, `DS1621_ADDR_01, `DS1621_WROP, bit_status );  if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
112
    iic_write( 1, `DS1621_STRT, bit_status );                              if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
113
   #2_000_000  // conversion time is truncated in the top
114
    //
115
    iic_ctlop( `DS1621_CODE, `DS1621_ADDR_01, `DS1621_WROP, bit_status );  if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
116
    iic_write( 0, `DS1621_TMP, bit_status );                               if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
117
    iic_ctlop( `DS1621_CODE, `DS1621_ADDR_01, `DS1621_RDOP, bit_status );  if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
118
    iic__read( 0, g_logic_8 );   g_logic_16[15:8]=g_logic_8;
119
    iic__read( 1, g_logic_8 );   g_logic_16[7:0] =g_logic_8;
120
    $display("----DS1621 T=-60.0*C, expecting C900, TMP = %0h", g_logic_16);
121
    // THF, TLF reset
122
    iic_ctlop( `DS1621_CODE, `DS1621_ADDR_01, `DS1621_WROP, bit_status );  if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
123
    iic_write( 0, `DS1621_CFG, bit_status );                               if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
124
    iic_write( 1, 8'h03, bit_status );                                     if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
125
 
126
    $display("--DS1621 test 01 end--<\n");
127
 
128
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
129
    $display("--------------------------------------------------------------------------------");
130
 
131
    $display("--DS1621 test 06 begin-->");
132
 
133
    $display("----DS1621 sending CFG=03, TH=16'h2800, TL=16'h0A00");
134
    iic_ctlop( `DS1621_CODE, `DS1621_ADDR_06, `DS1621_WROP, bit_status );  if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
135
    iic_write( 0, `DS1621_CFG, bit_status );                               if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
136
    iic_write( 0, 8'h63, bit_status );                                     if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
137
    iic_ctlop( `DS1621_CODE, `DS1621_ADDR_06, `DS1621_WROP, bit_status );  if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
138
    iic_write( 0, `DS1621_TH, bit_status );                                if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
139
    iic_write( 0, 8'h28, bit_status );                                     if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
140
    iic_write( 0, 8'h00, bit_status );                                     if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
141
    iic_ctlop( `DS1621_CODE, `DS1621_ADDR_06, `DS1621_WROP, bit_status );  if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
142
    iic_write( 0, `DS1621_TL, bit_status );                                if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
143
    iic_write( 0, 8'h0A, bit_status );                                     if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
144
    iic_write( 1, 8'h00, bit_status );                                     if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
145
    $display("----DS1621 sending done");
146
 
147
    board_temp06 = 25.5;  // set board temperature
148
 
149
    $display("----DS1621 start TMP conversion");
150
    iic_ctlop( `DS1621_CODE, `DS1621_ADDR_06, `DS1621_WROP, bit_status );  if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
151
    iic_write( 1, `DS1621_STRT, bit_status );                              if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
152
   #2_000_000  // conversion time is truncated in the top
153
    iic_ctlop( `DS1621_CODE, `DS1621_ADDR_06, `DS1621_WROP, bit_status );  if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
154
    iic_write( 0, `DS1621_CFG, bit_status );                               if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
155
    iic_ctlop( `DS1621_CODE, `DS1621_ADDR_06, `DS1621_RDOP, bit_status );  if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
156
    iic__read( 1, g_logic_8 );                                             if ( g_logic_8[7] == 0 )  $display("--DS1621: iic__read, TCNV IS IN PROGRESS = %h", g_logic_8[7] );
157
    //
158
    iic_ctlop( `DS1621_CODE, `DS1621_ADDR_06, `DS1621_WROP, bit_status );  if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
159
    iic_write( 0, `DS1621_TMP, bit_status );                               if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
160
    iic_ctlop( `DS1621_CODE, `DS1621_ADDR_06, `DS1621_RDOP, bit_status );  if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
161
    iic__read( 0, g_logic_8 );   g_logic_16[15:8]=g_logic_8;
162
    iic__read( 1, g_logic_8 );   g_logic_16[7:0] =g_logic_8;
163
    $display("----DS1621 T=25.5*C, expecting 1980, TMP = %0h", g_logic_16);
164
 
165
    board_temp06 = -13.0;  // set board temperature
166
 
167
    $display("----DS1621 start TMP conversion");
168
    iic_ctlop( `DS1621_CODE, `DS1621_ADDR_06, `DS1621_WROP, bit_status );  if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
169
    iic_write( 1, `DS1621_STRT, bit_status );                              if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
170
   #2_000_000  // conversion time is truncated in the top
171
    //
172
    iic_ctlop( `DS1621_CODE, `DS1621_ADDR_06, `DS1621_WROP, bit_status );  if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
173
    iic_write( 0, `DS1621_TMP, bit_status );                               if ( bit_status != 0 ) $display("--DS1621: iic_write, WRONG ACK = %h", bit_status);
174
    iic_ctlop( `DS1621_CODE, `DS1621_ADDR_06, `DS1621_RDOP, bit_status );  if ( bit_status != 0 ) $display("--DS1621: iic_ctlop, WRONG ACK = %h", bit_status);
175
    iic__read( 0, g_logic_8 );   g_logic_16[15:8]=g_logic_8;
176
    iic__read( 1, g_logic_8 );   g_logic_16[7:0] =g_logic_8;
177
    $display("----DS1621 T=-13.0*C, expecting F300, TMP = %0h", g_logic_16);
178
 
179
    $display("--DS1621 test 06 end--<\n");
180
 
181
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
182
    $display("--------------------------------------------------------------------------------");
183
 
184
`define EEPROM_CODE  4'hA
185
`define EEPROM_BLK0  3'b000
186
`define EEPROM_BLK1  3'b001
187
`define EEPROM_BLK2  3'b010
188
`define EEPROM_BLK3  3'b011
189
`define EEPROM_BLK4  3'b100
190
`define EEPROM_BLK5  3'b101
191
`define EEPROM_BLK6  3'b110
192
`define EEPROM_BLK7  3'b111
193
 
194
`define EEPROM_WROP  1'b0
195
`define EEPROM_RDOP  1'b1
196
 
197
    $display("--EEPROM test begin-->");
198
 
199
    $display("---- writing      A=12'h001, D=8'h5A");
200
    iic_ctlop( `EEPROM_CODE, `EEPROM_BLK0, `EEPROM_WROP, bit_status );  if ( bit_status != 0 ) $display("--EEPROM: WR1 iic_ctlop 1, WRONG ACK = %h", bit_status);
201
    iic_write( 0, 8'h01, bit_status );                                  if ( bit_status != 0 ) $display("--EEPROM: WR1 iic_write 1, WRONG ACK = %h", bit_status);
202
    iic_write( 1, 8'h5A, bit_status );                                  if ( bit_status != 0 ) $display("--EEPROM: WR1 iic_write 2, WRONG ACK = %h", bit_status);
203
    #5_000_000
204
    $display("---- writing done A=12'h001, D=8'h5A\n");
205
 
206
    $display("---- reading      A=12'h001");
207
    iic_ctlop( `EEPROM_CODE, `EEPROM_BLK0, `EEPROM_WROP, bit_status );  if ( bit_status != 0 ) $display("--EEPROM: RD1 iic_ctlop 1, WRONG ACK = %h", bit_status);
208
    iic_write( 0, 8'h01, bit_status );                                  if ( bit_status != 0 ) $display("--EEPROM: RD1 iic_write 1, WRONG ACK = %h", bit_status);
209
    iic_ctlop( `EEPROM_CODE, `EEPROM_BLK0, `EEPROM_RDOP, bit_status );  if ( bit_status != 0 ) $display("--EEPROM: RD1 iic_ctlop 2, WRONG ACK = %h", bit_status);
210
    iic__read( 1, g_logic_8 );
211
    $display("---- reading done A=12'h001 contains %0h", g_logic_8);
212
 
213
    $display("--EEPROM test end--<\n");

powered by: WebSVN 2.1.0

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