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

Subversion Repositories xucpu

[/] [xucpu/] [trunk/] [VHDL/] [registers/] [register_test.vhdl] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 lcdsgmtr
-- Copyright 2015, Jürgen Defurne
2
--
3
-- This file is part of the Experimental Unstable CPU System.
4
--
5
-- The Experimental Unstable CPU System Is free software: you can redistribute
6
-- it and/or modify it under the terms of the GNU Lesser General Public License
7
-- as published by the Free Software Foundation, either version 3 of the
8
-- License, or (at your option) any later version.
9
--
10
-- The Experimental Unstable CPU System is distributed in the hope that it will
11
-- be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
12
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser
13
-- General Public License for more details.
14
--
15
-- You should have received a copy of the GNU Lesser General Public License
16
-- along with Experimental Unstable CPU System. If not, see
17
-- http://www.gnu.org/licenses/lgpl.txt.
18
 
19
 
20
LIBRARY ieee;
21
USE ieee.std_logic_1164.ALL;
22
 
23
ENTITY register_test IS
24
 
25
END ENTITY register_test;
26
 
27
ARCHITECTURE Structural OF register_test IS
28
 
29
  -- Component declarations
30
  COMPONENT reset IS
31
 
32
    PORT (
33
      RST : OUT STD_LOGIC);
34
 
35
  END COMPONENT reset;
36
 
37
  COMPONENT clock IS
38
 
39
    PORT (
40
      CLK : OUT STD_LOGIC);
41
 
42
  END COMPONENT clock;
43
 
44
  COMPONENT multiplexer IS
45
 
46
    PORT (
47
      SEL : IN  STD_LOGIC_VECTOR(1 DOWNTO 0);
48
      S0  : IN  STD_LOGIC_VECTOR(7 DOWNTO 0);
49
      S1  : IN  STD_LOGIC_VECTOR(7 DOWNTO 0);
50
      S2  : IN  STD_LOGIC_VECTOR(7 DOWNTO 0);
51
      S3  : IN  STD_LOGIC_VECTOR(7 DOWNTO 0);
52
      Y   : OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
53
 
54
  END COMPONENT multiplexer;
55
 
56
  COMPONENT rf IS
57
 
58
    PORT (
59
      CLK : IN  STD_LOGIC;
60
      D   : IN  STD_LOGIC_VECTOR(7 DOWNTO 0);
61
      Q1  : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
62
      Q2  : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
63
      A1  : IN  STD_LOGIC_VECTOR(1 DOWNTO 0);
64
      A2  : IN  STD_LOGIC_VECTOR(1 DOWNTO 0);
65
      WR  : IN  STD_LOGIC);
66
 
67
  END COMPONENT rf;
68
 
69
  COMPONENT pipeline_reg IS
70
 
71
    PORT (
72
      D   : IN  STD_LOGIC_VECTOR(7 DOWNTO 0);
73
      Q   : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
74
      CLK : IN  STD_LOGIC;
75
      EN  : IN  STD_LOGIC);
76
 
77
  END COMPONENT pipeline_reg;
78
 
79
  COMPONENT ALU IS
80
 
81
    PORT (
82
      I1 : IN  STD_LOGIC_VECTOR(7 DOWNTO 0);
83
      I2 : IN  STD_LOGIC_VECTOR(7 DOWNTO 0);
84
      R1 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
85
      F1 : IN  STD_LOGIC_VECTOR(1 DOWNTO 0));
86
 
87
  END COMPONENT ALU;
88
 
89
  COMPONENT uctrl IS
90
 
91
    PORT (
92
      CLK    : IN  STD_LOGIC;
93
      RST    : IN  STD_LOGIC;
94
      RF_SEL : OUT STD_LOGIC_VECTOR(1 DOWNTO 0);
95
      A1     : OUT STD_LOGIC_VECTOR(1 DOWNTO 0);
96
      A2     : OUT STD_LOGIC_VECTOR(1 DOWNTO 0);
97
      LO_EN  : OUT STD_LOGIC;
98
      RO_EN  : OUT STD_LOGIC;
99
      OPCODE : OUT STD_LOGIC_VECTOR(1 DOWNTO 0);
100
      WR     : OUT STD_LOGIC);
101
 
102
  END COMPONENT uctrl;
103
 
104
  -- Signal declarations
105
  SIGNAL CLK : STD_LOGIC;
106
  SIGNAL RST : STD_LOGIC;
107
 
108
  SIGNAL RESULT : STD_LOGIC_VECTOR(7 DOWNTO 0);
109
  SIGNAL LO     : STD_LOGIC_VECTOR(7 DOWNTO 0);
110
  SIGNAL RO     : STD_LOGIC_VECTOR(7 DOWNTO 0);
111
  SIGNAL ILO    : STD_LOGIC_VECTOR(7 DOWNTO 0);
112
  SIGNAL IRO    : STD_LOGIC_VECTOR(7 DOWNTO 0);
113
 
114
  SIGNAL A1     : STD_LOGIC_VECTOR(1 DOWNTO 0);
115
  SIGNAL A2     : STD_LOGIC_VECTOR(1 DOWNTO 0);
116
  SIGNAL WR     : STD_LOGIC;
117
  SIGNAL LO_EN  : STD_LOGIC;
118
  SIGNAL RO_EN  : STD_LOGIC;
119
  SIGNAL OPCODE : STD_LOGIC_VECTOR(1 DOWNTO 0);
120
 
121
BEGIN  -- ARCHITECTURE Structural
122
 
123
  CLK1 : clock PORT MAP (
124
    CLK => CLK);
125
 
126
  RST1 : reset PORT MAP (
127
    RST => RST);
128
 
129
  RF1 : rf PORT MAP (
130
    CLK => CLK,
131
    D   => RESULT,
132
    Q1  => LO,
133
    Q2  => RO,
134
    A1  => A1,
135
    A2  => A2,
136
    WR  => WR);
137
 
138
  PR1 : pipeline_reg PORT MAP (
139
    D   => LO,
140
    Q   => ILO,
141
    CLK => CLK,
142
    EN  => LO_EN);
143
 
144
  PR2 : pipeline_reg PORT MAP (
145
    D   => RO,
146
    Q   => IRO,
147
    CLK => CLK,
148
    EN  => RO_EN);
149
 
150
  ALU1 : ALU PORT MAP (
151
    I1 => ILO,
152
    I2 => IRO,
153
    R1 => RESULT,
154
    F1 => OPCODE);
155
 
156
  CTRL1 : uctrl PORT MAP (
157
    CLK    => CLK,
158
    RST    => RST,
159
    RF_SEL => OPEN,
160
    A1     => A1,
161
    A2     => A2,
162
    LO_EN  => LO_EN,
163
    RO_EN  => RO_EN,
164
    OPCODE => OPCODE,
165
    WR     => WR);
166
 
167
END ARCHITECTURE Structural;

powered by: WebSVN 2.1.0

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