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

Subversion Repositories scarts

[/] [scarts/] [trunk/] [processor/] [VHDL/] [ext_modules/] [ext_key_matrix/] [key_matrix/] [sim/] [key_matrix_tb.vhd] - Blame information for rev 3

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 3 jlechner
-----------------------------------------------------------------------
2
-- This file is part of SCARTS.
3
-- 
4
-- SCARTS is free software: you can redistribute it and/or modify
5
-- it under the terms of the GNU General Public License as published by
6
-- the Free Software Foundation, either version 3 of the License, or
7
-- (at your option) any later version.
8
-- 
9
-- SCARTS is distributed in the hope that it will be useful,
10
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
11
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
-- GNU General Public License for more details.
13
-- 
14
-- You should have received a copy of the GNU General Public License
15
-- along with SCARTS.  If not, see <http://www.gnu.org/licenses/>.
16
-----------------------------------------------------------------------
17
 
18
 
19
library ieee;
20
use ieee.std_logic_1164.all;
21
use work.key_matrix_pkg.all;
22
use work.testbench_util_pkg.all;
23
 
24
entity key_matrix_tb is
25
end entity key_matrix_tb;
26
 
27
architecture sim of key_matrix_tb is
28
  constant CLK_FREQ : integer := 25000000;
29
  signal sys_clk, sys_res_n : std_logic;
30
  signal columns : std_logic_vector(2 downto 0);
31
  signal rows : std_logic_vector(3 downto 0);
32
  signal key : std_logic_vector(3 downto 0);
33
  signal stop : boolean := false;
34
begin
35
  uut : key_matrix
36
    generic map
37
    (
38
      CLK_FREQ => CLK_FREQ / 1000,
39
      SCAN_TIME_INTERVAL => 100 ms,
40
      DEBOUNCE_TIMEOUT => 1 ms,
41
      SYNC_STAGES => 2,
42
      COLUMN_COUNT => 3,
43
      ROW_COUNT => 4
44
    )
45
    port map
46
    (
47
      sys_clk => sys_clk,
48
      sys_res_n => sys_res_n,
49
      columns => columns,
50
      rows => rows,
51
      key => key
52
    );
53
 
54
  process
55
  begin
56
    sys_clk <= '0';
57
    wait for 1 sec/CLK_FREQ;
58
    sys_clk <= '1';
59
    if stop = true then
60
      wait;
61
    end if;
62
    wait for 1 sec/CLK_FREQ;
63
  end process;
64
 
65
  process
66
  begin
67
    sys_res_n <= '0';
68
    rows <= (others => '0');
69
    wait_cycle(sys_clk, 100);
70
    sys_res_n <= '1';
71
    wait_cycle(sys_clk, 10010);
72
    rows(0) <= '1';
73
    wait_cycle(sys_clk, 5);
74
    rows(0) <= '0';
75
    wait_cycle(sys_clk, 5);
76
    rows(0) <= '1';
77
    wait_cycle(sys_clk, 5);
78
    rows(0) <= '0';
79
    wait_cycle(sys_clk, 5);
80
    rows(0) <= '1';
81
    wait_cycle(sys_clk, 100);
82
    rows(0) <= '0';
83
    wait_cycle(sys_clk, 5);
84
    rows(0) <= '1';
85
    wait_cycle(sys_clk, 5);
86
    rows(0) <= '0';
87
    wait_cycle(sys_clk, 5);
88
    rows(0) <= '1';
89
    wait_cycle(sys_clk, 5);
90
    rows(0) <= '0';
91
 
92
    wait_cycle(sys_clk, 100);
93
    rows(1) <= '1';
94
    wait_cycle(sys_clk, 5);
95
    rows(1) <= '0';
96
    wait_cycle(sys_clk, 5);
97
    rows(1) <= '1';
98
    wait_cycle(sys_clk, 5);
99
    rows(1) <= '0';
100
    wait_cycle(sys_clk, 5);
101
    rows(1) <= '1';
102
    wait_cycle(sys_clk, 100);
103
    rows(1) <= '0';
104
    wait_cycle(sys_clk, 5);
105
    rows(1) <= '1';
106
    wait_cycle(sys_clk, 5);
107
    rows(1) <= '0';
108
    wait_cycle(sys_clk, 5);
109
    rows(1) <= '1';
110
    wait_cycle(sys_clk, 5);
111
    rows(1) <= '0';
112
 
113
    wait_cycle(sys_clk, 100);
114
    rows(2) <= '1';
115
    wait_cycle(sys_clk, 5);
116
    rows(2) <= '0';
117
    wait_cycle(sys_clk, 5);
118
    rows(2) <= '1';
119
    wait_cycle(sys_clk, 5);
120
    rows(2) <= '0';
121
    wait_cycle(sys_clk, 5);
122
    rows(2) <= '1';
123
    wait_cycle(sys_clk, 100);
124
    rows(2) <= '0';
125
    wait_cycle(sys_clk, 5);
126
    rows(2) <= '1';
127
    wait_cycle(sys_clk, 5);
128
    rows(2) <= '0';
129
    wait_cycle(sys_clk, 5);
130
    rows(2) <= '1';
131
    wait_cycle(sys_clk, 5);
132
    rows(2) <= '0';
133
 
134
    wait_cycle(sys_clk, 100);
135
    rows(3) <= '1';
136
    wait_cycle(sys_clk, 5);
137
    rows(3) <= '0';
138
    wait_cycle(sys_clk, 5);
139
    rows(3) <= '1';
140
    wait_cycle(sys_clk, 5);
141
    rows(3) <= '0';
142
    wait_cycle(sys_clk, 5);
143
    rows(3) <= '1';
144
    wait_cycle(sys_clk, 100);
145
    rows(3) <= '0';
146
    wait_cycle(sys_clk, 5);
147
    rows(3) <= '1';
148
    wait_cycle(sys_clk, 5);
149
    rows(3) <= '0';
150
    wait_cycle(sys_clk, 5);
151
    rows(3) <= '1';
152
    wait_cycle(sys_clk, 5);
153
    rows(3) <= '0';
154
 
155
    wait_cycle(sys_clk, 1550);
156
 
157
    rows(0) <= '1';
158
    wait_cycle(sys_clk, 5);
159
    rows(0) <= '0';
160
    wait_cycle(sys_clk, 5);
161
    rows(0) <= '1';
162
    wait_cycle(sys_clk, 5);
163
    rows(0) <= '0';
164
    wait_cycle(sys_clk, 5);
165
    rows(0) <= '1';
166
    wait_cycle(sys_clk, 75);
167
    rows(0) <= '0';
168
 
169
    wait_cycle(sys_clk, 10000);
170
 
171
    stop <= true;
172
    wait;
173
  end process;
174
end architecture sim;

powered by: WebSVN 2.1.0

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