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

Subversion Repositories xucpu

[/] [xucpu/] [trunk/] [src/] [system/] [S2CPU.vhdl] - Blame information for rev 33

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 32 lcdsgmtr
LIBRARY ieee;
2
USE ieee.std_logic_1164.ALL;
3
USE ieee.numeric_std.ALL;
4
 
5
ENTITY S2CPU IS
6
 
7
  PORT (
8
    CLK           : IN  STD_LOGIC;
9
    RST           : IN  STD_LOGIC;
10
    O_IF          : OUT STD_LOGIC;
11
    O_INSTR_ADDR  : OUT STD_LOGIC_VECTOR(14 DOWNTO 0);
12
    I_INSTRUCTION : IN  STD_LOGIC_VECTOR(15 DOWNTO 0);
13
    O_RD          : OUT STD_LOGIC;
14
    O_WR          : OUT STD_LOGIC;
15
    O_DATA_ADDR   : OUT STD_LOGIC_VECTOR(14 DOWNTO 0);
16
    O_DATA        : OUT STD_LOGIC_VECTOR(15 DOWNTO 0);
17
    I_DATA        : IN  STD_LOGIC_VECTOR(15 DOWNTO 0));
18
 
19
END ENTITY S2CPU;
20
 
21
ARCHITECTURE Structural OF S2CPU IS
22
 
23 33 lcdsgmtr
  SIGNAL PC : INTEGER RANGE 0 TO 32767 := 0;
24
 
25 32 lcdsgmtr
BEGIN  -- ARCHITECTURE Structural
26
 
27 33 lcdsgmtr
  -- purpose: Let counter run to fetch instructions
28
  -- type   : combinational
29
  -- inputs : CLK,RST
30
  -- outputs: O_INSTR_ADDR
31
  IF1: PROCESS (CLK,RST) IS
32
  BEGIN  -- PROCESS IF1
33
    IF rising_edge(CLK) THEN
34
      IF rst = '1' THEN
35
        PC <= 0;
36
      ELSE
37
        IF PC = 32767 THEN
38
          PC <= 0;
39
        ELSE
40
          PC <= PC + 1;
41
        END IF;
42
      END IF;
43
    END IF;
44
  END PROCESS IF1;
45 32 lcdsgmtr
 
46 33 lcdsgmtr
  O_IF <= '1';
47
  O_INSTR_ADDR <= STD_LOGIC_VECTOR(to_unsigned(PC, 15));
48
 
49 32 lcdsgmtr
END ARCHITECTURE Structural;

powered by: WebSVN 2.1.0

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