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

Subversion Repositories gng

[/] [gng/] [trunk/] [tb/] [tb_gng.sv] - Blame information for rev 3

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 guangxi.li
//------------------------------------------------------------------------------
2
//
3
// tb_gng.sv
4
//
5
// This file is part of the Gaussian Noise Generator IP Core
6
//
7
// Description
8
//     Systemverilog testbench for module gng. Generate noise sequences of
9
// length N and output to file.
10
//
11
//------------------------------------------------------------------------------
12
//
13
// Copyright (C) 2014, Guangxi Liu 
14
//
15
// This source file may be used and distributed without restriction provided
16
// that this copyright statement is not removed from the file and that any
17
// derivative work contains the original copyright notice and the associated
18
// disclaimer.
19
//
20
// This source file is free software; you can redistribute it and/or modify it
21
// under the terms of the GNU Lesser General Public License as published by
22
// the Free Software Foundation; either version 2.1 of the License,
23
// or (at your option) any later version.
24
//
25
// This source is distributed in the hope that it will be useful, but
26
// WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
27
// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
28
// License for more details.
29
//
30
// You should have received a copy of the GNU Lesser General Public License
31
// along with this source; if not, download it from
32
// http://www.opencores.org/lgpl.shtml
33
//
34
//------------------------------------------------------------------------------
35
 
36
 
37
`timescale 1 ns / 1 ps
38
 
39
 
40
module tb_gng;
41
 
42
// Parameters
43
parameter ClkPeriod = 10.0;
44 3 guangxi.li
parameter N = 1000000;
45 2 guangxi.li
 
46
 
47
// Local variables
48
logic clk;
49
logic rstn;
50
logic ce;
51
logic valid_out;
52
logic [15:0] data_out;
53
 
54
 
55
// Instances
56
gng #(
57
   .INIT_Z1(64'd5030521883283424767),
58
   .INIT_Z2(64'd18445829279364155008),
59
   .INIT_Z3(64'd18436106298727503359)
60
)
61
u_gng (.*);
62
 
63
 
64
// System signals
65
initial begin
66
    clk <= 1'b0;
67
    forever #(ClkPeriod/2) clk = ~clk;
68
end
69
 
70
initial begin
71
    rstn <= 1'b0;
72
    #(ClkPeriod*2) rstn = 1'b1;
73
end
74
 
75
 
76
// Main process
77
int fpOut;
78
 
79
initial begin
80
    fpOut = $fopen("gng_data_out.txt", "w");
81
 
82
    ce = 0;
83
 
84
    #(ClkPeriod*10)
85
    repeat (N) begin
86
        @(posedge clk);
87
        ce = 1;
88
    end
89
    @(posedge clk);
90
    ce = 0;
91
 
92
    #(ClkPeriod*20)
93
    $fclose(fpOut);
94
    $stop;
95
end
96
 
97
 
98
// Record data
99
always_ff @ (negedge clk) begin
100
    if (valid_out)
101
        $fwrite(fpOut, "%0d\n", $signed(data_out));
102
end
103
 
104
 
105
endmodule

powered by: WebSVN 2.1.0

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