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

Subversion Repositories riscv_vhdl

[/] [riscv_vhdl/] [trunk/] [rtl/] [riverlib/] [river_top.vhd] - Blame information for rev 5

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 5 sergeykhbr
-----------------------------------------------------------------------------
2
--! @file
3
--! @copyright Copyright 2016 GNSS Sensor Ltd. All right reserved.
4
--! @author    Sergey Khabarov - sergeykhbr@gmail.com
5
--! @brief     "River" CPU Top level.
6
------------------------------------------------------------------------------
7
 
8
library ieee;
9
use ieee.std_logic_1164.all;
10
library commonlib;
11
use commonlib.types_common.all;
12
--! RIVER CPU specific library.
13
library riverlib;
14
--! RIVER CPU configuration constants.
15
use riverlib.river_cfg.all;
16
 
17
entity RiverTop is
18
  port (
19
    i_clk : in std_logic;                                             -- CPU clock
20
    i_nrst : in std_logic;                                            -- Reset. Active LOW.
21
    -- Memory interface:
22
    i_req_mem_ready : in std_logic;                                   -- AXI request was accepted
23
    o_req_mem_valid : out std_logic;                                  -- AXI memory request is valid
24
    o_req_mem_write : out std_logic;                                  -- AXI memory request is write type
25
    o_req_mem_addr : out std_logic_vector(BUS_ADDR_WIDTH-1 downto 0); -- AXI memory request address
26
    o_req_mem_strob : out std_logic_vector(BUS_DATA_BYTES-1 downto 0);-- Writing strob. 1 bit per Byte
27
    o_req_mem_data : out std_logic_vector(BUS_DATA_WIDTH-1 downto 0); -- Writing data
28
    i_resp_mem_data_valid : in std_logic;                             -- AXI response is valid
29
    i_resp_mem_data : in std_logic_vector(BUS_DATA_WIDTH-1 downto 0); -- Read data
30
    -- Interrupt line from external interrupts controller (PLIC).
31
    i_ext_irq : in std_logic;
32
    o_time : out std_logic_vector(63 downto 0);                       -- Timer. Clock counter except halt state.
33
    -- Debug interface:
34
    i_dport_valid : in std_logic;                                     -- Debug access from DSU is valid
35
    i_dport_write : in std_logic;                                     -- Write command flag
36
    i_dport_region : in std_logic_vector(1 downto 0);                 -- Registers region ID: 0=CSR; 1=IREGS; 2=Control
37
    i_dport_addr : in std_logic_vector(11 downto 0);                  -- Register idx
38
    i_dport_wdata : in std_logic_vector(RISCV_ARCH-1 downto 0);       -- Write value
39
    o_dport_ready : out std_logic;                                    -- Response is ready
40
    o_dport_rdata : out std_logic_vector(RISCV_ARCH-1 downto 0)       -- Response value
41
  );
42
end;
43
 
44
architecture arch_RiverTop of RiverTop is
45
 
46
  -- Control path:
47
  signal w_req_ctrl_ready : std_logic;
48
  signal w_req_ctrl_valid : std_logic;
49
  signal wb_req_ctrl_addr : std_logic_vector(BUS_ADDR_WIDTH-1 downto 0);
50
  signal w_resp_ctrl_valid : std_logic;
51
  signal wb_resp_ctrl_addr : std_logic_vector(BUS_ADDR_WIDTH-1 downto 0);
52
  signal wb_resp_ctrl_data : std_logic_vector(31 downto 0);
53
  signal w_resp_ctrl_ready : std_logic;
54
  -- Data path:
55
  signal w_req_data_ready : std_logic;
56
  signal w_req_data_valid : std_logic;
57
  signal w_req_data_write : std_logic;
58
  signal wb_req_data_addr : std_logic_vector(BUS_ADDR_WIDTH-1 downto 0);
59
  signal wb_req_data_size : std_logic_vector(1 downto 0);
60
  signal wb_req_data_data : std_logic_vector(RISCV_ARCH-1 downto 0);
61
  signal w_resp_data_valid : std_logic;
62
  signal wb_resp_data_addr : std_logic_vector(BUS_ADDR_WIDTH-1 downto 0);
63
  signal wb_resp_data_data : std_logic_vector(RISCV_ARCH-1 downto 0);
64
  signal w_resp_data_ready : std_logic;
65
  signal wb_istate : std_logic_vector(1 downto 0);
66
  signal wb_dstate : std_logic_vector(1 downto 0);
67
  signal wb_cstate : std_logic_vector(1 downto 0);
68
 
69
begin
70
 
71
    proc0 : Processor port map (
72
        i_clk => i_clk,
73
        i_nrst => i_nrst,
74
        i_req_ctrl_ready => w_req_ctrl_ready,
75
        o_req_ctrl_valid => w_req_ctrl_valid,
76
        o_req_ctrl_addr => wb_req_ctrl_addr,
77
        i_resp_ctrl_valid => w_resp_ctrl_valid,
78
        i_resp_ctrl_addr => wb_resp_ctrl_addr,
79
        i_resp_ctrl_data => wb_resp_ctrl_data,
80
        o_resp_ctrl_ready => w_resp_ctrl_ready,
81
        i_req_data_ready => w_req_data_ready,
82
        o_req_data_valid => w_req_data_valid,
83
        o_req_data_write => w_req_data_write,
84
        o_req_data_addr => wb_req_data_addr,
85
        o_req_data_size => wb_req_data_size,
86
        o_req_data_data => wb_req_data_data,
87
        i_resp_data_valid => w_resp_data_valid,
88
        i_resp_data_addr => wb_resp_data_addr,
89
        i_resp_data_data => wb_resp_data_data,
90
        o_resp_data_ready => w_resp_data_ready,
91
        i_ext_irq => i_ext_irq,
92
        o_time => o_time,
93
        i_dport_valid => i_dport_valid,
94
        i_dport_write => i_dport_write,
95
        i_dport_region => i_dport_region,
96
        i_dport_addr => i_dport_addr,
97
        i_dport_wdata => i_dport_wdata,
98
        o_dport_ready => o_dport_ready,
99
        o_dport_rdata => o_dport_rdata,
100
        i_istate => wb_istate,
101
        i_dstate => wb_dstate,
102
        i_cstate => wb_cstate);
103
 
104
    cache0 :  CacheTop port map (
105
        i_clk => i_clk,
106
        i_nrst => i_nrst,
107
        i_req_ctrl_valid => w_req_ctrl_valid,
108
        i_req_ctrl_addr => wb_req_ctrl_addr,
109
        o_req_ctrl_ready => w_req_ctrl_ready,
110
        o_resp_ctrl_valid => w_resp_ctrl_valid,
111
        o_resp_ctrl_addr => wb_resp_ctrl_addr,
112
        o_resp_ctrl_data => wb_resp_ctrl_data,
113
        i_resp_ctrl_ready => w_resp_ctrl_ready,
114
        i_req_data_valid => w_req_data_valid,
115
        i_req_data_write => w_req_data_write,
116
        i_req_data_addr => wb_req_data_addr,
117
        i_req_data_size => wb_req_data_size,
118
        i_req_data_data => wb_req_data_data,
119
        o_req_data_ready => w_req_data_ready,
120
        o_resp_data_valid => w_resp_data_valid,
121
        o_resp_data_addr => wb_resp_data_addr,
122
        o_resp_data_data => wb_resp_data_data,
123
        i_resp_data_ready => w_resp_data_ready,
124
        i_req_mem_ready => i_req_mem_ready,
125
        o_req_mem_valid => o_req_mem_valid,
126
        o_req_mem_write => o_req_mem_write,
127
        o_req_mem_addr => o_req_mem_addr,
128
        o_req_mem_strob => o_req_mem_strob,
129
        o_req_mem_data => o_req_mem_data,
130
        i_resp_mem_data_valid => i_resp_mem_data_valid,
131
        i_resp_mem_data => i_resp_mem_data,
132
        o_istate => wb_istate,
133
        o_dstate => wb_dstate,
134
        o_cstate => wb_cstate);
135
 
136
end;

powered by: WebSVN 2.1.0

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