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

Subversion Repositories dirac

[/] [dirac/] [trunk/] [src/] [encoder/] [LIMIT_REGISTER.vhd] - Blame information for rev 12

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 petebleack
-- ***** BEGIN LICENSE BLOCK *****
2
-- 
3 5 petebleack
-- $Id: LIMIT_REGISTER.vhd,v 1.2 2005-05-27 16:00:30 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 LIMIT_REGISTER is
50 2 petebleack
        generic(CONST : std_logic := '1');
51
    Port ( LOAD : in std_logic_vector(15 downto 0);
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 LIMIT_REGISTER;
59
 
60
architecture RTL of LIMIT_REGISTER is
61
        signal SHIFT_LSBS: std_logic;
62
        signal SET_RESET: std_logic;
63
        signal ENABLE_MSB: std_logic;
64
        signal ENABLE_LSBS: std_logic;
65 5 petebleack
        signal D :      std_logic_vector (15 downto 0);
66
        signal Q :      std_logic_vector (15 downto 0);
67 2 petebleack
begin
68
 
69
-- control logic
70
        SET_RESET <= SET_VALUE or RESET;
71
        ENABLE_MSB <= SET_RESET or SHIFT_ALL;
72
        SHIFT_LSBS <= SHIFT_ALL or SHIFT_MOST;
73
        ENABLE_LSBS <= SET_RESET or SHIFT_LSBS;
74
 
75
-- outputs
76
 
77 5 petebleack
        OUTPUT <= Q;
78 2 petebleack
 
79 5 petebleack
 
80 2 petebleack
-- initialisation
81
 
82
INIT:   process(RESET,LOAD)
83
begin
84
        if RESET = '1' then
85 5 petebleack
        D <= (others => CONST);
86 2 petebleack
        else
87 5 petebleack
        D <= LOAD;
88 2 petebleack
        end if;
89
end process INIT;
90
 
91
-- storage
92
 
93 5 petebleack
STORAGE : process (CLOCK)
94
        begin
95
                if CLOCK'event and CLOCK = '1' then
96
                        if ENABLE_LSBS = '1' then
97
                                if      SHIFT_LSBS = '1' then
98
                                        Q(14 downto 0) <= Q(13 downto 0) & CONST;
99
                                else
100
                                        Q(14 downto 0) <= D(14 downto 0);
101
                                end if;
102
                        end if;
103
                        if ENABLE_MSB = '1' then
104
                                if SHIFT_ALL = '1' then
105
                                        Q(15) <= Q(14);
106
                                else
107
                                        Q(15) <= D(15);
108
                                end if;
109
                        end if;
110
                end if;
111
        end process STORAGE;
112 2 petebleack
 
113
 
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.