Цитата(Sobol' @ Feb 17 2015, 14:44)

Приветствую заглянувших.
Ситуация следующая. Автомат, который я хочу реализовать на ПЛИС должен работать на частоте порядка 1 MHz (плюс-минус 200 KHz роли не играют). Есть тактовый вход с частотой 50 MHz. На этапе моделирования пользовался наспех написанным делителем:
reg [5:0] clk_cnt = 0;
always @(posedge clk_50MHz) clk_cnt <= clk_cnt +1;
wire clk_1MHz = clk_cnt[5];
Выходная частота - порядка 1250 KHz - меня устраивает.
Теперь, когда нужно залить мою модель в ПЛИС задумался над тем, что наверно нужно использовать буферы.. Правильно ли я понимаю, что на сигнал clk_50MHz нужно повесить IBUFG а на сигнал clk_1MHz - BUFG? или что-то еще нужно менять? или вообще все прах и тлен и нужен другой подход?
ЗЫ среда ISE 14.7, плата Spartan 3E XC3S1600E
Я использую вход CE триггера. Например получить частоту 1 MHz из 50 MHz след образом. Отрывок кода для автомата работающего на 1 МГц
Код
process(clk)
begin
if (rising_edge(clk)) then -- Rising clock edge
if Rst = '1' then
state <= WaitPushBut;
INC <= '0';
leds_reg <= x"00";
elsif(CEn = '1')then -----------------------------
case state is
when Idle =>
if (timer = 1) then
.................................................
clk здесь 50 МГц и есть сигнал CEn, по которому происходит работа автомата. Сигнал срабатывает с частотой 1 МГц. Получить его просто. Берете ядро для счетчика. Там есть опция порог и сигнал срабатывания порога. Этот сигнал и завожу на CEn. Например счетчик от 0 до 49. Порог 49. тогда частота срабатывания порога при частоте работы счетчика в 50 МГц / 50 = 1 МГц. То что вам необходимо.