Цитата(pashkent @ Sep 6 2012, 10:52)

1)я сначала просто проектирую, а потом буду эту же задачу на верилоге делать...
2)мне надо вариант б)
3) а как использовать тот же счетчик?
1) успехов в таком нелегком "пошаговом" деле
2) опишите Д-триггер, у которого состояние меняется по нажатию кнопки(+1 или 1<->0 - как хотите), и используйте его как Clk_En для мыргания
3) ну к примеру, стоит у Вас счетчик, который считает до 660 000, если он досчитал, переключаем значение Д-триггера кнопки, если кнопку нажали - сбрасываем счетчик, досчитываем до 660 000 и о5 меняем значение Д-триггера.
Чтоб привычную схему увидеть Вам на RTL, то на AHDL:
Код
Include "lpm_counter";
constant Coef = 660000;
constant C_Width = ceil(log2(Coef));
Subdesign Swt_Driver
(
Clrn : input = vcc;
Clk : input = gnd;
Clk_En : input = vcc;
Swt_In : input = vcc;
Swt_Out : output;
)
Variable
1Cout : dffe;
Swt_Out : dffe;
Count : lpm_counter with (
lpm_direction = "up",
lpm_width = C_Width,
lpm_modulus = Coef);
Begin
Count.(clock, clk_en, cnt_en, sclr, aclr) = (Clk, Clk_En, !Count.cout, Swt_In, !Clrn);
1Cout.(d, clk, ena, clrn) = (Count.cout, Clk, Clk_En, Clrn);
Swt_Out.(d, clk, ena, clrn) = (Count.cout & !1Cout, Clk, Clk_En, Clrn);
End;
В результате по Swt_Out будет переключаться Д-триггер кнопки
Сообщение отредактировал stu - Sep 6 2012, 11:27