1 |
2 |
jefflieu |
// megafunction wizard: %ALTGX_RECONFIG%
|
2 |
|
|
// GENERATION: STANDARD
|
3 |
|
|
// VERSION: WM1.0
|
4 |
|
|
// MODULE: alt_c3gxb_reconfig
|
5 |
|
|
|
6 |
|
|
// ============================================================
|
7 |
|
|
// File Name: mAltGXReconfig.v
|
8 |
|
|
// Megafunction Name(s):
|
9 |
|
|
// alt_c3gxb_reconfig
|
10 |
|
|
//
|
11 |
|
|
// Simulation Library Files(s):
|
12 |
|
|
// altera_mf;lpm
|
13 |
|
|
// ============================================================
|
14 |
|
|
// ************************************************************
|
15 |
|
|
// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE!
|
16 |
|
|
//
|
17 |
|
|
// 11.0 Build 157 04/27/2011 SJ Full Version
|
18 |
|
|
// ************************************************************
|
19 |
|
|
|
20 |
|
|
|
21 |
|
|
//Copyright (C) 1991-2011 Altera Corporation
|
22 |
|
|
//Your use of Altera Corporation's design tools, logic functions
|
23 |
|
|
//and other software and tools, and its AMPP partner logic
|
24 |
|
|
//functions, and any output files from any of the foregoing
|
25 |
|
|
//(including device programming or simulation files), and any
|
26 |
|
|
//associated documentation or information are expressly subject
|
27 |
|
|
//to the terms and conditions of the Altera Program License
|
28 |
|
|
//Subscription Agreement, Altera MegaCore Function License
|
29 |
|
|
//Agreement, or other applicable license agreement, including,
|
30 |
|
|
//without limitation, that your use is for the sole purpose of
|
31 |
|
|
//programming logic devices manufactured by Altera and sold by
|
32 |
|
|
//Altera or its authorized distributors. Please refer to the
|
33 |
|
|
//applicable agreement for further details.
|
34 |
|
|
|
35 |
|
|
|
36 |
|
|
//alt_c3gxb_reconfig CBX_AUTO_BLACKBOX="ALL" DEVICE_FAMILY="Cyclone IV GX" ENABLE_BUF_CAL="TRUE" NUMBER_OF_CHANNELS=1 NUMBER_OF_RECONFIG_PORTS=1 RECONFIG_FROMGXB_WIDTH=5 RECONFIG_TOGXB_WIDTH=4 busy reconfig_clk reconfig_fromgxb reconfig_togxb
|
37 |
|
|
//VERSION_BEGIN 11.0 cbx_alt_c3gxb_reconfig 2011:04:27:21:07:19:SJ cbx_alt_cal 2011:04:27:21:07:19:SJ cbx_alt_dprio 2011:04:27:21:07:19:SJ cbx_altsyncram 2011:04:27:21:07:19:SJ cbx_cycloneii 2011:04:27:21:07:19:SJ cbx_lpm_add_sub 2011:04:27:21:07:19:SJ cbx_lpm_compare 2011:04:27:21:07:19:SJ cbx_lpm_counter 2011:04:27:21:07:19:SJ cbx_lpm_decode 2011:04:27:21:07:19:SJ cbx_lpm_mux 2011:04:27:21:07:19:SJ cbx_lpm_shiftreg 2011:04:27:21:07:19:SJ cbx_mgl 2011:04:27:21:11:03:SJ cbx_stratix 2011:04:27:21:07:19:SJ cbx_stratixii 2011:04:27:21:07:19:SJ cbx_stratixiii 2011:04:27:21:07:19:SJ cbx_stratixv 2011:04:27:21:07:19:SJ cbx_util_mgl 2011:04:27:21:07:19:SJ VERSION_END
|
38 |
|
|
// synthesis VERILOG_INPUT_VERSION VERILOG_2001
|
39 |
|
|
// altera message_off 10463
|
40 |
|
|
|
41 |
|
|
|
42 |
|
|
|
43 |
|
|
//alt_dprio address_width=16 CBX_AUTO_BLACKBOX="ALL" device_family="Cyclone IV GX" quad_address_width=9 address busy datain dataout dpclk dpriodisable dprioin dprioload dprioout quad_address rden reset wren wren_data
|
44 |
|
|
//VERSION_BEGIN 11.0 cbx_alt_dprio 2011:04:27:21:07:19:SJ cbx_cycloneii 2011:04:27:21:07:19:SJ cbx_lpm_add_sub 2011:04:27:21:07:19:SJ cbx_lpm_compare 2011:04:27:21:07:19:SJ cbx_lpm_counter 2011:04:27:21:07:19:SJ cbx_lpm_decode 2011:04:27:21:07:19:SJ cbx_lpm_shiftreg 2011:04:27:21:07:19:SJ cbx_mgl 2011:04:27:21:11:03:SJ cbx_stratix 2011:04:27:21:07:19:SJ cbx_stratixii 2011:04:27:21:07:19:SJ VERSION_END
|
45 |
|
|
|
46 |
|
|
//synthesis_resources = lpm_compare 3 lpm_counter 1 lpm_decode 1 lut 1 reg 102
|
47 |
|
|
//synopsys translate_off
|
48 |
|
|
`timescale 1 ps / 1 ps
|
49 |
|
|
//synopsys translate_on
|
50 |
|
|
(* ALTERA_ATTRIBUTE = {"{-to addr_shift_reg[31]} DPRIO_INTERFACE_REG=ON;{-to wr_out_data_shift_reg[31]} DPRIO_INTERFACE_REG=ON;{-to rd_out_data_shift_reg[13]} DPRIO_INTERFACE_REG=ON;{-to in_data_shift_reg[0]} DPRIO_INTERFACE_REG=ON;{-to startup_cntr[0]} DPRIO_INTERFACE_REG=ON;{-to startup_cntr[1]} DPRIO_INTERFACE_REG=ON;{-to startup_cntr[2]} DPRIO_INTERFACE_REG=ON"} *)
|
51 |
|
|
module mAltGXReconfig_alt_dprio_v5k
|
52 |
|
|
(
|
53 |
|
|
address,
|
54 |
|
|
busy,
|
55 |
|
|
datain,
|
56 |
|
|
dataout,
|
57 |
|
|
dpclk,
|
58 |
|
|
dpriodisable,
|
59 |
|
|
dprioin,
|
60 |
|
|
dprioload,
|
61 |
|
|
dprioout,
|
62 |
|
|
quad_address,
|
63 |
|
|
rden,
|
64 |
|
|
reset,
|
65 |
|
|
wren,
|
66 |
|
|
wren_data) /* synthesis synthesis_clearbox=2 */;
|
67 |
|
|
input [15:0] address;
|
68 |
|
|
output busy;
|
69 |
|
|
input [15:0] datain;
|
70 |
|
|
output [15:0] dataout;
|
71 |
|
|
input dpclk;
|
72 |
|
|
output dpriodisable;
|
73 |
|
|
output dprioin;
|
74 |
|
|
output dprioload;
|
75 |
|
|
input dprioout;
|
76 |
|
|
input [8:0] quad_address;
|
77 |
|
|
input rden;
|
78 |
|
|
input reset;
|
79 |
|
|
input wren;
|
80 |
|
|
input wren_data;
|
81 |
|
|
`ifndef ALTERA_RESERVED_QIS
|
82 |
|
|
// synopsys translate_off
|
83 |
|
|
`endif
|
84 |
|
|
tri0 [15:0] datain;
|
85 |
|
|
tri0 rden;
|
86 |
|
|
tri0 reset;
|
87 |
|
|
tri0 wren;
|
88 |
|
|
tri0 wren_data;
|
89 |
|
|
`ifndef ALTERA_RESERVED_QIS
|
90 |
|
|
// synopsys translate_on
|
91 |
|
|
`endif
|
92 |
|
|
|
93 |
|
|
(* ALTERA_ATTRIBUTE = {"PRESERVE_REGISTER=ON;POWER_UP_LEVEL=LOW"} *)
|
94 |
|
|
reg [31:0] addr_shift_reg;
|
95 |
|
|
(* ALTERA_ATTRIBUTE = {"PRESERVE_REGISTER=ON;POWER_UP_LEVEL=LOW"} *)
|
96 |
|
|
reg [15:0] in_data_shift_reg;
|
97 |
|
|
(* ALTERA_ATTRIBUTE = {"PRESERVE_REGISTER=ON;POWER_UP_LEVEL=LOW"} *)
|
98 |
|
|
reg [15:0] rd_out_data_shift_reg;
|
99 |
|
|
wire [2:0] wire_startup_cntr_d;
|
100 |
|
|
(* ALTERA_ATTRIBUTE = {"PRESERVE_REGISTER=ON;POWER_UP_LEVEL=LOW"} *)
|
101 |
|
|
reg [2:0] startup_cntr;
|
102 |
|
|
wire [2:0] wire_startup_cntr_ena;
|
103 |
|
|
(* ALTERA_ATTRIBUTE = {"POWER_UP_LEVEL=LOW"} *)
|
104 |
|
|
reg [2:0] state_mc_reg;
|
105 |
|
|
(* ALTERA_ATTRIBUTE = {"PRESERVE_REGISTER=ON;POWER_UP_LEVEL=LOW"} *)
|
106 |
|
|
reg [31:0] wr_out_data_shift_reg;
|
107 |
|
|
wire wire_pre_amble_cmpr_aeb;
|
108 |
|
|
wire wire_pre_amble_cmpr_agb;
|
109 |
|
|
wire wire_rd_data_output_cmpr_ageb;
|
110 |
|
|
wire wire_rd_data_output_cmpr_alb;
|
111 |
|
|
wire wire_state_mc_cmpr_aeb;
|
112 |
|
|
wire [5:0] wire_state_mc_counter_q;
|
113 |
|
|
wire [7:0] wire_state_mc_decode_eq;
|
114 |
|
|
wire wire_dprioin_mux_dataout;
|
115 |
|
|
wire busy_state;
|
116 |
|
|
wire idle_state;
|
117 |
|
|
wire rd_addr_done;
|
118 |
|
|
wire rd_addr_state;
|
119 |
|
|
wire rd_data_done;
|
120 |
|
|
wire rd_data_input_state;
|
121 |
|
|
wire rd_data_output_state;
|
122 |
|
|
wire rd_data_state;
|
123 |
|
|
wire rdinc;
|
124 |
|
|
wire read_state;
|
125 |
|
|
wire s0_to_0;
|
126 |
|
|
wire s0_to_1;
|
127 |
|
|
wire s1_to_0;
|
128 |
|
|
wire s1_to_1;
|
129 |
|
|
wire s2_to_0;
|
130 |
|
|
wire s2_to_1;
|
131 |
|
|
wire startup_done;
|
132 |
|
|
wire startup_idle;
|
133 |
|
|
wire wr_addr_done;
|
134 |
|
|
wire wr_addr_state;
|
135 |
|
|
wire wr_data_done;
|
136 |
|
|
wire wr_data_state;
|
137 |
|
|
wire write_state;
|
138 |
|
|
|
139 |
|
|
// synopsys translate_off
|
140 |
|
|
initial
|
141 |
|
|
addr_shift_reg = 0;
|
142 |
|
|
// synopsys translate_on
|
143 |
|
|
always @ ( posedge dpclk or posedge reset)
|
144 |
|
|
if (reset == 1'b1) addr_shift_reg <= 32'b0;
|
145 |
|
|
else
|
146 |
|
|
if (wire_pre_amble_cmpr_aeb == 1'b1) addr_shift_reg <= {{2{{2{1'b0}}}}, 1'b0, quad_address[8:0], 2'b10, address};
|
147 |
|
|
else addr_shift_reg <= {addr_shift_reg[30:0], 1'b0};
|
148 |
|
|
// synopsys translate_off
|
149 |
|
|
initial
|
150 |
|
|
in_data_shift_reg = 0;
|
151 |
|
|
// synopsys translate_on
|
152 |
|
|
always @ ( posedge dpclk or posedge reset)
|
153 |
|
|
if (reset == 1'b1) in_data_shift_reg <= 16'b0;
|
154 |
|
|
else if (rd_data_input_state == 1'b1) in_data_shift_reg <= {in_data_shift_reg[14:0], dprioout};
|
155 |
|
|
// synopsys translate_off
|
156 |
|
|
initial
|
157 |
|
|
rd_out_data_shift_reg = 0;
|
158 |
|
|
// synopsys translate_on
|
159 |
|
|
always @ ( posedge dpclk or posedge reset)
|
160 |
|
|
if (reset == 1'b1) rd_out_data_shift_reg <= 16'b0;
|
161 |
|
|
else
|
162 |
|
|
if (wire_pre_amble_cmpr_aeb == 1'b1) rd_out_data_shift_reg <= {{2{1'b0}}, {2{1'b1}}, 1'b0, quad_address, 2'b10};
|
163 |
|
|
else rd_out_data_shift_reg <= {rd_out_data_shift_reg[14:0], 1'b0};
|
164 |
|
|
// synopsys translate_off
|
165 |
|
|
initial
|
166 |
|
|
startup_cntr[0:0] = 0;
|
167 |
|
|
// synopsys translate_on
|
168 |
|
|
always @ ( posedge dpclk)
|
169 |
|
|
if (wire_startup_cntr_ena[0:0] == 1'b1)
|
170 |
|
|
if (reset == 1'b1) startup_cntr[0:0] <= 1'b0;
|
171 |
|
|
else startup_cntr[0:0] <= wire_startup_cntr_d[0:0];
|
172 |
|
|
// synopsys translate_off
|
173 |
|
|
initial
|
174 |
|
|
startup_cntr[1:1] = 0;
|
175 |
|
|
// synopsys translate_on
|
176 |
|
|
always @ ( posedge dpclk)
|
177 |
|
|
if (wire_startup_cntr_ena[1:1] == 1'b1)
|
178 |
|
|
if (reset == 1'b1) startup_cntr[1:1] <= 1'b0;
|
179 |
|
|
else startup_cntr[1:1] <= wire_startup_cntr_d[1:1];
|
180 |
|
|
// synopsys translate_off
|
181 |
|
|
initial
|
182 |
|
|
startup_cntr[2:2] = 0;
|
183 |
|
|
// synopsys translate_on
|
184 |
|
|
always @ ( posedge dpclk)
|
185 |
|
|
if (wire_startup_cntr_ena[2:2] == 1'b1)
|
186 |
|
|
if (reset == 1'b1) startup_cntr[2:2] <= 1'b0;
|
187 |
|
|
else startup_cntr[2:2] <= wire_startup_cntr_d[2:2];
|
188 |
|
|
assign
|
189 |
|
|
wire_startup_cntr_d = {(startup_cntr[2] ^ (startup_cntr[1] & startup_cntr[0])), (startup_cntr[0] ^ startup_cntr[1]), (~ startup_cntr[0])};
|
190 |
|
|
assign
|
191 |
|
|
wire_startup_cntr_ena = {3{((((rden | wren) | rdinc) | (~ startup_idle)) & (~ startup_done))}};
|
192 |
|
|
// synopsys translate_off
|
193 |
|
|
initial
|
194 |
|
|
state_mc_reg = 0;
|
195 |
|
|
// synopsys translate_on
|
196 |
|
|
always @ ( posedge dpclk or posedge reset)
|
197 |
|
|
if (reset == 1'b1) state_mc_reg <= 3'b0;
|
198 |
|
|
else state_mc_reg <= {(s2_to_1 | (((~ s2_to_0) & (~ s2_to_1)) & state_mc_reg[2])), (s1_to_1 | (((~ s1_to_0) & (~ s1_to_1)) & state_mc_reg[1])), (s0_to_1 | (((~ s0_to_0) & (~ s0_to_1)) & state_mc_reg[0]))};
|
199 |
|
|
// synopsys translate_off
|
200 |
|
|
initial
|
201 |
|
|
wr_out_data_shift_reg = 0;
|
202 |
|
|
// synopsys translate_on
|
203 |
|
|
always @ ( posedge dpclk or posedge reset)
|
204 |
|
|
if (reset == 1'b1) wr_out_data_shift_reg <= 32'b0;
|
205 |
|
|
else
|
206 |
|
|
if (wire_pre_amble_cmpr_aeb == 1'b1) wr_out_data_shift_reg <= {{2{1'b0}}, 2'b01, 1'b0, quad_address[8:0], 2'b10, datain};
|
207 |
|
|
else wr_out_data_shift_reg <= {wr_out_data_shift_reg[30:0], 1'b0};
|
208 |
|
|
lpm_compare pre_amble_cmpr
|
209 |
|
|
(
|
210 |
|
|
.aeb(wire_pre_amble_cmpr_aeb),
|
211 |
|
|
.agb(wire_pre_amble_cmpr_agb),
|
212 |
|
|
.ageb(),
|
213 |
|
|
.alb(),
|
214 |
|
|
.aleb(),
|
215 |
|
|
.aneb(),
|
216 |
|
|
.dataa(wire_state_mc_counter_q),
|
217 |
|
|
.datab(6'b011111)
|
218 |
|
|
`ifndef FORMAL_VERIFICATION
|
219 |
|
|
// synopsys translate_off
|
220 |
|
|
`endif
|
221 |
|
|
,
|
222 |
|
|
.aclr(1'b0),
|
223 |
|
|
.clken(1'b1),
|
224 |
|
|
.clock(1'b0)
|
225 |
|
|
`ifndef FORMAL_VERIFICATION
|
226 |
|
|
// synopsys translate_on
|
227 |
|
|
`endif
|
228 |
|
|
);
|
229 |
|
|
defparam
|
230 |
|
|
pre_amble_cmpr.lpm_width = 6,
|
231 |
|
|
pre_amble_cmpr.lpm_type = "lpm_compare";
|
232 |
|
|
lpm_compare rd_data_output_cmpr
|
233 |
|
|
(
|
234 |
|
|
.aeb(),
|
235 |
|
|
.agb(),
|
236 |
|
|
.ageb(wire_rd_data_output_cmpr_ageb),
|
237 |
|
|
.alb(wire_rd_data_output_cmpr_alb),
|
238 |
|
|
.aleb(),
|
239 |
|
|
.aneb(),
|
240 |
|
|
.dataa(wire_state_mc_counter_q),
|
241 |
|
|
.datab(6'b110000)
|
242 |
|
|
`ifndef FORMAL_VERIFICATION
|
243 |
|
|
// synopsys translate_off
|
244 |
|
|
`endif
|
245 |
|
|
,
|
246 |
|
|
.aclr(1'b0),
|
247 |
|
|
.clken(1'b1),
|
248 |
|
|
.clock(1'b0)
|
249 |
|
|
`ifndef FORMAL_VERIFICATION
|
250 |
|
|
// synopsys translate_on
|
251 |
|
|
`endif
|
252 |
|
|
);
|
253 |
|
|
defparam
|
254 |
|
|
rd_data_output_cmpr.lpm_width = 6,
|
255 |
|
|
rd_data_output_cmpr.lpm_type = "lpm_compare";
|
256 |
|
|
lpm_compare state_mc_cmpr
|
257 |
|
|
(
|
258 |
|
|
.aeb(wire_state_mc_cmpr_aeb),
|
259 |
|
|
.agb(),
|
260 |
|
|
.ageb(),
|
261 |
|
|
.alb(),
|
262 |
|
|
.aleb(),
|
263 |
|
|
.aneb(),
|
264 |
|
|
.dataa(wire_state_mc_counter_q),
|
265 |
|
|
.datab({6{1'b1}})
|
266 |
|
|
`ifndef FORMAL_VERIFICATION
|
267 |
|
|
// synopsys translate_off
|
268 |
|
|
`endif
|
269 |
|
|
,
|
270 |
|
|
.aclr(1'b0),
|
271 |
|
|
.clken(1'b1),
|
272 |
|
|
.clock(1'b0)
|
273 |
|
|
`ifndef FORMAL_VERIFICATION
|
274 |
|
|
// synopsys translate_on
|
275 |
|
|
`endif
|
276 |
|
|
);
|
277 |
|
|
defparam
|
278 |
|
|
state_mc_cmpr.lpm_width = 6,
|
279 |
|
|
state_mc_cmpr.lpm_type = "lpm_compare";
|
280 |
|
|
lpm_counter state_mc_counter
|
281 |
|
|
(
|
282 |
|
|
.clock(dpclk),
|
283 |
|
|
.cnt_en((write_state | read_state)),
|
284 |
|
|
.cout(),
|
285 |
|
|
.eq(),
|
286 |
|
|
.q(wire_state_mc_counter_q),
|
287 |
|
|
.sclr(reset)
|
288 |
|
|
`ifndef FORMAL_VERIFICATION
|
289 |
|
|
// synopsys translate_off
|
290 |
|
|
`endif
|
291 |
|
|
,
|
292 |
|
|
.aclr(1'b0),
|
293 |
|
|
.aload(1'b0),
|
294 |
|
|
.aset(1'b0),
|
295 |
|
|
.cin(1'b1),
|
296 |
|
|
.clk_en(1'b1),
|
297 |
|
|
.data({6{1'b0}}),
|
298 |
|
|
.sload(1'b0),
|
299 |
|
|
.sset(1'b0),
|
300 |
|
|
.updown(1'b1)
|
301 |
|
|
`ifndef FORMAL_VERIFICATION
|
302 |
|
|
// synopsys translate_on
|
303 |
|
|
`endif
|
304 |
|
|
);
|
305 |
|
|
defparam
|
306 |
|
|
state_mc_counter.lpm_port_updown = "PORT_UNUSED",
|
307 |
|
|
state_mc_counter.lpm_width = 6,
|
308 |
|
|
state_mc_counter.lpm_type = "lpm_counter";
|
309 |
|
|
lpm_decode state_mc_decode
|
310 |
|
|
(
|
311 |
|
|
.data(state_mc_reg),
|
312 |
|
|
.eq(wire_state_mc_decode_eq)
|
313 |
|
|
`ifndef FORMAL_VERIFICATION
|
314 |
|
|
// synopsys translate_off
|
315 |
|
|
`endif
|
316 |
|
|
,
|
317 |
|
|
.aclr(1'b0),
|
318 |
|
|
.clken(1'b1),
|
319 |
|
|
.clock(1'b0),
|
320 |
|
|
.enable(1'b1)
|
321 |
|
|
`ifndef FORMAL_VERIFICATION
|
322 |
|
|
// synopsys translate_on
|
323 |
|
|
`endif
|
324 |
|
|
);
|
325 |
|
|
defparam
|
326 |
|
|
state_mc_decode.lpm_decodes = 8,
|
327 |
|
|
state_mc_decode.lpm_width = 3,
|
328 |
|
|
state_mc_decode.lpm_type = "lpm_decode";
|
329 |
|
|
or(wire_dprioin_mux_dataout, ((((((wr_addr_state | rd_addr_state) & addr_shift_reg[31]) & wire_pre_amble_cmpr_agb) | ((~ wire_pre_amble_cmpr_agb) & (wr_addr_state | rd_addr_state))) | (((wr_data_state & wr_out_data_shift_reg[31]) & wire_pre_amble_cmpr_agb) | ((~ wire_pre_amble_cmpr_agb) & wr_data_state))) | (((rd_data_output_state & rd_out_data_shift_reg[15]) & wire_pre_amble_cmpr_agb) | ((~ wire_pre_amble_cmpr_agb) & rd_data_output_state))), ~(((write_state | rd_addr_state) | rd_data_output_state)));
|
330 |
|
|
assign
|
331 |
|
|
busy = busy_state,
|
332 |
|
|
busy_state = (write_state | read_state),
|
333 |
|
|
dataout = in_data_shift_reg,
|
334 |
|
|
dpriodisable = (~ (startup_cntr[2] & (startup_cntr[0] | startup_cntr[1]))),
|
335 |
|
|
dprioin = wire_dprioin_mux_dataout,
|
336 |
|
|
dprioload = (~ ((startup_cntr[0] ^ startup_cntr[1]) & (~ startup_cntr[2]))),
|
337 |
|
|
idle_state = wire_state_mc_decode_eq[0],
|
338 |
|
|
rd_addr_done = (rd_addr_state & wire_state_mc_cmpr_aeb),
|
339 |
|
|
rd_addr_state = (wire_state_mc_decode_eq[5] & startup_done),
|
340 |
|
|
rd_data_done = (rd_data_state & wire_state_mc_cmpr_aeb),
|
341 |
|
|
rd_data_input_state = (wire_rd_data_output_cmpr_ageb & rd_data_state),
|
342 |
|
|
rd_data_output_state = (wire_rd_data_output_cmpr_alb & rd_data_state),
|
343 |
|
|
rd_data_state = (wire_state_mc_decode_eq[7] & startup_done),
|
344 |
|
|
rdinc = 1'b0,
|
345 |
|
|
read_state = (rd_addr_state | rd_data_state),
|
346 |
|
|
s0_to_0 = ((wr_data_state & wr_data_done) | (rd_data_state & rd_data_done)),
|
347 |
|
|
s0_to_1 = (((idle_state & (wren | ((~ wren) & ((rden | rdinc) | wren_data)))) | (wr_addr_state & wr_addr_done)) | (rd_addr_state & rd_addr_done)),
|
348 |
|
|
s1_to_0 = (((wr_data_state & wr_data_done) | (rd_data_state & rd_data_done)) | (idle_state & (wren | (((~ wren) & (~ wren_data)) & rden)))),
|
349 |
|
|
s1_to_1 = (((idle_state & ((~ wren) & (rdinc | wren_data))) | (wr_addr_state & wr_addr_done)) | (rd_addr_state & rd_addr_done)),
|
350 |
|
|
s2_to_0 = ((((wr_addr_state & wr_addr_done) | (wr_data_state & wr_data_done)) | (rd_data_state & rd_data_done)) | (idle_state & (wren | wren_data))),
|
351 |
|
|
s2_to_1 = ((idle_state & (((~ wren) & (~ wren_data)) & (rdinc | rden))) | (rd_addr_state & rd_addr_done)),
|
352 |
|
|
startup_done = ((startup_cntr[2] & (~ startup_cntr[0])) & startup_cntr[1]),
|
353 |
|
|
startup_idle = ((~ startup_cntr[0]) & (~ (startup_cntr[2] ^ startup_cntr[1]))),
|
354 |
|
|
wr_addr_done = (wr_addr_state & wire_state_mc_cmpr_aeb),
|
355 |
|
|
wr_addr_state = (wire_state_mc_decode_eq[1] & startup_done),
|
356 |
|
|
wr_data_done = (wr_data_state & wire_state_mc_cmpr_aeb),
|
357 |
|
|
wr_data_state = (wire_state_mc_decode_eq[3] & startup_done),
|
358 |
|
|
write_state = (wr_addr_state | wr_data_state);
|
359 |
|
|
endmodule //mAltGXReconfig_alt_dprio_v5k
|
360 |
|
|
|
361 |
|
|
//synthesis_resources = alt_cal_c3gxb 1 lpm_compare 3 lpm_counter 1 lpm_decode 1 lut 1 reg 114
|
362 |
|
|
//synopsys translate_off
|
363 |
|
|
`timescale 1 ps / 1 ps
|
364 |
|
|
//synopsys translate_on
|
365 |
|
|
(* ALTERA_ATTRIBUTE = {"{-to address_pres_reg[11]} DPRIO_CHANNEL_NUM=11;{-to address_pres_reg[10]} DPRIO_CHANNEL_NUM=10;{-to address_pres_reg[9]} DPRIO_CHANNEL_NUM=9;{-to address_pres_reg[8]} DPRIO_CHANNEL_NUM=8;{-to address_pres_reg[7]} DPRIO_CHANNEL_NUM=7;{-to address_pres_reg[6]} DPRIO_CHANNEL_NUM=6;{-to address_pres_reg[5]} DPRIO_CHANNEL_NUM=5;{-to address_pres_reg[4]} DPRIO_CHANNEL_NUM=4;{-to address_pres_reg[3]} DPRIO_CHANNEL_NUM=3;{-to address_pres_reg[2]} DPRIO_CHANNEL_NUM=2;{-to address_pres_reg[1]} DPRIO_CHANNEL_NUM=1;{-to address_pres_reg[0]} DPRIO_CHANNEL_NUM=0"} *)
|
366 |
|
|
module mAltGXReconfig_alt_c3gxb_reconfig_nrm
|
367 |
|
|
(
|
368 |
|
|
busy,
|
369 |
|
|
reconfig_clk,
|
370 |
|
|
reconfig_fromgxb,
|
371 |
|
|
reconfig_togxb) /* synthesis synthesis_clearbox=2 */;
|
372 |
|
|
output busy;
|
373 |
|
|
input reconfig_clk;
|
374 |
|
|
input [4:0] reconfig_fromgxb;
|
375 |
|
|
output [3:0] reconfig_togxb;
|
376 |
|
|
|
377 |
|
|
wire wire_calibration_c3gxb_busy;
|
378 |
|
|
wire [15:0] wire_calibration_c3gxb_dprio_addr;
|
379 |
|
|
wire [15:0] wire_calibration_c3gxb_dprio_dataout;
|
380 |
|
|
wire wire_calibration_c3gxb_dprio_rden;
|
381 |
|
|
wire wire_calibration_c3gxb_dprio_wren;
|
382 |
|
|
wire [8:0] wire_calibration_c3gxb_quad_addr;
|
383 |
|
|
wire wire_calibration_c3gxb_retain_addr;
|
384 |
|
|
wire wire_dprio_busy;
|
385 |
|
|
wire [15:0] wire_dprio_dataout;
|
386 |
|
|
wire wire_dprio_dpriodisable;
|
387 |
|
|
wire wire_dprio_dprioin;
|
388 |
|
|
wire wire_dprio_dprioload;
|
389 |
|
|
(* ALTERA_ATTRIBUTE = {"PRESERVE_REGISTER=ON"} *)
|
390 |
|
|
reg [11:0] address_pres_reg;
|
391 |
|
|
wire cal_busy;
|
392 |
|
|
wire [0:0] cal_dprioout_wire;
|
393 |
|
|
wire [0:0] cal_testbuses;
|
394 |
|
|
wire [2:0] channel_address;
|
395 |
|
|
wire [15:0] dprio_address;
|
396 |
|
|
wire offset_cancellation_reset;
|
397 |
|
|
wire [8:0] quad_address;
|
398 |
|
|
wire reconfig_reset_all;
|
399 |
|
|
|
400 |
|
|
alt_cal_c3gxb calibration_c3gxb
|
401 |
|
|
(
|
402 |
|
|
.busy(wire_calibration_c3gxb_busy),
|
403 |
|
|
.cal_error(),
|
404 |
|
|
.clock(reconfig_clk),
|
405 |
|
|
.dprio_addr(wire_calibration_c3gxb_dprio_addr),
|
406 |
|
|
.dprio_busy(wire_dprio_busy),
|
407 |
|
|
.dprio_datain(wire_dprio_dataout),
|
408 |
|
|
.dprio_dataout(wire_calibration_c3gxb_dprio_dataout),
|
409 |
|
|
.dprio_rden(wire_calibration_c3gxb_dprio_rden),
|
410 |
|
|
.dprio_wren(wire_calibration_c3gxb_dprio_wren),
|
411 |
|
|
.quad_addr(wire_calibration_c3gxb_quad_addr),
|
412 |
|
|
.remap_addr(address_pres_reg),
|
413 |
|
|
.reset((offset_cancellation_reset | reconfig_reset_all)),
|
414 |
|
|
.retain_addr(wire_calibration_c3gxb_retain_addr),
|
415 |
|
|
.testbuses(cal_testbuses)
|
416 |
|
|
`ifndef FORMAL_VERIFICATION
|
417 |
|
|
// synopsys translate_off
|
418 |
|
|
`endif
|
419 |
|
|
,
|
420 |
|
|
.start(1'b0)
|
421 |
|
|
`ifndef FORMAL_VERIFICATION
|
422 |
|
|
// synopsys translate_on
|
423 |
|
|
`endif
|
424 |
|
|
);
|
425 |
|
|
defparam
|
426 |
|
|
calibration_c3gxb.channel_address_width = 0,
|
427 |
|
|
calibration_c3gxb.number_of_channels = 1,
|
428 |
|
|
calibration_c3gxb.sim_model_mode = "FALSE",
|
429 |
|
|
calibration_c3gxb.lpm_type = "alt_cal_c3gxb";
|
430 |
|
|
mAltGXReconfig_alt_dprio_v5k dprio
|
431 |
|
|
(
|
432 |
|
|
.address(({16{wire_calibration_c3gxb_busy}} & dprio_address)),
|
433 |
|
|
.busy(wire_dprio_busy),
|
434 |
|
|
.datain(({16{wire_calibration_c3gxb_busy}} & wire_calibration_c3gxb_dprio_dataout)),
|
435 |
|
|
.dataout(wire_dprio_dataout),
|
436 |
|
|
.dpclk(reconfig_clk),
|
437 |
|
|
.dpriodisable(wire_dprio_dpriodisable),
|
438 |
|
|
.dprioin(wire_dprio_dprioin),
|
439 |
|
|
.dprioload(wire_dprio_dprioload),
|
440 |
|
|
.dprioout(cal_dprioout_wire),
|
441 |
|
|
.quad_address(address_pres_reg[11:3]),
|
442 |
|
|
.rden((wire_calibration_c3gxb_busy & wire_calibration_c3gxb_dprio_rden)),
|
443 |
|
|
.reset(reconfig_reset_all),
|
444 |
|
|
.wren((wire_calibration_c3gxb_busy & wire_calibration_c3gxb_dprio_wren)),
|
445 |
|
|
.wren_data(wire_calibration_c3gxb_retain_addr));
|
446 |
|
|
// synopsys translate_off
|
447 |
|
|
initial
|
448 |
|
|
address_pres_reg = 0;
|
449 |
|
|
// synopsys translate_on
|
450 |
|
|
always @ ( posedge reconfig_clk or posedge reconfig_reset_all)
|
451 |
|
|
if (reconfig_reset_all == 1'b1) address_pres_reg <= 12'b0;
|
452 |
|
|
else address_pres_reg <= {quad_address, channel_address};
|
453 |
|
|
assign
|
454 |
|
|
busy = cal_busy,
|
455 |
|
|
cal_busy = wire_calibration_c3gxb_busy,
|
456 |
|
|
cal_dprioout_wire = {reconfig_fromgxb[0]},
|
457 |
|
|
cal_testbuses = {reconfig_fromgxb[1]},
|
458 |
|
|
channel_address = wire_calibration_c3gxb_dprio_addr[14:12],
|
459 |
|
|
dprio_address = {wire_calibration_c3gxb_dprio_addr[15], address_pres_reg[2:0], wire_calibration_c3gxb_dprio_addr[11:0]},
|
460 |
|
|
offset_cancellation_reset = 1'b0,
|
461 |
|
|
quad_address = wire_calibration_c3gxb_quad_addr,
|
462 |
|
|
reconfig_reset_all = 1'b0,
|
463 |
|
|
reconfig_togxb = {wire_calibration_c3gxb_busy, wire_dprio_dprioload, wire_dprio_dpriodisable, wire_dprio_dprioin};
|
464 |
|
|
endmodule //mAltGXReconfig_alt_c3gxb_reconfig_nrm
|
465 |
|
|
//VALID FILE
|
466 |
|
|
|
467 |
|
|
|
468 |
|
|
// synopsys translate_off
|
469 |
|
|
`timescale 1 ps / 1 ps
|
470 |
|
|
// synopsys translate_on
|
471 |
|
|
module mAltGXReconfig (
|
472 |
|
|
reconfig_clk,
|
473 |
|
|
reconfig_fromgxb,
|
474 |
|
|
busy,
|
475 |
|
|
reconfig_togxb)/* synthesis synthesis_clearbox = 2 */;
|
476 |
|
|
|
477 |
|
|
input reconfig_clk;
|
478 |
|
|
input [4:0] reconfig_fromgxb;
|
479 |
|
|
output busy;
|
480 |
|
|
output [3:0] reconfig_togxb;
|
481 |
|
|
|
482 |
|
|
wire sub_wire0;
|
483 |
|
|
wire [3:0] sub_wire1;
|
484 |
|
|
wire busy = sub_wire0;
|
485 |
|
|
wire [3:0] reconfig_togxb = sub_wire1[3:0];
|
486 |
|
|
|
487 |
|
|
mAltGXReconfig_alt_c3gxb_reconfig_nrm mAltGXReconfig_alt_c3gxb_reconfig_nrm_component (
|
488 |
|
|
.reconfig_clk (reconfig_clk),
|
489 |
|
|
.reconfig_fromgxb (reconfig_fromgxb),
|
490 |
|
|
.busy (sub_wire0),
|
491 |
|
|
.reconfig_togxb (sub_wire1))/* synthesis synthesis_clearbox=2
|
492 |
|
|
clearbox_macroname = alt_c3gxb_reconfig
|
493 |
|
|
clearbox_defparam = "cbx_blackbox_list=-lpm_mux;intended_device_family=Cyclone IV GX;number_of_channels=1;number_of_reconfig_ports=1;enable_buf_cal=true;reconfig_fromgxb_width=5;reconfig_togxb_width=4;" */;
|
494 |
|
|
|
495 |
|
|
endmodule
|
496 |
|
|
|
497 |
|
|
// ============================================================
|
498 |
|
|
// CNX file retrieval info
|
499 |
|
|
// ============================================================
|
500 |
|
|
// Retrieval info: PRIVATE: ADCE NUMERIC "0"
|
501 |
|
|
// Retrieval info: PRIVATE: CMU_PLL NUMERIC "0"
|
502 |
|
|
// Retrieval info: PRIVATE: DATA_RATE NUMERIC "0"
|
503 |
|
|
// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone IV GX"
|
504 |
|
|
// Retrieval info: PRIVATE: PMA NUMERIC "0"
|
505 |
|
|
// Retrieval info: PRIVATE: PROTO_SWITCH NUMERIC "0"
|
506 |
|
|
// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0"
|
507 |
|
|
// Retrieval info: CONSTANT: CBX_BLACKBOX_LIST STRING "-lpm_mux"
|
508 |
|
|
// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone IV GX"
|
509 |
|
|
// Retrieval info: CONSTANT: NUMBER_OF_CHANNELS NUMERIC "1"
|
510 |
|
|
// Retrieval info: CONSTANT: NUMBER_OF_RECONFIG_PORTS NUMERIC "1"
|
511 |
|
|
// Retrieval info: CONSTANT: enable_buf_cal STRING "true"
|
512 |
|
|
// Retrieval info: CONSTANT: reconfig_fromgxb_width NUMERIC "5"
|
513 |
|
|
// Retrieval info: CONSTANT: reconfig_togxb_width NUMERIC "4"
|
514 |
|
|
// Retrieval info: USED_PORT: busy 0 0 0 0 OUTPUT NODEFVAL "busy"
|
515 |
|
|
// Retrieval info: USED_PORT: reconfig_clk 0 0 0 0 INPUT NODEFVAL "reconfig_clk"
|
516 |
|
|
// Retrieval info: USED_PORT: reconfig_fromgxb 0 0 5 0 INPUT NODEFVAL "reconfig_fromgxb[4..0]"
|
517 |
|
|
// Retrieval info: USED_PORT: reconfig_togxb 0 0 4 0 OUTPUT NODEFVAL "reconfig_togxb[3..0]"
|
518 |
|
|
// Retrieval info: CONNECT: @reconfig_clk 0 0 0 0 reconfig_clk 0 0 0 0
|
519 |
|
|
// Retrieval info: CONNECT: @reconfig_fromgxb 0 0 5 0 reconfig_fromgxb 0 0 5 0
|
520 |
|
|
// Retrieval info: CONNECT: busy 0 0 0 0 @busy 0 0 0 0
|
521 |
|
|
// Retrieval info: CONNECT: reconfig_togxb 0 0 4 0 @reconfig_togxb 0 0 4 0
|
522 |
|
|
// Retrieval info: GEN_FILE: TYPE_NORMAL mAltGXReconfig.v TRUE
|
523 |
|
|
// Retrieval info: GEN_FILE: TYPE_NORMAL mAltGXReconfig.inc FALSE
|
524 |
|
|
// Retrieval info: GEN_FILE: TYPE_NORMAL mAltGXReconfig.cmp FALSE
|
525 |
|
|
// Retrieval info: GEN_FILE: TYPE_NORMAL mAltGXReconfig.bsf FALSE
|
526 |
|
|
// Retrieval info: GEN_FILE: TYPE_NORMAL mAltGXReconfig_inst.v FALSE
|
527 |
|
|
// Retrieval info: GEN_FILE: TYPE_NORMAL mAltGXReconfig_bb.v FALSE
|
528 |
|
|
// Retrieval info: LIB_FILE: altera_mf
|
529 |
|
|
// Retrieval info: LIB_FILE: lpm
|