Цитата(SM @ Jan 18 2010, 11:06)

Более правильный вариант вообще четвертый, до четырех клоков расширяется по аналогии

спасибо, если я правильно понял в моем варианте нет асинхронных сбросов, как у вас и вы по сбросу ставите мультиплексор в определенное положение?
Цитата(des333 @ Jan 18 2010, 11:09)

А тот, который Альтера предлашает, чем не годится?

этот вариант эквивалентен приведеном коду %)
у меня ква для сыклона 3 сгенерировал
CODE
//synthesis_resources = clkctrl 1
//synopsys translate_off
`timescale 1 ps / 1 ps
//synopsys translate_on
module switch_altclkctrl_9nd
(
clkselect,
ena,
inclk,
outclk) ;
input [1:0] clkselect;
input ena;
input [3:0] inclk;
output outclk;
`ifndef ALTERA_RESERVED_QIS
// synopsys translate_off
`endif
tri0 [1:0] clkselect;
tri1 ena;
tri0 [3:0] inclk;
`ifndef ALTERA_RESERVED_QIS
// synopsys translate_on
`endif
wire wire_clkctrl1_outclk;
wire [1:0] clkselect_wire;
wire [3:0] inclk_wire;
cycloneiii_clkctrl clkctrl1
(
.clkselect(clkselect_wire),
.ena(ena),
.inclk(inclk_wire),
.outclk(wire_clkctrl1_outclk)
// synopsys translate_off
,
.devclrn(1'b1),
.devpor(1'b1)
// synopsys translate_on
);
defparam
clkctrl1.clock_type = "Global Clock",
clkctrl1.ena_register_mode = "falling edge",
clkctrl1.lpm_type = "cycloneiii_clkctrl";
assign
clkselect_wire = {clkselect},
inclk_wire = {inclk},
outclk = wire_clkctrl1_outclk;
endmodule //switch_altclkctrl_9nd
//VALID FILE
// synopsys translate_off
`timescale 1 ps / 1 ps
// synopsys translate_on
module switch (
clkselect,
inclk0x,
inclk1x,
inclk2x,
inclk3x,
outclk);
input [1:0] clkselect;
input inclk0x;
input inclk1x;
input inclk2x;
input inclk3x;
output outclk;
`ifndef ALTERA_RESERVED_QIS
// synopsys translate_off
`endif
tri0 [1:0] clkselect;
`ifndef ALTERA_RESERVED_QIS
// synopsys translate_on
`endif
wire sub_wire0;
wire sub_wire1 = 1'h1;
wire sub_wire6 = inclk3x;
wire sub_wire5 = inclk2x;
wire sub_wire4 = inclk0x;
wire outclk = sub_wire0;
wire sub_wire2 = inclk1x;
wire [3:0] sub_wire3 = {sub_wire6, sub_wire5, sub_wire2, sub_wire4};
switch_altclkctrl_9nd switch_altclkctrl_9nd_component (
.ena (sub_wire1),
.inclk (sub_wire3),
.clkselect (clkselect),
.outclk (sub_wire0));
endmodule
этот компонент требует подачи части клоков с PLL, о чем ква радостно сообщает
Цитата
Error: inclk[2] port of Clock Control Block "switch_altclkctrl_9nd:switch_altclkctrl_9nd_component|clkctrl1" is driven by inclk2x~input, but must be driven by a PLL clock output
Error: inclk[3] port of Clock Control Block "switch_altclkctrl_9nd:switch_altclkctrl_9nd_component|clkctrl1" is driven by inclk3x~input, but must be driven by a PLL clock output