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

Subversion Repositories xmatchpro

[/] [xmatchpro/] [trunk/] [xmw4-comdec/] [xmatch_sim7/] [src/] [sync_ram_register.vhd] - Blame information for rev 9

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 9 eejlny
--This library is free software; you can redistribute it and/or
2
--modify it under the terms of the GNU Lesser General Public
3
--License as published by the Free Software Foundation; either
4
--version 2.1 of the License, or (at your option) any later version.
5
 
6
--This library is distributed in the hope that it will be useful,
7
--but WITHOUT ANY WARRANTY; without even the implied warranty of
8
--MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
9
--Lesser General Public License for more details.
10
 
11
--You should have received a copy of the GNU Lesser General Public
12
--License along with this library; if not, write to the Free Software
13
--Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
14
 
15
-- e_mail : j.l.nunez-yanez@byacom.co.uk
16
 
17
---------------------------------
18
--  ENTITY       = OUT_REGISTER--
19
--  version      = 1.0         --
20
--  last update  = 21/08/00    --
21
--  author       = Jose Nunez  --
22
---------------------------------
23
 
24
 
25
-- FUNCTION
26
-- out register
27
 
28
 
29
--  PIN LIST
30
--  DIN   = 32 bit input data
31
 
32
--  U_DATA_VALID_IN = the data is valid in the bus in 
33
--  CLEAR = asynchronous clear of register
34
--  CLK   = clock
35
--  DOUT  = 32 bit output of flip-flops
36
 
37
--  U_DATA_VALID_OUT = the data is valid in the bus out
38
 
39
 
40
library ieee,dzx;
41
use ieee.std_logic_1164.all;
42
use dzx.attributes.all;
43
 
44
 
45
entity SYNC_RAM_REGISTER is
46
port (
47
                  WRITE_ADDRESS_IN : in bit_vector(3 downto 0);
48
                  MATCH_TYPE_IN : in bit_vector(3 downto 0);
49
                  LITERAL_DATA_IN : in bit_vector(31 downto 0);
50
                  LITERAL_MASK_IN : in bit_vector(4 downto 0);
51
                  U_DATA_VALID_IN : in bit;
52
                        ENABLE : in bit;
53
              CLEAR : in bit;
54
                  RESET : in bit;
55
                  CLK : in bit;
56
                  WRITE_ADDRESS_OUT : out bit_vector(3 downto 0);
57
                  MATCH_TYPE_OUT : out bit_vector(3 downto 0);
58
                  LITERAL_DATA_OUT : out bit_vector(31 downto 0);
59
                  LITERAL_MASK_OUT : out bit_vector(4 downto 0);
60
                  U_DATA_VALID_OUT : out bit);
61
 
62
end SYNC_RAM_REGISTER;
63
 
64
 
65
 
66
architecture LATCH of SYNC_RAM_REGISTER is
67
 
68
signal WRITE_ADDRESS_OUT_AUX : bit_vector(3 downto 0);
69
signal MATCH_TYPE_OUT_AUX : bit_vector(3 downto 0);
70
signal LITERAL_DATA_OUT_AUX : bit_vector(31 downto 0);
71
signal LITERAL_MASK_OUT_AUX : bit_vector(4 downto 0);
72
signal U_DATA_VALID_OUT_AUX : bit;
73
 
74
 
75
begin
76
 
77
FLIP_FLOPS : process (CLK,CLEAR)
78
begin
79
        -- asynchronous RESET signal forces all outputs LOW
80
      if (CLEAR = '0') then
81
                  WRITE_ADDRESS_OUT_AUX <="0000";
82
                  MATCH_TYPE_OUT_AUX <="1111";
83
                  LITERAL_DATA_OUT_AUX <=x"11111111";
84
                  LITERAL_MASK_OUT_AUX <="11111";
85
                  U_DATA_VALID_OUT_AUX <='1';
86
            -- check for +ve clock edge
87
          elsif ((CLK'event) and (CLK = '1')) then
88
            -- check for synchronous clear signal
89
                         if (RESET = '0') then
90
                                  WRITE_ADDRESS_OUT_AUX <="0000";
91
                                  MATCH_TYPE_OUT_AUX <="1111";
92
                          LITERAL_DATA_OUT_AUX <=x"11111111";
93
                            LITERAL_MASK_OUT_AUX <="11111";
94
                          U_DATA_VALID_OUT_AUX <='1';
95
                          elsif ENABLE = '0' then
96
                           WRITE_ADDRESS_OUT_AUX <= WRITE_ADDRESS_IN;
97
                          MATCH_TYPE_OUT_AUX <=MATCH_TYPE_IN;
98
                          LITERAL_DATA_OUT_AUX <=LITERAL_DATA_IN;
99
                              LITERAL_MASK_OUT_AUX <=LITERAL_MASK_IN;
100
                          U_DATA_VALID_OUT_AUX <=U_DATA_VALID_IN;
101
         else
102
                           WRITE_ADDRESS_OUT_AUX <= WRITE_ADDRESS_OUT_AUX;
103
                          MATCH_TYPE_OUT_AUX <=  MATCH_TYPE_OUT_AUX;
104
                          LITERAL_DATA_OUT_AUX <=   LITERAL_DATA_OUT_AUX;
105
                              LITERAL_MASK_OUT_AUX <= LITERAL_MASK_OUT_AUX;
106
                          U_DATA_VALID_OUT_AUX <= U_DATA_VALID_IN; -- the data valid carries on 
107
                        end if;
108
           end if;
109
 
110
end process FLIP_FLOPS;
111
 
112
 
113
WRITE_ADDRESS_OUT <= WRITE_ADDRESS_OUT_AUX;
114
MATCH_TYPE_OUT <=  MATCH_TYPE_OUT_AUX;
115
LITERAL_DATA_OUT <=   LITERAL_DATA_OUT_AUX;
116
LITERAL_MASK_OUT <= LITERAL_MASK_OUT_AUX;
117
U_DATA_VALID_OUT <= U_DATA_VALID_OUT_AUX; -- the data valid carries on 
118
 
119
 
120
end LATCH;
121
 

powered by: WebSVN 2.1.0

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