//----------------------------------------------------------------------------- // Copyright (C) 2014 iZsh // // This code is licensed to you under the terms of the GNU GPL, version 2 or, // at your option, any later version. See the LICENSE.txt file for the text of // the license. //----------------------------------------------------------------------------- // testbench for min_max_tracker `include "min_max_tracker.v" `define FIN "tb_tmp/data.filtered.gold" `define FOUT_MIN "tb_tmp/data.min" `define FOUT_MAX "tb_tmp/data.max" module min_max_tracker_tb; integer fin; integer fout_min, fout_max; integer r; reg clk; reg [7:0] adc_d; wire [7:0] min; wire [7:0] max; initial begin clk = 0; fin = $fopen(`FIN, "r"); if (!fin) begin $display("ERROR: can't open the data file"); $finish; end fout_min = $fopen(`FOUT_MIN, "w+"); fout_max = $fopen(`FOUT_MAX, "w+"); if (!$feof(fin)) adc_d = $fgetc(fin); // read the first value end always # 1 clk = !clk; // input initial begin while (!$feof(fin)) begin @(negedge clk) adc_d <= $fgetc(fin); end if ($feof(fin)) begin # 3 $fclose(fin); $fclose(fout_min); $fclose(fout_max); $finish; end end initial begin // $monitor("%d\t min: %x, max: %x", $time, min, max); end // output always @(negedge clk) if ($time > 2) begin r = $fputc(min, fout_min); r = $fputc(max, fout_max); end // module to test min_max_tracker tracker(clk, adc_d, 8'd127, min, max); endmodule