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

Subversion Repositories hd63701

[/] [hd63701/] [trunk/] [HD63701_MCROM.v] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 thasega
/***************************************************************************
2
       This file is part of "HD63701V0 Compatible Processor Core".
3
****************************************************************************/
4
`include "HD63701_defs.i"
5
 
6
module HD63701_MCROM
7
(
8
        input                   CLK,
9
        input [5:0] PHASE,
10
        input [7:0] OPCODE,
11
 
12
        output `mcwidth mcode
13
);
14
 
15
`include "HD63701_MCODE.i"
16
 
17
reg [5:0] p;
18
always @( posedge CLK ) p <= PHASE;
19
 
20
wire `mcwidth mc0,mc1,mc2,mc3,mc4,mc5,mc6,mc7,mc8,mc9;
21
HD63701_MCROM_S0 r0(CLK,OPCODE,mc0);
22
HD63701_MCROM_S1 r1(CLK,OPCODE,mc1);
23
HD63701_MCROM_S2 r2(CLK,OPCODE,mc2);
24
HD63701_MCROM_S3 r3(CLK,OPCODE,mc3);
25
HD63701_MCROM_S4 r4(CLK,OPCODE,mc4);
26
HD63701_MCROM_S5 r5(CLK,OPCODE,mc5);
27
HD63701_MCROM_S6 r6(CLK,OPCODE,mc6);
28
HD63701_MCROM_S7 r7(CLK,OPCODE,mc7);
29
HD63701_MCROM_S8 r8(CLK,OPCODE,mc8);
30
HD63701_MCROM_S9 r9(CLK,OPCODE,mc9);
31
 
32
assign mcode =
33
                                (p==`phRST  ) ? {`mcLDV,  `vaRST,   `mcrn,`mcpN,`amE0,`pcN}:    //(Load Reset Vector)
34
 
35
                                (p==`phVECT ) ? {`mcLDN,`mcrM,`mcrn,`mcrU,`mcpN,`amE0,`pcN}:    //(Load VectorH)
36
                                (p==`phVEC1 ) ? {`mcLDN,`mcrM,`mcrn,`mcrV,`mcpN,`amE1,`pcN}:    //(Load VectorL)
37
                                (p==`phVEC2 ) ? {`mcLDN,`mcrT,`mcrn,`mcrP,`mcp0,`amPC,`pcN}:    //(Load to PC)
38
 
39
                                (p==`phEXEC ) ? mc0 :
40
                                (p==`phEXEC1) ? mc1 :
41
                                (p==`phEXEC2) ? mc2 :
42
                                (p==`phEXEC3) ? mc3 :
43
                                (p==`phEXEC4) ? mc4 :
44
                                (p==`phEXEC5) ? mc5 :
45
                                (p==`phEXEC6) ? mc6 :
46
                                (p==`phEXEC7) ? mc7 :
47
                                (p==`phEXEC8) ? mc8 :
48
                                (p==`phEXEC9) ? mc9 :
49
 
50
                                (p==`phINTR ) ? {`mcLDN,`mcrC,`mcrn,`mcrT,`mcpN,`amPC,`pcN}:    //(T=C)
51
                                (p==`phINTR1) ? {`mcPSH,`mcrP,`mcrn,`mcrM,`mcpN,`amSP,`pcN}:    //[PUSH PL]
52
                                (p==`phINTR2) ? {`mcPSH,`mcrP,`mcrn,`mcrN,`mcpN,`amSP,`pcN}:    //[PUSH PH]
53
                                (p==`phINTR3) ? {`mcPSH,`mcrX,`mcrn,`mcrM,`mcpN,`amSP,`pcN}:    //[PUSH XL]
54
                                (p==`phINTR4) ? {`mcPSH,`mcrX,`mcrn,`mcrN,`mcpN,`amSP,`pcN}:    //[PUSH XH]
55
                                (p==`phINTR5) ? {`mcPSH,`mcrA,`mcrn,`mcrM,`mcpN,`amSP,`pcN}:    //[PUSH A]
56
                                (p==`phINTR6) ? {`mcPSH,`mcrB,`mcrn,`mcrM,`mcpN,`amSP,`pcN}:    //[PUSH B]
57
                                (p==`phINTR7) ? {`mcPSH,`mcrT,`mcrn,`mcrM,`mcpN,`amSP,`pcN}:    //[PUSH T]
58
                                (p==`phINTR8) ? 0:
59
                                (p==`phINTR9) ? 0:
60
                                                                        `MC_HALT;
61
 
62
endmodule
63
 
64
module HD63701_MCROM_S0( input CLK, input [7:0] OPCODE, output reg `mcwidth mcode );
65
`include "HD63701_MCODE.i"
66
always @( posedge CLK ) mcode <= MCODE_S0(OPCODE);
67
endmodule
68
 
69
module HD63701_MCROM_S1( input CLK, input [7:0] OPCODE, output reg `mcwidth mcode );
70
`include "HD63701_MCODE.i"
71
always @( posedge CLK ) mcode <= MCODE_S1(OPCODE);
72
endmodule
73
 
74
module HD63701_MCROM_S2( input CLK, input [7:0] OPCODE, output reg `mcwidth mcode );
75
`include "HD63701_MCODE.i"
76
always @( posedge CLK ) mcode <= MCODE_S2(OPCODE);
77
endmodule
78
 
79
module HD63701_MCROM_S3( input CLK, input [7:0] OPCODE, output reg `mcwidth mcode );
80
`include "HD63701_MCODE.i"
81
always @( posedge CLK ) mcode <= MCODE_S3(OPCODE);
82
endmodule
83
 
84
module HD63701_MCROM_S4( input CLK, input [7:0] OPCODE, output reg `mcwidth mcode );
85
`include "HD63701_MCODE.i"
86
always @( posedge CLK ) mcode <= MCODE_S4(OPCODE);
87
endmodule
88
 
89
module HD63701_MCROM_S5( input CLK, input [7:0] OPCODE, output reg `mcwidth mcode );
90
`include "HD63701_MCODE.i"
91
always @( posedge CLK ) mcode <= MCODE_S5(OPCODE);
92
endmodule
93
 
94
module HD63701_MCROM_S6( input CLK, input [7:0] OPCODE, output reg `mcwidth mcode );
95
`include "HD63701_MCODE.i"
96
always @( posedge CLK ) mcode <= MCODE_S6(OPCODE);
97
endmodule
98
 
99
module HD63701_MCROM_S7( input CLK, input [7:0] OPCODE, output reg `mcwidth mcode );
100
`include "HD63701_MCODE.i"
101
always @( posedge CLK ) mcode <= MCODE_S7(OPCODE);
102
endmodule
103
 
104
module HD63701_MCROM_S8( input CLK, input [7:0] OPCODE, output reg `mcwidth mcode );
105
`include "HD63701_MCODE.i"
106
always @( posedge CLK ) mcode <= MCODE_S8(OPCODE);
107
endmodule
108
 
109
module HD63701_MCROM_S9( input CLK, input [7:0] OPCODE, output reg `mcwidth mcode );
110
`include "HD63701_MCODE.i"
111
always @( posedge CLK ) mcode <= MCODE_S9(OPCODE);
112
endmodule
113
 

powered by: WebSVN 2.1.0

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