Определение тактовой частоты на ПЛИС Спартан-6

Я работаю, чтобы узнать, как программировать FPGA на VHDL, и хочу знать, как я могу определить правильную частоту моего тактового входа.

Я использовал Руководство пользователя оборудования Sp605, контакт K21 в часах Таблица подключений источников (стр. 27, если вам интересно!) Описана как "200 MHz OSC SYSCLK_P".

Затем я использовал следующий процесс, чтобы попытаться создать тактовую частоту 1 Гц из тактовой частоты 200 МГц.

prescaler : process(CLK)
begin
    if rising_edge(CLK) then
        if (counter < 1000000) then --possibly change to number in binary
            counter <= counter + 1;
        else
            CLK_1Hz <= not CLK_1Hz;
            counter <= (others => '0');
        end if;
    end if;
end process; 

Однако, если я установил верхний предел счетчика равным 100000000 - а так и должно быть, часы намного медленнее, чем 1 Гц - на самом деле использование текущего значения 1000000 отсчетов дает близкое приближение к импульсу 1 Гц - но почему это?


person davidhood2    schedule 02.11.2015    source источник
comment
Ваш код считает 100 Гц: счетчик - ›делит на 1 000 000, а встроенный T-триггер -› делит на 2.   -  person Paebbels    schedule 03.11.2015


Ответы (1)


Я думаю, вы хотите сказать, что в настоящее время используете K21 OSC SYSCLK_P в качестве несимметричного тактового входа и напрямую подключаете его к CLK. Пожалуйста, включите фрагмент вашего файла UCF для справки в будущих вопросах.

Это не сработает, потому что размах напряжения отдельных дифференциальных тактовых сигналов не будет надежно регистрироваться как логические 0 или 1 соответственно с недифференциальным (LVCMOS25?) Стандартом ввода-вывода.

Вы должны будете

  • включить в свой объект порты _P и _N,
  • создать экземпляр буфера LVDS в своем дизайне и
  • подключите порты _P и _N к буферу, чтобы получить CLK из вывода буфера O

Не забудьте изменить стандарт ввода-вывода в вашем файле UCF.

person FRob    schedule 02.11.2015