]>
Commit | Line | Data |
---|---|---|
3b2fee43 | 1 | //----------------------------------------------------------------------------- |
2 | // Copyright (C) 2014 iZsh <izsh at fail0verflow.com> | |
3 | // | |
4 | // This code is licensed to you under the terms of the GNU GPL, version 2 or, | |
5 | // at your option, any later version. See the LICENSE.txt file for the text of | |
6 | // the license. | |
7 | //----------------------------------------------------------------------------- | |
8 | // testbench for min_max_tracker | |
9 | `include "min_max_tracker.v" | |
10 | ||
11 | `define FIN "tb_tmp/data.filtered.gold" | |
12 | `define FOUT_MIN "tb_tmp/data.min" | |
13 | `define FOUT_MAX "tb_tmp/data.max" | |
14 | ||
15 | module min_max_tracker_tb; | |
16 | ||
17 | integer fin; | |
18 | integer fout_min, fout_max; | |
19 | integer r; | |
20 | ||
21 | reg clk; | |
22 | reg [7:0] adc_d; | |
23 | wire [7:0] min; | |
24 | wire [7:0] max; | |
25 | ||
26 | initial | |
27 | begin | |
28 | clk = 0; | |
29 | fin = $fopen(`FIN, "r"); | |
30 | if (!fin) begin | |
31 | $display("ERROR: can't open the data file"); | |
32 | $finish; | |
33 | end | |
34 | fout_min = $fopen(`FOUT_MIN, "w+"); | |
35 | fout_max = $fopen(`FOUT_MAX, "w+"); | |
36 | if (!$feof(fin)) | |
37 | adc_d = $fgetc(fin); // read the first value | |
38 | end | |
39 | ||
40 | always | |
41 | # 1 clk = !clk; | |
42 | ||
43 | // input | |
44 | initial | |
45 | begin | |
46 | while (!$feof(fin)) begin | |
47 | @(negedge clk) adc_d <= $fgetc(fin); | |
48 | end | |
49 | ||
50 | if ($feof(fin)) | |
51 | begin | |
52 | # 3 $fclose(fin); | |
53 | $fclose(fout_min); | |
54 | $fclose(fout_max); | |
55 | $finish; | |
56 | end | |
57 | end | |
58 | ||
59 | initial | |
60 | begin | |
61 | // $monitor("%d\t min: %x, max: %x", $time, min, max); | |
62 | end | |
63 | ||
64 | // output | |
65 | always @(negedge clk) | |
66 | if ($time > 2) begin | |
67 | r = $fputc(min, fout_min); | |
68 | r = $fputc(max, fout_max); | |
69 | end | |
70 | ||
71 | // module to test | |
72 | min_max_tracker tracker(clk, adc_d, 8'd127, min, max); | |
73 | ||
74 | endmodule |