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

Subversion Repositories gecko4

[/] [gecko4/] [trunk/] [GECKO4com/] [spartan200_an/] [vhdl/] [cmd_18_1e_if/] [cmd_18_1e_if-behavior-xilinx.vhdl] - Blame information for rev 5

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 5 ktt1
--------------------------------------------------------------------------------
2
--            _   _            __   ____                                      --
3
--           / / | |          / _| |  __|                                     --
4
--           | |_| |  _   _  / /   | |_                                       --
5
--           |  _  | | | | | | |   |  _|                                      --
6
--           | | | | | |_| | \ \_  | |__                                      --
7
--           |_| |_| \_____|  \__| |____| microLab                            --
8
--                                                                            --
9
--           Bern University of Applied Sciences (BFH)                        --
10
--           Quellgasse 21                                                    --
11
--           Room HG 4.33                                                     --
12
--           2501 Biel/Bienne                                                 --
13
--           Switzerland                                                      --
14
--                                                                            --
15
--           http://www.microlab.ch                                           --
16
--------------------------------------------------------------------------------
17
--   GECKO4com
18
--  
19
--   2010/2011 Dr. Theo Kluter
20
--  
21
--   This VHDL code is free code: you can redistribute it and/or modify
22
--   it under the terms of the GNU General Public License as published by
23
--   the Free Software Foundation, either version 3 of the License, or
24
--   (at your option) any later version.
25
--  
26
--   This VHDL code is distributed in the hope that it will be useful,
27
--   but WITHOUT ANY WARRANTY; without even the implied warranty of
28
--   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
29
--   GNU General Public License for more details. 
30
--   You should have received a copy of the GNU General Public License
31
--   along with these sources.  If not, see <http://www.gnu.org/licenses/>.
32
--
33
 
34
-- The unisim library is used for simulation of the xilinx specific components
35
-- For generic usage please use:
36
-- LIBRARY work;
37
-- USE work.xilinx_generic.all;
38
-- And use the xilinx generic package found in the xilinx generic module
39
LIBRARY unisim;
40
USE unisim.all;
41
 
42
ARCHITECTURE xilinx OF cmd_18_1e_if IS
43
 
44
   COMPONENT RAMB16_S9
45
      GENERIC ( INIT_00 : bit_vector;
46
                INIT_01 : bit_vector;
47
                INIT_02 : bit_vector;
48
                INIT_03 : bit_vector;
49
                INIT_04 : bit_vector;
50
                INIT_05 : bit_vector;
51
                INIT_06 : bit_vector;
52
                INIT_07 : bit_vector;
53
                INIT_08 : bit_vector;
54
                INIT_09 : bit_vector;
55
                INIT_0A : bit_vector;
56
                INIT_0B : bit_vector;
57
                INIT_0C : bit_vector;
58
                INIT_0D : bit_vector;
59
                INIT_0E : bit_vector;
60
                INIT_0F : bit_vector;
61
                INIT_10 : bit_vector;
62
                INIT_11 : bit_vector;
63
                INIT_12 : bit_vector;
64
                INIT_13 : bit_vector;
65
                INIT_14 : bit_vector;
66
                INIT_15 : bit_vector;
67
                INIT_16 : bit_vector;
68
                INIT_17 : bit_vector;
69
                INIT_18 : bit_vector;
70
                INIT_19 : bit_vector;
71
                INIT_1A : bit_vector;
72
                INIT_1B : bit_vector;
73
                INIT_1C : bit_vector;
74
                INIT_1D : bit_vector;
75
                INIT_1E : bit_vector;
76
                INIT_1F : bit_vector;
77
                INIT_20 : bit_vector;
78
                INIT_21 : bit_vector;
79
                INIT_22 : bit_vector;
80
                INIT_23 : bit_vector;
81
                INIT_24 : bit_vector;
82
                INIT_25 : bit_vector;
83
                INIT_26 : bit_vector;
84
                INIT_27 : bit_vector;
85
                INIT_28 : bit_vector;
86
                INIT_29 : bit_vector;
87
                INIT_2A : bit_vector;
88
                INIT_2B : bit_vector;
89
                INIT_2C : bit_vector;
90
                INIT_2D : bit_vector;
91
                INIT_2E : bit_vector;
92
                INIT_2F : bit_vector;
93
                INIT_30 : bit_vector;
94
                INIT_31 : bit_vector;
95
                INIT_32 : bit_vector;
96
                INIT_33 : bit_vector;
97
                INIT_34 : bit_vector;
98
                INIT_35 : bit_vector;
99
                INIT_36 : bit_vector;
100
                INIT_37 : bit_vector;
101
                INIT_38 : bit_vector;
102
                INIT_39 : bit_vector;
103
                INIT_3A : bit_vector;
104
                INIT_3B : bit_vector;
105
                INIT_3C : bit_vector;
106
                INIT_3D : bit_vector;
107
                INIT_3E : bit_vector;
108
                INIT_3F : bit_vector);
109
      PORT ( DO   : OUT std_logic_vector(  7 DOWNTO 0 );
110
             DOP  : OUT std_logic_vector(  0 DOWNTO 0 );
111
             ADDR : IN  std_logic_vector( 10 DOWNTO 0 );
112
             DI   : IN  std_logic_vector(  7 DOWNTO 0 );
113
             DIP  : IN  std_logic_vector(  0 DOWNTO 0 );
114
             EN   : IN  std_logic;
115
             WE   : IN  std_logic;
116
             CLK  : IN  std_logic;
117
             SSR  : IN  std_logic );
118
   END COMPONENT;
119
 
120
   SIGNAL s_n_clock                     : std_logic;
121
   SIGNAL s_string_data                 : std_logic_vector( 7 DOWNTO 0 );
122
   SIGNAL s_string_index                : std_logic_vector(10 DOWNTO 0 );
123
   SIGNAL s_push                        : std_logic;
124
   SIGNAL s_valid_command               : std_logic;
125
   SIGNAL s_string_select_reg           : std_logic_vector( 4 DOWNTO 0 );
126
   SIGNAL s_string_cnt_reg              : std_logic_vector( 5 DOWNTO 0 );
127
 
128
BEGIN
129
--------------------------------------------------------------------------------
130
--- Here the outputs are defined                                             ---
131
--------------------------------------------------------------------------------
132
   push_size <= s_string_data(7);
133
   push_data <= "0"&s_string_data(6 DOWNTO 0);
134
   push      <= s_push;
135
 
136
--------------------------------------------------------------------------------
137
--- Here the control signals are defined                                     ---
138
--------------------------------------------------------------------------------
139
   s_n_clock            <= NOT(clock);
140
   s_push               <= '0' WHEN s_string_data = X"00" OR
141
                                    fifo_full = '1' ELSE '1';
142
   s_valid_command      <= '1' WHEN start_command = '1' AND
143
                                    (command_id = "0011000" OR
144
                                     command_id = "0011110") ELSE '0';
145
   s_string_index       <= s_string_select_reg&s_string_cnt_reg;
146
 
147
--------------------------------------------------------------------------------
148
--- Here the processes are defined                                           ---
149
--------------------------------------------------------------------------------
150
   make_command_done : PROCESS( clock , s_push , s_string_data )
151
   BEGIN
152
      IF (clock'event AND (clock = '1')) THEN
153
        IF (s_push = '1' AND
154
            s_string_data = X"0A") THEN command_done <= '1';
155
                                   ELSE command_done <= '0';
156
        END IF;
157
      END IF;
158
   END PROCESS make_command_done;
159
 
160
   make_string_select_reg : PROCESS( clock , reset , s_valid_command ,
161
                                     command_id , n_usb_power , n_usb_charge ,
162
                                     n_bus_power , fpga_configured ,
163
                                     fpga_type , flash_empty )
164
   BEGIN
165
      IF (clock'event AND (clock = '1')) THEN
166
         IF (reset = '1') THEN s_string_select_reg <= (OTHERS => '0');
167
         ELSIF (s_valid_command = '1') THEN
168
            IF (command_id = "0011000") THEN
169
               s_string_select_reg <= "1"&flash_empty&n_usb_power&n_usb_charge&n_bus_power;
170
                                        ELSE
171
               s_string_select_reg <= "0"&fpga_configured&fpga_type;
172
            END IF;
173
         END IF;
174
      END IF;
175
   END PROCESS make_string_select_reg;
176
 
177
   make_string_cnt_reg : PROCESS( clock , reset , s_valid_command , s_push )
178
   BEGIN
179
      IF (clock'event AND (clock = '1')) THEN
180
         IF (reset = '1') THEN s_string_cnt_reg <= (OTHERS => '1');
181
         ELSIF (s_valid_command = '1') THEN s_string_cnt_reg <= (OTHERS => '0');
182
         ELSIF (s_push = '1') THEN
183
            s_string_cnt_reg <= unsigned(s_string_cnt_reg) + 1;
184
         END IF;
185
      END IF;
186
   END PROCESS make_string_cnt_reg;
187
 
188
--------------------------------------------------------------------------------
189
--- Here the string rom is defined                                           ---
190
--------------------------------------------------------------------------------
191
   string_rom : RAMB16_S9
192
      GENERIC MAP ( INIT_00 => X"36373647474630303031533343582033206E61747261705320786E696C6958B0",
193
                    INIT_01 => X"0000000000000000000000000000000A646572756769666E6F6320746F6E202C",
194
                    INIT_02 => X"36373647474630303531533343582033206E61747261705320786E696C6958B0",
195
                    INIT_03 => X"0000000000000000000000000000000A646572756769666E6F6320746F6E202C",
196
                    INIT_04 => X"36373647474630303032533343582033206E61747261705320786E696C6958B0",
197
                    INIT_05 => X"0000000000000000000000000000000A646572756769666E6F6320746F6E202C",
198
                    INIT_06 => X"36373647474630303034533343582033206E61747261705320786E696C6958B0",
199
                    INIT_07 => X"0000000000000000000000000000000A646572756769666E6F6320746F6E202C",
200
                    INIT_08 => X"36373647474630303035533343582033206E61747261705320786E696C6958B0",
201
                    INIT_09 => X"0000000000000000000000000000000A646572756769666E6F6320746F6E202C",
202
                    INIT_0A => X"41475046206E776F6E6B6E7520726F206465746E756F6D2041475046206F4EA5",
203
                    INIT_0B => X"00000000000000000000000000000000000000000000000000000A6570797420",
204
                    INIT_0C => X"41475046206E776F6E6B6E7520726F206465746E756F6D2041475046206F4EA5",
205
                    INIT_0D => X"00000000000000000000000000000000000000000000000000000A6570797420",
206
                    INIT_0E => X"41475046206E776F6E6B6E7520726F206465746E756F6D2041475046206F4EA5",
207
                    INIT_0F => X"00000000000000000000000000000000000000000000000000000A6570797420",
208
                    INIT_10 => X"36373647474630303031533343582033206E61747261705320786E696C6958A9",
209
                    INIT_11 => X"000000000000000000000000000000000000000000000A676E696E6E7572202C",
210
                    INIT_12 => X"36373647474630303531533343582033206E61747261705320786E696C6958A9",
211
                    INIT_13 => X"000000000000000000000000000000000000000000000A676E696E6E7572202C",
212
                    INIT_14 => X"36373647474630303032533343582033206E61747261705320786E696C6958A9",
213
                    INIT_15 => X"000000000000000000000000000000000000000000000A676E696E6E7572202C",
214
                    INIT_16 => X"36373647474630303034533343582033206E61747261705320786E696C6958A9",
215
                    INIT_17 => X"000000000000000000000000000000000000000000000A676E696E6E7572202C",
216
                    INIT_18 => X"36373647474630303035533343582033206E61747261705320786E696C6958A9",
217
                    INIT_19 => X"000000000000000000000000000000000000000000000A676E696E6E7572202C",
218
                    INIT_1A => X"41475046206E776F6E6B6E7520726F206465746E756F6D2041475046206F4EA5",
219
                    INIT_1B => X"00000000000000000000000000000000000000000000000000000A6570797420",
220
                    INIT_1C => X"41475046206E776F6E6B6E7520726F206465746E756F6D2041475046206F4EA5",
221
                    INIT_1D => X"00000000000000000000000000000000000000000000000000000A6570797420",
222
                    INIT_1E => X"41475046206E776F6E6B6E7520726F206465746E756F6D2041475046206F4EA5",
223
                    INIT_1F => X"00000000000000000000000000000000000000000000000000000A6570797420",
224
                    INIT_20 => X"626F727020676E697265646C6F73202C65746174532064656E696665646E55A4",
225
                    INIT_21 => X"0000000000000000000000000000000000000000000000000000000A3F6D656C",
226
                    INIT_22 => X"7265776F70202C6465696C7070757320425355203A6E69616D344F4B434547B9",
227
                    INIT_23 => X"0000000000000A64656D6D6172676F7270206873616C46202C53554220676E69",
228
                    INIT_24 => X"626F727020676E697265646C6F73202C65746174532064656E696665646E55A4",
229
                    INIT_25 => X"0000000000000000000000000000000000000000000000000000000A3F6D656C",
230
                    INIT_26 => X"6873616C46202C6465696C7070757320425355203A6E69616D344F4B434547AB",
231
                    INIT_27 => X"00000000000000000000000000000000000000000A64656D6D6172676F727020",
232
                    INIT_28 => X"6F70202C6465696C7070757320314F494E4547203A6E69616D344F4B434547BC",
233
                    INIT_29 => X"0000000A64656D6D6172676F7270206873616C46202C53554220676E69726577",
234
                    INIT_2A => X"626F727020676E697265646C6F73202C65746174532064656E696665646E55A4",
235
                    INIT_2B => X"0000000000000000000000000000000000000000000000000000000A3F6D656C",
236
                    INIT_2C => X"6C46202C6465696C7070757320314F494E4547203A6E69616D344F4B434547AE",
237
                    INIT_2D => X"00000000000000000000000000000000000A64656D6D6172676F727020687361",
238
                    INIT_2E => X"626F727020676E697265646C6F73202C65746174532064656E696665646E55A4",
239
                    INIT_2F => X"0000000000000000000000000000000000000000000000000000000A3F6D656C",
240
                    INIT_30 => X"626F727020676E697265646C6F73202C65746174532064656E696665646E55A4",
241
                    INIT_31 => X"0000000000000000000000000000000000000000000000000000000A3F6D656C",
242
                    INIT_32 => X"7265776F70202C6465696C7070757320425355203A6E69616D344F4B434547B4",
243
                    INIT_33 => X"00000000000000000000000A7974706D65206873616C46202C53554220676E69",
244
                    INIT_34 => X"626F727020676E697265646C6F73202C65746174532064656E696665646E55A4",
245
                    INIT_35 => X"0000000000000000000000000000000000000000000000000000000A3F6D656C",
246
                    INIT_36 => X"6873616C46202C6465696C7070757320425355203A6E69616D344F4B434547A6",
247
                    INIT_37 => X"000000000000000000000000000000000000000000000000000A7974706D6520",
248
                    INIT_38 => X"6F70202C6465696C7070757320314F494E4547203A6E69616D344F4B434547B7",
249
                    INIT_39 => X"00000000000000000A7974706D65206873616C46202C53554220676E69726577",
250
                    INIT_3A => X"626F727020676E697265646C6F73202C65746174532064656E696665646E55A4",
251
                    INIT_3B => X"0000000000000000000000000000000000000000000000000000000A3F6D656C",
252
                    INIT_3C => X"6C46202C6465696C7070757320314F494E4547203A6E69616D344F4B434547A9",
253
                    INIT_3D => X"000000000000000000000000000000000000000000000A7974706D6520687361",
254
                    INIT_3E => X"626F727020676E697265646C6F73202C65746174532064656E696665646E55A4",
255
                    INIT_3F => X"0000000000000000000000000000000000000000000000000000000A3F6D656C")
256
      PORT MAP ( DO   => s_string_data,
257
                 DOP  => OPEN,
258
                 ADDR => s_string_index,
259
                 DI   => X"00",
260
                 DIP  => "0",
261
                 EN   => '1',
262
                 WE   => '0',
263
                 CLK  => s_n_clock,
264
                 SSR  => '0' );
265
 
266
END xilinx;

powered by: WebSVN 2.1.0

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