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

Subversion Repositories dirac

[/] [dirac/] [trunk/] [src/] [decoder/] [STORAGE_REGISTER.vhd] - Blame information for rev 5

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

Line No. Rev Author Line
1 2 petebleack
-- ***** BEGIN LICENSE BLOCK *****
2
-- 
3 5 petebleack
-- $Id: STORAGE_REGISTER.vhd,v 1.2 2005-05-27 16:00:29 petebleackley Exp $ $Name: not supported by cvs2svn $
4 2 petebleack
-- *
5
-- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
6
-- *
7
-- * The contents of this file are subject to the Mozilla Public License
8
-- * Version 1.1 (the "License"); you may not use this file except in compliance
9
-- * with the License. You may obtain a copy of the License at
10
-- * http://www.mozilla.org/MPL/
11
-- *
12
-- * Software distributed under the License is distributed on an "AS IS" basis,
13
-- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
14
-- * the specific language governing rights and limitations under the License.
15
-- *
16
-- * The Original Code is BBC Research and Development code.
17
-- *
18
-- * The Initial Developer of the Original Code is the British Broadcasting
19
-- * Corporation.
20
-- * Portions created by the Initial Developer are Copyright (C) 2004.
21
-- * All Rights Reserved.
22
-- *
23
-- * Contributor(s): Peter Bleackley (Original author)
24
-- *
25
-- * Alternatively, the contents of this file may be used under the terms of
26
-- * the GNU General Public License Version 2 (the "GPL"), or the GNU Lesser
27
-- * Public License Version 2.1 (the "LGPL"), in which case the provisions of
28
-- * the GPL or the LGPL are applicable instead of those above. If you wish to
29
-- * allow use of your version of this file only under the terms of the either
30
-- * the GPL or LGPL and not to allow others to use your version of this file
31
-- * under the MPL, indicate your decision by deleting the provisions above
32
-- * and replace them with the notice and other provisions required by the GPL
33
-- * or LGPL. If you do not delete the provisions above, a recipient may use
34
-- * your version of this file under the terms of any one of the MPL, the GPL
35
-- * or the LGPL.
36
-- * ***** END LICENSE BLOCK ***** */
37
 
38
 
39
library IEEE;
40
use IEEE.STD_LOGIC_1164.ALL;
41
use IEEE.STD_LOGIC_ARITH.ALL;
42
use IEEE.STD_LOGIC_UNSIGNED.ALL;
43
 
44
--  Uncomment the following lines to use the declarations that are
45
--  provided for instantiating Xilinx primitive components.
46
--library UNISIM;
47
--use UNISIM.VComponents.all;
48
 
49 5 petebleack
  entity STORAGE_REGISTER is
50 2 petebleack
    Port ( LOAD : in std_logic_vector(15 downto 0);
51
                          SHIFT_IN : in std_logic;
52
           SET_VALUE : in std_logic;
53
           SHIFT_ALL : in std_logic;
54
           SHIFT_MOST : in std_logic;
55
                          RESET : in std_logic;
56
           CLOCK : in std_logic;
57
           OUTPUT : out std_logic_vector(15 downto 0));
58
end entity STORAGE_REGISTER;
59
 
60
architecture RTL of STORAGE_REGISTER is
61 5 petebleack
 
62 2 petebleack
        signal SHIFT_LSBS: std_logic;
63
        signal SET_RESET: std_logic;
64
        signal ENABLE_MSB: std_logic;
65
        signal ENABLE_LSBS: std_logic;
66 5 petebleack
        signal D:       std_logic_vector(15 downto 0);
67
        signal Q:       std_logic_vector(15 downto 0);
68 2 petebleack
begin
69
 
70
-- control logic
71
        SET_RESET <= SET_VALUE or RESET;
72
        ENABLE_MSB <= SET_RESET or SHIFT_ALL;
73
        SHIFT_LSBS <= SHIFT_ALL or SHIFT_MOST;
74
        ENABLE_LSBS <= SET_RESET or SHIFT_LSBS;
75
 
76
-- outputs
77
 
78 5 petebleack
        OUTPUT <= Q;
79 2 petebleack
 
80 5 petebleack
 
81 2 petebleack
-- initialisation
82
 
83
INIT:   process(RESET,LOAD)
84
begin
85
        if RESET = '1' then
86 5 petebleack
                D <= "0000000000000000";
87 2 petebleack
        else
88 5 petebleack
                D <= LOAD;
89 2 petebleack
        end if;
90
end process INIT;
91
 
92
-- storage
93
 
94 5 petebleack
        STORE: process (CLOCK)
95
        begin
96
                if CLOCK'event and CLOCK = '1' then
97
                        if      ENABLE_LSBS = '1' then
98
                                if      SHIFT_LSBS = '1' then
99
                                        Q(14 downto 0) <= Q(13 downto 0) & SHIFT_IN;
100
                                else
101
                                        Q(14 downto 0) <= D(14 downto 0);
102
                                end if;
103
                        end if;
104
                        if ENABLE_MSB = '1' then
105
                                if SHIFT_ALL = '1' then
106
                                        Q(15) <= Q(14);
107
                                else
108
                                        Q(15) <= D(15);
109
                                end if;
110
                        end if;
111
                end if;
112
        end process STORE;
113 2 petebleack
 
114
 
115
end architecture RTL;
116
 

powered by: WebSVN 2.1.0

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