File tree Expand file tree Collapse file tree 3 files changed +76
-10
lines changed Expand file tree Collapse file tree 3 files changed +76
-10
lines changed Original file line number Diff line number Diff line change
1
+ // --------------------------------------------------------------------------------
2
+ // Counter project, 201512
3
+ // Main_TB.v
4
+ // Konstantin Pavlov, pavlovconst@gmail.com
5
+ // --------------------------------------------------------------------------------
6
+
7
+ // INFO --------------------------------------------------------------------------------
8
+ // Testbench template with basic clocking, periodic reset
9
+ // and random stimulus signals
10
+
11
+ `timescale 1ns / 1ps
12
+
13
+ module Main_TB ();
14
+
15
+ reg TB_clk200;
16
+ initial begin
17
+ #0 TB_clk200 = 0 ;
18
+ forever
19
+ #5 TB_clk200 = ~ TB_clk200;
20
+ end
21
+
22
+ reg TB_rst;
23
+ initial begin
24
+ #40 TB_rst = 1 ;
25
+ #10 TB_rst = 0 ;
26
+ // #10000;
27
+ forever begin
28
+ #9950 TB_rst = ~ TB_rst;
29
+ #50 TB_rst = ~ TB_rst;
30
+ end
31
+ end
32
+
33
+ wire [31 :0 ] TB_DerivedClocks;
34
+ ClkDivider CD1 (
35
+ .clk(TB_clk200),
36
+ .nrst(1'b1 ),
37
+ .out(TB_DerivedClocks[31 :0 ]));
38
+ defparam CD1.WIDTH = 32 ;
39
+
40
+
41
+
42
+ wire [15 :0 ] TB_RandomNumber1;
43
+ reg TB_rst1;
44
+ initial begin
45
+ #40 TB_rst1 = 1 ;
46
+ #10 TB_rst1 = 0 ;
47
+ end
48
+
49
+ c_rand RNG1 (
50
+ .clk(TB_clk200),
51
+ .rst(TB_rst1),
52
+ .reseed(1'b0 ),
53
+ .seed_val(TB_DerivedClocks[15 :0 ]),
54
+ .out(TB_RandomNumber1[15 :0 ]));
55
+
56
+ wire out1,out2;
57
+ Main M ( // module under test
58
+ TB_clk,~TB_clk,
59
+ TB_rst,
60
+ out1,out2 // for compiler not to remove logic
61
+ );
62
+
63
+ endmodule
64
+
Original file line number Diff line number Diff line change 3
3
####(licensed under CC BY-SA 4_0)
4
4
5
5
6
- ** /Advanced Synthesis Cookbook/** useful code from Altera`s cookbook
7
-
8
- ** ClkDivider.v** - wide reference clock divider
9
- ** DeBounce.v** - two-cycle debounce for input buttons
10
- ** EdgeDetect.v** - edge detector, gives one-tick pulses on every signal edge
11
- ** ResetSet.v** - SR trigger variant w/o metastable state, set dominates here
12
- ** SetReset.v** - SR trigger variant w/o metastable state, reset dominates here
13
- ** Synch.v** - input syncnronizer, standard way to get rid of metastability issues
6
+ ** /Advanced Synthesis Cookbook/** useful code from Altera`s cookbook
7
+
8
+ * Main_TB.v** - basic testbench template
9
+
10
+ ** ClkDivider.v** - wide reference clock divider
11
+ ** DeBounce.v** - two-cycle debounce for input buttons
12
+ ** EdgeDetect.v** - edge detector, gives one-tick pulses on every signal edge
13
+ ** ResetSet.v** - SR trigger variant w/o metastable state, set dominates here
14
+ ** SetReset.v** - SR trigger variant w/o metastable state, reset dominates here
15
+ ** Synch.v** - input syncnronizer, standard way to get rid of metastability issues
14
16
15
17
Original file line number Diff line number Diff line change 4
4
// --------------------------------------------------------------------------------
5
5
6
6
// INFO --------------------------------------------------------------------------------
7
- //
8
- //
7
+ // Ñèíõðîíèçàòîð äëÿ âõîäíûõ ñèãíàëîâ.
8
+ // Ñòàíäàðòíûé ìåòîä ïîäàâëåíèÿ ìåòàñòàáèëüíîñòè.
9
9
10
10
(* keep_hierarchy = "yes" * ) module Synch (clk, in, out);
11
11
You can’t perform that action at this time.
0 commit comments