Project

General

Profile

RE: Xilinx design suite 14.2 and MDK_2012-08-10 » gpio_test_top.vhd

Top level GPIO test VHDL - Conor O, 12/18/2012 08:32 AM

 
1
--- GPIO Test Core
2
---
3
--- Top Level Test Code
4
---
5
--- conor.orourke@scorpionnetworks.com
6
--- 15 October 2012
7
---
8

    
9

    
10
-- Library Declarations
11

    
12
library WORK;
13
library IEEE;
14
library UNISIM;
15

    
16
use IEEE.std_logic_1164.all; -- basic IEEE library
17
use IEEE.numeric_std.all;    -- IEEE library for the unsigned type and arith
18

    
19
use UNISIM.VCOMPONENTS.ALL;
20

    
21
use WORK.MityDSP_L138_pkg.ALL;
22

    
23

    
24
-- Entity
25

    
26
entity Gpio_Test_Top is
27

    
28
    generic (
29
        BOARD_REV     : string := "C";
30
        DECODE_BITS   : integer range 1 to 9 := 5
31
    );
32

    
33
    port (
34
        i_ema_clk     : in std_logic; -- 100 MHz EMIF clock
35

    
36
        -- DSP EMIFA BUS Interface
37
        i_ema_cs0_n   : in std_logic; -- RESERVED for SDRAM Controller
38
        i_ema_cs2_n   : in std_logic; -- ARM core CE space
39
        i_ema_cs3_n   : in std_logic; -- NAND FLASH space, not used
40
        i_ema_cs4_n   : in std_logic; -- DSP core CE space
41
        i_ema_cs5_n   : in std_logic; -- Reserved core space, not used
42
        i_ema_oe_n    : in std_logic;
43
        i_ema_we_n    : in std_logic;
44
        io_ema_wait_n : inout std_logic_vector(1 downto 0);
45
        io_ema_d      : inout std_logic_vector(15 downto 0);
46
        i_ema_a       : in std_logic_vector(13 downto 0);
47
        i_ema_ba      : in std_logic_vector(1 downto 0);
48
        i_ema_wen_dqm : in std_logic_vector(1 downto 0); 
49
        i_ema_cas     : in std_logic; -- reserved for SDRAM controller, not used
50
        i_ema_ras     : in std_logic; -- reserved for SDRAM controller, not used
51
        i_ema_sdcke   : in std_logic; -- reserved for SDRAM controller, not used
52
        i_ema_rnw     : in std_logic; -- reserved for SDRAM controller, not used
53

    
54
        -- DSP IRQ lines
55
        o_int         : out std_logic_vector(1 downto 0);
56
        o_nmi_n       : out std_logic;
57

    
58
        -- GPIO Test Lines
59
        io_j702_3_gpio : inout std_logic;
60
        io_j702_4_gpio : inout std_logic
61
    );
62

    
63
end Gpio_Test_Top;
64

    
65

    
66
-- Architecture
67

    
68
architecture gpio_arch of Gpio_Test_Top is
69

    
70
    -- Constants --
71

    
72
    constant FPGA_APPLICATION_ID  : std_logic_vector(7 downto 0) := "00000000";
73
    constant FPGA_VERSION_MAJOR   : std_logic_vector(3 downto 0) := "0001";
74
    constant FPGA_VERSION_MINOR   : std_logic_vector(3 downto 0) := "0000";
75
    constant FPGA_YEAR            : std_logic_vector(4 downto 0) := "01010";
76
    constant FPGA_MONTH           : std_logic_vector(3 downto 0) := "0010";
77
    constant FPGA_DAY             : std_logic_vector(4 downto 0) := "10100";
78

    
79
    -- CPU Mapping: ARM is INT0
80
    --              DSP is INT1
81

    
82
    constant CORE_BASE_MODULE     : integer := 0;
83
    constant CORE_GPIO_MODULE     : integer := 5;
84

    
85
    constant CORE_GPIO_IRQ_LEVEL  : integer := 0;
86
    constant CORE_GPIO_IRQ_VECTOR : integer := 0;
87

    
88
    -- Clock Signals --
89

    
90
    signal Ema_clk    : std_logic;
91

    
92
    -- EMIFA Signals
93

    
94
    signal Ema_d      : std_logic_vector(15 downto 0);
95
    signal Ema_wait_n : std_logic_vector(1 downto 0) := "11";
96
    signal T_ema_wait : std_logic;
97
    signal T_ema_d    : std_logic;
98

    
99
    signal Irq_map    : bus16_vector(1 downto 0) := (others=>(others=>'0')); 
100

    
101
    -- Core Logic signals
102

    
103
    signal Be_r       : std_logic_vector(1 downto 0);
104
    signal Addr_r     : std_logic_vector(5 downto 0);
105
    signal Arm_cs5_r  : std_logic_vector((2**DECODE_BITS)-1 downto 0);
106
    signal Dsp_cs4_r  : std_logic_vector((2**DECODE_BITS)-1 downto 0);
107
    signal Edi_r      : std_logic_vector(15 downto 0);
108
    signal Edo_arm    : bus16_vector((2**DECODE_BITS)-1 downto 0);
109
    signal Edo_dsp    : bus16_vector((2**DECODE_BITS)-1 downto 0);
110
    signal Rd_r       : std_logic;
111
    signal Wr_r       : std_logic;
112

    
113

    
114
begin
115

    
116
    ---------------
117
    -- PORT MAPS --
118
    ---------------
119

    
120
    -- Route i_ema_clk via Global Net (Xilinx specific) to EMA_CLK
121

    
122
    emaclk_inst : BUFG
123
        port map (O => Ema_clk,
124
                  I => i_ema_clk);
125

    
126

    
127
    -----------------
128
    -- EMIF_Iface --
129
    ----------------
130

    
131
    emifa_iface_inst : EMIFA_iface
132
        generic map ( 
133
            DECODE_BITS       => DECODE_BITS, 
134
            CONFIG            => "MityDSP_L138"
135
        )
136
        port map (
137
            ema_clk   => Ema_clk,
138
            i_ema_cs0_n   => i_ema_cs0_n,
139
            i_ema_cs2_n   => i_ema_cs2_n,
140
            i_ema_cs3_n   => i_ema_cs3_n,
141
            i_ema_cs4_n   => i_ema_cs4_n,
142
            i_ema_cs5_n   => i_ema_cs5_n,
143
            i_ema_oe_n    => i_ema_oe_n,
144
            i_ema_we_n    => i_ema_we_n,
145
            o_ema_wait_n  => Ema_wait_n,
146

    
147
            t_ema_wait    => T_ema_wait,
148
            i_ema_d       => io_ema_d, 
149
            o_ema_d       => Ema_d, 
150
            t_ema_d       => T_ema_d,
151

    
152
            i_ema_a       => i_ema_a, 
153
            i_ema_ba      => i_ema_ba, 
154
            i_ema_wen_dqm => i_ema_wen_dqm,  
155
            i_ema_cas     => i_ema_cas,  
156
            i_ema_ras     => i_ema_ras,  
157
            i_ema_sdcke   => i_ema_sdcke,  
158
            i_ema_rnw     => i_ema_rnw,  
159

    
160
            -- Internal Core Bus Signals
161

    
162
            o_core_be      => Be_r,  
163
            o_core_addr    => Addr_r,  
164
            o_core_cs5     => Arm_cs5_r,  
165
            o_core_cs4     => Dsp_cs4_r,  
166
            o_core_edi     => Edi_r,  
167
            i_core_edo5    => Edo_arm,  
168
            i_core_edo4    => Edo_dsp,  
169
            o_core_rd      => Rd_r,  
170
            o_core_wr      => Wr_r
171
        );
172
    -- end emififace_inst
173

    
174
    -- Port Assignments for EMIFA:
175

    
176
    o_nmi_n <= '1';
177

    
178
    io_ema_d <= Ema_d when T_ema_d = '0' else (others=>'Z');
179

    
180
    io_ema_wait_n <= Ema_wait_n when T_ema_wait = '0' else (others=>'Z');
181

    
182

    
183
    -----------------
184
    -- Base Module --
185
    -----------------
186

    
187
    base_core_inst : base_module
188
        generic map (
189
            CONFIG => "MityDSP_L138"
190
        )
191
        port map (
192
            ema_clk         => Ema_clk,
193
            i_cs            => Arm_cs5_r(CORE_BASE_MODULE),
194
            i_ID            => FPGA_APPLICATION_ID,
195
            i_version_major => FPGA_VERSION_MAJOR,
196
            i_version_minor => FPGA_VERSION_MINOR,
197
            i_year          => FPGA_YEAR,
198
            i_month         => FPGA_MONTH,
199
            i_day           => FPGA_DAY,
200
            i_ABus          => Addr_r,
201
            i_DBus          => Edi_r,
202
            o_DBus          => Edo_arm(CORE_BASE_MODULE),
203
            i_wr_en         => Wr_r,
204
            i_rd_en         => Rd_r,
205
            i_be_r          => Be_r,
206

    
207
            o_dcm_reset     => open,
208
            i_dcm_status    => "000",
209
            i_dcm_lock      => '0',
210

    
211
            i_irq_map       => Irq_map,
212
            o_irq_output    => o_int
213
        );
214
    -- end base_core_inst
215

    
216

    
217
    -----------------
218
    -- GPIO Module --
219
    -----------------
220

    
221
    gpio_core_inst : gpio
222
        generic map (
223
            NUM_BANKS       => 1,
224
            NUM_IO_PER_BANK => 2
225
        )
226
        port map (
227
            clk             => Ema_clk,
228
            i_ABus          => Addr_r,
229
            i_DBus          => Edi_r,
230
            o_DBus          => Edo_arm(CORE_GPIO_MODULE),
231
            i_wr_en         => Wr_r,
232
            i_rd_en         => Rd_r,
233
            i_cs            => Arm_cs5_r(CORE_GPIO_MODULE),
234
            o_irq           => Irq_map(CORE_GPIO_IRQ_LEVEL)(CORE_GPIO_IRQ_VECTOR),
235
            i_ilevel        => std_logic_vector(to_unsigned(CORE_GPIO_IRQ_LEVEL, 2)),
236
            i_ivector       => std_logic_vector(to_unsigned(CORE_GPIO_IRQ_VECTOR, 4)),
237

    
238
            -- Output only, not tristated. Input copy of output
239
            i_io(0)         => io_j702_3_gpio,
240
            i_io(1)         => io_j702_4_gpio,
241
            t_io            => open,
242
            o_io(0)         => io_j702_3_gpio,
243
            o_io(1)         => io_j702_4_gpio,
244

    
245
            i_initdir       => "11",
246
            i_initoutval    => "11"
247
        );
248
    -- end gpio_core_inst
249

    
250
end gpio_arch;
251

    
252

    
(1-1/2) Go to top
Add picture from clipboard (Maximum size: 1 GB)