OpenCores
URL https://opencores.org/ocsvn/a-z80/a-z80/trunk

Subversion Repositories a-z80

[/] [a-z80/] [trunk/] [cpu/] [alu/] [alu_control.v] - Blame information for rev 3

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 3 gdevic
// Copyright (C) 1991-2013 Altera Corporation
2
// Your use of Altera Corporation's design tools, logic functions 
3
// and other software and tools, and its AMPP partner logic 
4
// functions, and any output files from any of the foregoing 
5
// (including device programming or simulation files), and any 
6
// associated documentation or information are expressly subject 
7
// to the terms and conditions of the Altera Program License 
8
// Subscription Agreement, Altera MegaCore Function License 
9
// Agreement, or other applicable license agreement, including, 
10
// without limitation, that your use is for the sole purpose of 
11
// programming logic devices manufactured by Altera and sold by 
12
// Altera or its authorized distributors.  Please refer to the 
13
// applicable agreement for further details.
14
 
15
// PROGRAM              "Quartus II 64-Bit"
16
// VERSION              "Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition"
17
// CREATED              "Tue Oct 21 20:41:52 2014"
18
 
19
module alu_control(
20
        alu_shift_db0,
21
        alu_shift_db7,
22
        ctl_shift_en,
23
        alu_low_gt_9,
24
        alu_high_gt_9,
25
        alu_high_eq_9,
26
        ctl_daa_oe,
27
        ctl_alu_op_low,
28
        alu_parity_out,
29
        flags_cf,
30
        flags_zf,
31
        flags_pf,
32
        flags_sf,
33
        ctl_cond_short,
34
        alu_vf_out,
35
        iff2,
36
        ctl_alu_core_hf,
37
        ctl_eval_cond,
38
        repeat_en,
39
        flags_cf_latch,
40
        flags_hf2,
41
        flags_hf,
42
        ctl_66_oe,
43
        clk,
44
        ctl_pf_sel,
45
        op543,
46
        alu_shift_in,
47
        alu_shift_right,
48
        alu_shift_left,
49
        shift_cf_out,
50
        alu_parity_in,
51
        flags_cond_true,
52
        daa_cf_out,
53
        pf_sel,
54
        alu_op_low,
55
        alu_core_cf_in,
56
        db
57
);
58
 
59
 
60
input wire      alu_shift_db0;
61
input wire      alu_shift_db7;
62
input wire      ctl_shift_en;
63
input wire      alu_low_gt_9;
64
input wire      alu_high_gt_9;
65
input wire      alu_high_eq_9;
66
input wire      ctl_daa_oe;
67
input wire      ctl_alu_op_low;
68
input wire      alu_parity_out;
69
input wire      flags_cf;
70
input wire      flags_zf;
71
input wire      flags_pf;
72
input wire      flags_sf;
73
input wire      ctl_cond_short;
74
input wire      alu_vf_out;
75
input wire      iff2;
76
input wire      ctl_alu_core_hf;
77
input wire      ctl_eval_cond;
78
input wire      repeat_en;
79
input wire      flags_cf_latch;
80
input wire      flags_hf2;
81
input wire      flags_hf;
82
input wire      ctl_66_oe;
83
input wire      clk;
84
input wire      [1:0] ctl_pf_sel;
85
input wire      [2:0] op543;
86
output wire     alu_shift_in;
87
output wire     alu_shift_right;
88
output wire     alu_shift_left;
89
output wire     shift_cf_out;
90
output wire     alu_parity_in;
91
output reg      flags_cond_true;
92
output wire     daa_cf_out;
93
output wire     pf_sel;
94
output wire     alu_op_low;
95
output wire     alu_core_cf_in;
96
output wire     [7:0] db;
97
 
98
wire    condition;
99
wire    [7:0] out;
100
wire    [1:0] sel;
101
wire    SYNTHESIZED_WIRE_0;
102
wire    SYNTHESIZED_WIRE_1;
103
wire    SYNTHESIZED_WIRE_2;
104
reg     DFFE_latch_pf_tmp;
105
wire    SYNTHESIZED_WIRE_20;
106
wire    SYNTHESIZED_WIRE_21;
107
wire    SYNTHESIZED_WIRE_7;
108
wire    SYNTHESIZED_WIRE_8;
109
wire    SYNTHESIZED_WIRE_9;
110
wire    SYNTHESIZED_WIRE_10;
111
wire    SYNTHESIZED_WIRE_11;
112
wire    SYNTHESIZED_WIRE_12;
113
wire    SYNTHESIZED_WIRE_13;
114
wire    SYNTHESIZED_WIRE_14;
115
wire    SYNTHESIZED_WIRE_15;
116
wire    SYNTHESIZED_WIRE_16;
117
wire    SYNTHESIZED_WIRE_22;
118
wire    SYNTHESIZED_WIRE_18;
119
 
120
assign  alu_op_low = ctl_alu_op_low;
121
assign  daa_cf_out = SYNTHESIZED_WIRE_21;
122
assign  SYNTHESIZED_WIRE_22 = 0;
123
assign  SYNTHESIZED_WIRE_18 = 1;
124
 
125
 
126
 
127
assign  condition = SYNTHESIZED_WIRE_0 ^ SYNTHESIZED_WIRE_1;
128
 
129
 
130
 
131
assign  db[7] = SYNTHESIZED_WIRE_2 ? out[7] : 1'bz;
132
assign  db[6] = SYNTHESIZED_WIRE_2 ? out[6] : 1'bz;
133
assign  db[5] = SYNTHESIZED_WIRE_2 ? out[5] : 1'bz;
134
assign  db[4] = SYNTHESIZED_WIRE_2 ? out[4] : 1'bz;
135
assign  db[3] = SYNTHESIZED_WIRE_2 ? out[3] : 1'bz;
136
assign  db[2] = SYNTHESIZED_WIRE_2 ? out[2] : 1'bz;
137
assign  db[1] = SYNTHESIZED_WIRE_2 ? out[1] : 1'bz;
138
assign  db[0] = SYNTHESIZED_WIRE_2 ? out[0] : 1'bz;
139
 
140
assign  alu_shift_right = ctl_shift_en & op543[0];
141
 
142
assign  alu_parity_in = ctl_alu_op_low | DFFE_latch_pf_tmp;
143
 
144
assign  SYNTHESIZED_WIRE_2 = ctl_66_oe | ctl_daa_oe;
145
 
146
assign  sel[0] = op543[1];
147
 
148
 
149
assign  out[1] = SYNTHESIZED_WIRE_20;
150
 
151
 
152
assign  out[2] = SYNTHESIZED_WIRE_20;
153
 
154
 
155
assign  out[5] = SYNTHESIZED_WIRE_21;
156
 
157
 
158
assign  out[6] = SYNTHESIZED_WIRE_21;
159
 
160
 
161
assign  alu_shift_left = ctl_shift_en & SYNTHESIZED_WIRE_7;
162
 
163
assign  SYNTHESIZED_WIRE_21 = ctl_66_oe | alu_high_gt_9 | flags_cf_latch | SYNTHESIZED_WIRE_8;
164
 
165
assign  SYNTHESIZED_WIRE_9 = flags_hf2 | alu_low_gt_9;
166
 
167
assign  SYNTHESIZED_WIRE_8 = alu_low_gt_9 & alu_high_eq_9;
168
 
169
assign  SYNTHESIZED_WIRE_20 = SYNTHESIZED_WIRE_9 | ctl_66_oe;
170
 
171
assign  SYNTHESIZED_WIRE_0 =  ~op543[0];
172
 
173
assign  sel[1] = op543[2] & SYNTHESIZED_WIRE_10;
174
 
175
assign  SYNTHESIZED_WIRE_12 = alu_shift_db0 & op543[0];
176
 
177
assign  SYNTHESIZED_WIRE_13 = alu_shift_db7 & SYNTHESIZED_WIRE_11;
178
 
179
assign  shift_cf_out = SYNTHESIZED_WIRE_12 | SYNTHESIZED_WIRE_13;
180
 
181
assign  SYNTHESIZED_WIRE_16 = ctl_alu_core_hf & flags_hf;
182
 
183
assign  SYNTHESIZED_WIRE_15 = SYNTHESIZED_WIRE_14 & flags_cf;
184
 
185
assign  alu_core_cf_in = SYNTHESIZED_WIRE_15 | SYNTHESIZED_WIRE_16;
186
 
187
assign  SYNTHESIZED_WIRE_14 =  ~ctl_alu_core_hf;
188
 
189
 
190
always@(posedge clk)
191
begin
192
if (ctl_eval_cond)
193
        begin
194
        flags_cond_true <= condition;
195
        end
196
end
197
 
198
 
199
alu_mux_4       b2v_inst_cond_mux(
200
        .in0(flags_zf),
201
        .in1(flags_cf),
202
        .in2(flags_pf),
203
        .in3(flags_sf),
204
        .sel(sel),
205
        .out(SYNTHESIZED_WIRE_1));
206
 
207
 
208
alu_mux_4       b2v_inst_pf_sel(
209
        .in0(alu_parity_out),
210
        .in1(alu_vf_out),
211
        .in2(iff2),
212
        .in3(repeat_en),
213
        .sel(ctl_pf_sel),
214
        .out(pf_sel));
215
 
216
 
217
alu_mux_8       b2v_inst_shift_mux(
218
        .in0(alu_shift_db7),
219
        .in1(alu_shift_db0),
220
        .in2(flags_cf_latch),
221
        .in3(flags_cf_latch),
222
        .in4(SYNTHESIZED_WIRE_22),
223
        .in5(alu_shift_db7),
224
        .in6(SYNTHESIZED_WIRE_18),
225
        .in7(SYNTHESIZED_WIRE_22),
226
        .sel(op543),
227
        .out(alu_shift_in));
228
 
229
 
230
always@(posedge clk)
231
begin
232
if (ctl_alu_op_low)
233
        begin
234
        DFFE_latch_pf_tmp <= alu_parity_out;
235
        end
236
end
237
 
238
assign  SYNTHESIZED_WIRE_7 =  ~op543[0];
239
 
240
assign  SYNTHESIZED_WIRE_11 =  ~op543[0];
241
 
242
assign  SYNTHESIZED_WIRE_10 =  ~ctl_cond_short;
243
 
244
 
245
assign  out[3] = 0;
246
assign  out[7] = 0;
247
assign  out[0] = 0;
248
assign  out[4] = 0;
249
 
250
endmodule

powered by: WebSVN 2.1.0

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