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

Subversion Repositories mcu8

[/] [mcu8/] [trunk/] [src/] [processor_E.vhd] - Blame information for rev 19

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

Line No. Rev Author Line
1 2 dimo
LIBRARY IEEE;
2
USE IEEE.std_logic_1164.ALL;
3
USE work.components.ALL;
4
USE work.cpu_types.ALL;
5
 
6
ENTITY processor_E IS
7
  PORT(prog_adr        : OUT d_bus;
8
       prog_data       : IN  d_bus;
9
       datmem_data_in  : IN  d_bus;
10
       datmem_data_out : OUT d_bus;
11
       datmem_nrd      : OUT STD_LOGIC;
12
       datmem_nwr      : OUT STD_LOGIC;
13
       datmem_adr      : OUT d_bus;
14
       a               : OUT d_bus;
15
       b               : OUT d_bus;
16
       cflag           : OUT STD_LOGIC;
17
       zflag           : OUT STD_LOGIC;
18
       clk             : IN  STD_LOGIC;
19
       nreset          : IN  STD_LOGIC;
20
       nreset_int      : IN  STD_LOGIC;
21
       go_step         : IN  STD_LOGIC;
22
       one_step        : IN  STD_LOGIC);
23
END processor_E;
24
 
25
 
26
ARCHITECTURE rtl_A OF processor_E IS
27 19 dimo
  SIGNAL carry_reg_alu,zero_reg_alu,rst_int,carry_alu_reg,zero_alu_reg,flagz_alu_control,flagc_alu_control : STD_LOGIC; -- H-activ internal reset SIGNAL
28 2 dimo
  signal ram_data_reg,a_reg_alu,b_reg_alu,result_alu_reg : d_bus;
29 7 dimo
  SIGNAL control_int, control_nxt_int : opcode;
30 2 dimo
BEGIN
31
  rst_int <= (NOT nreset) OR (NOT nreset_int);
32 13 dimo
  a <= a_reg_alu;
33
  b <= b_reg_alu;
34
  cflag <= carry_reg_alu;
35
  zflag <= zero_reg_alu;
36 2 dimo
 
37
alu_i: alu
38
  port map(
39
    a => a_reg_alu,
40
    b => b_reg_alu,
41
    rom_data => prog_data,
42
    ram_data => ram_data_reg,
43
    control => control_int,
44
    carry => carry_reg_alu,
45
    zero => zero_reg_alu,
46
    result => result_alu_reg,
47
    carry_out => carry_alu_reg,
48 19 dimo
    zero_out => zero_alu_reg,
49
    flagc => flagc_alu_control,
50
    flagz => flagz_alu_control );
51 2 dimo
 
52
reg_i: reg
53
  port MAP(
54
    clk => clk,
55
    rst => rst_int,
56
    carry_in => carry_alu_reg,
57
    zero_in => zero_alu_reg,
58
    result_in => result_alu_reg,
59 13 dimo
    rom_data_in => prog_data,
60 2 dimo
    control => control_int,
61
    a_out => a_reg_alu,
62
    b_out => b_reg_alu,
63
    carry_out => carry_reg_alu,
64
    zero_out => zero_reg_alu );
65
 
66
control_i: control
67
  PORT MAP (
68
    clk    => clk,
69
    rst    => rst_int,
70
    carry  => carry_reg_alu,
71 17 dimo
    carry_new => carry_alu_reg,
72 2 dimo
    zero   => zero_reg_alu,
73 17 dimo
    zero_new => zero_alu_reg,
74 2 dimo
    input  => prog_data,
75 7 dimo
    output => control_int,
76 19 dimo
    output_nxt => control_nxt_int,
77
    flagz => flagz_alu_control,
78
    flagc => flagc_alu_control );
79 2 dimo
 
80
pc_i: pc
81
  PORT MAP (
82
    clk     => clk,
83
    rst     => rst_int,
84
    addr_in => prog_data,
85 7 dimo
    control => control_nxt_int,
86 2 dimo
    pc      => prog_adr );
87
 
88
ram_control_i: ram_control
89
  PORT MAP (
90
    clk       => clk,
91
    rst       => rst_int,
92
    input_a   => a_reg_alu,
93
    input_rom => prog_data,
94
    input_ram => datmem_data_in,
95
    control   => control_int,
96
    ram_data_reg => ram_data_reg,
97
    addr      => datmem_adr,
98
    data      => datmem_data_out,
99
    ce_nwr    => datmem_nwr,
100
    ce_nrd    => datmem_nrd );
101
END rtl_A;

powered by: WebSVN 2.1.0

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