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

Subversion Repositories mlite

[/] [mlite/] [trunk/] [vhdl/] [plasma_3e.vhd] - Blame information for rev 259

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

Line No. Rev Author Line
1 259 rhoads
---------------------------------------------------------------------
2
-- TITLE: Plamsa Interface (clock divider and interface to FPGA board)
3
-- AUTHOR: Steve Rhoads (rhoadss@yahoo.com)
4
-- DATE CREATED: 9/15/07
5
-- FILENAME: plasma_3e.vhd
6
-- PROJECT: Plasma CPU core
7
-- COPYRIGHT: Software placed into the public domain by the author.
8
--    Software 'as is' without warranty.  Author liable for nothing.
9
-- DESCRIPTION:
10
--    This entity divides the clock by two and interfaces to the 
11
--    Xilinx Spartan-3E XC3S200FT256-4 FPGA with DDR.
12
---------------------------------------------------------------------
13
library ieee;
14
use ieee.std_logic_1164.all;
15
--use work.mlite_pack.all;
16
 
17
entity plasma_3e is
18
   port(CLK_50MHZ  : in std_logic;
19
        RS232_DCE_RXD : in std_logic;
20
        RS232_DCE_TXD : out std_logic;
21
 
22
        SD_CK_P    : out std_logic;     --clock_positive
23
        SD_CK_N    : out std_logic;     --clock_negative
24
        SD_CKE     : out std_logic;     --clock_enable
25
 
26
        SD_BA      : out std_logic_vector(1 downto 0);  --bank_address
27
        SD_A       : out std_logic_vector(12 downto 0); --address(row or col)
28
        SD_CS      : out std_logic;     --chip_select
29
        SD_RAS     : out std_logic;     --row_address_strobe
30
        SD_CAS     : out std_logic;     --column_address_strobe
31
        SD_WE      : out std_logic;     --write_enable
32
 
33
        SD_DQ      : inout std_logic_vector(15 downto 0); --data
34
        SD_UDM     : out std_logic;     --upper_byte_enable
35
        SD_UDQS    : inout std_logic;   --upper_data_strobe
36
        SD_LDM     : out std_logic;     --low_byte_enable
37
        SD_LDQS    : inout std_logic;   --low_data_strobe
38
 
39
        LED        : out std_logic_vector(7 downto 0);
40
        ROT_CENTER : in std_logic;
41
        ROT_A      : in std_logic;
42
        ROT_B      : in std_logic;
43
        BTN_EAST   : in std_logic;
44
        BTN_NORTH  : in std_logic;
45
        BTN_SOUTH  : in std_logic;
46
        BTN_WEST   : in std_logic;
47
        SW         : in std_logic_vector(3 downto 0));
48
end; --entity plasma_if
49
 
50
 
51
architecture logic of plasma_3e is
52
 
53
   component plasma
54
      generic(memory_type : string := "XILINX_16X"; --"DUAL_PORT_" "ALTERA_LPM";
55
              log_file    : string := "UNUSED");
56
      port(clk          : in std_logic;
57
           reset        : in std_logic;
58
           uart_write   : out std_logic;
59
           uart_read    : in std_logic;
60
 
61
           address      : out std_logic_vector(31 downto 2);
62
           byte_we      : out std_logic_vector(3 downto 0);
63
           data_write   : out std_logic_vector(31 downto 0);
64
           data_read    : in std_logic_vector(31 downto 0);
65
           mem_pause_in : in std_logic;
66
 
67
           gpio0_out    : out std_logic_vector(31 downto 0);
68
           gpioA_in     : in std_logic_vector(31 downto 0));
69
   end component; --plasma
70
 
71
   component ddr_ctrl
72
      port(clk      : in std_logic;
73
           clk_2x   : in std_logic;
74
           reset_in : in std_logic;
75
 
76
           address  : in std_logic_vector(25 downto 2);
77
           byte_we  : in std_logic_vector(3 downto 0);
78
           data_w   : in std_logic_vector(31 downto 0);
79
           data_r   : out std_logic_vector(31 downto 0);
80
           active   : in std_logic;
81
           pause    : out std_logic;
82
 
83
           SD_CK_P  : out std_logic;     --clock_positive
84
           SD_CK_N  : out std_logic;     --clock_negative
85
           SD_CKE   : out std_logic;     --clock_enable
86
 
87
           SD_BA    : out std_logic_vector(1 downto 0);  --bank_address
88
           SD_A     : out std_logic_vector(12 downto 0); --address(row or col)
89
           SD_CS    : out std_logic;     --chip_select
90
           SD_RAS   : out std_logic;     --row_address_strobe
91
           SD_CAS   : out std_logic;     --column_address_strobe
92
           SD_WE    : out std_logic;     --write_enable
93
 
94
           SD_DQ    : inout std_logic_vector(15 downto 0); --data
95
           SD_UDM   : out std_logic;     --upper_byte_enable
96
           SD_UDQS  : inout std_logic;   --upper_data_strobe
97
           SD_LDM   : out std_logic;     --low_byte_enable
98
           SD_LDQS  : inout std_logic);  --low_data_strobe
99
   end component; --ddr
100
 
101
   signal clk_reg      : std_logic;
102
   signal address      : std_logic_vector(31 downto 2);
103
   signal data_write   : std_logic_vector(31 downto 0);
104
   signal data_read    : std_logic_vector(31 downto 0);
105
   signal byte_we      : std_logic_vector(3 downto 0);
106
   signal pause        : std_logic;
107
   signal active       : std_logic;
108
   signal reset        : std_logic;
109
   signal gpio0_out    : std_logic_vector(31 downto 0);
110
   signal gpio0_in     : std_logic_vector(31 downto 0);
111
 
112
begin  --architecture
113
   --Divide 50 MHz clock by two
114
   clk_div: process(reset, CLK_50MHZ, clk_reg)
115
   begin
116
      if reset = '1' then
117
         clk_reg <= '0';
118
      elsif rising_edge(CLK_50MHZ) then
119
         clk_reg <= not clk_reg;
120
      end if;
121
   end process; --clk_div
122
 
123
   reset <= ROT_CENTER;
124
   LED <= gpio0_out(7 downto 0);
125
   gpio0_in(31 downto 10) <= (others => '0');
126
   gpio0_in(9 downto 0) <= ROT_A & ROT_B & BTN_EAST & BTN_NORTH &
127
                           BTN_SOUTH & BTN_WEST & SW;
128
   active <= '1' when address(31 downto 28) = "0001" else '0';
129
 
130
   u1_plama: plasma
131
      generic map (memory_type => "XILINX_16X",
132
                   log_file    => "UNUSED")
133
      --generic map (memory_type => "DUAL_PORT",
134
      --             log_file    => "output2.txt")
135
      PORT MAP (
136
         clk          => clk_reg,
137
         reset        => reset,
138
         uart_write   => RS232_DCE_TXD,
139
         uart_read    => RS232_DCE_RXD,
140
 
141
         address      => address,
142
         byte_we      => byte_we,
143
         data_write   => data_write,
144
         data_read    => data_read,
145
         mem_pause_in => pause,
146
 
147
         gpio0_out    => gpio0_out,
148
         gpioA_in     => gpio0_in);
149
 
150
   u2_ddr: ddr_ctrl
151
      port map (
152
         clk      => clk_reg,
153
         clk_2x   => CLK_50MHZ,
154
         reset_in => reset,
155
 
156
         address  => address(25 downto 2),
157
         byte_we  => byte_we,
158
         data_w   => data_write,
159
         data_r   => data_read,
160
         active   => active,
161
         pause    => pause,
162
 
163
         SD_CK_P  => SD_CK_P,    --clock_positive
164
         SD_CK_N  => SD_CK_N,    --clock_negative
165
         SD_CKE   => SD_CKE,     --clock_enable
166
 
167
         SD_BA    => SD_BA,      --bank_address
168
         SD_A     => SD_A,       --address(row or col)
169
         SD_CS    => SD_CS,      --chip_select
170
         SD_RAS   => SD_RAS,     --row_address_strobe
171
         SD_CAS   => SD_CAS,     --column_address_strobe
172
         SD_WE    => SD_WE,      --write_enable
173
 
174
         SD_DQ    => SD_DQ,      --data
175
         SD_UDM   => SD_UDM,     --upper_byte_enable
176
         SD_UDQS  => SD_UDQS,    --upper_data_strobe
177
         SD_LDM   => SD_LDM,     --low_byte_enable
178
         SD_LDQS  => SD_LDQS);   --low_data_strobe
179
 
180
end; --architecture logic
181
 

powered by: WebSVN 2.1.0

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