2015-11-02 3 views
0

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

Я использовал Sp605 Hardware User Guide, контакт K21, который в таблице синхронизации часов (стр. 27, если вам интересно!) Описывается как «200 МГц 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; 

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

+0

Ваш код рассчитан на 100 Гц: счетчик -> деление на 1 000 000, а встроенный T триггер -> на 2. – Paebbels

ответ

2

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

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

Вы должны

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

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

Смежные вопросы