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

Subversion Repositories t48

[/] [t48/] [tags/] [rel_0_4_beta/] [rtl/] [vhdl/] [t48_comp_pack-p.vhd] - Blame information for rev 24

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

Line No. Rev Author Line
1 4 arniml
-------------------------------------------------------------------------------
2
--
3 24 arniml
-- $Id: t48_comp_pack-p.vhd,v 1.2 2004-03-28 13:13:20 arniml Exp $
4 4 arniml
--
5
-- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
6
--
7
-- All rights reserved
8
--
9
-------------------------------------------------------------------------------
10
 
11
library ieee;
12
use ieee.std_logic_1164.all;
13
 
14
use work.alu_pack.alu_op_t;
15
use work.cond_branch_pack.branch_conditions_t;
16
use work.cond_branch_pack.comp_value_t;
17
use work.decoder_pack.mnemonic_t;
18
use work.dmem_ctrl_pack.dmem_addr_ident_t;
19
use work.pmem_ctrl_pack.pmem_addr_ident_t;
20
use work.t48_pack.dmem_addr_t;
21
use work.t48_pack.pmem_addr_t;
22
use work.t48_pack.mstate_t;
23
use work.t48_pack.word_t;
24
use work.t48_pack.nibble_t;
25
 
26
package t48_comp_pack is
27
 
28
  component alu
29
    port (
30
      clk_i              : in  std_logic;
31
      res_i              : in  std_logic;
32
      en_clk_i           : in  boolean;
33
      data_i             : in  word_t;
34
      data_o             : out word_t;
35
      write_accu_i       : in  boolean;
36
      write_shadow_i     : in  boolean;
37
      write_temp_reg_i   : in  boolean;
38
      read_alu_i         : in  boolean;
39
      carry_i            : in  std_logic;
40
      carry_o            : out std_logic;
41
      aux_carry_i        : in  std_logic;
42
      aux_carry_o        : out std_logic;
43
      alu_op_i           : in  alu_op_t;
44
      use_carry_i        : in  boolean
45
    );
46
  end component;
47
 
48
  component bus_mux
49
    port (
50
      alu_data_i : in  word_t;
51
      bus_data_i : in  word_t;
52
      dec_data_i : in  word_t;
53
      dm_data_i  : in  word_t;
54
      pm_data_i  : in  word_t;
55
      p1_data_i  : in  word_t;
56
      p2_data_i  : in  word_t;
57
      psw_data_i : in  word_t;
58
      tim_data_i : in  word_t;
59
      data_o     : out word_t
60
    );
61
  end component;
62
 
63
  component clock_ctrl
64
    generic (
65
      xtal_div_3_g   : integer := 1
66
    );
67
    port (
68
      clk_i          : in  std_logic;
69
      xtal_i         : in  std_logic;
70
      res_i          : in  std_logic;
71
      en_clk_i       : in  boolean;
72
      xtal3_o        : out boolean;
73
      multi_cycle_i  : in  boolean;
74
      assert_psen_i  : in  boolean;
75
      assert_prog_i  : in  boolean;
76
      assert_rd_i    : in  boolean;
77
      assert_wr_i    : in  boolean;
78
      mstate_o       : out mstate_t;
79
      second_cycle_o : out boolean;
80
      ale_o          : out boolean;
81
      psen_o         : out boolean;
82
      prog_o         : out boolean;
83
      rd_o           : out boolean;
84
      wr_o           : out boolean
85
    );
86
  end component;
87
 
88
  component cond_branch
89
    port (
90
      clk_i          : in  std_logic;
91
      res_i          : in  std_logic;
92
      en_clk_i       : in  boolean;
93
      compute_take_i : in  boolean;
94
      branch_cond_i  : in  branch_conditions_t;
95
      take_branch_o  : out boolean;
96
      accu_i         : in  word_t;
97
      t0_i           : in  std_logic;
98
      t1_i           : in  std_logic;
99
      int_n_i        : in  std_logic;
100
      f0_i           : in  std_logic;
101
      f1_i           : in  std_logic;
102
      tf_i           : in  std_logic;
103
      carry_i        : in  std_logic;
104
      comp_value_i   : in  comp_value_t
105
    );
106
  end component;
107
 
108
  component db_bus
109
    port (
110
      clk_i        : in  std_logic;
111
      res_i        : in  std_logic;
112
      en_clk_i     : in  boolean;
113
      ea_i         : in  std_logic;
114
      data_i       : in  word_t;
115
      data_o       : out word_t;
116
      write_bus_i  : in  boolean;
117
      read_bus_i   : in  boolean;
118
      output_pcl_i : in  boolean;
119
      bidir_bus_i  : in  boolean;
120
      pcl_i        : in  word_t;
121
      db_i         : in  word_t;
122
      db_o         : out word_t;
123
      db_dir_o     : out std_logic
124
    );
125
  end component;
126
 
127
  component decoder
128
    generic (
129
      register_mnemonic_g   : integer := 1
130
    );
131
    port (
132
      clk_i                  : in  std_logic;
133
      res_i                  : in  std_logic;
134
      en_clk_i               : in  boolean;
135
      ea_i                   : in  std_logic;
136
      ale_i                  : in  boolean;
137
      int_n_i                : in  std_logic;
138
      t0_dir_o               : out std_logic;
139
      data_i                 : in  word_t;
140
      data_o                 : out word_t;
141
      alu_write_accu_o       : out boolean;
142
      alu_write_shadow_o     : out boolean;
143
      alu_write_temp_reg_o   : out boolean;
144
      alu_read_alu_o         : out boolean;
145
      bus_write_bus_o        : out boolean;
146
      bus_read_bus_o         : out boolean;
147
      dm_write_dmem_addr_o   : out boolean;
148
      dm_write_dmem_o        : out boolean;
149
      dm_read_dmem_o         : out boolean;
150
      p1_write_p1_o          : out boolean;
151
      p1_read_p1_o           : out boolean;
152
      p2_write_p2_o          : out boolean;
153
      p2_write_exp_o         : out boolean;
154
      p2_read_p2_o           : out boolean;
155
      pm_write_pcl_o         : out boolean;
156
      pm_read_pcl_o          : out boolean;
157
      pm_write_pch_o         : out boolean;
158
      pm_read_pch_o          : out boolean;
159
      pm_read_pmem_o         : out boolean;
160
      psw_read_psw_o         : out boolean;
161
      psw_read_sp_o          : out boolean;
162
      psw_write_psw_o        : out boolean;
163
      psw_write_sp_o         : out boolean;
164
      alu_carry_i            : in  std_logic;
165
      alu_aux_carry_i        : in  std_logic;
166
      alu_op_o               : out alu_op_t;
167
      alu_use_carry_o        : out boolean;
168
      bus_output_pcl_o       : out boolean;
169
      bus_bidir_bus_o        : out boolean;
170
      clk_multi_cycle_o      : out boolean;
171
      clk_assert_psen_o      : out boolean;
172
      clk_assert_prog_o      : out boolean;
173
      clk_assert_rd_o        : out boolean;
174
      clk_assert_wr_o        : out boolean;
175
      clk_mstate_i           : in  mstate_t;
176
      clk_second_cycle_i     : in  boolean;
177
      cnd_compute_take_o     : out boolean;
178
      cnd_branch_cond_o      : out branch_conditions_t;
179
      cnd_take_branch_i      : in  boolean;
180
      cnd_comp_value_o       : out comp_value_t;
181
      cnd_f1_o               : out std_logic;
182
      cnd_tf_o               : out std_logic;
183
      dm_addr_type_o         : out dmem_addr_ident_t;
184
      tim_read_timer_o       : out boolean;
185
      tim_write_timer_o      : out boolean;
186
      tim_start_t_o          : out boolean;
187
      tim_start_cnt_o        : out boolean;
188
      tim_stop_tcnt_o        : out boolean;
189
      p1_read_reg_o          : out boolean;
190
      p2_read_reg_o          : out boolean;
191 24 arniml
      p2_read_exp_o          : out boolean;
192 4 arniml
      p2_output_pch_o        : out boolean;
193
      p2_output_exp_o        : out boolean;
194
      pm_inc_pc_o            : out boolean;
195
      pm_write_pmem_addr_o   : out boolean;
196
      pm_addr_type_o         : out pmem_addr_ident_t;
197
      psw_special_data_o     : out std_logic;
198
      psw_carry_i            : in  std_logic;
199
      psw_f0_i               : in  std_logic;
200
      psw_inc_stackp_o       : out boolean;
201
      psw_dec_stackp_o       : out boolean;
202
      psw_write_carry_o      : out boolean;
203
      psw_write_aux_carry_o  : out boolean;
204
      psw_write_f0_o         : out boolean;
205
      psw_write_bs_o         : out boolean;
206
      tim_overflow_i         : in  boolean
207
    );
208
  end component;
209
 
210
  component dmem_ctrl
211
    port (
212
      clk_i             : in  std_logic;
213
      res_i             : in  std_logic;
214
      en_clk_i          : in  boolean;
215
      data_i            : in  word_t;
216
      write_dmem_addr_i : in  boolean;
217
      write_dmem_i      : in  boolean;
218
      read_dmem_i       : in  boolean;
219
      addr_type_i       : in  dmem_addr_ident_t;
220
      bank_select_i     : in  std_logic;
221
      data_o            : out word_t;
222
      dmem_data_i       : in  word_t;
223
      dmem_addr_o       : out dmem_addr_t;
224
      dmem_we_o         : out std_logic;
225
      dmem_data_o       : out word_t
226
    );
227
  end component;
228
 
229
  component int
230
    port (
231
      clk_i           : in  std_logic;
232
      res_i           : in  std_logic;
233
      en_clk_i        : in  boolean;
234
      clk_mstate_i    : in  mstate_t;
235
      jtf_executed_i  : in  boolean;
236
      tim_overflow_i  : in  boolean;
237
      tf_o            : out std_logic;
238
      en_tcnti_i      : in  boolean;
239
      dis_tcnti_i     : in  boolean;
240
      int_n_i         : in  std_logic;
241
      ale_i           : in  boolean;
242
      last_cycle_i    : in  boolean;
243
      en_i_i          : in  boolean;
244
      dis_i_i         : in  boolean;
245
      ext_int_o       : out boolean;
246
      tim_int_o       : out boolean;
247
      retr_executed_i : in  boolean;
248
      int_executed_i  : in  boolean;
249
      int_pending_o   : out boolean
250
    );
251
  end component;
252
 
253
  component opc_table
254
    port (
255
      opcode_i      : in  word_t;
256
      multi_cycle_o : out std_logic;
257
      mnemonic_o    : out mnemonic_t
258
    );
259
  end component;
260
 
261
  component opc_decoder
262
    generic (
263
      register_mnemonic_g : integer := 1
264
    );
265
    port (
266
      clk_i         : in  std_logic;
267
      res_i         : in  std_logic;
268
      en_clk_i      : in  boolean;
269
      data_i        : in  word_t;
270
      read_bus_i    : in  boolean;
271
      inj_int_i     : in  boolean;
272
      opcode_o      : out word_t;
273
      mnemonic_o    : out mnemonic_t;
274
      multi_cycle_o : out boolean
275
    );
276
  end component;
277
 
278
  component timer
279
    generic (
280
      sample_t1_state_g : integer := 4
281
    );
282
    port (
283
      clk_i         : in  std_logic;
284
      res_i         : in  std_logic;
285
      en_clk_i      : in  boolean;
286
      t1_i          : in  std_logic;
287
      clk_mstate_i  : in  mstate_t;
288
      data_i        : in  word_t;
289
      data_o        : out word_t;
290
      read_timer_i  : in  boolean;
291
      write_timer_i : in  boolean;
292
      start_t_i     : in  boolean;
293
      start_cnt_i   : in  boolean;
294
      stop_tcnt_i   : in  boolean;
295
      overflow_o    : out std_logic
296
    );
297
  end component;
298
 
299
  component p1
300
    port (
301
      clk_i      : in  std_logic;
302
      res_i      : in  std_logic;
303
      en_clk_i   : in  boolean;
304
      data_i     : in  word_t;
305
      data_o     : out word_t;
306
      write_p1_i : in  boolean;
307
      read_p1_i  : in  boolean;
308
      read_reg_i : in  boolean;
309
      p1_i       : in  word_t;
310
      p1_o       : out word_t;
311
      p1_limp_o  : out std_logic
312
    );
313
  end component;
314
 
315
  component p2
316
    port (
317
      clk_i        : in  std_logic;
318
      res_i        : in  std_logic;
319
      en_clk_i     : in  boolean;
320
      data_i       : in  word_t;
321
      data_o       : out word_t;
322
      write_p2_i   : in  boolean;
323
      write_exp_i  : in  boolean;
324
      read_p2_i    : in  boolean;
325
      read_reg_i   : in  boolean;
326 24 arniml
      read_exp_i   : in  boolean;
327 4 arniml
      output_pch_i : in  boolean;
328
      output_exp_i : in  boolean;
329
      pch_i        : in  nibble_t;
330
      p2_i         : in  word_t;
331
      p2_o         : out word_t;
332
      p2_limp_o    : out std_logic
333
    );
334
  end component;
335
 
336
  component pmem_ctrl
337
    port (
338
      clk_i             : in  std_logic;
339
      res_i             : in  std_logic;
340
      en_clk_i          : in  boolean;
341
      data_i            : in  word_t;
342
      data_o            : out word_t;
343
      write_pcl_i       : in  boolean;
344
      read_pcl_i        : in  boolean;
345
      write_pch_i       : in  boolean;
346
      read_pch_i        : in  boolean;
347
      inc_pc_i          : in  boolean;
348
      write_pmem_addr_i : in  boolean;
349
      addr_type_i       : in  pmem_addr_ident_t;
350
      read_pmem_i       : in  boolean;
351
      pmem_addr_o       : out pmem_addr_t;
352
      pmem_data_i       : in  word_t
353
    );
354
  end component;
355
 
356
  component psw
357
    port (
358
      clk_i              : in  std_logic;
359
      res_i              : in  std_logic;
360
      en_clk_i           : in  boolean;
361
      data_i             : in  word_t;
362
      data_o             : out word_t;
363
      read_psw_i         : in  boolean;
364
      read_sp_i          : in  boolean;
365
      write_psw_i        : in  boolean;
366
      write_sp_i         : in  boolean;
367
      special_data_i     : in  std_logic;
368
      inc_stackp_i       : in  boolean;
369
      dec_stackp_i       : in  boolean;
370
      write_carry_i      : in  boolean;
371
      write_aux_carry_i  : in  boolean;
372
      write_f0_i         : in  boolean;
373
      write_bs_i         : in  boolean;
374
      carry_o            : out std_logic;
375
      aux_carry_o        : out std_logic;
376
      f0_o               : out std_logic;
377
      bs_o               : out std_logic
378
    );
379
  end component;
380
 
381
end t48_comp_pack;

powered by: WebSVN 2.1.0

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