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

Subversion Repositories w11

[/] [w11/] [tags/] [w11a_V0.6/] [rtl/] [vlib/] [genlib/] [genlib.vhd] - Blame information for rev 24

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 17 wfjm
-- $Id: genlib.vhd 466 2012-12-30 13:26:55Z mueller $
2 2 wfjm
--
3 17 wfjm
-- Copyright 2007-2012 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
4 2 wfjm
--
5
-- This program is free software; you may redistribute and/or modify it under
6
-- the terms of the GNU General Public License as published by the Free
7
-- Software Foundation, either version 2, or at your option any later version.
8
--
9
-- This program is distributed in the hope that it will be useful, but
10
-- WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
11
-- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12
-- for complete details.
13
--
14
------------------------------------------------------------------------------
15
-- Package Name:   genlib
16
-- Description:    some general purpose components
17
--
18
-- Dependencies:   -
19 17 wfjm
-- Tool versions:  xst 8.1, 8.2, 9.1, 9.2, 11.4, 13.3; ghdl 0.18-0.29
20 2 wfjm
-- Revision History: 
21
-- Date         Rev Version  Comment
22 17 wfjm
-- 2012-12-29   466   1.0.9  add led_pulse_stretch
23 13 wfjm
-- 2011-11-09   421   1.0.8  add cdc_pulse
24 2 wfjm
-- 2010-04-17   277   1.0.7  timer: no default for START,DONE,BUSY; drop STOP
25
-- 2010-04-02   273   1.0.6  add timer
26
-- 2008-01-20   112   1.0.5  rename clkgen->clkdivce
27
-- 2007-12-26   106   1.0.4  added gray_cnt_(4|5|n|gen) and gray2bin_gen
28
-- 2007-12-25   105   1.0.3  RESET:='0' defaults
29
-- 2007-06-17    58   1.0.2  added debounce_gen
30
-- 2007-06-16    57   1.0.1  added cnt_array_dram, cnt_array_regs
31
-- 2007-06-03    45   1.0    Initial version 
32
------------------------------------------------------------------------------
33
 
34
library ieee;
35
use ieee.std_logic_1164.all;
36
 
37
use work.slvtypes.all;
38
 
39
package genlib is
40
 
41
component clkdivce is                   -- generate usec/msec ce pulses
42
  generic (
43
    CDUWIDTH : positive := 6;           -- usec clock divider width
44
    USECDIV : positive :=  50;          -- divider ratio for usec pulse
45
    MSECDIV : positive := 1000);        -- divider ratio for msec pulse
46
  port (
47
    CLK     : in slbit;                 -- input clock
48
    CE_USEC : out slbit;                -- usec pulse
49
    CE_MSEC : out slbit                 -- msec pulse
50
  );
51
end component;
52
 
53
component cnt_array_dram is             -- counter array, dram based
54
  generic (
55
    AWIDTH : positive := 4;             -- address width
56
    DWIDTH : positive := 16);           -- data width
57
  port (
58
    CLK : in slbit;                     -- clock
59
    RESET : in slbit := '0';            -- clear counters
60
    CE : in slv(2**AWIDTH-1 downto 0);  -- count enables
61
    ADDR : out slv(AWIDTH-1 downto 0);  -- counter address
62
    DATA : out slv(DWIDTH-1 downto 0);  -- counter data
63
    ACT : out slbit                     -- active (not reseting)
64
  );
65
end component;
66
 
67
component cnt_array_regs is             -- counter array, register based
68
  generic (
69
    AWIDTH : positive := 4;             -- address width
70
    DWIDTH : positive := 16);           -- data width
71
  port (
72
    CLK : in slbit;                     -- clock
73
    RESET : in slbit := '0';            -- clear counters
74
    CE : in slv(2**AWIDTH-1 downto 0);  -- count enables
75
    ADDR : in slv(AWIDTH-1 downto 0);   -- address
76
    DATA : out slv(DWIDTH-1 downto 0)   -- counter data
77
  );
78
end component;
79
 
80
component debounce_gen is               -- debounce, generic vector
81
  generic (
82
    CWIDTH : positive := 2;             -- clock interval counter width
83
    CEDIV : positive := 3;              -- clock interval divider
84
    DWIDTH : positive := 8);            -- data width
85
  port (
86
    CLK : in slbit;                     -- clock
87
    RESET : in slbit := '0';            -- reset
88
    CE_INT : in slbit;                  -- clock interval enable (usec or msec)
89
    DI : in slv(DWIDTH-1 downto 0);     -- data in
90
    DO : out slv(DWIDTH-1 downto 0)     -- data out
91
  );
92
end component;
93
 
94
component gray_cnt_gen is               -- gray code counter, generic vector
95
  generic (
96
    DWIDTH : positive := 4);            -- data width
97
  port (
98
    CLK : in slbit;                     -- clock
99
    RESET : in slbit := '0';            -- reset
100
    CE : in slbit := '1';               -- count enable
101
    DATA : out slv(DWIDTH-1 downto 0)   -- data out
102
  );
103
end component;
104
 
105
component gray_cnt_4 is                 -- 4 bit gray code counter (ROM based)
106
  port (
107
    CLK : in slbit;                     -- clock
108
    RESET : in slbit := '0';            -- reset
109
    CE : in slbit := '1';               -- count enable
110
    DATA : out slv4                     -- data out
111
  );
112
end component;
113
 
114
component gray_cnt_5 is                 -- 5 bit gray code counter (ROM based)
115
  port (
116
    CLK : in slbit;                     -- clock
117
    RESET : in slbit := '0';            -- reset
118
    CE : in slbit := '1';               -- count enable
119
    DATA : out slv5                     -- data out
120
  );
121
end component;
122
 
123
component gray_cnt_n is                 -- n bit gray code counter
124
  generic (
125
    DWIDTH : positive := 8);            -- data width
126
  port (
127
    CLK : in slbit;                     -- clock
128
    RESET : in slbit := '0';            -- reset
129
    CE : in slbit := '1';               -- count enable
130
    DATA : out slv(DWIDTH-1 downto 0)   -- data out
131
  );
132
end component;
133
 
134
component gray2bin_gen is               -- gray->bin converter, generic vector
135
  generic (
136
    DWIDTH : positive := 4);            -- data width
137
  port (
138
    DI : in slv(DWIDTH-1 downto 0);     -- gray code input
139
    DO : out slv(DWIDTH-1 downto 0)     -- binary code output
140
  );
141
end component;
142
 
143
component timer is                      -- retriggerable timer
144
  generic (
145
    TWIDTH : positive := 4;             -- timer counter width
146
    RETRIG : boolean := true);          -- re-triggerable true/false
147
  port (
148
    CLK : in slbit;                     -- clock
149
    CE : in slbit := '1';               -- clock enable
150
    DELAY : in slv(TWIDTH-1 downto 0) := (others=>'1');  -- timer delay
151
    START : in slbit;                   -- start timer
152
    STOP : in slbit := '0';             -- stop timer
153
    DONE : out slbit;                   -- mark last delay cycle
154
    BUSY : out slbit                    -- timer running
155
  );
156
end component;
157
 
158 13 wfjm
component cdc_pulse is                  -- clock domain cross for pulse
159
  generic (
160
    POUT_SINGLE : boolean := false;     -- if true: single cycle pout
161
    BUSY_WACK : boolean := false);      -- if true: busy waits for ack
162
  port (
163
    CLKM : in slbit;                    -- clock master
164
    RESET : in slbit := '0';            -- M|reset
165
    CLKS : in slbit;                    -- clock slave
166
    PIN : in slbit;                     -- M|pulse in
167
    BUSY : out slbit;                   -- M|busy
168
    POUT : out slbit                    -- S|pulse out
169
  );
170
end component;
171
 
172 17 wfjm
component led_pulse_stretch is          -- pulse stretcher for leds
173
  port (
174
    CLK : in slbit;                     -- clock
175
    CE_INT : in slbit;                  -- pulse time unit clock enable
176
    RESET : in slbit := '0';            -- reset
177
    DIN : in slbit;                     -- data in
178
    POUT : out slbit                    -- pulse out
179
  );
180
end component;
181
 
182 12 wfjm
end package genlib;

powered by: WebSVN 2.1.0

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