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

Subversion Repositories tinyvliw8

[/] [tinyvliw8/] [trunk/] [src/] [vhdl/] [proc/] [vliwProc.vhd] - Blame information for rev 9

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 9 steckol
-------------------------------------------------------------------------------
2
--
3
-- Design:  tinyVLIW8 soft-core processor
4 2 steckol
-- Author:  Oliver Stecklina <stecklina@ihp-microelectronics.com>
5
-- Date:    24.10.2013 
6
-- File:    vliwProc.vhd
7 9 steckol
--
8
-------------------------------------------------------------------------------
9
--
10 2 steckol
-- Description : This unit is the VLIW processor core.
11 9 steckol
--
12
-------------------------------------------------------------------------------
13
--
14 2 steckol
--    Copyright (C) 2015 IHP GmbH, Frankfurt (Oder), Germany
15
--
16
-- This code is free software. It is licensed under the EUPL, Version 1.1
17
-- or - as soon they will be approved by the European Commission - subsequent
18
-- versions of the EUPL (the "License").
19
-- You may redistribute this code and/or modify it under the terms of this
20
-- License.
21
-- You may not use this work except in compliance with the License.
22
-- You may obtain a copy of the License at:
23
--
24
-- http://joinup.ec.europa.eu/software/page/eupl/licence-eupl
25
--
26
-- Unless required by applicable law or agreed to in writing, software
27
-- distributed under the License is distributed on an "AS IS" basis,
28
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
29
-- See the License for the specific language governing permissions and
30
-- limitations under the License.
31 9 steckol
--
32
-------------------------------------------------------------------------------
33 2 steckol
 
34 9 steckol
library ieee;
35
 
36 2 steckol
use ieee.std_logic_1164.all;
37
use ieee.std_logic_arith.all;
38
 
39
entity vliwProc is
40 9 steckol
        port (
41
                -- clock input
42
                clk           : in std_logic;
43
 
44
                -- instruction bus
45
                instMemAddr   : out std_logic_vector(10 downto 0);
46
                instMemDataIn : in  std_logic_vector(31 downto 0);
47
                instMemEn_n   : out std_logic;
48
 
49
                -- IO bus
50
                ioMemAddr    : out std_logic_vector(7 downto 0);
51
                ioMemDataOut : out std_logic_vector(7 downto 0);
52
                ioMemDataIn  : in  std_logic_vector(7 downto 0);
53
                ioMemWr_n    : out std_logic;
54
                ioMemEn_n    : out std_logic;
55
 
56
                -- IO bus
57
                dataMemAddr    : out std_logic_vector(7 downto 0);
58
                dataMemDataOut : out std_logic_vector(7 downto 0);
59
                dataMemDataIn  : in  std_logic_vector(7 downto 0);
60
                dataMemWr_n    : out std_logic;
61
                dataMemEn_n    : out std_logic;
62
 
63
                -- interrupt handling
64
                irqLine        : in  std_logic_vector(4 downto 0);
65
                irqLineAck     : out std_logic_vector(4 downto 0);
66
                -- irqEn          : out std_logic;
67
 
68
                -- process stall signals and stall acknowledgment
69
                stall_n      : in std_logic;
70
                stalled_n    : out std_logic;
71
 
72
                -- reset input
73
                rst_n        : in std_logic
74 2 steckol
        );
75
end vliwProc;
76
 
77 9 steckol
architecture behavior of vliwProc is
78
 
79
component vliwProc_instDecoder
80
        port (
81
                clk       : in std_logic;
82
 
83
                instData  : in  std_logic_vector(31 downto 0);
84
 
85
                ldstOpCode : out std_logic;
86
                ldstAs     : out std_logic_vector(1 downto 0);
87
                ldstDstReg : out std_logic_vector(2 downto 0);
88
                ldstSrc    : out std_logic_vector(7 downto 0);
89
                ldstEn_n   : out std_logic;
90
 
91
                aluOpCode  : out std_logic_vector(2 downto 0);
92
                aluAs      : out std_logic_vector(1 downto 0);
93
                aluDstReg  : out std_logic_vector(2 downto 0);
94
                aluSrc     : out std_logic_vector(7 downto 0);
95
                aluEn_n    : out std_logic;
96
 
97
                jmpAs      : out std_logic_vector(1 downto 0);
98
                jmpDstReg  : out std_logic_vector(10 downto 0);
99
                jmpEn_n    : out std_logic;
100
 
101
                esb       : out std_logic_vector(3 downto 0);
102
 
103
                stall_n   : in std_logic;
104
                stalled_n : out std_logic;
105
 
106
                rst_n     : in std_logic
107
        );
108
end component;
109
 
110 2 steckol
component vliwProc_statusReg
111 9 steckol
        port (
112
                state      : in std_logic_vector(3 downto 0);
113
 
114
                iretEn_n   : in std_logic;
115
                ioEn_n     : in std_logic;
116
                irqEn      : in std_logic;
117
                flagsEn_n  : in std_logic;
118
 
119
                flagsIn    : in std_logic_vector(1 downto 0);       -- carry | zero
120
 
121
                dataIn     : in  std_logic_vector(7 downto 0);
122
                dataOut    : out std_logic_vector(7 downto 0);
123
 
124
                rst_n      : in std_logic
125 2 steckol
        );
126 9 steckol
end component;
127
 
128
component vliwProc_pcReg
129
        port (
130
           addrOut    : out std_logic_vector(10 downto 0);
131
 
132
                state      : in std_logic_vector(3 downto 0);
133
                stalled_n  : in std_logic;
134
 
135
                ioAddr     : in std_logic_vector(1 downto 0);
136
 
137
                ioIn       : in std_logic_vector(7 downto 0);
138
                ioOut      : out std_logic_vector(7 downto 0);
139
                ioInEn_n   : in std_logic;
140
                ioInWr_n   : in std_logic;
141
 
142
                pcLoad_n   : out std_logic;
143
 
144
                jmpIn      : in std_logic_vector(10 downto 0);
145
                jmpInEn_n  : in std_logic;
146
 
147
                irq        : in std_logic;
148
                irqAddr    : in std_logic_vector(1 downto 0);
149
 
150
                rst_n      : in std_logic
151 2 steckol
        );
152 9 steckol
end component;
153
 
154 2 steckol
component vliwProc_regSet
155 9 steckol
        port (
156
                state  : in std_logic_vector(3 downto 0);
157 2 steckol
 
158 9 steckol
                reg0   : out std_logic_vector(7 downto 0);
159
                reg1   : out std_logic_vector(7 downto 0);
160
                reg2   : out std_logic_vector(7 downto 0);
161
                reg3   : out std_logic_vector(7 downto 0);
162
                reg4   : out std_logic_vector(7 downto 0);
163
                reg5   : out std_logic_vector(7 downto 0);
164
                reg6   : out std_logic_vector(7 downto 0);
165
                reg7   : out std_logic_vector(7 downto 0);
166
 
167
                irqEn  : in std_logic;
168
 
169 2 steckol
                aluDataIn  : in std_logic_vector(7 downto 0);
170
                aluRegSel  : in std_logic_vector(2 downto 0);
171
                aluRegEn_n : in std_logic;
172
 
173
                ldstDataIn  : in std_logic_vector(7 downto 0);
174
                ldstRegSel  : in std_logic_vector(2 downto 0);
175
                ldstRegEn_n : in std_logic;
176
 
177 9 steckol
                rst_n  : in std_logic
178 2 steckol
        );
179 9 steckol
end component;
180
 
181
component vliwProc_loadStore
182
        port (
183
                addr     : out std_logic_vector(7 downto 0);
184
                dataOut  : out std_logic_vector(7 downto 0);
185
 
186
                ioWr_n   : out std_logic;
187
                ioEn_n   : out std_logic;
188
                dataWr_n : out std_logic;
189
                dataEn_n : out std_logic;
190
 
191
                dataIn   : in std_logic_vector(7 downto 0);
192
                ioIn     : in std_logic_vector(7 downto 0);
193
 
194
                opCode   : in std_logic;
195
                as       : in std_logic_vector(1 downto 0);
196
                dstReg   : in std_logic_vector(2 downto 0);
197
                src      : in std_logic_vector(7 downto 0);
198
                cs_n     : in std_logic;
199
 
200
                state    : in std_logic_vector(3 downto 0);
201
 
202
                regOut  : out std_logic_vector(7 downto 0);
203
 
204
                reg0     : in std_logic_vector(7 downto 0);
205
                reg1     : in std_logic_vector(7 downto 0);
206
                reg2     : in std_logic_vector(7 downto 0);
207
                reg3     : in std_logic_vector(7 downto 0);
208
                reg4     : in std_logic_vector(7 downto 0);
209
                reg5     : in std_logic_vector(7 downto 0);
210
                reg6     : in std_logic_vector(7 downto 0);
211
                reg7     : in std_logic_vector(7 downto 0);
212
 
213
                regSel   : out std_logic_vector(2 downto 0);
214
                regEn_n  : out std_logic;
215
 
216
                rst_n    : in std_logic
217
        );
218
end component;
219
 
220 2 steckol
component vliwProc_jmpExec
221 9 steckol
        port (
222
                en_n      : in std_logic;
223
 
224
                esb       : in std_logic_vector(3 downto 0);
225
 
226
                dst       : in std_logic_vector(10 downto 0);
227
                as        : in std_logic_vector(1 downto 0);
228
 
229
                jmpDst    : out std_logic_vector(10 downto 0);
230
                jmpEn_n   : out std_logic;
231
 
232
                cz        : in std_logic_vector(1 downto 0);
233
 
234
                rst_n     : in std_logic
235
        );
236
end component;
237
 
238 2 steckol
component vliwProc_alu
239 9 steckol
        port (
240
                state      : in std_logic_vector(3 downto 0);
241
 
242
                enable_n   : in std_logic;
243
 
244
                opcode     : in std_logic_vector(2 downto 0);
245
                as         : in std_logic_vector(1 downto 0);
246
                dstRegIn   : in std_logic_vector(2 downto 0);
247
                dataIn     : in std_logic_vector(7 downto 0);
248
 
249
                reg0       : in std_logic_vector(7 downto 0);
250
                reg1       : in std_logic_vector(7 downto 0);
251
                reg2       : in std_logic_vector(7 downto 0);
252
                reg3       : in std_logic_vector(7 downto 0);
253
                reg4       : in std_logic_vector(7 downto 0);
254
                reg5       : in std_logic_vector(7 downto 0);
255
                reg6       : in std_logic_vector(7 downto 0);
256
                reg7       : in std_logic_vector(7 downto 0);
257
 
258
                cIn        : in  std_logic;
259
                cOut       : out std_logic;
260
                zOut       : out std_logic;
261
 
262
                dstRegEn_n : out std_logic;
263
                dstRegOut  : out std_logic_vector(2 downto 0);
264
                dataOut    : out std_logic_vector(7 downto 0);
265
 
266
                rst_n      : in  std_logic
267 2 steckol
        );
268 9 steckol
end component;
269
 
270 2 steckol
component vliwProc_irqCntl
271 9 steckol
        port (
272
                state      : in std_logic_vector(3 downto 0);
273
                stalled_n  : in std_logic;
274
 
275
                irqLineIn  : in  std_logic_vector(5 downto 0);
276
                irqLineOut : out std_logic_vector(5 downto 0);
277
                irqAck     : out std_logic;
278
 
279
                irqAddr    : out std_logic_vector(1 downto 0);
280
 
281
                ioDataIn   : in std_logic_vector(7 downto 0);
282
                ioDataOut  : out std_logic_vector(7 downto 0);
283
                ioInEn_n   : in std_logic;
284
                ioInWr_n   : in std_logic;
285
 
286
                enable     : in std_logic;
287
 
288
                -- reset input
289
                rst_n      : in std_logic
290 2 steckol
        );
291
end component;
292
 
293 9 steckol
        signal rst_n_s       : std_logic;
294
 
295
        signal stall_n_s     : std_logic;
296
        signal stalled_n_s   : std_logic;
297
 
298
        signal instAddr_s       : std_logic_vector(10 downto 0);
299
        signal instDataIn_s     : std_logic_vector(31 downto 0);
300
        signal pcReg_ioOut_s    : std_logic_vector(7 downto 0);
301
        signal pcReg_ioInEn_n_s : std_logic;
302
        signal pcReg_ioInWr_n_s : std_logic;
303
 
304
        signal dataAddr_s    : std_logic_vector(7 downto 0);
305
 
306
        signal ioDataIn_s    : std_logic_vector(7 downto 0);
307
        signal ioWr_n_s      : std_logic;
308
        signal ioEn_n_s      : std_logic;
309
 
310
        signal dataOut_s     : std_logic_vector(7 downto 0);
311
        signal dataIn_s      : std_logic_vector(7 downto 0);
312
        signal dataWr_n_s    : std_logic;
313
        signal dataEn_n_s    : std_logic;
314
 
315
        signal ldstOpCode_s : std_logic;
316
        signal ldstAs_s     : std_logic_vector(1 downto 0);
317
        signal ldstDstReg_s : std_logic_vector(2 downto 0);
318
        signal ldstSrc_s    : std_logic_vector(7 downto 0);
319
        signal ldstEn_n_s   : std_logic;
320
 
321
        signal aluOpCode_s  : std_logic_vector(2 downto 0);
322
        signal aluAs_s      : std_logic_vector(1 downto 0);
323
        signal aluDstReg_s  : std_logic_vector(2 downto 0);
324
        signal aluSrc_s     : std_logic_vector(7 downto 0);
325
        signal aluEn_n_s    : std_logic;
326
 
327
        signal jmpAs_s      : std_logic_vector(1 downto 0);
328
        signal jmpDstReg_s  : std_logic_vector(10 downto 0);
329
        signal jmpEn_n_s    : std_logic;
330
 
331
        signal state_s     : std_logic_vector(3 downto 0);
332
 
333
        signal reg0_s        : std_logic_vector(7 downto 0);
334
        signal reg1_s        : std_logic_vector(7 downto 0);
335
        signal reg2_s        : std_logic_vector(7 downto 0);
336
        signal reg3_s        : std_logic_vector(7 downto 0);
337
        signal reg4_s        : std_logic_vector(7 downto 0);
338
        signal reg5_s        : std_logic_vector(7 downto 0);
339
        signal reg6_s        : std_logic_vector(7 downto 0);
340
        signal reg7_s        : std_logic_vector(7 downto 0);
341
 
342
        signal ldStRegSel_s    : std_logic_vector(2 downto 0);
343
        signal ldStRegOut_s    : std_logic_vector(7 downto 0);
344
        signal ldStRegEn_n_s   : std_logic;
345
        signal ldstIoEnOut_n_s : std_logic;
346
        signal ldstIoWrOut_n_s : std_logic;
347
        signal ldstRst_n_s     : std_logic;
348
 
349
        signal aluRegEn_n_s  : std_logic;
350
        signal aluFlags_s    : std_logic_vector(1 downto 0);
351
        signal aluRegSel_s   : std_logic_vector(2 downto 0);
352
        signal aluRegOut_s   : std_logic_vector(7 downto 0);
353
 
354
        signal pcLoad_n_s    : std_logic;
355
 
356
        signal jmpOutEn_n_s  : std_logic;
357
        signal jmpAddr_s     : std_logic_vector(10 downto 0);
358
 
359
        signal irqAck_s       : std_logic;
360
        signal irqAddr_s      : std_logic_vector(1 downto 0);
361
        signal irqLine_s      : std_logic_vector(5 downto 0);
362
        signal irqLineAck_s   : std_logic_vector(5 downto 0);
363
        signal irq_ioOut_s    : std_logic_vector(7 downto 0);
364
        signal irq_ioInEn_n_s : std_logic;
365
        signal irq_ioInWr_n_s : std_logic;
366
 
367
        signal statusRegData_s   : std_logic_vector(7 downto 0);
368
        signal statusRegIoEn_n_s : std_logic;
369
 
370
        signal instMemEn_n_s : std_logic;
371
        signal instMemClk_s  : std_logic;
372
 
373
begin
374
 
375
        rst_n_s <= rst_n;
376
 
377
        stall_n_s <= stall_n and not(statusRegData_s(7));
378
        stalled_n <= stalled_n_s;
379
 
380
        instMemAddr   <= instAddr_s;
381
        instMemEn_n   <= instMemEn_n_s;
382
        instDataIn_s  <= instMemDataIn;
383
 
384
        -- irqEn <= statusRegData_s(0);
385
 
386
        instMemEn_n_s <= '1' when rst_n = '0' or state_s(3) = '1' or (stall_n_s = '0') else
387 2 steckol
                         '0';
388 9 steckol
 
389
        ------------------------------------------------------------------------------------------
390
        --
391 2 steckol
        -- register Set
392 9 steckol
        --
393
        ------------------------------------------------------------------------------------------
394
 
395 2 steckol
        vliwProc_regSet_i : vliwProc_regSet
396 9 steckol
        port map (
397
                state  => state_s,
398
 
399
                reg0   => reg0_s,
400
                reg1   => reg1_s,
401
                reg2   => reg2_s,
402
                reg3   => reg3_s,
403
                reg4   => reg4_s,
404
                reg5   => reg5_s,
405
                reg6   => reg6_s,
406
                reg7   => reg7_s,
407
 
408 2 steckol
                aluDataIn  => aluRegOut_s,
409
                aluRegSel  => aluRegSel_s,
410
                aluRegEn_n => aluRegEn_n_s,
411
 
412
                ldstDataIn  => ldStRegOut_s,
413
                ldstRegSel  => ldStRegSel_s,
414
                ldstRegEn_n => ldstRegEn_n_s,
415
 
416 9 steckol
                irqEn  => statusRegData_s(0),
417 2 steckol
 
418 9 steckol
                rst_n  => rst_n_s
419
        );
420 2 steckol
 
421 9 steckol
        statusRegIoEn_n_s <= '0' when state_s(3) = '1' and ioWr_n_s = '0' and ioEn_n_s = '0' and dataAddr_s(7 downto 0) = "00000000" else
422
                             '1';
423
 
424 2 steckol
        vliwProc_statusReg_i : vliwProc_statusReg
425 9 steckol
        port map (
426
                state    => state_s,
427 2 steckol
 
428 9 steckol
                iretEn_n  => pcLoad_n_s,
429
                ioEn_n    => statusRegIoEn_n_s,
430
                irqEn     => irqAck_s,
431
                flagsEn_n => aluRegEn_n_s,
432
 
433
                flagsIn  => aluFlags_s,
434
 
435
                dataIn   => dataOut_s,
436
                dataOut  => statusRegData_s,
437
 
438
                rst_n    => rst_n_s
439
        );
440
 
441
        pcReg_ioInEn_n_s <= '0' when ioEn_n_s = '0' and dataAddr_s(7 downto 2) = "000100" else
442
                            '1';
443
        pcReg_ioInWr_n_s <= '0' when ioWr_n_s = '0' and pcReg_ioInEn_n_s = '0' else
444
                            '1';
445
 
446
        vliwProc_pcReg_i : vliwProc_pcReg
447
        port map (
448
                addrOut   => instAddr_s,
449
 
450
                state     => state_s,
451
                stalled_n => stalled_n_s,
452
 
453
                ioAddr    => dataAddr_s(1 downto 0),
454
                ioIn      => dataOut_s,
455
                ioOut     => pcReg_ioOut_s,
456
                ioInEn_n  => pcReg_ioInEn_n_s,
457
                ioInWr_n  => pcReg_ioInWr_n_s,
458
 
459
                pcLoad_n  => pcLoad_n_s,
460
 
461
                jmpIn     => jmpAddr_s,
462
                jmpInEn_n => jmpOutEn_n_s,
463
 
464
                irq       => irqAck_s,
465
                irqAddr   => irqAddr_s,
466
 
467
                rst_n     => rst_n_s
468
        );
469
 
470 2 steckol
        vliwProc_jmpExec_i : vliwProc_jmpExec
471 9 steckol
        port map (
472
                en_n      => jmpEn_n_s,
473
 
474
                esb       => state_s,
475
 
476
                dst       => jmpDstReg_s,
477
                as        => jmpAs_s,
478 2 steckol
 
479 9 steckol
                jmpDst    => jmpAddr_s,
480
                jmpEn_n   => jmpOutEn_n_s,
481
 
482
                cz        => statusRegData_s(5 downto 4),
483
 
484
                rst_n     => rst_n_s
485
        );
486
 
487
        vliwProc_instDecoder_i : vliwProc_instDecoder
488
        port map (
489
                clk        => clk,
490
                esb        => state_s,
491
 
492
                instData   => instDataIn_s,
493
 
494
                ldstOpCode => ldstOpCode_s,
495
                ldstAs     => ldstAs_s,
496
                ldstDstReg => ldstDstReg_s,
497
                ldstSrc    => ldstSrc_s,
498
                ldstEn_n   => ldstEn_n_s,
499
 
500
                aluOpCode  => aluOpCode_s,
501
                aluAs      => aluAs_s,
502
                aluDstReg  => aluDstReg_s,
503
                aluSrc     => aluSrc_s,
504
                aluEn_n    => aluEn_n_s,
505
 
506
                jmpAs      => jmpAs_s,
507
                jmpDstReg  => jmpDstReg_s,
508
                jmpEn_n    => jmpEn_n_s,
509
 
510
                stall_n    => stall_n_s,
511
                stalled_n  => stalled_n_s,
512
 
513
                rst_n      => rst_n_s
514
        );
515
 
516
        ioMemAddr    <= dataAddr_s;
517
        ioMemDataOut <= dataOut_s;
518
 
519
        ioDataIn_s   <= statusRegData_s when dataAddr_s(7 downto 0) = "00000000" else
520
                        irq_ioOut_s     when irq_ioInEn_n_s = '0' else
521
                        pcReg_ioOut_s   when pcReg_ioInEn_n_s = '0'  else
522
                        ioMemDataIn;
523
 
524
        ioMemWr_n    <= ioWr_n_s when state_s(3) = '1' else
525
                        '1';
526
        ioMemEn_n    <= ioEn_n_s;
527
 
528
        dataMemAddr    <= dataAddr_s;
529
        dataMemDataOut <= dataOut_s;
530
        dataIn_s       <= dataMemDataIn;
531
        dataMemWr_n    <= dataWr_n_s when state_s(3) = '1' else
532
                          '1';
533
        dataMemEn_n    <= dataEn_n_s;
534
 
535
        ioWr_n_s <= ldstIoWrOut_n_s when rst_n_s = '1' and stalled_n_s = '1' else
536
                    '1';
537
        ioEn_n_s <= ldstIoEnOut_n_s when rst_n_s = '1' and stalled_n_s = '1' else
538
                    '1';
539
 
540 2 steckol
        ldstRst_n_s <= rst_n_s and stalled_n_s;
541
 
542 9 steckol
        vliwProc_loadStore_i : vliwProc_loadStore
543 2 steckol
        port map (
544 9 steckol
                addr     => dataAddr_s,
545
                dataIn   => dataIn_s,
546
                ioIn     => ioDataIn_s,
547
                dataOut  => dataOut_s,
548
 
549
                ioWr_n   => ldstIoWrOut_n_s,
550
                ioEn_n   => ldstIoEnOut_n_s,
551
                dataWr_n => dataWr_n_s,
552
                dataEn_n => dataEn_n_s,
553
 
554
                opCode   => ldstOpCode_s,
555
                as       => ldstAs_s,
556
                dstReg   => ldstDstReg_s,
557
                src      => ldstSrc_s,
558
 
559
                cs_n     => ldstEn_n_s,
560
 
561
                state    => state_s,
562
 
563
                regOut   => ldStRegOut_s,
564
 
565
                reg0     => reg0_s,
566
                reg1     => reg1_s,
567
                reg2     => reg2_s,
568
                reg3     => reg3_s,
569
                reg4     => reg4_s,
570
                reg5     => reg5_s,
571
                reg6     => reg6_s,
572
                reg7     => reg7_s,
573
 
574
                regSel   => ldStRegSel_s,
575
                regEn_n  => ldStRegEn_n_s,
576
 
577
                rst_n    => ldstRst_n_s
578
        );
579
 
580
        vliwProc_alu_i : vliwProc_alu
581
        port map (
582
                state      => state_s,
583
 
584
                enable_n   => aluEn_n_s,
585
 
586
                opcode     => aluOpCode_s,
587
                as         => aluAs_s,
588
                dstRegIn   => aluDstReg_s,
589
                dataIn     => aluSrc_s,
590
 
591
                reg0       => reg0_s,
592
                reg1       => reg1_s,
593
                reg2       => reg2_s,
594
                reg3       => reg3_s,
595
                reg4       => reg4_s,
596
                reg5       => reg5_s,
597
                reg6       => reg6_s,
598
                reg7       => reg7_s,
599
 
600
                cIn        => statusRegData_s(5),
601
                cOut       => aluFlags_s(1),
602
                zOut       => aluFlags_s(0),
603
 
604
                dstRegEn_n => aluRegEn_n_s,
605
                dstRegOut  => aluRegSel_s,
606
                dataOut    => aluRegOut_s,
607
 
608
                rst_n      => rst_n_s
609
        );
610
 
611
        ------------------------------------------------------------------------------------------
612
        --
613
        --   Interrupt handler
614
        --
615
        ------------------------------------------------------------------------------------------
616
 
617
        irqLine_s <= '0' & irqLine;
618
        irqLineAck <= irqLineAck_s(4 downto 0);
619
 
620
        irq_ioInEn_n_s <= '0' when ioEn_n_s = '0' and dataAddr_s(7 downto 0) = "00000001" else
621
                          '1';
622
        irq_ioInWr_n_s <= '0' when ioWr_n_s = '0' and irq_ioInEn_n_s = '0' else
623
                          '1';
624
 
625
 
626 2 steckol
        vliwProc_irqCntl_i : vliwProc_irqCntl
627 9 steckol
        port map (
628
                state      => state_s,
629
                stalled_n  => stalled_n_s,
630
 
631
                irqLineIn  => irqLine_s,
632
                irqLineOut => irqLineAck_s,
633
                irqAck     => irqAck_s,
634
 
635
                irqAddr    => irqAddr_s,
636
 
637
                ioDataIn   => dataOut_s,
638
                ioDataOut  => irq_ioOut_s,
639
                ioInEn_n   => irq_ioInEn_n_s,
640
                ioInWr_n   => irq_ioInWr_n_s,
641
 
642
                enable     => statusRegData_s(3),
643
 
644
                rst_n      => rst_n_s
645 2 steckol
        );
646 9 steckol
 
647
end behavior;

powered by: WebSVN 2.1.0

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